Magazine

ArchLinux: Guida a Unified Extensible Firmware Interface (Italiano), 3a parte.

Creato il 14 marzo 2014 da Hugor @msdiaz61

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 /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.

UEFI-nuovostile
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.

Arch-Linux-2014-02-01-Is-Now-Available-for-Download
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.

uefi arch

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:


Ritornare alla prima pagina di Logo Paperblog