gummiboot (Русский) - ArchWiki

# gummiboot (Русский)

Ссылки по теме

- Arch boot process (Русский)
- Загрузчики
- Unified Extensible Firmware Interface (Русский)

Состояние перевода: На этой странице представлен перевод статьи Gummiboot. Дата последней синхронизации: 2015-02-18. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

C домашней страницы gummiboot:

  gummiboot - это простой UEFI менеджер загрузки, который запускает исполняет настроенные EFI образы. Записью по умолчанию является настоенный паттерн (glob) или меню на экране..

Его легко настраивать, но от умеет только запускать исполняемые EFI файлы, ядро Linux EFISTUB, UEFI Shell, grub.efi и тому подобные.

Важно: gummiboot всего лишь предоставляет меню для загрузки EFISTUB ядер. В случае, если у вас возникают проблемы с загрузкой EFISTUB ядер, как в FS#33745, вы можете использовать загрузчик, который не использует EFISTUB, например GRUB (Русский), Syslinux (Русский) или ELILO.
Обратите внимание: В этой статье точку монтирования Системного Раздела EFI (также известного как ESP) будем обозначать как `$esp`.

## Установка

### Загрузка в режиме 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 файла, который будет загружен во время загрузки.

Обратите внимание: Например, это возможно на Dell Latitude сериях, так как EFI Shell не может записывать в ПЗУ компьютера.

Если вы можете это сделать, то установка проще: установите 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 будет автоматически проверять наличие "Windows Boot Manager" (`\EFI\Microsoft\Boot\Bootmgfw.efi`), "EFI Shell" (`\shellx64.efi`) и "EFI Default Loader" (`\EFI\Boot\bootx64.efi`). Для тех, что будут найдены, записи также будут автоматически сгенерированы. Тем не менее, он не будет автоматически искать другие EFI приложения (в отличае от rEFInd (Русский)), поэтому для загрузки ядра записи должны быть созданы вручную.
Совет: Вы можете узнать PARTUUID вашего корневого раздела с помощью команды `blkid -s PARTUUID -o value /dev/sdxY`, где 'x' - это буква устройства, а 'Y' - это номер раздела. Это нужно только для вашего корневого раздела, а не для $esp.

Для загрузки 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).

## Смотрите также

- http://freedesktop.org/wiki/Software/gummiboot/

Categories:

- Boot loaders (Русский)
- Русский