Настройка начального загрузчика

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:AMD64/Installation/Bootloader and the translation is 100% complete.

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎polski • ‎português do Brasil • ‎русский • ‎українська • ‎中文(中国大陆)‎
AMD64 Handbook
Установка
Об установке
Выбор подходящего источника для установки
Настройка сети
Подготовка дисков
Установка stage3
Установка базовой системы
Настройка ядра
Настройка системы
Установка системных утилит
Настройка загрузчика
Завершение
Работа с Gentoo
Введение в Portage
USE-флаги
Возможности Portage
Система init-скриптов
Переменные окружения
Работа с Portage
Файлы и каталоги
Переменные
Смешение ветвей программного обеспечения
Дополнительные утилиты
Дополнительные репозитории пакетов
Расширенные возможности
Настройка сети
Начальная настройка
Расширенная настройка
Модульное построение сети
Беспроводная сеть
Добавляем функциональность
Динамическое управление



Выбор загрузчика

Когда ядро Linux настроено, системные утилиты установлены и конфигурационные файлы отредактированы, настало время для установки последней важной части Linux-системы: загрузчика.

Загрузчик отвечает за загрузку ядра Linux во время загрузки - без него система не будет знать, как действовать, если нажата кнопка питания.

Для amd64, мы написали как настроить либо GRUB2, либо LILO для систем на базе BIOS, и GRUB2 или efibootmgr для UEFI систем.

В этом разделе Handbook было сделано разделение между установкой пакета (emerge) загрузчика и установкой загрузчика на системный диск. Здесь термин установка пакета (emerge) будет использоваться для того, чтоб попросить Portage установить пакет программного обеспечения в систему. Термин установка загрузчика на системный диск будет означать копирование файлов загрузчика или физическое изменение соответствующих разделов диска для того, чтобы активировать загрузчик; чтобы он стал работать при следующей загрузки.

По умолчанию: GRUB2

Ранее, в Gentoo Linux использовалось то, что теперь называется GRUB Legacy (наследство) в качестве рекомендуемого загрузчика. Но, как следует из названия, старый пакет GRUB больше не поддерживается и его быстро сменили на GRUB2. Для получения более подробной информации о GRUB Legacy, пожалуйста, обратитесь к статье GRUB.

По умолчанию, большинство систем Gentoo на данный момент используют GRUB2 (находится в пакете sys-boot/grub), который является заменой для GRUB Legacy. Без дополнительных настроек GRUB2 поддерживает старые системы BIOS ("pc"). С небольшими настройкам, которые нужно выполнить до компиляции, GRUB2 может поддерживать более чем полутора десятка дополнительных платформ. Для получения более подробной информации смотрите раздел предварительные требования статьи GRUB2.

Emerge

Если используется старая материнская плата, BIOS которой поддерживает только таблицу разделов MBR, никаких дополнительных настроек не требуется для того, чтобы установить GRUB:

root #emerge --ask --verbose sys-boot/grub:2

Заметка для пользователей UEFI: запущенная команда выведет включенные значения в переменной GRUB_PLATFORMS, перед компиляцией. Если используется более новая UEFI-совместимая материнская плата, пользователям сперва нужно убедиться, что GRUB_PLATFORMS="efi-64" включено (обычно это уже сделано по умолчанию). Если это не так, добавьте GRUB_PLATFORMS="efi-64" в файл /etc/portage/make.conf до компиляции GRUB2, что позволит собрать пакет с поддержкой EFI:

root #echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
root #emerge --ask sys-boot/grub:2
Если GRUB2 был каким-то образом установлен до включения GRUB_PLATFORMS="efi-64", тогда строка (как показано выше) может быть добавлена в make.conf и зависимости для world package set перевычислены, если добавить опции --update --newuse для emerge:
root #emerge --ask --update --newuse --verbose sys-boot/grub:2

GRUB2 теперь установлен в системе, но еще не активирован (не установлен в загрузочную запись).

Установка GRUB2 на диск

Далее установим необходимые для Grub2 файлы в каталог /boot/grub/ с помощью команды grub-install. Если предположить, что первый диском (тот, с которого система загружается) является /dev/sda, то одна из следующих команд сделает это:

  • Когда используется BIOS:
root #grub-install /dev/sda
  • Когда используется UEFI:
Важно
Убедитесь, что системный раздел EFI был смонтирован перед запуском grub-install. grub-install может установить GRUB файл EFI (grubx64.efi) в неправильном каталоге без каких-либо сообщений, о том, что использовался неправильный каталог.
root #grub-install --target=x86_64-efi --efi-directory=/boot
Заметка
Измените параметр --efi-directory на корневой каталог системного раздела EFI. Это необходимо, если раздел /boot не был отформатирован как FAT.

Некоторые производители материнских плат, похоже, поддерживают только каталог /efi/boot/ для расположения файла .EFI в системном разделе EFI (ESP). Установщик GRUB может выполнить эту операцию автоматически, если использовать параметр --removable. Убедитесь, что ESP смонтирован до запуска следующих команд. Предполагая, что ESP смонтирован в /boot (как было предложено ранее), выполните:

root #grub-install --target=x86_64-efi --efi-directory=/boot --removable

Это создает каталог по умолчанию, определенный спецификацией UEFI, а затем скопирует файл grubx64.efi в каталог «по умолчанию», определенный той же спецификацией.

Настройка

Далее, нужно сгенерировать конфигурационный файл GRUB2 на основе настроек пользователя, указанных в файле /etc/default/grub и в скриптах /etc/grub.d. В большинстве случаев, ничего не нужно настраивать пользователям, так как GRUB2 автоматически определяет, какое ядро есть для загрузки (самый высокий приоритет у /boot/) и какая файловая система у rootfs. Здесь также можно добавить параметры ядра в /etc/default/grub, используя переменную GRUB_CMDLINE_LINUX.

Для создания окончательной конфигурации GRUB2, запустите команду grub-mkconfig:

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.16.5-gentoo
Found initrd image: /boot/initramfs-genkernel-amd64-3.16.5-gentoo
done

Следует отметить, что в выводе команды должен быть, по крайней мере, хотя бы один образ Linux, который необходим для загрузки системы. Если используется initramfs или ядро создавалось с помощью genkernel, правильный образ initrd, так же должен быть обнаружен. Если это не так, перейдите в /boot/ и проверьте содержимое, используя команду ls. Если файлы действительно отсутствуют, вернитесь к инструкции по настройке и установке ядра.

Совет
Утилита os-prober может быть использована в сочетании с GRUB2, чтобы обнаружить другие операционные системы на подключаемых жестких дисках. Можно обнаруживать Windows 7, 8.1, 10, и другие дистрибутивы Linux. Тем, кому нужна двойная загрузка, должны установить пакет sys-boot/os-prober и затем перезапустить команду grub-mkconfig (как было показано выше). Если появляются проблемы, обязательно прочитайте статью GRUB2 полностью, прежде чем спрашивать у сообщества Gentoo поддержки.

Альтернативный метод 1: LILO

Emerge

LILO, или LInuxLOader, это проверенная временем рабочая лошадка среди загрузчиков Linux. Тем не менее, ему не хватает функций, если сравнивать с GRUB. LILO все еще используется на некоторых системах, потому что GRUB там не может работать. Конечно, он также используется, потому что некоторые люди знают LILO лучше и хотят использовать его. В любом случае, Gentoo поддерживает оба загрузчика.

Установить LILO можно очень быстро; просто используйте emerge.

root #emerge --ask sys-boot/lilo

Настройка

Для настройки LILO сперва создайте /etc/lilo.conf:

root #nano -w /etc/lilo.conf

В конфигурационном файле, секции используются для обозначения загрузочного ядра. Убедитесь, что известен путь до файла ядра (с версией ядра) и путь до initramfs файлов, так как они должны быть переданы в этом конфигурационном файле.

Заметка
Если корневай фаловая система JFS, добавьте строку append="ro" после каждого варианта загрузки, поскольку JFS необходимо пересматривать журнал перед монтированием на чтение-запись.
Файл /etc/lilo.confПример конфигурации LILO
boot=/dev/sda             # Установка LILO в MBR
prompt                    # Дать пользователю возможность выбрать другой вариант
timeout=50                # Ждать 5 (пять) секунд перед загрузкой варианта по умолчанию
default=gentoo            # После тайм аута загружать вариант "gentoo"  
image=/boot/vmlinuz-3.16.5-gentoo
  label=gentoo            # Имя этого варианта
  read-only               # При старте корень только для чтения. Не менять!
  root=          # Положения корня в файловой системе
  
image=/boot/vmlinuz-3.16.5-gentoo
  label=gentoo.rescue     # Имя этого варианта
  read-only               # При старте корень только для чтения. Не менять!
  root=/dev/sda4          # Положения корня в файловой системе
  append="init=/bin/bb"   # Запуск встроенной оболочки восстановления Gentoo
  
# Следующие две строки нужны для двойной загрузки с системой Windows.
# В этом примере, Windows находится на /dev/sda6.
other=/dev/sda6
  label=windows
Заметка
Если схема разделов и/или используемый образ ядра другие, то внесите соответствующие корректировки.

Если необходим initramfs, то измените конфигурацию сославшись на файл initramfs и сообщите initramfs где находится корневое устройство:

Файл /etc/lilo.confДобавление информации о initramfs в загрузочную запись
image=/boot/vmlinuz-3.16.5-gentoo
  label=gentoo
  read-only
  append="root=/dev/sda4"
  initrd=/boot/initramfs-genkernel-amd64-3.16.5-gentoo

Если необходимо передать ядру дополнительные параметры используйте оператор append. Например, добавьте оператор video, чтобы включить фреймбуфер:

Файл /etc/lilo.confДобавление параметра video к загрузочным опциям
image=/boot/vmlinuz-3.16.5-gentoo
  label=gentoo
  read-only
  root=/dev/sda4
  append="video=uvesafb:mtrr,ywrap,1024x768-32@85"

Пользователи, использующие genkernel должны знать, что их ядро использует параметры загрузки так же как и установочный CD. Например, если необходимо разрешить поддержку устройств SCSI, добавьте doscsi как параметр ядра.

Теперь сохраните файл и выйдите.

Установка LILO на диск

Для завершения запустите исполняемый файл /sbin/lilo, что бы LILO смог применить для системы настройки из /etc/lilo.conf (то есть установить себя на диск). Держите в уме, что /sbin/lilo должен исполняться каждый раз, когда устанавливается новое ядро или был изменен файл lilo.conf для загрузки системы, если имя файла ядра было изменено.

root #/sbin/lilo

Альтернативный метод 2: efibootmgr

На UEFI-системах, можно напрямую манипулировать UEFI firmware (другими словами основном загрузчиком) загрузочными записями. Таким системам не требуется дополнительный (так же известный как вторичный) загрузчик, такой как GRUB2, который помогает загрузить систему. Учитывая, что было сказано, причина по которой стоит использовать дополнительный EFI-загрузчик (такой как GRUB2) лишь в том, чтобы расширить функциональность UEFI во время загрузки. Использование efibootmgr подойдет больше для тех, кто хочет получить больше минимализма (хотя это более сложней) при загрузки системы; использование GRUB2 принесет больше простоты для большинства пользователей, так как он предлагает более гибкий подход для загрузки UEFI-систем.

Запомните, приложение sys-boot/efibootmgr не загрузчик; это средство для взаимодействия с прошивкой UEFI и обновления её настроек, так что ранее установленное ядро Linux может быть загружено с дополнительными опциями (если необходимо), или будет представлено несколько загрузочных записей. Это взаимодействие выполнено через переменные EFI (следовательно, необходима поддержка со стороны ядра переменных EFI).

Убедитесь, что прочитали статью EFI stub kernel перед продолжением. В ядре должны быть включены определенные опции, что бы ядро могло загрузится напрямую с системной UEFI firmware. Это возможно потребует рекомпиляции ядра. Также, хорошей идеей будет взглянуть на статью efibootmgr.

Заметка
Повторим еще раз. efibootmgr не является обязательным требованием для загрузки из UEFI. Ядро Linux само может загружаться сразу (с помощью прошивки UEFI), а дополнительные параметры ядра могут быть встроены в само ядра (в конфигурации ядра есть параметр, который позволяет пользователю определить параметры загрузки). Даже initramfs может быть встроен в ядро.

Тем, кто решил применить такой подход, необходимо установить программное обеспечение:

root #emerge --ask sys-boot/efibootmgr

Создайте каталог /boot/efi/boot/ и затем скопируйте в него ядро, назвав его bootx64.efi:

root #mkdir -p /boot/efi/boot
root #cp /boot/vmlinuz-* /boot/efi/boot/bootx64.efi

Далее, скажите прошивке UEFI, что бы загрузочная запись была создана и называлась "Gentoo", в которой будет свежее ядро с EFI stub:

root #efibootmgr --create --disk /dev/sda --part 2 --label "Gentoo" --loader "\efi\boot\bootx64.efi"

Если используется файл первоначальной файловой системы RAM (initramfs), добавьте правильную загрузочную опцию:

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l "\efi\boot\bootx64.efi" initrd='\initramfs-genkernel-amd64-3.16.5-gentoo'
Заметка
Символ \, применяемый для разделения директорий, является обязательным, когда используются UEFI определения.

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

Альтернативный метод 3: syslinux

Syslinux - еще одна альтернатива загрузчика для архитектуры amd64. Он поддерживает MBR, а с версии 6.00 поддерживает загрузку EFI. Также поддерживаются PXE (сетевые) и менее известные параметры. Хотя Syslinux является популярным загрузчиком для многих, он не поддерживается Handbook. Читатели могут найти информацию о способах установки этого загрузчика в статье о Syslinux.


Перезагрузка системы

Выйдите из chroot среды и размонтируйте все смонтированные разделы. Затем введите ту самую волшебную команду, которая запускает последний настоящий тест: reboot.

root #exit
cdimage ~#cd
cdimage ~#umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~#umount -R /mnt/gentoo
cdimage ~#reboot

Естественно, не забудьте вынуть загрузочный компакт-диск, иначе он загрузится сам вместо вашей новой системы Gentoo.

Загрузив вновь установленную систему, переходите к завершению установки Gentoo.