Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Настройка меню GRUB2  (Прочитано 17316 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3512
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #15 : 22 Сентября 2018, 00:32:12 »
файл с ядром при каждом обновлении носит новое название
разве что пользовать find / -maxdepth 1 -type l -exec ls -l {} \;
lrwxrwxrwx 1 root root 33 сен 11 07:52 /initrd.img -> boot/initrd.img-4.15.0-34-generic
lrwxrwxrwx 1 root root 30 сен 11 07:52 /vmlinuz.old -> boot/vmlinuz-4.15.0-33-generic
lrwxrwxrwx 1 root root 30 сен 11 07:52 /vmlinuz -> boot/vmlinuz-4.15.0-34-generic
lrwxrwxrwx 1 root root 33 сен 11 07:52 /initrd.img.old -> boot/initrd.img-4.15.0-33-generic
Правда я не уверен что груб умеет грузиться с симлинков, а проверить это сейчас не могу - от груба отказался, на машине, что под рукой, только refind :(
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #16 : 22 Сентября 2018, 01:39:43 »
С симлинками должно работать и уж точно будет работать с хардлинками.

Получается есть 2 решения описанных проблем:
1) после обновления ядра делать линк со стандартным названием на новое ядро (или даже не линк, а переименовывать ядро). Т.е. по-сути привести к тому виду, как это сделано в других дистрибутивах.
2) после обновления grub.cfg, переименовывать опции меню с стандартных на пользовательские.

Есть даже специальный hook после обновления ядра - директория /etc/kernel/postinst.d/

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8035
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #17 : 22 Сентября 2018, 11:22:21 »
Цитировать
...зачем постоянно обновлять конфигурационный файл grub?
В том-то и беда, что система делает это самостоятельно. Например при обновлении ядра.
А для того, что нужно, как раз и существует файл 40_custom.
Цитировать
По аналогии с этим можно в файл 11_custom...
Хочу предостеречь. При совсем грубых ошибках update-grub создает новый конфиг с другим именем, а работать остается старый. Это хорошо.
Но в некоторых случаях сооздается новый конфиг с ошибками. В результате, появляется часть меню только до места ошибки.
Если ошибка окажется в файле 11_*, то большая часть меню окажется недоступной. Поэтому советую в файл 11_* помешать хорошо проверенный код и желателно не ошибаться.
Если ссылки, генерируемые скриптом 30_os-prober вам не нужны, то можно удалить этот пакет. Быстрее происходит генерация, меньше шанс ошибок.
У меня этот пакет удален.
Еще замечание. В файле 40_* можно переопределить то, что сделано скриптами до него, не вмешиваясь в код этих скриптов.
Исходя из сказанного, существующие скрипты не трогаю. Создаю свои.
08_hostname. Здесь обычно ссылки конкретно для этого компьютера. Пример моего файла:
(Нажмите, чтобы показать/скрыть)
Здесь-же ответ на вопрос:
Цитировать
не уверен что груб умеет грузиться с симлинков...
Умеет. Второй пункт как раз так грузит установленную Ubuntu с последним установленным ядром и параматрами, которые я задал.
Обычно я не удаляю ядро, с которым устанавливалась система. Первый пункт загружает систему с этим ядром и минимумом параметров.
Третий пункт - для загрузки установленной системы как "живой" из каталога /opt. Будет проведен поиск по всем разделам. Где найдет, оттуда и загрузится.
Для этого в ней сделаны небольшие изменения.
 Второй файл - 40_flash. В нем более универсальные пункты загрузки, чаще применяемые на мультизагрузочной флешке. Но и на установленной системе нередко приходятся очень кстати.
Приведу его фрагмент:
(Нажмите, чтобы показать/скрыть)
Первый пункт - загрузка Ubuntu из исо-образа. Если образ не найден, то загрузка "живой Ubuntu" из каталога.
Второй - загрузка установленной системы. В переменной src задано что искать. Это может быть метка тома, УУИД, каноническое имя раздела.
Третий - загрузка "любой" Windows.
Все пункты осуществляют поиск систем по всем разделам. Будет загружена первая найденая система, удовлетворяющая условиям помска Для меня такой вариант более удобен.
« Последнее редактирование: 21 Мая 2019, 13:02:13 от andytux »

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #18 : 22 Сентября 2018, 13:45:43 »
Цитировать
В том-то и беда, что система делает это самостоятельно
Не думаю, что это большая беда, надо проверить откуда запускается скрипт, скорее всего из хуков /etc/kernel/postinst.d/ или /etc/kernel/install.d/. А второй мой пункт будет работать и без этого.

На самом деле странно, изменить систему таким образом, чтобы пользовательское меню постоянно генерировалось с нуля и не предусмотреть его настройку. Напишите запрос разработчикам Ubuntu

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8035
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #19 : 22 Сентября 2018, 14:03:46 »
Цитировать
Не думаю, что это большая беда...
Для меня - не беда. Для ТС - да.
Цитировать
На самом деле странно, изменить систему таким образом, чтобы пользовательское меню постоянно генерировалось с нуля...
Ничего странного. Многие не знают о его существовании. По-умолчанию, при одной системе оно скрыто. Вторая половина норовит его скрыть, когда оно появляется.
Цитировать
...не предусмотреть его настройку
Все предусмотрено - 40_custom.

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #20 : 22 Сентября 2018, 14:12:32 »
И ТС сможет, был бы мануал.

Цитировать
Все предусмотрено - 40_custom.
Не соглашусь, custom позволяет добавить свое меню, а не настроить существующее. Это все же большая разница.
Grub в манах пишет, что пользователь, если необходимо может настроить grub.cfg напрямую. В Ubuntu из-за обновления конфига при каждом обновлении ядра эту возможность у пользователя по-сути забрали, а взамен инструментов не дали.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8035
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #21 : 22 Сентября 2018, 14:27:58 »
Цитировать
Это все же большая разница.
Согласен. Одно или два. Два лучше, чем одно..?
Цитировать
В Ubuntu из-за обновления конфига при каждом обновлении ядра эту возможность у пользователя по-сути забрали...
Вопрос из разряда: стакан наполовину пустой или полный. Обрати вред во благо.
При экспериментах часто напрямую редактирую grub.cfg. Наигрался - update-grub. И все вернулось как было.


Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #22 : 23 Сентября 2018, 01:44:54 »
Цитировать
При экспериментах часто напрямую редактирую grub.cfg. Наигрался - update-grub. И все вернулось как было.
grub.cfg генерирует grub-mkconfig, а update-grub это какой-то отдельный скрипт, я так понимаю, вообще не относящийся к grub, наверное созданный Ubuntu. Генерировать конфиг - это стандартный функционал grub, очень полезная вещь и да, это благо. Польза каждый раз генерировать конфиг при обновлении ядра не особо ясна, я ее вообще в этом не вижу.

alang

  • Гость
Re: Настройка меню GRUB2
« Ответ #23 : 23 Сентября 2018, 07:41:15 »
grub.cfg генерирует grub-mkconfig, а update-grub это какой-то отдельный скрипт, я так понимаю, вообще не относящийся к grub

Еще как относящийся! Содержимое:
#!/bin/sh
set -e
grub-mkconfig -o /boot/grub/grub.cfg "$@"

Если не устраивает, как grub именует пункты меню, можно пошариться в настроечных скриптах (linux, os_prober и пр.), если достаточно продвинут - или поотключать их и настраивать исключительно вручную через скрипты **_custom. А еще есть grub customizer, где все легко настраивается в графике. Это нормально  и современно, не вижу причины корчить из себя Linuxоида и относиться к нему с презрением :)

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #24 : 23 Сентября 2018, 13:04:15 »
alang, еще раз описываем ситуацию:
1) custom - позволяет добавить пользовательские пункты, но не меняет сгенерированные автоматически. Совсем не то, что нужно.
2) можно все поотключать и настроить вручную, но кой это нужно, если меню генерируется автоматически правильно и нужно только оформить внешний вид.
3) разве grub-customizer - это не просто gui для конфига grub?

Было бы достаточно просто напрямую изменить grub.cfg, но из-за пересоздания его каждый раз после обновления ядра - это не применимо. Пересоздание конфига после каждого обновления ядра не обязательно, но из-за изменения названия файлов ядра делать это необходимо. Я считаю, что от подобного подхода больше вреда. К примеру, не представляю как будет все работать, если grub находится отдельно. Получается каждый раз после обновления ядра необходимо загружать отдельно стоящий grub и обновлять в нем конфиг? Или я что-то упускаю.

alang, Linuxоиды - это те, кто на форумах кричат, что Windows сакас, а Linux божественен. В этом обсуждении это явно не ко мне :-). Так что давайте аргументацию по делу, т.е. если что-то не работает, то как это исправить, а "модно и молодежно" - это к Linuxоидам.

alang

  • Гость
Re: Настройка меню GRUB2
« Ответ #25 : 23 Сентября 2018, 13:17:46 »
В этом обсуждении это явно не ко мне

А это и не к тебе относилось. Grub customizer, чем бы он ни был, способен здорово облегчить жизнь, и я не понимаю желания ТС вручную лазить по конфигам.

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #26 : 23 Сентября 2018, 21:48:31 »
Как бы то ни было, сейчас бы очень помог кто-то, кто помог бы в решении

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8035
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #27 : 24 Сентября 2018, 07:04:31 »
"- Ну а после - чудеса мне по такому случаю..."
Цитировать
custom - позволяет добавить пользовательские пункты, но не меняет сгенерированные автоматически
Не плюй в колодец - пригодится. На сгенерированные мы просто закроем глаза.
Цитировать
нужно только оформить внешний вид...
Любой каприз...
Цитировать
Пересоздание конфига после каждого обновления ядра не обязательно, но из-за изменения названия файлов ядра делать это необходимо
Оно нам не мешает.
Цитировать
...каждый раз после обновления ядра необходимо загружать отдельно стоящий grub и обновлять в нем конфиг?
Что значит отдельно стоящий. Если груб установлен, то система знает где он и обновит. На этом диске/разделе или другом - неважно.
А будем мы использовать этот конфиг или нет - это в нашей власти.
Цитировать
ТС сможет, был бы мануал.
Мануал, реализующий эту концепцию.
Файл /etc/grub.d/40_custom приводим к следующему виду:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
configfile ${prefix}/cust.cfg
Создаем файл /boot/grub/cust.cfg. В нем будет наше меню.
Для примера, мой код:
(Нажмите, чтобы показать/скрыть)
Выполняем update-grub.

 Перезагружаемся. Видим только два наших пункта, целиком и полностью по нашему желанию. И пусть система обновляется хоть три раза в день.
Вид, параметры ядра - все на наш вкус. Ядро и инитрд загружаются по симлинку. Нет необходимости ничего менять при изменении названия ядра.
Но если вдруг образумились и понадобилось сгенерированное меню, нажмите "ESC".
Проверено на практике.
И это всего одна строчка в 40_custom. Детские шалости. А если включить всю магию груб...
"И кроме мордобитиев - никаких чудес!"

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #28 : 24 Сентября 2018, 09:50:53 »
Тоже неплохое решение, хотя больше подходит аналогия про мусор заметенный под ковер, а не колодец.

Цитировать
Цитировать
Пересоздание конфига после каждого обновления ядра не обязательно, но из-за изменения названия файлов ядра делать это необходимо
Оно нам не мешает.
Мешает, как мы видем. Плюс отнимает много времени при обновлении ядра. Зачем? Если можно этого и не делать. К тому же, если grub установлен отдельно (например в другой системе), то каждый раз после обновления ядра в 1 системе необходимо загружать 2 систему с grub и обновлять в нем конфиг? Понятно, что можно и не перезагружать, а сделать chroot, но зачем все эти сложности?
Не нужно уверять меня, что это нормально и хорошо. Если кто-то смирился с этим - ок, это его дело, но меня интересует, есть ли объективные причины подобного поведения, дает ли это какие-то плюсы, перевешивающие все проблемы?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8035
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #29 : 24 Сентября 2018, 10:38:22 »
Цитировать
Мешает, как мы видем
Как я вижу, ты ничего не видишь. Я уже привел два разных варианта, когда Linux загружается одим и тем же кодом независимо от названия ядра.  И независимо от расположения загрузчика. Хоть на флншке, которая вообще ничего не знает об установленных системах.
Цитировать
Плюс отнимает много времени при обновлении ядра...
Это да. Приходилось видеть мегабайтных размеров (в прямом смысле) grub.cfg - результат работы автогенератора плюс таких-же авторепаиров, после попыток заставить это работать.
Как я тоже уже писал, в большей степени решается удалением os-prober.
Цитировать
каждый раз после обновления ядра в 1 системе необходимо загружать 2 систему с grub и обновлять в нем конфиг?
Третий раз повторяю. Зачем, если наш код работает независимо от того, что там нагенерировала-наобновляла система.
Цитировать
есть ли объективные причины подобного поведения
Ваши причины какие-то... высосаны из виртуального пальца. Я привел простые и реальные решения.
Цитировать
Если кто-то смирился с этим...
Это вы похоже смирились с тем, что это невозможно. Я показал вам, что это решаемо, и гораздо проще, чем вы нафантазировали.

 

Страница сгенерирована за 0.264 секунд. Запросов: 23.