Table of Contents

OpenWrt на x86-системах з UEFI

Вступ

Зараз завантаження через UEFI стало стандартом, а плати з тільки UEFI BIOS — звичним явищем. Ще у 2017 році компанія Intel оголосила, що з 2020 року підтримка застарілого BIOS (Legacy BIOS) буде припинена.

- https://www.anandtech.com/show/12068/intel-to-remove-bios-support-from-uefi-by-2020 - http://www.uefi.org/sites/default/files/resources/Brian_Richardson_Intel_Final.pdf

У зв’язку з цим, у системі збірки OpenWrt з’явилася можливість створення UEFI-завантажуваних образів.

Стан підтримки

Починаючи з коміту a6b7c3e672764858fd294998406ae791f5964b4a OpenWrt підтримує створення UEFI-сумісних образів для x86-64. Завантажити їх можна зі сторінки: downloads.openwrt.org → snapshots → x86/64.

Збірка UEFI-завантажуваного образу OpenWrt

Щоб створити UEFI-сумісний образ:

За потреби оберіть додаткові пакети. Збережіть зміни і вийдіть з `menuconfig`.

Запустіть збірку як звичайно:

make

Після завершення збірки, результати з’являться в каталозі: `./bin/targets/x86/64/`

Увага: створений файл — це disk image, а не partition image!

Його потрібно записувати на пристрій цілком, наприклад `/dev/sdX`, а не на розділ `/dev/sdX1`.

UEFI Secure Boot

Щоб створити UEFI-образ із підтримкою Secure Boot, використовуйте спеціальний форк OpenWrt із відповідним feeds-репозиторієм у гілці `feature-uefi-secure-boot`.

Цей форк базується на гілці Jow-staging та підтримує:

##### Покрокова інструкція

# Додайте форк репозиторію
git remote add devrepo https://github.com/alive4ever/openwrt
git fetch devrepo
git checkout feature-uefi-secure-boot
 
# Налаштуйте feeds
echo 'src-git packages https://github.com/alive4ever/packages;feature-uefi-secure-boot' > ./feeds.conf
./scripts/feeds clean
./scripts/feeds update packages
./scripts/feeds update -i
./scripts/feeds install -a
 
# Запустіть конфігурацію
make menuconfig
# Оберіть Target: x86, Subtarget: x86_64
# Увімкніть: 'Sign EFI executable binaries' у Target Images
# У розділі Utilities оберіть: efitools, efibootmgr, efivar, sbsigntool

##### Генерація сертифіката

# Створіть ключ і сертифікат для підпису
OLD_UMASK=$(umask)
umask 077
openssl req -new -x509 -sha256 \
  -days 90 -out ./db.crt \
  -subj '/CN=secure boot signing certificate' \
  -newkey rsa:2048 -nodes \
  -keyout ./db.key
umask $OLD_UMASK

##### Збірка образу

make

Завантаження з Secure Boot

Щоб мати змогу завантажити цей образ на реальному UEFI-пристрої:

Після імпорту — система зможе надійно та безпечно завантажитися з цього образу.