Введение
Secure Boot («безопасная загрузка») — протокол, являющийся частью спецификации UEFI. Заключается в проверке подписи загружаемых UEFI-образов, используя асимметричную криптографию относительно ключей, хранящихся в ключевом хранилище системы.
- Platform Key (PK) — открытый ключ владельца платформы. Подписи соответствующим закрытым ключом необходимы для смены PK или изменения KEK, db и dbx (описаны далее). Хранилище PK должно быть защищено от вмешательства и удаления;
- Key Exchange Key (KEK) — открытые ключи операционных систем. Подписи соответствующими закрытыми ключами необходимы для изменения баз данных подписей. Хранилище KEK должно быть защищено от вмешательства.
Подготовка компьютера
Установка Astra Linux и последующие действия должны производится только в режиме UEFI (т.е с отключенными в BIOS-е компьютера режимами CSM и Legacy).
Подробнее про установку Astra Linux в режиме UEFI см.:
Для создания загрузочного носителя требуется USB-накопитель с емкостью не менее 1ГБ.
Установка SecureBoot
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 (потребуется подключение базового репозитория, см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования );
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6;
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.5 с установленными оперативными обновлениями;
- Astra Linux Common Edition 2.11.* — 2.12;
необходимо наличие установленного пакета astra-safepolicy версии 1.0.32 и выше. В системах Astra Linux Special Edition с установленным актуальным обновлением пакет astra-safepolicy устанавливается автоматически, при необходимости установить его можно командой:
Дополнительно можно сразу установить необходимые пакеты (при наличии подключенных репозиториев пакетов эти пакеты будут автоматически установлены при первом запуске инструмента astra-secureboot):
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.5 без установленных оперативных обновлений;
- Astra Linux Common Edition 1.11
все пакеты необходимо установить вручную (команду см. выше).
Проверить имя подключенного накопителя, например, командой:
После выполнения указанной команды:
- в каталоге /root/secureboot/key будут размещены все необходимые для работы ключи;
- на указанном в команде USB-накопителе будет размещена загрузочная информация с необходимыми файлами.
В BIOS (или функциональной клавишей F12) выбрать вариант загрузки с UEFI: USB;
Если все действия выполнены правильно, то загрузка будет выполнена с USB-накопителя и должен загрузиться KeyTool.
В меню «KeyTool» выбрать пункт «Edit Keys» и нажать Enter.
В меню «Select Key to Manipulate» выбрать пункт «The Allowed Signatures Database (db)» и нажать Enter ;
В меню «Manipulating Contents of The Allowed Signatures Database (db)» выбрать пункт «Replace Keys»;
Выбрать USB-накопитель, затем последовательно выбрать каталоги efi/ -> boot/ -> keys/ и выбрать файл db.auth;
Повторить действия сначала для KEK, потом для PK, выбрав, соответственно, файлы KEK.auth и PK.auth;
Вернуться в главное меню двойным нажатием на Esc, выбирать Exit;
После перезагрузки войти в BIOS и включить режим SecureBoot.
Отключение SecureBoot
Рекомендованный сценарий отключения SecureBoot:
- Удалить файл /etc/initramfs/post-update.d/update-efi-image;
- Сохранить копию файла /boot/efi/EFI/astralinux/grubx64.efi;
- Переустановить загрузчик grub.
if [ -f /etc/initramfs/post-update.d/update-efi-image ]; then rm /etc/initramfs/post-update.d/update-efi-image; fi
mv /boot/efi/EFI/astralinux/grubx64.efi /boot/efi/EFI/astralinux/grubx64.efi-old
grub-install —bootloader-id=astralinux
Astra Linux Special Edition 1.3 и 1.4: установка и настройка на ЭВМ с (U)EFI BIOS
1. Перед установкой и настройкой ОС создать на НЖМД таблицу разделов в формате GPT. Поскольку в составе инсталлятора ОС такие утилиты отсутствуют, рекомендуется создавать таблицу с использованием Live CD Parted Magic версии >= 6.6. На нем присутствуют графическая утилита gparted и консольная утилита gdisk, позволяющие выполнить указанные действия. Первой должна быть создана ESP. Размер ESP должен быть приблизительно равен 100 МБ. Отформатировать ESP необходимо в ФС FAT.
В случае, если на ПЭВМ сначала устанавливается ОС Windows 7 с загрузчиком (U)EFI, предварительно создавать раздел ESP нет необходимости, т. к. инсталлятор Windows 7 создаст такой раздел автоматически;
2. Создать USB-накопитель, загружаемый через (U)EFI BIOS. Для этого удалить на USB-накопителе существующую таблицу разделов, создать новый раздел размером приблизительно 100 МБ, установить ему код ef (ESP), отформатировать созданный раздел в ФС FAT, монтировать и создать на нем следующую структуру директорий:
В директорию /EFI/Boot поместить файл bootx64.efi. Файл bootx64.efi предварительно скачать из открытых источников в сети Интернет либо создать при помощи EDK. Оставшееся на USB-накопителе свободное пространство отформатировать в любой необходимой ФС (FAT, FAT32, EXT, NTFS) и использовать для хранения данных.
На этот раздел необходимо скопировать deb-пакеты GRUB2 версии >=1.99-8. Их можно взять либо в открытых репозиториях debian (из Ubuntu не подойдут, поскольку собраны с использованием библиотек, отсутствующих в ОС), либо собрать самостоятельно из открытых исходных кодов. Должны быть следующие пакеты:
grub-common, grub2-common, grub-efi-amd64-bin, grub-efi-amd64;
3. Установка ОС проводится в штатном режиме в соответствии с эксплуатационной документацией, за исключением установки загрузчика. Загрузчик не устанавливать;
4. После завершения установки ОС необходимо перезагрузить ПЭВМ и вновь загрузиться с установочного диска ОС в режиме «Восстановление». В режиме восстановления в окне «Войти в режим восстановления» выбрать раздел, на который была установлена ОС, а затем выбрать «Запуск оболочки в /dev/наименование_раздела». Нажать и в консоли выполнить команду:
5. Выполнить команду, чтобы убедиться, что не установлены пакеты GRUB, кроме fly-admin-grubeditor :
Если какие-то пакеты все же установлены, необходимо их удалить командой:
6. Монтировать раздел с данными USB-накопителя и установить с него все deb пакеты GRUB2. Возможно для этого придется предварительно установить пакеты
gettext и efibootmgr с установочного диска ОС.
7. Создать в корне ФС директорию boot_EFI, монтировать к ней раздел ESP и создать на ней следующую структуру директорий:
Если на ПЭВМ предварительно была установлена ОС Windows 7 с загрузчиком (U)EFI, то создавать на разделе ESP всю структуру директорий нет необходимости, т. к. инсталлятор Windows 7 создал ее в процессе установки. Необходимо только создать директорию /EFI/grub ;
В результате выполнения указанной команды в директории /boot_EFI/EFI/grub/ должны появиться модули grub2;
grub-mkimage -o /boot_EFI/EFI/grub/grub.efi -p /EFI/grub -O x86_64-efi acpi ata ata_pthru bitmap bitmap_scale boot cat chain cmp configfile cpio date datetime echo efi_gop elf ext2 extcmd fat fixvideo font fshelp gettext gfxmenu gfxterm gptsync gzio halt help hfs hfsplus jpeg keylayouts keystatus linux loadbios loadenv ls lspci mmap msdospart multiboot2 multiboot normal part_gpt part_msdos parttool png probe read reboot regexp search_fs_file search_fs_uuid search_label search serial terminal terminfo true uhci usb_keyboard usb usbms usbserial_common video_fb videoinfo video
В результате выполнения указанной команды в директории /boot_EFI/EFI/grub/ будет создан файл grub.efi , собранный с поддержкой необходимых модулей.
В данной команде приведен примерный список модулей. При необходимости можно собирать grub.efi с другими модулями, но нельзя использовать модуль at_keyboard, т. к. он может привести к зависанию загрузчика GRUB2;
10. Создать конфигурационный файл grub.cfg . Если на ПЭВМ предварительно была установлена ОС Windows 7 с загрузчиком (U)EFI и необходимо добавить
GRUB2 возможность загружать Windows 7, то в файл /etc/grub.d/40_custom необходимо добавить следующие записи:
menuentry «Windows 7 x86_64 UEFI-GPT» <
search —file —no-floppy —set=root /EFI/Microsoft/Boot/BOOTMGFW.EFI
chainloader /EFI/Microsoft/Boot/BOOTMGFW.EFI
>
В случае, если расположение файла BOOTMGFW.EFI на ESP-разделе отличается от /EFI/Microsoft/Boot/ , то необходимо указать корректный путь к нему. Выполнить следующую команду:
На некоторых BIOS при перезагрузке ОС возможно некорректное поведение ядра. Для устранения этой проблемы необходимо в файл grub.cfg добавить параметр :
в menuentry ’Astra GNU/Linux, with Linux -generic’ и
menuentry ’Astra GNU/Linux, with Linux -generic (режим восстановления)’
в секции linux /boot/vmlinuz-generic после параметра root=UUID=номер_UUID .
На некоторых BIOS при загрузке ОС возможно «зависание» ядра. Для устранения этой проблемы необходимо в файл grub.cfg добавить параметр:
в menuentry ’Astra GNU/Linux, with Linux -generic’ и
menuentry ’Astra GNU/Linux, with Linux -generic (режим восстановления)’
в секции linux /boot/vmlinuz-generic после параметра root=UUID=номер_UUID ;
11. Для соответствия спецификации EFI, а также для обеспечения возможности загрузки ОС средствами АПМДЗ необходимо скопировать файл /boot_EFI/EFI/grub/grub.efi в директорию /boot_EFI/EFI/Boot и переименовать его в bootx64.efi .
Если на ПЭВМ предварительно была установлена ОС Windows 7 с загрузчиком (U)EFI, то файл bootx64.efi уже существует. Рекомендуется переименовать его, например в bootx64_bak.efi ;
12. Все подготовительные действия по настройке GRUB2 завершены. Размонтировать ESP-раздел, выйти из оболочки chroot-окружения командой exit и перезагрузить ПЭВМ. Загрузить ПЭВМ с предварительно подготовленного USB-накопителя;
13. Если USB-накопитель подготовлен правильно, то при загрузке с него произойдет запуск UEFI Shell. На экране монитора будет отображена карта разделов. Как правило, первым разделом fs0 будет указан ESP-раздел. Для перехода на него выполнить команду:
Затем при помощи команды cd перейти в директорию \EFI\grub и запустить на исполнение grub.efi . Если все предыдущие действия выполнены корректно, то появится окно загрузчика GRUB2, в котором выбрать пункт меню ’Astra GNU/Linux, with Linux -generic’ и выполнить загрузку ОС.
Если на ПЭВМ предварительно была установлена ОС Windows 7 с загрузчиком (U)EFI и в GRUB2 добавлена возможность загружать Windows 7, то в меню GRUB2 появится пункт «Windows 7 x86_64 UEFI-GPT», при выборе которого должна произойти загрузка Windows 7;
14. После загрузки ОС убедиться, что ядро загружено с поддержкой EFI-расширений путем проверки наличия директории /sys/firmware/efi. Теперь осталось передать менеджеру загрузки EFI информацию о загружаемых ОС. Для этого использовать утилиту efibootmgr , входящую в состав ОС. Для просмотра существующего порядка загрузки необходимо выполнить команду:
Для добавления записи, вызывающей загрузчик GRUB2, выполнить:
где GRUB Boot Manager — название записи, как она будет выглядеть в BIOS, -d /dev/sda — диск, на котором расположен ESP-раздел, -p 1 — номер ESP-раздела (нумерация начинается с 1), -l \\EFI\\grub\\grub.efi — путь к файлу grub.efi относительно корня ESP-раздела. Путь обязательно указывается через \\ . Для добавления записи, вызывающей загрузчик Windows 7, выполнить:
В случае неправильного добавления записи ее необходимо удалить следующим образом:
– выполнить команду efibootmgr -v и посмотреть номер записи (например, Boot0004*);
– удалить неправильную запись командой:
15. Перезагрузить ПЭВМ, зайти в BIOS и установить в меню загрузки первым пунктом «GRUB Boot Manager».