gummiboot (Русский)
Ссылки по теме
C домашней страницы gummiboot:
- gummiboot - это простой UEFI менеджер загрузки, который запускает исполняет настроенные EFI образы. Записью по умолчанию является настоенный паттерн (glob) или меню на экране..
Его легко настраивать, но от умеет только запускать исполняемые EFI файлы, ядро Linux EFISTUB, UEFI Shell, grub.efi и тому подобные.
Установка
Загрузка в режиме EFI
Для начала убедитесь, что вы загружены в режиме UEFI, что есть доступ к вашим переменным EFI, что ваш Системный Раздел EFI правильно примонтирован и что ваше ядро и initramfs скопированы на этот ESP раздел, так как gummiboot не умеет загружать EFI приложения из других разделов. Поэтому настоятельно рекомендуется монтировать ваш ESP в /boot
, если вы используете gummiboot.
Затем установите пакет gummiboot из официальных репозиториев.
Наконец, выполните следующую команду, чтобы скопировать бинарник gummiboot на ваш Системный Раздел EFI и установить его в качестве EFI приложения по умолчанию (загрузочная запись по умолчанию), загружаемого EFI менеджером загрузки. Если вы не загружены в режиме в режиме UEFI и ваши переменные EFI недоступны, то создание загрузочной записи не сработает. Однако, вы вероятно сможете загрузить gummiboot так как вы скопировали его бинарник в расположение загрузочной EFI записи по умолчанию на вашем ESP ($esp/EFI/boot/bootx64.efi
для x64 систем), если там не расположено другое (не gummiboot) EFI приложение с тем же именем файла.
# gummiboot --path=$esp install
Загрузка в режиме Legacy
Вы с таким же успехом можете установить gummiboot, если загружаетесь в режиме legacy OS. Тем не менее, от вас всё равно требуется позже сказать прошивке запускать EFI файл gummiboot'а при загрузке:
- у вас есть работающие EFI shell где-нибудь;
- ваш интерфейс прошивки предоставляет вам способ правильной настройки EFI файла, который будет загружен во время загрузки.
Если вы можете это сделать, то установка проще: установите gummiboot из официальных репозиториев,перейдите в ваш EFI shell или в ваш интерфейс настройки прошивки и измените EFI файл по умолчанию вашей машины на /<EFI boot partition>/efi/gummiboot/gummibootx64.efi
.
Обновления
gummiboot предполагает, что ваш Системный Раздел EFI примонтирован в /boot
, в этом случае, каждый раз при установке новой версии gummiboot, команда gummiboot --path=$esp update
будет вызываться автоматически с помощью метода post_install
в установочном скрипте. Если ваш ESP смонтирован не в /boot
, вам понадобится выполнять эту команду вручную.
Настройка
Базовая настройка
Базовая конфигурация хранится в $esp/loader/loader.conf
, в которой доступно всего две опции:
-
default
– выбираемая по умолчанию запись (без суффикса.conf
); может быть звёздочкой, напримерarch-*
-
timeout
– задержка меню в секундах. Если таймаут не задан, то меню будет отображаться только если удерживать клавишу пробел при загрузке.
Пример:
$esp/loader/loader.conf
default arch timeout 4
Обратите внимание, что обе опции могут быть изменены в самом меню загрузки, которое будет хранить их как переменные EFI.
Добавление загрузочных записей
Для загрузки gummiboot составляет пункты меню из $esp/loader/entries/*.conf
файлов – каждый найденный файл должен содержать только одну загрузочную запись. Возможными опциями являются:
-
title
– название операционной системы. Обязательная.
-
version
– версия ядра, отображаемая только если существуют несколько записей с одинаковым названием. Не обязательная.
-
machine-id
– идентификатор машины из/etc/machine-id
, отображаемый только если существуют несколько записей с одинаковым названием и одинаковой версией. Не обязательная.
-
efi
– EFI программа для запуска, относительно вашего ESP ($esp
); например,/vmlinuz-linux
. Либо это, либоlinux
(смотрите ниже) является обязательным.
-
options
– опции командной строки для передачи EFI приложению. Не обязательная, но вам нужно будет передать как минимумinitrd=efipath
иroot=dev
если загружаете Linux.
Для Linux вы можете задать linux path-to-vmlinuz
и initrd path-to-initramfs
; это автоматически преобразуется в efi path
и options initrd=path
– этот синтаксис поддерживается только для удобства и не имеет различий по функциональности.
Установки со стандартной корневой директорией
Вот пример записи для корневого раздела без LVM или LUKS:
$esp/loader/entries/arch.conf
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw
Пожалуйста, обратите внимание, что в вышеприведённом примере PARTUUID/PARTLABEL идентифицируют GPT раздел, а это не то же самое, что UUID/LABEL, которые идентифицируют файловую систему. Использование PARTUUID/PARTLABEL бывает полезным, потому что они инвариантны (то есть неизменяемы), если вы переформатируете раздел в другую файловую систему или если по какой-то причине изменятся обозначения /dev/sd*. Также оно может быть полезно, если у вас нет файловой системы на разделе (или вы используете LUKS, который не поддерживает метки томов).
Установки с LVM корневой директорией
Вот пример для корневой директории, использующей логический менеджер разделов:
$esp/loader/entries/arch-lvm.conf
title Arch Linux (LVM) linux /vmlinuz-linux initrd /initramfs-linux.img options root=/dev/mapper/<VolumeGroup-LogicalVolume> rw
Замените <VolumeGroup-LogicalVolume>
на актуальные названия VG и LV (например, root=/dev/mapper/volgroup00-lvolroot
). Кроме того, вместо них можно использовать UUID:
.... options root=UUID=<UUID identifier> rw
Обратите внимание, что root=UUID=
используется вместо root=PARTUUID=
, который используется для корневых разделов без LVM или LUKS.
Установки с зашифрованной корневой директорией
Вот пример конфигурационного файла для зашифрованного корневого раздела (DM-Crypt / LUKS):
$esp/loader/entries/arch-encrypted.conf
title Arch Linux Encrypted linux /vmlinuz-linux initrd /initramfs-linux.img options cryptdevice=UUID=<UUID>:<mapped-name> root=UUID=<luks-UUID> quiet ro
В этом примере используется UUID; если хотите, можете заменить UUID на PARTUUID. Обратите внимание, что <luks-UUID>
обозначает UUID актуальной расшифрованой корневой файловой системы (тот, что находится в /dev/mapper/<mapped-name>
), а не UUID устройства. Смотрите Dm-crypt/System configuration#Boot loader.
Вы также можете добавить другие EFI приложения, такие как \EFI\arch\grub.efi
.
Дополнительная безопасность
Вы должны знать, что параметры командной строки для ядра могут быть отредактированы с помощью меню загрузки gummiboot'а (смотрите #Клавиши в загрузочном меню) при нажатии e
. Это главная дыра в безопасности, так как если вы переопределите аргумент ядра init=
, например на init=/bin/bash
, это загрузит вашу машину непосредственно с правами root без каких либо паролей, легко обходя существующий пароль root'а! Поскольку gummiboot в настоящий момент не имеет функциии защиты паролем и не имеет возможности предотвратить изменения параметров ядра, вы должны убедиться в том, что вы задали пароль на аппаратном уровне (UEFI/BIOS), который предотвратит загрузку компьютера до того, как введён правильный пароль.
Поскольку безопасность состоит из нескольких уровней, а физический доступ сразу же обходит любые системы безопасности, возможно вам пригодится шифрование вашего диска с помощью dm-crypt, особенно если ваша машина является ноутбуком. Однако, это уже другой вопрос, не относящийся к gummiboot.
Поддержка гибернации
Пожалуйста, прочтите статью Suspend and hibernate, особенно пример для gummiboot.
Клавиши в загрузочном меню
В меню используются следующие клавиши:
-
Вверх/Вниз
- выбор записи -
Enter
- загрузить выбранную запись -
d
- выбрать загрузочную запись по умолчанию (хранится в энергонезависимой EFI переменной) -
-/T
- уменьшить таймаут (хранится в энергонезависимой EFI переменной) -
+/t
- увеличить таймаут (хранится в энергонезависимой EFI переменной) -
e
- редактировать командную строку ядра -
v
- показать версию gummiboot и UEFI -
Q
- выйти -
P
- отобразить текущую конфигурацию -
h/?
- помочь
А эти клавиши, нажатые в меню в процессе загрузки, сразу загрузят определённую запись:
-
l
- Linux -
w
- Windows -
a
- OS X -
s
- EFI Shell -
1-9
- порядковый номер записи
Решение проблем
Создание записи вручную с помощью efibootmgr
Если команда gummiboot install
не сработала, вы можете создать загрузочную EFI запись самостоятельно с помощью утилиты efibootmgr
:
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/gummiboot/gummibootx64.efi -L "Gummiboot"
где /dev/sdXY
- это ваш EFISYS раздел.
Меню не отображается после обновления Windows
Допустим, если вы обновились с Windows 8 до Windows 8.1 и вы больше не видите загрузочного меню после этого обновления, (то есть сразу грузится Windows):
- Убедитесь, что как Secure Boot (настраивается в UEFI), так и Fast Startup (настраивается в опциях питания в Windows) отключены.
- Убедитесь, что в вашем UEFI Linux Boot Manager первичнее, чем Windows Boot Manager (настраивается в UEFI настройках, таких как Hard Disk Drive Priority).