- Установка Astra Linux на машину с поддержкой UEFI
- Проверка параметров загрузки
- Настройка UEFI-загрузки без использования загрузчика grub2
- Проверка загрузки UEFI
- Управление параметрами загрузки UEFI
- Virtual Machine Manager
- Oracle VirtualBox
- Введение
- Установка пакетов
- Создание свободного места для дискового раздела grub
- Создание дискового раздела для EFI без использования Live-CD
- Создание дискового раздела для EFI с использованием Live-CD
- Восстановление GRUB EFI в режиме восстановления
- Изменение параметров загрузчика Grub2
- Установка и изменение пароля для меню загрузчика
- Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.
- Запрет выбора загрузки ядра GENERIC
- Настройка выбора ядра для загрузки
Установка Astra Linux на машину с поддержкой UEFI
При установке Astra Linux на машину, поддерживающую загрузку UEFI, установщик автоматически определяет наличие UEFI и автоматически создает и настраивает нужный загрузочный раздел. При этом:
- Дисковый раздел для UEFI-загрузки автоматически монтируется в каталог /boot/efi;
- Для загрузки используется UEFI-вариант штатного загрузчика grub2;
- Образ загрузчика размещается в файле /boot/efi/EFI/astralinuxse/grubx64.efi;
При необходимости загрузочный раздел UEFI можно создать при установке ОС вручную.
Проверка параметров загрузки
Для проверки параметров загрузки можно использовать команду efibootmgr. Пример вывода команды при настроенной по умолчанию UEFI-загрузке:
sudo efibootmgr
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VBca27e834-16bf61c9
Boot0003* EFI Internal Shell
Boot0004* astralinuxse
Настройка UEFI-загрузки без использования загрузчика grub2
Для создания загрузочной записи, не использующей grub2, нужно скопировать загружаемые образы (файлы /vmlinuz и /initrd.img) на дисковый раздел UEFI, и указать параметры загрузки. Возможный сценарий создания записи:
#!/bin/bash sudo mkdir /boot/efi/EFI/astralinuxefi sudo cp /vmlinuz /boot/efi/EFI/astralinuxefi sudo cp /initrd.img /boot/efi/EFI/astralinuxefi export UUID=$(sudo blkid -s UUID -o value /dev/sda2) sudo efibootmgr -c -g -L "astralinuxefi" -l '\EFI\astralinuxefi\vmlinuz' -u "root=UUID=$UUID rw quiet rootfstype=ext4 add_efi_memmap initrd=\\EFI\\astralinuxefi\\initrd.img"
Сценарий предполагает, что ОС установлена на дисковый раздел /dev/sda2. Сценарий создает каталог /boot/efi/EFI/astralinuxefi, копирует в этот каталог загружаемые образы, и с помощью команды efibootmgr создает загрузочнуй запись с нужными параметрами.
Если в качестве загрузочного диска используется диск, отличный от /dev/sda (например, /dev/vda в системе виртуализации QEMU), следует явно указать диск с помощью опции -d:
После выполнения указанных действий вывод команды efibootmgr покажет наличие нового варианта загрузки (запись Boot0005):
sudo efibootmgr
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0005,0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VBca27e834-16bf61c9
Boot0003* EFI Internal Shell
Boot0004* astralinuxse
Boot0005* astralinuxefi
И после перезагрузки система будет загружена с использованием новой загрузочной записи (параметр BootCurrent в первой строке имеет значение 0005):
sudo efibootmgr
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0005,0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VBca27e834-16bf61c9
Boot0003* EFI Internal Shell
Boot0004* astralinuxse
Boot0005* astralinuxefi
Проверка загрузки UEFI
Для того, чтобы после перезагрузки ОС убедиться, что ОС действительно загружена с UEFI, помимо использования команды efibootmgr, можно проверить существование каталога /sys/firmware/efi, создающегося автоматически при загрузке UEFI. Выполнить такую проверку можно, например командой просмотра содержимого каталога:
Управление параметрами загрузки UEFI
Для проверки и настройки параметров загрузки UEFI можно использовать инструмент командной строки efibootmgr (требуются права суперпользователя). Справка по применению инструмента доступна в справочной системе man:
Virtual Machine Manager
При создании виртальной машины после этапа создания виртуального диска установить отметку в чек-боксе «Настроить конфигурацию перед установкой», после чего нажать кнопку «Завершить».
В открывшемся окне настроек в пункте «Firmware» выбрать вариант встроенного ПО для UEFI-загрузки. Название варианта может отличаться в различных версиях виртуализации, в общем случае не следует выбирать варианты «.ms» и «secureboot». При написании этой статьи использовался вариант встроенного ПО «UEFI x84_64 /usr/share/OVMF/OVMF_CODE_4m.fd».
Нажать кнопку «Применить» и кнопку «Начать установку».
Oracle VirtualBox
При использовании Oracle VM VirtualBox Менеджер: «Настроить» — «Система» — «Материнская плата» — установить отметку в чек-боксе «Включить EFI (только специальные ОС)».
Введение
При замене таблицы разделов диска формата MBR на таблицу разделов диска формата GPT могут возникнуть проблемы с загрузкой ОС из-за отсутствия дискового раздела grub, имеющегося только для таблицы разделов MBR. Далее приводится процедура установки раздела grub для таблицы разделов GPT, в том числе для загрузки ОС средствами UEFI.
Установка пакетов
Если система загружается, то:
Если система не загружается, то указанные выше команды выполнить через режим восстановления. После входа в режим восстановления:
- Удалить ненужные пакеты (команда приведена выше);
После назначения сетевого адреса установить пакеты GRUB для EFI (команда приведена выше).
Создание свободного места для дискового раздела grub
Данные шаги необходимо выполнить в случае отсутствия свободного неразмеченного места на диске. При возможности использовать Live-образ ОС выделение места можно выполнить загрузившись с этого образа и применив графический редактор дисков gparted.
Если на диске имеется раздел подкачки (swap), то для размещения дискового раздела grub этот раздел можно удалить или уменьшить и, при необходимости, использовать в дальнейшем размещение областей подкачки в файлах (см. Область подкачки (swap): особенности применения и обеспечения безопасности).
Независимо от выбранного метода перед выполнением дальнейших действий рекомендуется сделать резервную копию данных (с помощью штатных средств ОС Astra Linux или, в случае если система не загружается, загрузившись с Live-образа). При выполнении дальнейших действий следует соблюдать осторожность, так как ошибки выполнения могут повлечь потерю данных.
Рекомендованный размер дискового раздела grub — от 200МБ (возможно и меньше, но это может привести к проблемам в последующих обновлениях).
GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) resizepart Partition number? 1 End? [14,0GB]? 13800 Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? yes (parted) quit
в примере выше дисковый раздел номер 1 на устройстве /dev/sda (исходный размер 14,0GB) уменьшается до размера 13,800KB;
Создание дискового раздела для EFI без использования Live-CD
После запуска интерпретатора для удобства работы перейти в терминал с помощью клавиш «Alt+Ctrl+F2»:
Метка может быть произвольной, в примере использована метка EFI-SYstem;
/dev/disk/by-partlabel/EFI-system /boot/efi vfat defaults 0 2
Создание дискового раздела для EFI с использованием Live-CD
- Выполнить перезагрузку и осуществить вход в систему с Live-CD;
С помощью Gparted создать раздел 100Мб с файловой системой FAT32 и флагом ESP:
На приведенном выше снимке экрана выставлен флаг boot. Использование этого флага не обязательно.
UUID= /boot/efi vfat defaults 0 0
Восстановление GRUB EFI в режиме восстановления
- Перезагрузить систему и войти в режиме восстановления в UEFI;
Изменение параметров загрузчика Grub2
В общем случае, после внесения изменений в конфигурационные файлы загрузчика (файл /etc/default/grub или файлы в каталоге /etc/grub.d/) для вступления изменений в силу следует выполнить команду обновления загрузчика:
При этом будет переписан файл /boot/grub/grub.cfg, и все внесенные в него изменения будут утеряны.
Для внесения изменений в конфигурационные файлы требуются права суперпользователя (при включенном МКЦ — права суперпользователя с высоким уровнем целостности).
Установка и изменение пароля для меню загрузчика
Системный загрузчик GRUB2 поддерживает возможность задания паролей в открытом виде, и многие инструкции предлагают именно такой способ. В настоящей инструкции предлагается более безопасный способ задания пароля в виде хеша. Независимо от выбранного способа рекомендуется максимально ограничить доступ к файлу с паролем .
Для смены пароля системного загрузчика необходимо создать хеш нового пароля и заменить им старый хеш:
- Для генерации хеша выполнить команду и дважды ввести новый пароль:
Полученный хеш (начиная со слова grub) скопировать в буфер (например, выделив его с помощью мыши, и нажав правую кнопку мыши выбрать «копировать»);
#!/bin/bash cat << EOF
set superusers=» username »
password_pbkdf2 username grub.pbkdf2.sha512.10000.9C319610666.
EOF<>
Цветами условно обозначены имя пользователя (красный) и созданный кеш (зеленый), в реальном редакторе цветовых обозначений нет.
Можно отключить запрос пароля grub, например для записи Windows. Для этого в файла /boot/grub/grub.cfg в параметрах загрузочного меню (строка, начинающаяся с «menuentry») указать (добавить) параметр —unrestricted, например:
. --class gnu-linux --class gnu --class os --unrestricted .
Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Для того, чтобы изменения сделать постоянными нужный элемент меню можно добавить в файл /etc/grub.d/40_custom, указав в нем все необходимые параметры. Например, для создания элемента меню «Windows 10 без пароля» для загрузки Windows 10 без запроса пароля (опция —unrestricted) добавить следующие строки:
menuentry "Windows 10 без пароля" --class windows --class os --unrestricted < insmod ntfs search --no-floppy --set=root --fs-uuid ntldr /bootmgr >
В качестве образца для создания своего элемента меню можно использовать записи menuentry из файла /boot/grub/grub.cfg.
Запрет загрузки в режиме восстановления. Таймаут ожидания выбора при загрузке.
Для того, чтобы запретить варианты загрузки в режиме восстановления:
- Открыть в редакторе файл /etc/default/grub:
Пункты меню, позволяющие выбрать для загрузки режим восстановления, можно убрать из меню и путем редактирования файла /boot/grub/grub.cfg (см. ниже, но эти изменения не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Запрет выбора загрузки ядра GENERIC
Для того, чтобы запретить все варианты загрузки, кроме варианта HARDENED:
- С правами суперпользователя открыть в редакторе файл /boot/ grub/ grub/grub.cfg:
#menuentry ‘AstraLinuxCE GNU/Linux, с Linux 4.15.3-1-generic’ —class astralinuxce —class gnu-linux —class gnu —class os —unrestricted $menuentry_id_option ‘gnulinux-4.15.3-1-generic-advanced-f923f219-185e-4747-9066-6b09fd0103ae’ <
# load_video
# insmod gzio
# if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
# insmod part_msdos
# insmod ext2
# set root=’hd0,msdos1′
# if [ x$feature_platform_search_hint = xy ]; then
# search —no-floppy —fs-uuid —set=root —hint-bios=hd0,msdos1 —hint-efi=hd0,msdos1 —hint-baremetal=ahci0,msdos1 f923f219-185e-4747-9066-6b09fd0103ae
# else
# search —no-floppy —fs-uuid —set=root f923f219-185e-4747-9066-6b09fd0103ae
# fi
# echo ‘Загружается Linux 4.15.3-1-generic …’
# linux /boot/vmlinuz-4.15.3-1-generic root=UUID=f923f219-185e-4747-9066-6b09fd0103ae ro quiet net.ifnames=0
# echo ‘Загружается начальный виртуальный диск …’
# initrd /boot/initrd.img-4.15.3-1-generic
#>
Изменения, сделанные в файле /etc/grub/grub.cfg не будут сохраняться после выполнения команды обновления загрузчика update-grub.
Настройка выбора ядра для загрузки
Для указания ядра, загружаемого по умолчанию используется параметр GRUB_DEFAULT в файле /etc/default/grub. Значением этого параметра может быть:
- число — порядковый номер элемента выбора ядра меню загрузчика. Нумерация начинается с нуля;
- идентификатор элемента меню загрузчика. Например:
GRUB_DEFAULT=gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d
Получить список элементов меню выбора ядра можно командой:
menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-lowlatency-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.15.0-70-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-hardened-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.10.176-1-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-advanced-4d59e93e-ab3e-4f05-be84-1774cd76ab8d' < menuentry 'AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)' --class astralinux --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.4.0-110-generic-recovery-4d59e93e-ab3e-4f05-be84-1774cd76ab8d'Идентификаторы элементов меню, которые можно использовать для задания умолчания, находятся после параметра $menuentry_id_option .
Получить список элементов меню с их номерами можно командой:
0 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency 1 AstraLinux GNU/Linux, with Linux 5.15.0-70-lowlatency (recovery mode) 2 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened 3 AstraLinux GNU/Linux, with Linux 5.15.0-70-hardened (recovery mode) 4 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic 5 AstraLinux GNU/Linux, with Linux 5.15.0-70-generic (recovery mode) 6 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened 7 AstraLinux GNU/Linux, with Linux 5.10.176-1-hardened (recovery mode) 8 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic 9 AstraLinux GNU/Linux, with Linux 5.10.176-1-generic (recovery mode) 10 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic 11 AstraLinux GNU/Linux, with Linux 5.4.0-110-generic (recovery mode)После внесения изменений в файл /etc/default/grub обновить параметры загрузчика: