По умолчанию при создании виртуальной машины (kvm) на Proxmox VE 6 создаётся виртуальный BIOS, но вместо него можно создать виртуальный UEFI.

Изменение BIOS на UEFI

Для правильной эмуляции компьютера QEMU необходимо эмулировать прошивку. На компьютерах такая прошивка называется BIOS или UEFI. Эта прошивка выполняется как один из первых шагов при загрузке виртуальной машины. Она отвечает за выполнение базовой инициализации оборудования и за обеспечение интерфейса к оборудованию для операционной системы. По умолчанию QEMU использует для этого SeaBIOS, который эмулирует BIOS x86 с открытым исходным кодом. Однако, вы можете в качестве прошивки выбрать OVMF, который эмулирует UEFI с открытым исходным кодом.

На практике вы должны на Proxmox создать виртуальную машину (kvm) стандартным способом, а затем поменять тип прошивки на uefi. Для этого вам нужно зайти на вкладку «Hardware» и там найти настройку для BIOS:

Proxmox. Изменение прошивки для KVM на UEFI. Шаг 1

Её нужно поменять на «OVMF (UEFI)«.

Добавление EFI Disk

Но просто поменять прошивку не достаточно. Дополнительно вы должны добавить в конфигурацию виртуальной машины EFI Disk.

Этот диск хранит EFIVARS. Это специальная файловая система которая хранит переменные EFI. Там же хранится порядок загрузки. Если EFI Disk не указан, то каждый раз при запуске виртуальной машины для неё будет создаваться временный efidisk. При этом каждый раз порядок загрузки может меняться.

Чтобы добавить такой диск, просто нажмите на кнопку «Add» и добавьте «EFI Disk«:

Proxmox. Изменение прошивки для KVM на UEFI. Шаг 2

Размер такого диска всегда равен 1 MB и его нельзя изменить. Также нельзя создать несколько таких дисков.

После проделанного раздел «Hardware» у вас будет выглядеть примерно так:

Proxmox. Изменение прошивки для KVM на UEFI. После изменений

Что в итоге?

После проделанного подключите образ установочного диска к виртуальному cdrom, и как обычно установите вашу систему. Это может быть любая система с поддержкой UEFI, например: Debian, Ubuntu или Windows.

Например, после установки Ubuntu 20.04 на такую виртуальную машину с разбивкой по умолчанию (без lvm) у меня следующая таблица разделов:

$ lsblk -l /dev/sda
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0    8G  0 disk
sda1   8:1    0  512M  0 part /boot/efi
sda2   8:2    0  7.5G  0 part /

Раздел sda1 это efi раздел в котором хранятся загрузчики которые запускает UEFI. Ubuntu при установки на этом разделе создала каталог для своей загрузки — /boot/efi/EFI/ubuntu/:

$ ls -l /boot/efi/EFI/ubuntu/
total 3480
-rwxr-xr-x 1 root root     108 Nov  8 11:55 BOOTX64.CSV
-rwxr-xr-x 1 root root     126 Nov  8 11:55 grub.cfg
-rwxr-xr-x 1 root root 1734528 Nov  8 11:55 grubx64.efi
-rwxr-xr-x 1 root root  856232 Nov  8 11:55 mmx64.efi
-rwxr-xr-x 1 root root  955656 Nov  8 11:55 shimx64.efi

Главным загрузчиком в этом примере выступает /boot/efi/EFI/ubuntu/shimx64.efi, который имеет цифровую подпись от Microfoft и поддерживает Secure Boot. Этот загрузчик затем запускает grubx64.efi который подписан цифровой подписью от Canonical.

EFI Disk же примонтировался в /sys/firmware/efi/efivars/:

$ ls -l /sys/firmware/efi/efivars/
total 0
-rw-r--r-- 1 root root   66 Nov  8 12:22 Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root  110 Nov  8 12:22 Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root  106 Nov  8 12:22 Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   92 Nov  8 12:22 Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root  122 Nov  8 12:22 Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    6 Nov  8 12:22 BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    8 Nov  8 12:22 BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   14 Nov  8 12:22 BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   53 Nov  8 12:22 ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   38 Nov  8 12:22 ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   34 Nov  8 12:22 ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   34 Nov  8 12:22 ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   34 Nov  8 12:22 ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   18 Nov  8 12:22 Key0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   18 Nov  8 12:22 Key0001-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    8 Nov  8 12:22 Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   17 Nov  8 12:22 LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    8 Nov  8 12:22 MTC-eb704011-1402-11d3-8e77-00a0c969723b
-rw-r--r-- 1 root root 1128 Nov  8 12:22 MokListRT-605dab50-e046-4300-abb6-3dd810dd8b23
-rw-r--r-- 1 root root   80 Nov  8 12:22 MokListXRT-605dab50-e046-4300-abb6-3dd810dd8b23
-rw-r--r-- 1 root root   12 Nov  8 12:22 OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    7 Nov  8 12:22 PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   22 Nov  8 12:22 PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root  112 Nov  8 12:22 PlatformRecovery0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root   22 Nov  8 12:22 SbatLevelRT-605dab50-e046-4300-abb6-3dd810dd8b23
-rw-r--r-- 1 root root    6 Nov  8 12:22 Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c
-rw-r--r-- 1 root root    5 Nov  8 12:22 VarErrorFlag-04b37fe8-f6ae-480b-bdd5-37d98c5e89aa

Теперь у нас диск размечен как GPT, если бы мы оставили BIOS, то он был бы MBR:

$ sudo parted -l
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   8589MB  8051MB  ext4

Настройка UEFI

Для того, чтобы зайти в настройки UEFI вам нужно при запуске виртуальной машины открыть её консоль и там нажать клавишу «Esc«. После входа вы увидите такое окно:

Proxmox VE.

Здесь вы можете создать новую boot опцию и управлять очерёдностью загрузки. Пример создания boot опции есть на сайте proxmox.


Если вам интересна тема Proxmox VE, у меня про эту систему виртуализации и контейнерезации есть и другие статьи.

Сводка
Proxmox VE 6. Создание виртуальной машины (kvm) с UEFI
Имя статьи
Proxmox VE 6. Создание виртуальной машины (kvm) с UEFI
Описание
По умолчанию при создании виртуальной машины (kvm) на Proxmox VE 6 создаётся виртуальный BIOS, но вместо него можно создать виртуальный UEFI

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *