Grub2 se va folosi pentru a incarca distributii de linux sau variante de windows: tools-uri sau kituri de instalare.
Poate fi folosit bootmg (loader windows) dar pentru a incarca linux-uri tot la grub se va apela.
La grub se pot face meniuri dinamice fata de bootmgr.
Flexibilitatea e bazata pe incarcarea de imagini si module, iar acestea trebuie generate
La PCbios boot-ul e facut de syslinux, va fi nevoie doar de core.img si modulele necesare folosite de comenzile din meniuri
GNU GRUB trebuie compilat pentru a obtine modulele, pe windows acest lucru e destul de dificil
Pentru a incarca imagini de boot windows (wim-uri) e folosit wimboot din network boot
La PCbios se va folosi loader-ul wimboot impreuna cu initrd16 si newc
Initrd16 nu poate fi folosit in UEFI si nu poate incarca fisiere mai mari de 896MB
Din sursa linux.h initrd e limitat cu #define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF
Pentru UEFI varianta Grub2 de la a1ive are modulul de wimboot si in plus e compilata
In UEFI boot-ul pentru removable media se face cu incarcarea /EFI/BOOT/bootx64.efi, e fallback-ul implicit daca nu e stocat in NVRAM pointing-ul catre loader
La instalarea grub-ul, bootx64.efi e generat si el va incarca grubx64.efi, la fel si bootx64.efi de windows va incarca bootmgr.efi
In Secure Boot enable fisierele ce implica procesul de boot (bootstrap,loader,kernel,etc) trebuie sa fie semnate digital cu un key valid
Pentru portabilitate se foloseste in acest caz fisierele semnate din ultimul kit de Ubuntu
bootx64.efi are 2 certificate Microsoft iar grubx64.efi are unul Canonical
Calea implicita pentru grub.cfg e /boot/grub si nu poate fi modificata deoarece grubx64.efi e semnat digital
La generarea core-urilor din varianta a1live se foloseste aceeasi cale
Din grub.cfg se vor folosi configfile-uri separate pentru o mai usoara gestionare
Astfel vor fi 4 fisiere PCbios x86 sau x86_64 si UEFI SB disable sau enable
procesoarele ce nu suporta longmode sunt de generatie veche (pana la EMT64) si pot rula maxim windows7 x86 sau kerneluri i386
respectiv in SB enable va putea fi incarcat doar Ubuntu sau Bootmg si el incarca windows-urile din BCD
In grubefi.cfg loader-ul initial e 2.06 iar grub.cfg e acelasi, pentru a evita bucla e folosita variabila cmdpath si se incarca apoi varianta a1live
Meniurile dinamice sunt date de comanda test (if-urile in stil POSIX) ce verifica structura din partitii si trebuie specificate toate posibilitatile
La stergerea/adaugarea entry-urilor sa va urmari inchiderea comenzii (intre if si capatul e fi) altfel nu se va afisa meniu-ul
Pentru Grub2 de la a1live:
Se descarca si dezarhiveaza, pentru windows se instaleaza 7zip care e free si poate dezarhiva gz-uri cat si tar-uri
Trebuie generate core-urile pentru i386-pc respectiv x86_64-efi, in folderul dezarhivat sunt scripturile build_grub pentru linux respectiv windows
se vor adauga modulele cpuid probe gfxmenu gfxterm si map in builtin.txt-urile acolo unde lipsesc
syslinux are nevoie de lnxboot.img pentru a incarca core.img, acestea se vor copia in calea specificata in syslinux.cfg: /boot/grub
core.img se va gasi in folderul unde a fost generat iar lnxboot.img in subfolderul i386-pc
Astfel vor fi 3 fisiere de grub: unul de pcbios si 2 de uefi ,cel generat si cel semnat
Pentru pcbios core.img va fi lansat de syslinux si va fi in partitia lui, in HBCD152, impreuna cu configfile-urile de pcbios
Pentru uefi se vor copia in efi/boot fisierele semnate in partitia HBCD152 cat si in partitia NTFS
Sunt sisteme ce nu accepta ca partitie de boot decat FAT32 insa sunt si altele ce accepta NTFS sau FAT16, pozele sunt facute pe un stick cu 4 partitii FAT16,FAT32,NTFS,FAT32
Configfile-urile pentru efi si grub-ul generat (va fi redenumit pentru a nu fi confundat la copieri) vor fi in /boot/grub-ul din NTFS
Alternativa usoara e folosirea arhivei de aici, grub2boot.zip contine fisiere de grub necesare si ceva in plus
Se va copia Hiren’s BootCD PE x64 in folderul ntfs, cu exceptia bootx64.efi, se va da skip
si astfel stick-ul va fi un dual HBCD, atat pcbios cat si uefi
Procedura prin care s-au obtinut fisierele din grub2boot.zip:
Se face un director de lucru daca nu exista
#cd /opt/hbcd152/ && if [ ! -d /opt/hbcd152/grub211 ]; then mkdir /opt/hbcd152/grub211; fi && cd /opt/hbcd152/grub211
Se descarca si dezarhiveaza
#if [ ! -f /opt/hbcd152/grub211/grub2-latest.tar.gz ]; then wget https://github.com/a1ive/grub/releases/download/latest/grub2-latest.tar.gz; fi
#tar -xf grub2-latest.tar.gz && cd /opt/hbcd152/grub211/grub
Se aduga noile comenzi/optiuni la lista de module si se genereaza imaginile pentru grub
pentru legacy se aduga gfx-urile, pentru linux-uri e nevoie de probe pentru a afla UUID ,cpuid pentru kerneluri separate x86 sau x64 respectiv configfile-uri 32bit sau x86_64
mai e nevoie si de map: la wimboot trebuie un facut swap intre usb si hdd cu drivemap -s pentru a putea instala windows sau folosit utilitarele de repair
pentru fisierele de grub semnate digital, se descarca Ubuntu desktop ,are cam 4.5GB din cauza driverelor nvidia (peste 1.3GB)
# cd /opt/hbcd152
#if [ ! -f /opt/hbcd152/ubuntu-22.04.2-desktop-amd64.iso ]; then wget https://mirror.efect.ro/ubuntu/releases/22.04.2/ubuntu-22.04.2-desktop-amd64.iso; fi
Se monteaza iso-ul si se copiaza din EFI/boot fisierele bootx64.efi si grubx64.efi in folderul EFI/boot din hbcd
# if [ ! -d /opt/hbcd152/hbcd/EFI/boot ]; then mkdir -p /opt/hbcd152/hbcd/EFI/boot; fi
# if [ ! -d /opt/hbcd152/cdrom ]; then mkdir /opt/hbcd152/cdrom; fi
# mount -r ubuntu-22.04.2-desktop-amd64.iso /opt/hbcd152/cdrom