1
0
Fork 0
mirror of https://gitlab.com/bztsrc/bootboot.git synced 2023-02-13 20:54:32 -05:00
bztsrc--bootboot/x86_64-efi/OLVASSEL.md
2020-09-27 15:01:40 +02:00

3.7 KiB

BOOTBOOT UEFI Implementáció

Általános leírásért lásd a BOOTBOOT Protokollt.

Az UEFI gépeken egy szabványos OS Loader alkalmazás használatos PCI Opció ROM-ként is.

Gép állapot

IRQ-k letiltva, GDT nincs meghatározva, de érvényes, IDT nincs beállítva. SSE, SMP engedélyezve. Kód felügyeleti módban, 0-ás gyűrűn fut minden processzormagon.

Fájl rendszer meghajtók

Az UEFI verzióban a boot pratíción bármilyen fájl rendszer lehet, amit az EFI Simple File System Protocol támogat. Ez az implementáció támogatja mind az SHA-XOR-CBC, mind az AES-256-CBC titkosítást.

Telepítés

  1. UEFI lemez: másold be a bootboot.efi-t az FS0:\EFI\BOOT\BOOTX64.EFI-be.

  2. UEFI ROM: égesd ki a bootboot.rom-t, ami egy szabványos PCI Option ROM kép.

  3. GRUB, UEFI Boot Menedzser: add hozzá a bootboot.efi-t az indítási opciókhoz.

Az EFI Shell-ből interaktívan is futtathatod a betöltőt paramétereket megadva a parancssorban.

FS0:\> EFI\BOOT\BOOTX64.EFI /?
BOOTBOOT LOADER (build Oct 11 2017)

SYNOPSIS
  BOOTBOOT.EFI [ -h | -? | /h | /? ] [ INITRDFILE [ ENVIRONMENTFILE [...] ] ]

DESCRIPTION
  Bootstraps an operating system via the BOOTBOOT Protocol.
  If arguments not given, defaults to
    FS0:\BOOTBOOT\INITRD   as ramdisk image and
    FS0:\BOOTBOOT\CONFIG   for boot environment.
  Additional "key=value" command line arguments will be appended to the
  environment. If INITRD not found, it will use the first bootable partition
  in GPT. If CONFIG not found, it will look for /sys/config inside the
  INITRD (or partition). With -s it will scan the memory for an initrd ROM.

  As this is a loader, it is not supposed to return control to the shell.

FS0:\>

Limitációk

  • Az első 16G-nyi RAM-ot képezi le.
  • A PCI Option ROM-ot alá kell digitálisan írni ahhoz, hogy használni lehessen.
  • A tömörített initrd ROM 16M-nyi lehet.

Secure Boot

Először is, ez nem biztonságos egyáltalán. Az elnevezés egy átverés az M$ Marketing osztály részéről, hogy magukhoz láncolják a gépeket, hogy azok csakis Windózt indítsanak. Ha teheted, kapcsold ki, egyébként sem ér semmit, a rootkitek meg tudják kerülni az FBI által megkövetelt, de kiszivárgott Secure Boot Golden Key-el.

Ha mégis ragaszkodsz hozzá, akkor ahhoz, hogy működjön, olyan betöltő kell, amit a Microsoft digitálisan aláírt. Ezt nem könnyű megszerezni egy egyedi betöltő számára, mert az M$ nem fogja megadni, akkor se, ha fizetsz érte. Szóval ehelyett,

  1. töltsd le a shim-et
  2. csomagold ki az SHIMX64.EFI és MMX64.EFI fájlokat az EFI\BOOT alá (ezeket aláírta az M$).
  3. nevezd át az EFI\BOOT\SHIMX64.EFI fájlt EFI\BOOT\BOOTX64.EFI-re.
  4. csinálj privát-publikus kulcspárt és egy x509 certet openssl-el.
openssl req -newkey rsa:4096 -nodes -keyout MOK.key -new -x509 -days 3650 -subj "/CN=BOOTBOOT/" -out MOK.crt
openssl x509 -outform DER -in MOK.crt -out MOK.cer
  1. írd alá a bootboot.efi-t SHA-256 hashel az sbsign-t használva.
sbsign --key MOK.key --cert MOK.crt --out EFI/BOOT/GRUBX64.EFI bootboot.efi
  1. másold át a MOK.cer fájlt az ESP partícióra.
  2. bootolj UEFI-be, shim el fogja indítani a MOK Menedzsert. Ott válaszd ki az "Enroll key from disk" opciót, keresd meg a MOK.cer-t, add hozzá. Aztán "Enroll hash from disk", keresd meg a GRUBX64.EFI-t és add hozzá.
  3. engedélyezd a Secure Boot-ot.

Ezek után a lépések után a BOOTBOOT betöltő Secure Boot módban fog indulni (shim a továbbiakban az aláírt GRUBX64.EFI-t indítja a MOK Menedzser helyett).