Изменить стиль страницы

Обзор файла Grub.cfg

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

if loadfont /usr/share/grub/unicode.pf2 ; then

  set gfxmode=auto

  load_video

  insmod gfxterm

  —snip

Далее в этом файле вы должны увидеть доступные конфигурации загрузки, каждая из которых начинается с команды menuentry. Вы должны быть способны прочитать и понять данный пример, основываясь на том, что вы узнали из предыдущего раздела:

menuentry 'Ubuntu, with Linux 3.2.0-34-generic-pae' —class ubuntu —class gnu-linux —class gnu

—class os {

        recordfail

        gfxmode $linux_gfx_mode

        insmod gzio

        insmod part_msdos

        insmod ext2

        set root='(hd0,msdos1)'

        search —no-floppy —fs-uuid —set=root 70ccd6e7-6ae6-44f6-812c-51aab8036d29

        linux   /boot/vmlinuz-3.2.0-34-generic-pae root=UUID=70ccd6e7-6ae6-44f6-812c-51aab8036d29

          ro   quiet splash $vt_handoff

        initrd  /boot/initrd.img-3.2.0-34-generic-pae

}

Присмотритесь к командам submenu. Если ваш файл grub.cfg содержит множество команд menuentry, большинство из них, вероятно, свернуто внутри команды submenu. В старых версиях ядра это сделано для того, чтобы они не переполняли меню загрузчика GRUB.

Создание нового файла конфигурации

Если вы желаете внести изменения в конфигурацию загрузчика GRUB, не следует редактировать файл grub.cfg напрямую, поскольку он создается автоматически и система время от времени его перезаписывает. Необходимо дополнить конфигурацию где-либо в другом месте, а затем запустить команду grub-mkconfig, чтобы создать новый файл.

Чтобы понять, как происходит создание конфигурации, посмотрите в самое начало файла grub.cfg. Там должны быть строки с комментариями, например такими:

### BEGIN /etc/grub.d/00_header ###

Продолжая осмотр, вы обнаружите, что каждый файл в каталоге /etc/grub.d является сценарием оболочки, который производит фрагмент файла grub.cfg. Да и сама команда grub-mkconfig — это сценарий оболочки, который запускает все, что находится в каталоге /etc/grub.d.

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

# grub-mkconfig

Как быть, если вам необходимо добавить пункты меню и другие команды в конфигурацию загрузчика GRUB? Если отвечать кратко — следует указать необходимые вам настройки в новом файле custom.cfg и поместить его в каталог с конфигурацией загрузчика, например /boot/grub/custom.cfg.

Полный ответ выглядит немного сложнее. Конфигурационный каталог /etc/grub.d предлагает вам на выбор два варианта: 40_custom и 41_custom. Первый, 40_custom, является сценарием, который вы можете редактировать самостоятельно, но это, вероятно, наименее надежно: обновление пакета удалит все внесенные вами изменения. Сценарий 41_custom проще. Это всего лишь последовательность команд, загружающих файл custom.cfg при запуске загрузчика GRUB. Имейте в виду, что, если вы выберете второй вариант, изменения не отображаются, когда вы создаете файл конфигурации.

Эти варианты для создания пользовательского файла конфигурации не исчерпывают все возможности. Дополнения вы найдете в каталоге /etc/grub.d вашей версии системы. Так, например, Ubuntu добавляет в конфигурацию загрузки параметры для проверки памяти (memtest86+).

Чтобы записать и установить вновь созданный файл конфигурации GRUB, можно записать этот файл в каталог загрузчика GRUB, указав флаг -o в команде grub-mkconfig:

# grub-mkconfig -o /boot/grub/grub.cfg

Если же вы работаете в Ubuntu, просто запустите команду install-grub. В любом случае создайте резервную копию предыдущей конфигурации, убедитесь, что установка производится в правильный каталог, и продолжайте.

Теперь мы приступаем к рассмотрению дополнительных подробностей загрузчика GRUB и загрузчиков системы. Если вы устали от загрузчиков и от ядра, можете спокойно переходить к главе 6.

5.5.3. Установка загрузчика GRUB

Установка загрузчика GRUB является более сложной по сравнению с его настройкой. К счастью, вам, как правило, не придется об этом беспокоиться, поскольку ваше ПО должно выполнить это за вас. Однако если вы пытаетесь продублировать или восстановить загружаемый диск, а также подготавливаете собственную последовательность загрузки, вам может потребоваться установить загрузчик самостоятельно.

Прежде чем продолжать чтение, загляните в подраздел 5.8.3, чтобы получить представление о том, как загружается компьютер, и определить, какой тип загрузки вы применяете: MBR или EFI. Затем соберите ПО загрузчика GRUB и определите, где будет расположен каталог загрузчика; по умолчанию используется путь /boot/grub. Нет необходимости выполнять сборку загрузчика GRUB, если ваш дистрибутив делает это за вас. Если вы займетесь этим, загляните в главу 16, чтобы узнать о том, как выполняется сборка ПО на основе исходного программного кода. Убедитесь в том, что вы собираете верный целевой объект: он различен для загрузок MBR и UEFI (имеются также различия для 32- и 64-битного вариантов EFI).

Установка загрузчика GRUB в систему

При установке загрузчика системы необходимо, чтобы вы или установщик определили следующее.

• Целевой каталог загрузчика GRUB — каким его видит работающая в данный момент система. Обычно это каталог /boot/grub, но он может быть и другим, если вы устанавливаете загрузчик GRUB на другой диск или в другую операционную систему.

• Текущее устройство для целевого диска загрузчика GRUB.

• Для загрузки UEFI — текущую точку монтирования загрузочного раздела UEFI.

Помните о том, что загрузчик GRUB является модульной системой, но для загрузки модулей он должен читать файловую систему, которая содержит каталог загрузчика GRUB. Ваша задача заключается в создании версии загрузчика GRUB, которая способна читать эту файловую систему, чтобы иметь возможность загрузки остальной части своей конфигурации (файл grub.cfg) и любых необходимых модулей. В Linux это обычно означает, что нужно собрать версию загрузчика GRUB с предварительно загруженным модулем ext2.mod. Как только у вас будет такая версия, вам потребуется лишь поместить ее в загружаемую часть диска, а осталь­ные необходимые файлы — в каталог /boot/grub.

Загрузчик GRUB снабжен утилитой под названием grub-install (не смешивайте с командой install-grub в Ubuntu), которая выполняет за вас основную часть работы по установке файлов загрузчика GRUB и его конфигурации. Например, если ваш текущий диск расположен в /dev/sda и вы желаете установить загрузчик GRUB на этот диск с текущим каталогом /boot/grub, используйте такую команду установки загрузчика GRUB для таблицы MBR:

# grub-install /dev/sda

внимание

Неправильная установка загрузчика GRUB может нарушить последовательность загрузки вашей системы, поэтому не относитесь к этой команде легкомысленно. Если же такое произошло, прочитайте о том, как создать резервную копию MBR с помощью команды dd, сделайте резервную копию любого другого установленного в данный момент каталога GRUB и убедитесь в том, что у вас есть план аварийной загрузки.

Установка загрузчика GRUB на внешнем устройстве хранения данных