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-сумісний образ:

  • Запустіть `make menuconfig`
  • Перейдіть у розділ Target Images
  • Увімкніть опцію: Build GRUB EFI images (Linux x86 or x86_64 host only)

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

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

make

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

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

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

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

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

  • генерацію підписаних EFI-бінарників (sbsigntool)
  • роботу з EFI-ключами та змінними (efivar, efibootmgr, efitools)

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

# Додайте форк репозиторію
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

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

  • Імпортуйте сертифікат `db.crt` у змінну UEFI `db`
  • За потреби конвертуйте його в формат DER
  • Можна скористатися інструментами: `efitools`, `mokutil`, `KeyTool.efi` (у режимі Setup Mode)

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

  • Last modified: 2025/05/25 18:26
  • by vazaz