Настройка GRUB 2 с множеством систем

Ситуация с выбором «главного» загрузчика, когда на компьютере имеется более одной Linux системы, стала немного доставать. Проблема дополнительно подпитывалась отсутствием уверенности в том, что именно этот дистрибутив послужит для постоянной работы, а вот тот для bleeding edge, в купе с невозможностью os prober‘а обнаружить систему с которой в chroot‘е осуществляется обновление GRUB¹, всякий раз при обновлении ядра одной из ОС. Приходится загружаться в «главную» ОС и обновлять GRUB. Способ же с хранением всех ядер в одном разделе boot представляется ещё менее удобным: будут путаться ядра/системы и меняться порядок в меню загрузчика при обновлении с разных ОС.

С целью исправить неудобство, унифицировать меню, а также в силу широких возможностей СПО по гибкой настройке и решению практически любых задач было составлено ТЗ:

Оставить локальные² GRUB’ы всех систем на месте, а в «главной» установленной в mbr загружаться непосредственно в локальные или использовать их настройки как подменю.

Решение задачи:

Способ первый.

Первый реализованный на практике способ — установка локальных GRUB на разделы диска, вместо mbr.

Для этого в каждой системе нужно запустить установку GRUB с указанием непосредственно раздела:

grub-install /dev/sdxN

, где sdxN это нужный раздел (например, sdb2). Проблема здесь возникающая — предупреждение GRUB о том, что установка не в mbr осуществляется через блокировки и такой метод небезопасен, а поэтому работает только с флагом --force. Соответственно, игнорируя предупреждение GRUB ставим:

grub-install --force /dev/sdxN

После этого действия необходимо добавить пункт меню в «главный» загрузчик, дабы он мог загрузить этот GRUB. Для этого добавим несколько строк в скрипт /etc/grub.d/40_custom :

menuentry "my distib grub"{
set root=(hdN,M)
chainloader +1
boot
}

, где (hdN,M) — номер диска и раздела. Следует отметить, что GRUB 2 имеет следующую особенность нумерации: номера дисков начинаются с нуля, а разделов с единицы. Т.е. /dev/sdb3 будет нумероваться как (hd1,3) ³. После этой операции ближайшее обновление GRUB добавит соответствующий пункт в меню:

update-grub

Недостатком данного метода можно считать отсутствие возможности вернуться назад, в предыдущий загрузчик.

Способ второй.

Использование файлов конфигурации другого GRUB’а.

Для этого также необходимо добавить соответствующие пункты меню, редактируя файл /etc/grub.d/40_custom :

menuentry "my distib grub"{
configfile (hdN,M)/boot/grub/grub.cfg
}

, где (hdN,M), опять же, номера соответствующих диска и раздела, а далее указан путь к фалу конфигурации GRUB 2 на разделе. В силу POSIX путь должен быть одинаков для большинства дистрибутивов.

В этом методе задействуется одна из замечательнейших возможностей ОС загрузчика GRUB 2: доступ к фалам на других разделах непосредственно, без монтирования. Таким образом отпадает необходимость в установке локальных загрузчиков GRUB на разделы и появляется возможность вернуться в меню главного нажатием Esc, а также экономится время — GRUB загружается один раз, меняются лишь фалы конфигурации.

Для окончательного лоска теперь в главном загрузчике можно исключить os prober и наслаждаться отсутствием необходимости обновлять что либо ещё кроме локального GRUB, который при обновлениях ядра делает это автоматически.

PS: Друзья! Обо всех неточностях, помарках, опечатках и ошибках в статьях и заметках сообщайте, пожалуйста, автору любым доступным вам способом.


¹ Вероятно это как-то связано с «занятостью» раздела который примонтирован как корень.

² Под локальными понимаются загрузчики систем, не установленные в mbr.

³ Подробнее о нумерации дисков и разделов в GRUB 2 см. викиучебник.

=-=-=-=-=
Powered by Blogilo

Реклама
Запись опубликована в рубрике СПО, lugnsk, статьи с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s