Debian 10 Buster installazione da live utilizzando multibootusb iso e prime impressioni


Rilasciata il 6 luglio 2019, dopo circa due anni, la versione Debian 10 Buster. La versione 9 era stata rilasciata il 17 giugno 2017.

Debian una delle prime distribuzioni linux in termini di anzianità, la prima versione risale a 25 anni fa, è nota per la sua stabilità che è legata alle rigide politiche riguardo la qualità dei pacchetti. Debian, per la struttura organizzativa che ne è alla base, è probabilmente la sola tra le grandi distribuzioni ad essere libera da interessi commerciali.
Tante le modifiche che caratterizzano il nuovo rilascio. Del resto sono circa 50000 i pacchetti presenti in stable. Tra le modifiche :

  • ampliamento del ricco elenco di piattaforme hardware supportate (friendlyARM, AllWinner).
  • EFI in primo piano. Supporto per UEFI Secure Boot.
  • Aumentati i livelli di sicurezza.
  • Java: si passa da OpenJDK 8 a OpenJDK 11.
  • Python 3 in primo piano. Python 2 sarà deprecated da gennaio 2020.
  • NFtables in sostituzione di iptables
  • Nuovo installer della live, calameres, decisamente amichevole.
  • Kernel 4.19.xx

La Debian 10.0 Buster in questo primo periodo d’uso sta lasciando un impressione, come macchina desktop, positiva. Come sempre buona stabilità e buona gestione delle risorse utilizzate. L’utilizzo delle nuove libreria rende pienamente disponibili alcuni applicativi che nella debian 9.0 erano usciti dal repository stable ad esempio remmina. In Grandorgue si risolve il problema di visualizzazione completa del menu. Complessivamente però al momento la Debian 9.9 evidenzia una velocità, una stabilità e una efficacia nella gestione delle risorse superiore alla 10.
Una nota negativa le dimensioni dell’installazione base che crescono ancora. La xfce al termine dell’installazione avrà un impronta di oltre 8GB. Si fa apprezzare il nuovo installer della live, calameres, è decisamente amichevole ed evidenzia maggior attenzione alle problematiche di boot UEFI ( Secure Boot ) .

Installazione di Debian 10.0 Buster versione xfce nonfree con iso copiata su chiavetta con multibootusb

Di seguito la procedura per installare Buster versione xfce non freee utilizzando la ISO della live copiata in una pendrive con installato multibootusb. In questo modo non sarà necessario cancellare nessuna pendrive, ne creare DVD ad hoc.
Nel blog sono presenti alcuni post dedicati a multibootusb che integra “multiboot usb( mbusb)” per l’avvio automatico di iso copiate su penna usb:

In questo caso l’installazione riguarda la versione con i driver non free quindi non la versione canonica.

sudo tar -zxvf netboot.tar.gz

La nuova interfaccia di installazione calamares richiede meno fasi di input pertanto una volta scaricata la iso l’installazione è abbastanza veloce.

Multibootusb predisposione per avvio iso debian 10 live

Procedura per avviare debian 10 Live direttamente da ISO utilizzando multiboousb.

1) Copiare la iso nella cartella /multibootusb/iso della chiavetta usb.

debian10_multibootusb_iso_deb10

2) Essendo multibootusb del 2018 è necessario predisporre un file per l’avvio della live debian10. L’operazione è agevole basta usare il file della versione debian 9 come base.

posizionarsi nella directory:

/multibootusb/grub/menus/debian

Duplicare il file live9-generic.cfg in live10-generic.cfg e
modificare nella prima riga … debian-live-9 … in … debian-live-10

debian10_multibootusb_deb10_iso_live

Il nuovo file live10-generic.cfg avrà il seguente contenuto

for isofile in $isopath/debian-live-10*.iso; do 
if [ -e "$isofile" ]; then 
    regexp --set=isoname "$isopath/(.*)" "$isofile"
    submenu "$isoname (grub.cfg) ->" "$isofile" {
       iso_path="$2"
       export iso_path
       search --set=root --file "$iso_path"
       loopback loop "$iso_path"
       root=(loop)
       configfile /boot/grub/grub.cfg
       loopback --delete loop
     }
   fi
 done

Avviare la live di debian 10 buster

Selezionare [ Scan and Boot ISOs under /multibootusb/iso –> ]

debian10_grub_iso__0_multi

Sarà visibile e disponibile per l’avvio la live 10

debian10_g_multibootusb_start_iso_live

Avvio della debian 10 live

debian10_grub_live_c

Le fasi dell’installazione di Debian Buster con calamares

L’installazione che inizia con una schermata di welcome e la selezione del linguaggio da utilizzare durante installazione è abbastanza rapida. Sono infatti diminuite le azioni richieste allo user: non viene richiesta come da tradizione la password di root da subito, lo user è inserito nel gruppo sudo come avviene in ubuntu. La configurazione della rete e del server mirror si compiono in modo automatico e trasparente. Discorso analogo per il bootloader grub.

Sono previste le seguenti fasi per l’installazione completa.


Location
Scelta del paese ( localizzazione – select your location ) con selezione di:
– linguaggio
– tipo di data e numeri

Installaer calamares location

Keyboard

Configurazione del tipo di tastiera

debian10_live_inst_3_keyboard
Installer Buster Keyboard

Partizionamento

Nella procedura di installazione come sempre delicata e degna di attenzione è la  fase relativa al partizionamento.
Debian 10 si rapporta decisamente bene con UEFI pertanto conviene utilizzare dischi con partizionamento GPT

Nel partizionamento opto per il metodo manuale. Debian buster verrà installato nella partizione 6 di un SSD Crucial MX250 con partizionamento di tipo gpt.

debian10_live_inst_4_Partitions_1
Debian Calamares Partitions

Seleziono il tipo di file system ext4 con richiesta di formattazione
Installazione completa su singola partizione pertanto indico come
mount point /

Calamares Partition Mount Point /

Adesso serve la selezione/predisposizione della partizione di boot per EFI. Per utilizzare UEFI è infatti richiesta una partizione specifica ESP (EFI sytem partition) formattata FAT32 e marcata tipicamente con i flag boot e efi.

Selezionare/Creare partizione ESP ( EFI System Partition )

Users
Inserimento dello user

debian10_live_inst_5_Users

Summary – Riepilogo

La schermata con il riepilogo delle impostazioni precede l’avvio della procedura di installazione vera e propria. E possibile controllare le varie scelte effettuare ed eventualmente ritornare indietro e modificarle.

Installer Debian 10 Riepilogo

L’installazione vera e propria si completa in alcuni minuti a seconda del hardare in uso.

debian10_live_inst_7_Install_3
Debian Buster Fase di install

Termine dell’installazione

debian10_live_inst_8_All done

Schermata di avvio di debian 10.0 xfce.

Risorse:

Annunci

efibootmgr – l’applicazione per interagire e modificare l’ EFI Boot Manager – Linux

efibootmgr è un’applicazione userspace utilizzata per modificare il Boot Manager Extensible Firmware Interface (EFI) di Intel. EFI che oramai ha rimpiazzato il BIOS è l’interfaccia firmware che si occupa del modo in cui hardware e software comunicano in un computer. Tra i benefici di EFI è di essere non legato all’architettura x86.  Attualmente viene implementata l’estensione di  EFI denominata UEFI (Unified EFI ).  Tra i compiti di UEFI c’è proprio anche quello di occuparsi dei servizi di Boot. Grazie ad UEFI è possibile avviare diversi sistemi operativi Linux, Mac, Windows senza la necessità di un bootmanager esterno. UEFI infatti può automaticamente selezionare la partizione appropriata con il sistema operativo. L’unica condizione è che l’hardware e  il software ( SO ) supportino le specifiche UEFI.

Esempi di UEFI Boot Menu.

AsRock FM2 – AMD
x79-Xeon

ATTENZIONE: nei primi tempi le implementazioni UEFI, seppur lungimiranti, sono state accompagnate da diversi bug anche peggiorativi rispetto alla controparte BIOS. In questi casi l’utilizzo di efibootmgr si deve accompagnare alla conoscenza della motherboards specifica. 
In generale poichè si potrebbe anche rendere necessario il caricamento del firmware della MB si sconsiglia la modifica con efibootmgr ( anche nel caso dei Macintosh si sconsiglia la modifica con efibootmgr dei menu entry).
Per disporre di un boot manager userfriendly  si consiglia di valutare l’uso di rEFInd.

Boot Manager: rEFInd

Verificare che il sistema sia stato avviato in UEFI mode

Per poter utilizzare efibootmgr è necessario che le variabili filesystem EFI ( EFI vars )  siano accessibili. Questo implica che il sistema sia stato avviato in EFI mode.

In debian:

# sudo [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
EFI boot on HDD

dal kernel 4.0 si può verificare che l’avvio sia avvenuto in EFI mode con

# cat /sys/firmware/efi/fw_platform_size
se UEFI mode
64  # se 64 bit 
32  # se 32 bit 
diversamente No UEFI mode  
cat: /sys/firmware/efi/fw_platform_size: No such file or directory 

Per visualizzare le variabili EFI si può utilizzare il comando

# efivar –list

Altro comando per verificare l’avvio in EFI mode

#mount | grep efivars
efivarfs on /sys/firmware/efi/efivars type efivarfs (ro,relatime)

Se  il sistema NON è stato avviato in EFI mode digitando efibootmgr avremo il seguente messaggio:

# efibootmgr 
EFI variables are not supported on this system.

UEFI Boot Manager

Usualmente un Computer UEFI mette a disposizione anche tool di configurazione per il menu del Boot Manager EFI. Se il tool non è sufficientemente amichevole  è preferibile utilizzare il già citato rEFInd oppure l’applicazione efibootmgr oggetto del post.

Efibootmgr

Efibootmgr può creare e rimuovere le voci nel menu di avvio UEFI, modificare l’ordine delle voci nel menu e altro ancora.

In debian/ubuntu  efibootmgr si installa da terminale al solito con

# apt install efibootmgr

lanciato efibootmgr verranno visualizza i dati relativi all’ UEFI Boot Manager con il menu di Avvio UEFI, la voce di avvio corrente del sistema, l’ordine di visualizzazione,…

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu
Boot0001* mx
Boot0002* UEFI: Built-in EFI Shell 
Boot0004* Hard Drive 
Boot0005* USB 
Boot0006* UEFI: Samsung Flash Drive 1100

Il menu di avvio è composto da 6 voci: Boot0000, Boot0001, …

BootCurrent: la prima linea evidenzia quella che è la voce predefinita del menu di avvio. In questo caso mx.

Timeout: il tempo di attesa del menu di avvio che risulta di default inpostato a 0 infatti in genere non si riesce a vedere il menu di avvio.

BootOrder: la successione che verra seguita qualora il precedente menu entry non venga caricato / fallisca il caricamento.
Nell’esempio l’ordine seguito sarà: 0000,  0001, 0006, 0004, 0005, 0002

E ‘  possibile visualizzare le voci del menu EFI  in modo completo utilizzando l’opzione -v verbose

# efibootmgr 
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0006,0004,0005,0002
Boot0000* ubuntu	HD(2,GPT,defb0216-f5f6-4969-8345-ff816517a944,0xee800,0x1ad000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* mx	HD(1,GPT,9c281ac1-76a6-4b39-b2c2-ff65b0d0bef6,0x800,0x1ef000)/File(\EFI\mx\grubx64.efi)
Boot0002* UEFI: Built-in EFI Shell 	VenMedia(5023b95c-db26-429b-a648-bd47664c8012)AMBO
Boot0004* Hard Drive 	BBS(HD,,0x0)AMGOAMNO........m.S.e.a.g.a.t.e. .S.T.9.5.0.0.5.6.2.0.A.S....................A.........................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .Y.5.1.X.D.C.C.9......AMBO
Boot0005* USB 	BBS(USB,,0x0)AMGOAMNO........s.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0....................A.......................F..Gd-.;.A..MQ..L.S.a.m.s.u.n.g. .F.l.a.s.h. .D.r.i.v.e. .1.1.0.0......AMBO
Boot0006* UEFI: Samsung Flash Drive 1100	PciRoot(0x0)/Pci(0x10,0x0)/USB(2,0)/HD(1,MBR,0x23,0x800,0x4e3e800)AMBO

In questo caso è possibile individuare anche le informazioni relative al percorso del bootloader. Ad esempio la varibile mx, ( Boot0001) relativa alla derivativa debian, mx linux, evidenzia che il booloader è di fatto GRUB. Il percorso con la configurazione efi ( grubx64.efi), menu entry ( mx) per il bootloader grub nella partizioni EFI system partition risulta essere (\EFI\mx\grubx64.efi ). La partizione è localizzata nel disco 1 che è partizionato GPT.

Cambiare il Timeout

Se si desidera visualizzare il menu per poter scegliere sempre dal bootmanager EFI si può portare il timeout a 5 srecondi con

efibootmgr -t 5

Cambiare l’ordine di avvio

Per cambiare l’ordine di avvio si utilizza l’opzione -o

efibootmgr -o 0001,0000,0006,0004,0005,0002

è possibile cambiare l’ordine solo per il primo successivo avvio.
In questo caso si usa l’opzione -n

efibootmgr -n 0002

Creare una voce nel menu di boot EFI

Per aggiungere un entry al menu EFI si usa l’opzione -c

efibootmgr -c -d /dev/sdb -p 2 -L “Debian” -l “\EFI\debian\grubx64.efi”

efibootmgr -c -d /dev/sdb -p 1 -L "multibootusb" -l "\EFI\boot\bootx64.cfg"
  • --create or -c crea una nuova voce;
  • --part or -p seguito dal numero di partizione della Partizione di Sistema EFI;
  • --disk or -d seguito dal disco nel quale la Partizione di Sistema EFI è ospitata;
  • --label or -L seguito dall’etichetta da utilizzare come voce nel menu di avvio;
  • --loader or -l seguito dal percorso dell’immagine EFI da avviare \EFI\boot\bootx64.cfg.

Cancellare una voce dal menu EFI

per cancellare un voce di menu di utilizza l’opzione -B

efibootmgr -b 4 -B

–bootnum (-b) seleziona la voce del menu da cancella
–delete-bootnum (-B) effettua la cancellazione

Se la voce cancellata era la prima fare attenzione e cambiare l’ordine di avvio dei menu.

UEFI Bootloader di fallback

Nelle specifiche UEFI 2.3, section 3.4.1.2, si precisa che in assenza di boot variabili configurate è permesso al firmware trattare la EFI system partition come media rimovibile – il percorso di boot sarà EFI/boot/bootx64.efi.

Quindi va considerata l’opportunità dell’installazione di un bootloader di fallback. Di seguito esempi di bootloader di fallback per debian e window

Nel caso di Debian Linux boot entry in NVRAM debian percorso di Boot EFI nella partizione EFI system partition:

EFI/debian/grubx64.efi

il percorso del bootloader di fallback risulta essere

EFI/boot/grubx64.efi

ad esempio nel caso di window variabile di boot configurata: microsoft
oltre a percorso di boot

EFI/microsoft 

potremmo avere il percorso di fallback

EFI/boot/bootx64.efi  

 

Opzioni efibootmgr:

-a | –active
Sets bootnum active
-A | –inactive
Sets bootnum inactive
-b | –bootnum XXXX
Modify BootXXXX (hex)
-B | –delete-bootnum
Delete bootnum (hex)
-c | –create
Create new variable bootnum and add to bootorder
-d | –disk DISK
The disk containing the loader (defaults to /dev/sda)
-e | –edd 1|3|-1
Force EDD 1.0 or 3.0 creation variables, or guess.
-E | –device NUM
EDD 1.0 device number (defaults to 0x80)
-g | –gpt
Force disk with invalid PMBR to be treated as GPT
-H | –acpi_hid XXXX
set the ACPI HID (used with -i)
-i | –iface NAME
create a netboot entry for the named interface
-l | –loader NAME
Specify a loader (defaults to \\elilo.efi)
-L | –label LABEL
Boot manager display label (defaults to “Linux”)
-n | –bootnext XXXX
Set BootNext to XXXX (hex)
-N | –delete-bootnext
Delete BootNext
-o | –bootorder XXXX,YYYY,ZZZZ
Explicitly set BootOrder (hex)
-O | –delete-bootorder
Delete BootOrder
-p | –part PART
Partition number containing the bootloader (defaults to 1)
-q | –quiet
Quiet mode – supresses output.
–test filename
Don’t write to NVRAM, write to filename.
-t | –timeout seconds
Boot Manager timeout, in seconds.
-T | –delete-timeout
Delete Timeout variable.
-u | –unicode | –UCS-2
pass extra command line arguments as UCS-2 (default is ASCII)
-U | –acpi_uid XXXX
set the ACPI UID (used with -i)
-v | –verbose
Verbose mode – prints additional information
-V | –version
Just print version string and exit.
-w | –write-signature
write unique signature to the MBR if needed
-@ | –append-binary-args
append extra variable args from file (use – to read from stdin). Data in file is appended as command line arguments to the boot loader command, with no modification to the data, so you can pass any binary or text data necessary.

Risorse:

Installare manualmente GRUB EFI – Reinstallare GRUBEFI – Debian Ubuntu Linux

Per installare manualmente GRUB in modalità UEFI è necessario disporre di un disco partizionato in modalità GPT con presente una partizione di boot per EFI. La partizione di boot per EFI e di tipo EF02 è formattata FAT32 ed è tipicamente di 500MB. Se la EFI boot partition manca bisogna crearla. La posizione non è  rilevante.

gdisk è un comodo applicativo che consente di   convertire un disco da MBR a GPT in Linux  senza perdita di dati. gdisk   consente anche la creazione e la gestione delle partizioni. Si installa da terminale al solito con

apt install gdisk

si avvia con gdisk < disco >

# su 
# gdisk  /dev/sda
...
Found valid GPT with protective MBR; using GPT.

gdisk ci informa che il disco ha una partition table in formato GPT

Command (? for help): p
...
   1         4194304        48744447   21.2 GiB    8300  Linux filesystem
   2        48744448       156442623   51.4 GiB    8300  Linux filesystem
   3       156444672       234569727   37.3 GiB    8300  Linux filesystem
   4            2048         1026047   500.0 MiB   EF02  
   5       234571776       445695999   100.7 GiB   8300  Linux filesystem
   6       466065408       488396799   10.6 GiB    8200  Linux swap

la partizione EFI è presente e si trova in 4 posizione.

Se la partizione non esiste va creata con gdisk  bastano 500MB di tipo gdisk  EF02. EF02 e dovrà essere formattata FAT32.
Esempio di comandi in gdisk per creare una nuova partiizone EFI Boot .

 
#
#

Per poter installare manualmente o reinstallare GRUB EFI è necessario che il sistema operativo in cui ci troviamo sia in EFI boot Mode diversamente è necessario avviare in modalità UEFI.  Per verificare  che sia attiva la modalità EFI si può da terminale scrivere

[ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"

se la modalità EFI è attiva avremo

# [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"
EFI boot on HDD

Quindi possiamo procedere e Montare la partizione EFI boot (nel esempio la  4 sda)   in  /boot/efi.

Se la directory /boot/efi non esiste va creata


# mount /dev/sda4 /boot/efi

Reinstall grub In debian

Installazione dei pacchetti grub-efi in debian

Se manca il pacchetto grub-efi-amd64 si otterrà

# apt install --reinstall grub-efi 
...
...
The following packages have unmet dependencies:
grub-efi : Depends: grub-efi-amd64 (= 2.02~beta3-5+deb9u1)

Installare il pacchetto in questione

Ricapitolando:

  • il sistema è in uEFI boot Mode
  • è stata accertata/creata la partizione  EFI boot partition ed è stata montata in /boot/efi
  • i pacchetti di grub-efi sono presenti.

A questo punto è possibile installare GRUB in /dev/sda

grub-install /dev/sda
# grub-install /dev/sda
Installing for x86_64-efi platform.
Installation finished. No error reported.

Controllo/creazione menu entry EFI

Verificare che il bootloader EFI   grubx64.efi   sia stato creato nella EFI boot partition montata in /boot/efi .

# file /boot/efi/EFI/debian/grubx64.efi

/boot/efi/EFI/debian/grubx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows

Il percorso completo sarà del tipo /EFI/nome-variabile-efi/grubx64.efi.

In assenza di una variabile di boot EFI utilizza il percorso previsto per i dispositivi rimovibili  ->   EFI/boot/bootx64.efi

Basta osservare la directory /boot/efi/EFI per controllare la variabile menu entry EFI.

Il bootmanager EFI del sistema dovrà anche visualizzare l’opzione per l’avvio del SO debian.
Il bootmanager EFI può essere interrogato e modificato con  l’applicativo da terminale efibootmanager: efibootmgr – l’applicazione per interagire e modificare l’ EFI Boot Manager – Linux.
Per controllare che l’nvram entry per il boot EFI sia stato correttamente creato  ( i menu del bootmanager EFI sono conservati n nvram ) possiamo digitare. .

# efibootmgr --verbose | grep debian

Boot0000* debian HD(4,GPT,d334c9a4-5ca3-46b5-a9eb-16d7ff06dbd6,0x991b800,0xfa000)/File(\EFI\debian\grubx64.efi)

Se manca può essere creato con:

efibootmgr -c -d /dev/sda -p 1 -L "debian" -l "\EFI\grub\grubx64.efi"
Failsafe efi boot

efibootmgr -c -d /dev/sda -p 1 -L "UEFI man-sda1" -l "\EFI\BOOT\bootx64.efi"

Ovviamente  se siamo in una distribuzione diversa.(  ubuntu)   il menu entry EFi sarà ubuntu e non debian e la posizone

grub-install con tutti i parametri 

E’ possibile anche installare grub con un solo comando. Purtroppo con i molti  parametri è facile compiere errori e l’installazione potrebbe non portare i risultati attesi.

grub-install --boot-directory=/media/sda3/boot --bootloader-id=debian --target=x86_64-efi /
--efi-directory=/media/pEFI --recheck /dev/sda

Installing for x86_64-efi platform.
Installation finished. No error reported.


Failsafe efi boot

efibootmgr -c -d /dev/sda -p 1 -L "UEFI man-sda1" -l "\EFI\BOOT\bootx64.efi"

Risorse: