Product SiteDocumentation Site

8.8. Configurare il bootloader

It is probably already functional, but it is always good to know how to configure and install the bootloader in case it “disappears“. This can occur after an installation or an upgrade of another operating system, such as Windows. The following information can also help you to modify the bootloader configuration if needed.

8.8.1. Identificare i dischi

La configurazione del bootloader deve identificare i diversi dischi rigidi e le rispettive partizioni. Linux usa speciali file "a blocchi" conservati nella directory /dev/, per questo scopo. Sin da Debian Squeeze, lo schema dei nomi degli dischi è stato unificato con il kernel Linux, e tutti i dischi rigidi (IDE/PATA, SATA, SCSI, USB, IEEE 1394) sono ora rappresentati da /dev/sd*.
Ogni partizione è rappresentata dal suo numero sul disco che la ospita: per esempio /dev/sda1 è la prima partizione nel primo disco e /dev/sdb3 è la terza partizione nel secondo disco.
L'architettura PC (o "i386", compreso il cugino più giovane "amd64") è stata a lungo limitata dall'uso della tabella delle partizioni "MS-DOS", che permetteva solo quattro partizioni "primarie" per disco. Per superare la limitazione di questo schema, una di esse deve essere creata come partizione "estesa", così da contenere partizioni "secondarie" aggiuntive. Quest'ultime sono numerate a partire da 5. Così la prima partizione secondaria potrebbe essere /dev/sda5, seguita da /dev/sda6, etc.
Another restriction of the MS-DOS partition table format is that it only allows disks up to 2 TiB in size, which was becoming a real problem with recent disks.
Un nuovo formato della tabella delle partizioni chiamato GPT (GUID Partition Table) allenta questi vincoli sul numero di partizioni (consente fino a 128 partizioni quando si utilizzano le impostazioni standard) e sulla dimensione dei dischi (fino a 8 ZiB, ovvero più di 8 miliardi di terabyte). Se intendete creare molte partizioni fisiche sullo stesso disco, durante il partizionamento del disco, sarà necessario assicurarsi di creare la tabella delle partizioni nel formato GPT.
Non è sempre facile ricordare quale disco è collegato a quale controller SATA o nella terza posizione nella catena SCSI, soprattutto perché la denominazione dei dischi rigidi collegati a caldo (che comprende tra l'altro la maggior parte dei dischi SATA e dei dischi esterni) può cambiare da un avvio all'altro. Fortunatamente, udev crea, oltre a /dev/sd*, dei collegamenti simbolici con un nome fisso, che possono essere utilizzati per identificare un disco rigido in modo non ambiguo. Questi collegamenti sono memorizzati in /dev/disk/by-id/. Ad esempio, su di una macchina con due dischi fisici, potremmo trovare quanto segue:
mirexpress:/dev/disk/by-id# ls -l
total 0
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1
[...]
mirexpress:/dev/disk/by-id# 
Notare che alcuni dischi sono elencati più volte (perché si comportano contemporaneamente come dischi ATA e SCSI), ma le informazioni rilevanti sono presenti principalmente nei numeri seriali e del modello dei dischi, mediante i quali è possibile individuare il file della periferica. Mentre i collegamenti presenti in /dev/disk/by-id/ sono creati usando il numero seriale del dispositivo e il percorso fisico, sono presenti collegamenti più pratici in, ad esempio, /dev/disk/by-label/ (basati sulle etichette impostate), /dev/disk/by-uuid/ (basati su identificativi univoci, che possono cambiare quando si riformatta un dispositivo con mkfs.* o mkswap), /dev/disk/by-path/ (basati sul percorso fisico più corto) e /dev/disk/by-partlabel/ e /dev/disk/by-partuuid/ (solo per partizioni con etichette GPT e i loro identificatori univoci). Se si utilizzano questi collegamenti, ad esempio in /etc/fstab, preferire sempre identificatori univoci rispetto alle etichette. Si possono anche ottenere e modificare queste informazioni per ogni partizione o dispositivo usando i comandi lsblk e blkid.
I file di configurazione d'esempio che si trovano nelle sezioni seguenti sono basati sulla stessa configurazione: un singolo disco SATA, dove la prima partizione è una vecchia installazione Windows e la seconda contiene Debian GNU/Linux.

8.8.2. Configurazione di GRUB 2

GRUB (GRand Unified Bootloader) è più recente. Non è necessario eseguirlo dopo ogni aggiornamento del kernel; GRUB sa leggere i filesystem e trovare da solo la posizione del kernel sul disco. Per installarlo nel MBR del primo disco, è sufficiente digitare grub-install /dev/sda. Questa operazione sovrascriverà l'MBR, quindi fate attenzione a non sovrascrivere la posizione sbagliata. È anche possibile installare GRUB in un record di avvio della partizione, ma bisogna tenere presente che di solito si tratta di un errore e che grub-install /dev/sda1 non ha lo stesso significato di grub-install /dev/sda.
La configurazione di GRUB 2 è memorizzata in /boot/grub/grub.cfg, ma questo file (in Debian) è generato da altri. Attenzione a non modificarlo a mano, perché tali modifiche locali andranno perse alla successiva esecuzione di update-grub (che può avvenire in seguito all'aggiornamento di vari pacchetti). Le modifiche più comuni del file /boot/grub/grub.cfg (per esempio, per aggiungere parametri alla riga di comando del kernel o per cambiare la durata di visualizzazione del menu) sono effettuate tramite le variabili in /etc/default/grub. Per aggiungere voci al menu, si può creare un file /boot/grub/custom.cfg oppure modificare il file /etc/grub.d/40_custom. Per configurazioni più complesse, si possono modificare i file in /etc/grub.d o aggiungerne altri; questi script dovrebbero restituire frammenti di configurazione, eventualmente facendo uso di programmi esterni. Questi script sono quelli che aggiornano l'elenco dei kernel da avviare: 10_linux prende in considerazione i kernel Linux installati; 20_linux_xen prende in considerazione i sistemi virtuali Xen e 30_os-prober aggiunge al menu altri sistemi operativi esistenti (Windows, OS X, Hurd), immagini del kernel ed opzioni di accesso al BIOS/EFI.

8.8.3. Utilizzare GRUB con EFI e Secure Boot

È molto diverso usare GRUB per avviare un sistema BIOS tradizionale (vecchio o UEFI-CSM) o un sistema UEFI. Fortunatamente l'utente non ha la necessità di conoscere la differenza perché Debian fornisce pacchetti diversi per ogni scopo e l'installatore si prende cura automaticamente di quale(i) scegliere. Il pacchetto grub-pc è selezionato per i sistemi vecchi, nei quali GRUB è installato nell'MBR, mentre in sistemi UEFI è necessario grub-efi-arch, dove GRUB è installato nella ESP (EFI System Partition - Partizione di Sistema EFI). Quest'ultimo richiede una tabella di partizioni GTP e di una partizione EFI.
Per spostare da un sistema esistente, dalla vecchia modalità di boot a quella UEFI (quindi supportando UEFI), non è necessario soltanto cambiare i pacchetti di GRUB sul sistema, ma occorre anche sistemare la tabella delle partizioni e creare una partizione EFI (probabilmente includendo il ridimensionamento delle partizioni esistenti per creare lo spazio libero necessario). È un processo piuttosto elaborato e per questo non è possibile trattarlo qui. Fortunatamente ci sono alcuni manuali di blogger che descrivono le procedure necessarie.
Se si sta usando un sistema con "Secure Boot" abilitato e si è installato un shim-signed (vedere riquadro CULTURA Secure Boot e shim bootloader), è necessario installare anche grub-efi-arch-signed. Questo pacchetto non è selezionato automaticamente, viene selezionato solo se si è abilitata l'installazione dei pacchetti raccomandati.