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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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

Оффлайн Kostromich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Настройка меню GRUB2
« : 21 Октября 2015, 14:01:39 »
Всем добрый день!

Прошу сразу тапками не кидать, я не волшебник, я только учусь.
Есть вопрос по настройке пунктов меню GRUB2 - как убрать лишние?
Тему https://forum.ubuntu.ru/index.php?topic=74165.0 посмотрел, но поймите, 96 страниц темя я не осилю.
Вопрос в следующем: конкретно лишние мне пункты меню я могу убрать в /boot/grub/grub.cfg, но при обновлении (grub-update) он заново генерируется скриптами из /etc/default/grub и grub.d
Я понял, как можно заставить грузиться по умолчанию нужный мне пункт меню, но вопрос - как сделать так, чтобы лишние пункты вообще не появлялись? Т.е. я имею в виду, что после обновления GRUB опять подхватывает загрузчики всех ОС, а можно ли сделать так, чтобы после grub-update он не добавлял, например, загрузчик Windows? Если да, то как?
P.S.: также буду благодарен, если подскажете, что убирать из grub.cfg чтобы исчезли лишние пункты - как я понял, всё, касающееся лишнего пункта, от "menuentry" и заканчивая символом "}" - правильно? Если нет, поправьте!

Оффлайн wajnon

  • Старожил
  • *
  • Сообщений: 2778
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #1 : 21 Октября 2015, 14:04:46 »
Kostromich,
Используйте это

Оффлайн svtv1

  • Забанен
  • Старожил
  • *
  • Сообщений: 2652
  • Это Я
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #2 : 21 Октября 2015, 14:09:15 »
Так если ты виндовый загрузчик уберешь, то ты потом вообще винду не загрузишь, может я и не прав конечно но ...?
"Если достаточно долго сидеть возле реки - мимо проплывет труп твоего врага"

Оффлайн it0r

  • Забанен
  • Старожил
  • *
  • Сообщений: 2264
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #3 : 21 Октября 2015, 14:43:47 »
...после обновления GRUB опять подхватывает загрузчики всех ОС, а можно ли сделать так, чтобы после grub-update он не добавлял, например, загрузчик Windows?...
покопай в сторону os-prober.
ТУТ - это дерево. А ЗДЕСЬ - это МЕСТО.... Так что ТУТ - это не ЗДЕСЬ.

Оффлайн Kostromich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #4 : 21 Октября 2015, 14:51:32 »
Kostromich,
Используйте это
О! Дело! Спасибо, опробую! ...Однако, если найдётся кто сможет объяснить как руками без дополнительного софта GRUB настроить, то буду дюже благодарен!

Пользователь решил продолжить мысль [time]21 Октябрь 2015, 15:53:34[/time]:
Так если ты виндовый загрузчик уберешь, то ты потом вообще винду не загрузишь, может я и не прав конечно но ...?
В принципе да, но я чисто для примера привел - у меня конкретно Win7 со своим загрузчиком стоит на другом HDD, т.е. для меня это не проблема, просто придётся варианты с какого харда грузиться BIOS выбирать, но вообще интересует сама возможность настроить GRUB так, чтобы после grub-update ненужные мне пункты он автоматически не генерировал.

Пользователь решил продолжить мысль 21 Октября 2015, 15:01:06:
...после обновления GRUB опять подхватывает загрузчики всех ОС, а можно ли сделать так, чтобы после grub-update он не добавлял, например, загрузчик Windows?...
покопай в сторону os-prober.
Вооот! И Вам спасибо, дело пошло! погуглил, понял, что сей параметр отвечает за вкл./выкл. поиска других ОС. Теперь остаётся вопрос про родные так сказать пункты GRUB, например, там в меню два пункта memtest, ну и если я, допустим, один захочу убрать, они ведь после update-grub опять восстановятся... Любопытно, а их можно как то навсегда убрать?
« Последнее редактирование: 21 Октября 2015, 15:01:06 от Kostromich »

Оффлайн zaskock

  • Активист
  • *
  • Сообщений: 541
  • Manjaro 15.12-dev Capella
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #5 : 21 Октября 2015, 15:40:47 »
Kostromich,
То есть по вашим действиям вы  добьетесь того что вообще все перестанет згружаться  и в результате таких действий появится новая тема UBUNTU УБИЛА МНЕ ВСЕ. Чем вам заставка грубовская помешала?
Правильные ответы начинаются с правильных вопросов.

Оффлайн Kostromich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #6 : 22 Октября 2015, 14:22:56 »
Kostromich,
То есть по вашим действиям вы  добьетесь того что вообще все перестанет згружаться  и в результате таких действий появится новая тема UBUNTU УБИЛА МНЕ ВСЕ. Чем вам заставка грубовская помешала?
Да нет, не бойтесь, не убью, а уж в крайнем случае LiveUSB всегда под рукой и восстановить GRUB недолго.
Тем более, что Win стоит на другом харде и загрузчик её там же, т.е. даже убив груб, загрузку Win я не убью (придётся просто ручками в BIOS выставить загрузочный хард).
Вопросом задался потому, что ПК юзают разные люди и не хотелось бы, чтобы они случайно грузили что не надо (по крайней мере, если жена выберет Recovery или Memtest когда я в командировке, то у неё ступор будет ...ничего страшного, но). Плюс у меня GRUB подхватывает родной загрузчик Win и лоадер (ОС как у многих "активирована" лоадером), надо убрать лишний пункт, ибо нафига мне два пункта загрузки одной ОС. Вот. Собственно уже понял как, например, загрузку Win из GRUBа с помощью редактирования os-prober убрать, теперь надо разобраться где и что там надо редактировать по остальным пунктам.

Пользователь решил продолжить мысль 23 Октября 2015, 11:47:32:
Всё, понял как это сделать!!!
1. Заходим /etc/grub.d
2. Убираем исполняемость у нужных нам скриптов (os_prober, memtest и т.д.), т.е. у тех, которые гененируют в меню GRUB строки, которые мы хотим убрать
3. Радуемся! Скрипты не запускаются, соответственно при выполнении grub-update в grub.cfg не создаются генерируемые данными скриптами строки!
Примечание: главное определиться с тем, какие скрипты за что отвечают и не наотключать лишнего!
« Последнее редактирование: 23 Октября 2015, 11:47:32 от Kostromich »

Оффлайн it0r

  • Забанен
  • Старожил
  • *
  • Сообщений: 2264
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #7 : 23 Октября 2015, 13:14:30 »
а может проще не показывать меню grub и автоматом загружать ту ось в которой работают "...разные люди..."?
ТУТ - это дерево. А ЗДЕСЬ - это МЕСТО.... Так что ТУТ - это не ЗДЕСЬ.

Оффлайн Kostromich

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #8 : 23 Октября 2015, 17:41:20 »
а может проще не показывать меню grub и автоматом загружать ту ось в которой работают "...разные люди..."?
Был такой вариант! Но лень в BIOSе переставлять загрузочные диски то на диск с Win, то на диск с Linux. Или Вы про скрытое меню, нулевой таймаут и вызов скрытого меню при зажатом Shift? NТипа по умолчанию грузится Win, а если надо меню загрузки, то зажимаем Shift? Думал об этом, но я в принципе не против, чтобы "разные люди", как я их назвал, грузили и Linux, просто не хочу, чтобы они, например, старые ядра грузили или случайно recovery mode. А у женщин ступор и от случайного запуска memtest будет, вроде ничего страшного, перезагрузись ...но зачем мне ужасные истории по телефону слушать)))
В целом согласен, вариант, но я уже решил как описал выше, всё гуд! Единственное неудобство, так это, если потребуется все варианты вернуть, придётся с Live CD/USB грузиться и с него править загрузку, но это крайний случай и можно потерпеть, тем более LiveUSB всегда в ящике у этого компа. Не проблема. В общем, допускаю ещё варианты, но я нашел лучшее (самое удобное) лично для себя решение для моего случая.
P.S.: Вам спасибо за участие!

Оффлайн it0r

  • Забанен
  • Старожил
  • *
  • Сообщений: 2264
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #9 : 23 Октября 2015, 17:52:54 »
Кн. решено - внизу справа. Удачи.  ;)
ТУТ - это дерево. А ЗДЕСЬ - это МЕСТО.... Так что ТУТ - это не ЗДЕСЬ.

Оффлайн Stealch

  • Участник
  • *
  • Сообщений: 128
  • Если нет бубна - сойдет и барабан.
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #10 : 21 Сентября 2018, 14:48:26 »
У меня схожая проблема. Неужели нельзя в GRUB2 менять названия строк меню навсегда? Изменить я могу, не вопрос, но при первом же update-grub все становится как было, то есть опять криво. Я не хочу чтобы у меня Server 2012 R2 отображался в меню как  'Windows Recovery Environment (loader) (на /dev/sdc1)' а хочу прописать его по-своему, ибо Server 2008 R2 ИМЕЕТ ТАКОЕ ЖЕ НАЗВАНИЕ, только на другом диске. Вот не верю я что нельзя это победить! Что за бред получается тогда? Типа "Я определил что это Windows, но хрен знает какая, напишу какую-нибудь ересь", так что-ли отрабатывает скрипт 30_os-prober? Кто знает как его научить прописывать пункты меню по-человечески?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7291
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #11 : 21 Сентября 2018, 15:05:47 »
Цитировать
Неужели нельзя в GRUB2 менять названия строк меню навсегда?
Можно. Для этого существует файл 40_custom. Как туда заришите, так и будет выглядеть ваше меню.
Я почти не пользуюсь автоматически созданными пунктами.

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #12 : 21 Сентября 2018, 19:18:17 »
Stealch, а зачем постоянно обновлять конфигурационный файл grub? Сгенерировали один раз, изменили, что нужно и все.

В той редкой ситуации, когда нужно сгенерировать новый конфиг, можно сравнить два файла и оставить что нужно оставить, а новое добавить.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Настройка меню GRUB2
« Ответ #13 : 21 Сентября 2018, 21:40:18 »
а зачем постоянно обновлять конфигурационный файл grub?
Ядра. Если подразумевается пропуск и "своеобзывание" операционок на основе ядра linux, которые еще и предполагается в итоге обновлять (две и более убунт на одном харде в разных разделах, к примеру), то автоподготовка загрузчика очень актуальна, так что вопрос считаю правильным, - сам в свое время им задавался.
Неужели нельзя в GRUB2 менять названия строк меню навсегда?
Можно. И даже предлагаю не /etc/grub.d/40_custom, а какой-нибудь самопальный 11_custom по тому же пути (чем ниже число, тем выше пункт оказывается в меню GRUB2; если что-то все же остается через os-prober, то следует понимать что os_prober хранится в 30_os-prober, а значит надо брать ниже 30. Первая строка (которая Ubutnu) формируется файлом 10_linux, поэтому обозвав файл 11_custom - впишем его в аккурат после первой строки. Допустим, имеем дуалбут. И допустим, в этом дуалбуте у нас Windows 7 (пишу для своего примера, но общий принцип един).
1. Смотрим как сейчас загружается windows. Например, так [пример команды, вероятно, притянут за уши (не факт что будет именно 10 строк), но в общем случае ищем пункт меню, который нас названием не устраивает, и смотрим его начинку между знаками { и } (я их сделал красным шрифтом в этой цитате)]:cat /boot/grub/grub.cfg | grep -i windows -A10В ответ я вижу:
Цитировать
menuentry 'Windows Boot Manager (на /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-81AE-22EB' {
        insmod part_gpt
        insmod fat
        set root='hd0,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  81AE-22EB
        else
          search --no-floppy --fs-uuid --set=root 81AE-22EB
        fi
        chainloader /EFI/microsoft/boot/bootmgfw.efi
}
В сущности, поскольку Windows мы двигать никуда не собираемся, - достаточно просто данный текст (с измененным не устраивающим нас именем, которое выделено жирным) внести в соответствующий файл - и груб будет успешно грузить винду оттуда.
2. Выполняем gedit ~/11_customЗаполняем файл таким образом:
Цитировать
#!/bin/sh
exec tail -n +3 $0
#Мой кастомный пункт загрузки Windows7. Верхние строчки менять нельзя, - благодаря ним все прочее в этом файле после update-grub в неизменном виде попадет в файл grub.cfg
#Строчкой ниже вставляем видозимененный текст из п.1:
menuentry 'Windows 7 Ultimate Edition' --class windows --class os $menuentry_id_option 'osprober-efi-81AE-22EB' {
        insmod part_gpt
        insmod fat
        set root='hd0,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  81AE-22EB
        else
          search --no-floppy --fs-uuid --set=root 81AE-22EB
        fi
        chainloader /EFI/microsoft/boot/bootmgfw.efi
}
Сохраняем полученный файл. Далее перемещаем его в правильную для него директорию:sudo mv ~/11_custom /etc/grub.d/11_custom(почему не применяю сразу sudo gedit: сталкивался с тем, что на 18.04 это уже не работает, - потому и привожу способ, который должен сработать вне зависимости от версии Ubuntu).
(Нажмите, чтобы показать/скрыть)
3. Наш правильный файл находится в правильном месте. Самое время выполнить его добавление в меню: sudo update-grubПерезагружаемся. В меню GRUB2 видим два пункта, загружающих Windows. Только один из них - тот, что мы хотим, а второй - тот что нас не устраивал. Но работают ОБА (желательно проверить факт загрузки, дабы исключить всяческую возможность своей ошибки, и не плодить после темы из серии grub не видит windows).
4. Загружаемся в Ubuntu. Теперь будем прятать первый пункт, который нас не устраивал. Редактировать придется файл sudo gedit /etc/default/grub   #это для 16.04 и ниже
SUDO_EDITOR=gedit sudoedit /etc/default/grub #это для 18.04 и выше
Проверяем: есть ли в наличии в файле параметр GRUB_OS_PROBER_SKIP_LIST. Если нет, - дописываем, если есть - корректируем существующий. Он может быть закомментирован знаком канделла # в начале строки (знак убрать, параметр оставить). Вношу в него в рассматриваемом случае такой текст:GRUB_OS_PROBER_SKIP_LIST="81AE-22EB@/EFI/microsoft/boot/bootmgfw.efi"Что есть что и почему именно так. Ранее приводил код загрузки, - там есть подчеркнутый текст и текст, отмеченный курсивом. Подчеркнутый - это UUID раздела, на котором находится подгружаемый бинарник. А курсивная часть - это полный путь относительно этого раздела к самому бинарнику, который груб должен подгрузить. В общем случае в параметре GRUB_OS_PROBER_SKIP_LIST приходится указывать именно такие пары: UUID@[что_пропускать]. После того как внесли данный параметр (адаптированный под свой случай, а не тупо перекопировав то, что я написал), - можно запускать sudo update-grubВ выхлопе команды мы, среди прочего, увидем что-то типа "Skipped Windows Boot Manager (на /dev/sda1)". Если такое обнаружили - можно довольно ухмыльнуться и перезагрузиться. При загрузке мы будем видеть только наш кастомный созданный ручками пункт. И каждый раз при последующих вызовах update-grub имя будет прописываться корректно, и без заскоков.
(Нажмите, чтобы показать/скрыть)
Типа "Я определил что это Windows, но хрен знает какая, напишу какую-нибудь ересь", так что-ли отрабатывает скрипт 30_os-prober?
По этому поводу отдельно: а как Вы себе представляете данное "определение"? Есть вариант, к примеру, залезть в системный реестр Windows и вычитать оттуда значение ключика. Для этого надо уметь читать реестр (тот же chntpw, который в штатную поставку не входит). И если положение ключика сместится - что тогда делать скрипту, или если MS с очередным обновлением сам реестр до такой степени модернизируют, что читая его, его ломаешь тут же? Можно попробовать вытянуть информацию из пользовательского соглашения (license.rtf, для прочтения коего нужен хотя бы cat2doc). Однако здесь ещё бОльшее поле вариций, - однозначно научить скрипт трактовать эти соглашения от разных версий Windows будет нельзя. Можно попробовать поискать некие ключевые папки, специфичные для каждой из версий Windows - но это тоже не то. Тут нет универсального решения - поэтому чтобы не городить огород, сделали определение через имя загрузчика (как он сам себя называет), насколько я понимаю. Вот у Вас там ахинея и написана. Только это не отсебятина скрипта - это та ахинея, которую сотрудники MS в данном месте прописали. Скрипт не выдумывает - он просто читает.
« Последнее редактирование: 23 Сентября 2018, 18:23:29 от zg_nico »
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
« Ответ #14 : 21 Сентября 2018, 23:49:16 »
Цитировать
Ядра. Если подразумевается пропуск и "своеобзывание" операционок на основе ядра linux, которые еще и предполагается в итоге обновлять (две и более убунт на одном харде в разных разделах, к примеру), то автоподготовка загрузчика очень актуальна, так что вопрос считаю правильным, - сам в свое время им задавался.
Своеобзывание операционок тоже делается один раз, хоть одной, хоть больше. Но я не учел, что в Ubuntu файл с ядром при каждом обновлении носит новое название, поэтому согласен, вопрос актуален.

 

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