sto cercando semplicemente di simulare l'installazione e l'avvio di un sistema (diciamo pure slackware, ma va bene anche in generale) su un hardware che include un firmware UEFI.
Mi interessava capire in particolare come deve essere partizionato il disco per essere ospitato in sistemi del genere e come deve essere installato il bootloader.
Una volta, tanto tempo fa c'era un simpatico bootloader che risiedeva nella prima parte del disco MBR e da lì avviava questa o quella partizione. Il BIOS passava l'avvio del PC al disco di boot e lì il bootloader si prendeva in carico l'avvio del sistema operativo scelto in base alla configrazione /etc/lilo.conf ecc ecc...
Ora se ho ben capito c'è qualcosa di diverso.
Il disco deve essere partizionato in GPT per sfruttare UEFI.
Il MBR non esiste praticamente più in termini di funzioni di boot, e il bootloader si deve infilare nella partizione EFI dedicata. In questa a seconda del bootloader scelto si va ad installare un file che solitamente è /boot/efi/EFI/GRUB oppure /boot/efi/EFI/ELILO ecc...
Lì dentro viene installato un file, esempio per grub nel caso che ho testato io "grubx64.efi".
Ma questo file non è solo preso da qualche parte e messo lì, da come ho capito viene anche "registrato" nella memoria del UEFI.
Ho il forte sospetto che questo passaggio, quando si testa la situazione con un software di virtualizzazione come qemu, possa portare a complicazioni varie. Del tipo che al riavvio, il UEFI potrebbe non ricordare più che il nostro bootloader era stato registrato... E banalmente non si avvia nulla.
Il mio è solo un sospetto, confermato però dal fatto che non parte nulla...
Ho avviato Qemu con questo script e funziona, cioè si avvia slackware live e sembrerebbe avviata su un PC UEFI (ci son i files /sys/efi o qualcosa del genere):
Codice: Seleziona tutto
#!/bin/bash
ISO=$1
SYSDRV=$2
qemu-system-x86_64 \
-enable-kvm \
-m 1.5G \
-drive file=$ISO,media=cdrom \
-drive file=$SYSDRV,media=disk,format=raw \
-boot d \
-bios /usr/share/ovmf-x64/OVMF_CODE-pure-efi.fd
https://docs.slackware.com/howtos:slack ... e?s[]=grub
Ho fatto la prova avviando con la iso di LiveSlak e un disco virtuale raw vuoto da 8GB.
Ho installato la live sull'HDD con lo script di Alien:
https://docs.slackware.com/slackware:liveslak
Codice: Seleziona tutto
setup2hd
(Tra parentesi sarebbe una bella cosa se Alien aggiungesse grub di default alla liveslak, diamine! È un programma essenziale per una live...).
Ad ogni modo alla fine il bootloader riesco ad installarlo nella partizione efi.
Ma se spengo la macchina virtuale e la riavvio, la nuova installazione su hdd virtuale non s'avvia.
Domandona:
Qualcuno di voi ha mai armeggiato con qemu o simili diavolerie, per testare installazioni?
Lo ha mai fatto cercando di simulare una macchina UEFI?