Avviare UEFI Shell.
Alcune schede madri Asus ed altre basate su firmware UEFI AMI Aptio x86_64 (a partire dalle schede con Sandy Bridge) forniscono una opzione chiamata "Launch EFI Shell from filesystem device". Per queste schede madri, scaricare la Shell UEFI e copiarla sulla partizione di sistema UEFI come <UEFI_SYSTEM_PARTITION>/shellx64.efi (comunemente /boot/efi/shellx64.efi).
I sistemi con un firmware UEFI Phoenix SecureCore Tiano sono noti per avere una Shell UEFI integrata che può essere avviata premendo un tasto come F6, F11 oppure F12.
Nota: Se non fosse possibile avviare la Shell UEFI direttamente dal firmware utilizzando uno dei precedenti metodi, creare una pennina USB formattata FAT32 contenente Shell.efi nel percorso (USB)/efi/boot/bootx64.efi La penna USB dovrebbe comparire nel menù di avvio del firmware UEFI. Avviando questa opzione verrà avviata la Shell UEFI.
Comandi importanti della Shell UEFI.
I comandi della Shell UEFI solitamente supportano l'opzione -b che ferma lo scorrimento dell'output alla fine della pagina. map elenca i filesystem riconosciuti (fs0, ...) ed i dispositivi di archiviazione (blk0, ...). Eseguire help -b per elencare i comandi disponibili.
Il comando BCFG.
Il comando BCFG viene utilizzato per modificare i valori nella NVRAM UEFI, il che permette all'utente di cambiare le voci di avvio o le opzioni dei driver. Questo comando è descritto in modo dettagliato alla pagina 83(Sezione 5.3) del documento pdf "UEFI Shell Specification 2.0".
Nota: Si raccomanda gli utenti di utilizzare bcfg solamente se efibootmgr fallisce nel creare voci di avvio funzionanti sul proprio sistema.
Nota: La versione 1.0 della Shell UEFI non supporta il comando bcfg.
Per ottenere una lista delle attuali voci di avvio:
Shell> bcfg boot dump -v
Per aggiungere la voce di avvio per rEFInd (ad esempio) come quarta (la numerazione comincia da 0) opzione nel menù di boot:
Shell> bcfg boot add 3 fs0:\EFI\arch\refind\refindx64.efi "Arch Linux (rEFInd)"
dove fs0: è la mappatura corrispondente alla partizione di sistema UEFI System Partition e \EFI\arch\refind\refindx64.efi è il file da avviare.
Per rimuovere la quarta opzione di boot:
Shell> bcfg boot rm 3
Per spostare l'opzione numero 3 al posto dell'opzione numero 0 (cioè la prima opzione o l'opzione di default nel menù di avvio UEFI):
Shell> bcfg boot mv 3 0
Per il testo di aiuto di bcfg
Shell> help bcfg -v -b
oppure
Shell> bcfg -? -v -b
Il comando EDIT.
Il comando EDIT fornisce un editor di testo semplice con un interfaccia simile all'editor nano, ma leggermente meno funzionale. Esso supporta la codifica UTF-8 e si occupa dei fine riga LF(line feed) contro i CRLF(carriage return + line feed).
Per modificare, ad esempio il file di rEFInd refind.conf nella partizione di sistema UEFI (fs0: nel firmware):
Shell> fs0:
FS0:\> cd \EFI\arch\refind
FS0:\EFI\arch\refind\> edit refind.conf
Digitare Ctrl-E per aiuto.
Compatibilità hardware.
Pagina principale HCL/Firmwares/UEFI
Creare un dispositivo USB avviabile con UEFI dalla ISO
Nota: Le seguenti istruzioni sono specifiche per il supporto ufficiale/Archiso; la perparazione di Archboot è identica, ma utilizza questo refind.confanziché quello più avanti(che è invece pensato per Archiso) e senza necessità di modificare l'etichetta del filesystem.
Nota: Il dispositivo USB può utilizzare il partizionamento MBR che GPT (è quindi possibile utilizzare anche un dispositivo USB già partizionato), il filesystem dovebbe essere FAT32(raccomandato), FAT16. FAT12 è stato ideato per i dischi Floppy e quindi non è consigliato per le periferiche USB.
Per prima cosa creare una tavola delle partizioni MBR ed almeno una prtizione sul dispositivo USB. Effettuare il mount della ISO scaricata dalla pagina dei download di Arch Linux.
# mkdir -p /mnt/{usb,iso}
# mount -o loop archlinux-2012.12.01-dual.iso /mnt/iso
Quindi creare un filesystem FAT32 nella partizione del dispositivo USB (effettuarne l'umount prima se necessario) avente la stessa etichetta utilizzata nella configurazione della Archiso. Ottenere l'etichetta dal file /mnt/iso/loader/entries/archiso-x86_64.conf; questo è utilizzato dall'hook archiso nell'initramfs per identificare il percorso udev per il media di installazione. mkfs.vfat è parte del pacchetto dosfstools.
# awk 'BEGIN {FS="="} /archisolabel/ {print $3}' /mnt/iso/loader/entries/archiso-x86_64.conf | xargs mkfs.vfat -F32 /dev/sdXY -n
Effettuare il mount del filesystem FAT32 appena creato, e copiare il contenuto della iso di installazione sull dispositivo USB.
# mount /dev/sdXY /mnt/usb
# cp -a /mnt/iso/* /mnt/usb
# sync
# umount /mnt/{usb,iso}
Risoluzione degli errori.
Se si incorre nell'errore "No loader found. Configuration files in /loader/entries/*.conf are needed." Una possibile soluzione consiste nell'usare un bootloader uefi diverso da quello incluso, gummiboot.
Scaricare il pacchetto refind-efi ed estrarre il the file /usr/lib/refind/refind_x64.efi dal pacchetto in (USB)/EFI/boot/bootx64.efi (sovrascrivere o rinominare ogni file esistente (USB)/EFI/boot/bootx64.efi).
Quindi copiare questo testo in EFI/boot/refind.conf. Verificare che l'etichetta nella sezione del menu Arch (ARCH_201302 in questo esempio) coincida con quella della vostra usb.
refind.conf
timeout 5
textonly
showtools about,reboot,shutdown,exit
# scan_driver_dirs EFI/tools/drivers_x64
scanfor manual,internal,external,optical
scan_delay 1
dont_scan_dirs EFI/boot
max_tags 0
default_selection "Arch Linux Archiso x86_64 UEFI USB"
menuentry "Arch Linux Archiso x86_64 UEFI USB" {
loader /arch/boot/x86_64/vmlinuz
initrd /arch/boot/x86_64/archiso.img
ostype Linux
graphics off
options "archisobasedir=arch archisolabel=ARCH_201302 add_efi_memmap"
}
menuentry "UEFI x86_64 Shell v2" {
loader /EFI/shellx64_v2.efi
graphics off
}
menuentry "UEFI x86_64 Shell v1" {
loader /EFI/shellx64_v1.efi
graphics off
}
Dovrebbe essere adesso possibile avviare correttamente, ed avere la possibilità di scegliere quale programma EFI avviare.
Rimuovere il supporto per il boot UEFI dalla ISO.
Attenzione: Nella condizione in cui i supporti UEFI+isohybrid El Torito/MBR causino realmente problemi, sarà ideale effettuare il boot UEFI utilizzando una pennina USB come spiegato nella sezione precedente.
Molti sistemi Mac con EFI 32-bi ed alcuni Mac con EFI 64-bit rifiutano di avviarsi da un CD/DVD avviabile UEFI(x64)+BIOS. In questo caso la iso dovrebbe essere ricostruita senza il supporto per il boot UEFI, mantenendo solamente il boot da BIOS.
Effettuare il mount del supporto di installazione ed ottenere il valore di archisolabel come illustrato nella sezione precedente.
Ricostruire la ISO utilizzando xorriso contenuto nel pacchetto libisoburn:
$ xorriso -as mkisofs -iso-level 3 \
-full-iso9660-filenames\
-volid "ARCH_201212" \
-appid "Arch Linux CD" \
-publisher "Arch Linux <https://www.archlinux.org>" \
-preparer "prepared like a BAWSE" \
-eltorito-boot isolinux/isolinux.bin \
-eltorito-catalog isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-isohybrid-mbr "/mnt/iso/isolinux/isohdpfx.bin" \
-output "~/archiso.iso" "/mnt/iso/"
Masterizzare ~/archiso.iso su un dispositivo ottico e procedere normalmente con l'installazione.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog: