Difference between revisions of "Syslinux (Italiano)"

From ArchWiki
Jump to: navigation, search
m (Installazione manuale)
(simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments (https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py (interactive)))
 
(79 intermediate revisions by 5 users not shown)
Line 2: Line 2:
 
[[en:Syslinux]]
 
[[en:Syslinux]]
 
[[es:Syslinux]]
 
[[es:Syslinux]]
 +
[[fr:Syslinux]]
 +
[[ja:Syslinux]]
 +
[[ru:Syslinux]]
 
[[tr:Syslinux]]
 
[[tr:Syslinux]]
 
[[zh-CN:Syslinux]]
 
[[zh-CN:Syslinux]]
[[it:Syslinux]]
+
{{Related articles start (Italiano)}}
{{Article summary start}}
+
{{Related|Arch Boot Process (Italiano)|Arch Boot Process}}
{{Article summary text|Descrive l'installazione e la configurazione di Syslinux, una collezione di bootloaders.}}
+
{{Related|Boot loaders|Boot Loaders)}}
{{Article summary heading|Overview}}
+
{{Related articles end}}
{{Article summary text|{{Boot process overview (Italiano)}}}}
+
{{Article summary end}}
+
  
[[Wikipedia:SYSLINUX|Syslinux]] è una collezione di boot loaders capaci di effettuare il boot da dischi rigidi, CD e via rete utilizzando PXE. Supporta i filesystems [[Wikipedia:FAT]], [[Wikipedia:ext2]], [[Wikipedia:ext3]], [[Wikipedia:ext4]] e [[Wikipedia:Btrfs]].
+
[[Wikipedia:SYSLINUX|Syslinux]] è una collezione di boot loaders capaci di effettuare il boot da dischi rigidi, CD e via rete utilizzando PXE. Supporta i [[File systems (Italiano)|filesystems]] [[Wikipedia:FAT]], [[Wikipedia:ext2]], [[Ext3 (Italiano)|ext3]], [[Ext4 (Italiano)|ext4]] e [[Btrfs]].
  
==Il processo di boot di Syslinux==
+
{{Nota|Syslinux non può accedere a files che non si trovino nella partizione sulla quale è installato. Se si necessita della funzionalità multi-fs, si utilizzi un bootloader alternativo come [[GRUB (Italiano)|GRUB]].}}
  
# '''Caricamento del MBR'''. Durante la fase di boot, il computer legge il contenuto del [[Master Boot Record (Italiano)|MBR]] ({{ic|/usr/lib/syslinux/mbr.bin}}).
+
==Sistemi BIOS==
# '''Ricerca della partizione attiva'''. Il MBR identifica la partizione contrassegnata come attiva (ossia avente la cosiddetta "boot flag").
+
# '''Esecuzione del Volume Boot Record'''. Il Volume Boot Record (VBR) viene eseguito una volta trovato. Se si usano partizioni ext2/3/4 o FAT12/16/32, il settore d'inizio di {{ic|ldlinux.sys}} è ''hardcoded'' nel VBR
+
# '''Esecuzione di ldlinux.sys'''. Viene eseguito il VBR ({{ic|ldlinux.sys}}). Se la posizione di {{ic|ldlinux.sys}} cambia, Syslinux non sarà più in grado di effettuare il boot. Nel caso si usino partizioni btrfs il processo di cui sopra non funzionerà, poichè i files si muovono continuamente modificando così il settore dove {{ic|ldlinux.sys}} risiede. Per questo motivo, l'intero codice di Syslinux dovrà essere scritto fuori dal filesystem, ovvero nei settori seguenti al VBR.
+
# '''Ricerca del file di configurazione'''. Una volta che Syslinux è stato caricato, viene cercato uno tra i seguenti fils di configurazione: {{ic|extlinux.conf}} o {{ic|syslinux.cfg}}.
+
# '''Caricamento del file di configurazione'''. Se un file valido è stato trovato, allora viene caricato in memoria, altrimenti verrà visualizzato il prompt di Syslinux.
+
  
==Installazione==
+
===Visione d'insieme del processo di boot===
  
Si [[Pacman (Italiano)|installi]] {{Pkg|syslinux}} dai [[Official Repositories (Italiano)|repository ufficiali]].
+
# '''Fase 1 : Parte 1 - Caricamento del MBR''' - Durante l'avvio, il BIOS legge il boot code contenuto nel [[Wikipedia:MBR]], la regione di 440 byte situata all'inizio del disco (contenente il file {{ic|/usr/lib/syslinux/bios/mbr.bin}} o {{ic|/usr/lib/syslinux/bios/gptmbr.bin}}).
 +
# '''Fase 1: Parte 2 - Ricerca della partizione attiva''' - Il '''boot code Stage 1''' cerca la partizione segnata come attiva (flag {{ic|boot}} nei dischi MBR). Nell'esempio si assume che tale partizione corrisponda a quella di {{ic|/boot}}.
 +
# '''Fase 2 : Parte 1 - Esecuzione del Volume Boot Record''' - Il '''boot code Stage 1''' esegue il Volume Boot Record (VBR) della partizione {{ic|/boot}}. Nel caso di Syslinux, il VBR è il settore iniziale del file {{ic|/boot/syslinux/ldlinux.sys}}, creato dal comando {{ic|extlinux --install}}. Si noti che {{ic|ldlinux.sys}} e {{ic|ldlinux.c32}} sono due cose diverse.
 +
# '''Fase 2 : Parte 2 - Esecuzione del file {{ic|/boot/syslinux/ldlinux.sys}}''' - Il VBR carica il resto del file {{ic|/boot/syslinux/ldlinux.sys}}, la cui posizione su disco non deve cambiare, pena l'impossibilità di effettuare il boot con Syslinux. {{Nota|Se si utilizza il file system [[Btrfs]] i metodi scritti sopra non funzioneranno in quanto i files vengono continuamente spostati, variando di conseguenza la posizione del file {{ic|ldlinux.sys}}. Per questo motivo, in presenza di un file system BTRFS, l'intero boot code di {{ic|ldlinux.sys}} viene copiato nello spazio che segue il VBR e non viene installato nel percorso canonico come avviene con altri file systems.}}
 +
# '''Fase 3 - Caricamento del file {{ic|/boot/syslinux/ldlinux.c32}}''' - Il file {{ic|/boot/syslinux/ldlinux.sys}} caricherà {{ic|/boot/syslinux/ldlinux.c32}} (modulo principale) che contiene la parte di Syslinux che non è stato possibile inserire nel {{ic|ldlinux.sys}} (a causa di limitazioni sulla grandezza dei files). Il file {{ic|ldlinux.c32}} dovrebbe essere presente in ogni installazione di Syslinux/Extlinux e la sua versione dovrebbe corrispondere a quella del file {{ic|ldlinux.sys}} installato, pena l'impossibilità di effettuare il boot. Si veda http://bugzilla.syslinux.org/show_bug.cgi?id=7 per ulteriori informazioni.
 +
# '''Fase 4 - Ricerca e caricamento del file di configurazione''' - Una volta effettuato il caricamento di Syslinux, verrà cercato il file {{ic|/boot/syslinux/syslinux.cfg}} (o, in certi casi, {{ic|/boot/syslinux/extlinux.conf}}) e caricato, se presente. In caso di assenza del suddetto file, si verrà lasciati al prompt {{ic|boot:}} di Syslinux. Quanto descritto in questa fase e il resto delle componenti secondarie di Syslinux (i moduli {{ic|/boot/syslinux/*.c32}}, esclusi {{ic|lib*.c32}} e {{ic|ldlinux.c32}}) richiedono che i moduli libreria {{ic|/boot/syslinux/lib*.c32}} siano presenti (http://www.syslinux.org/wiki/index.php/Common_Problems#ELF). Come sopra, la versione dei moduli libreria {{ic|lib*.c32}} e dei moduli secondari {{ic|*.c32}} deve combaciare con quella di {{ic|ldlinux.sys}}.
  
Se la propria partizione di boot è formattata in FAT, sarà necessario installare anche {{Pkg|mtools}}.
+
===Limitazioni di Syslinux su sistemi BIOS===
 +
 
 +
Su questi sistemi, syslinux utilizza delle funzionalità fornite dal BIOS della propria scheda madre per accedere al contenuto dei dischi rigidi. Sfortunatamente, tali funzionalità hanno [http://www.win.tue.nl/~aeb/linux/Large-Disk-4.html limitazioni] che variano in funzione all'età del BIOS. La maggior parte dei BIOS moderni posono accedere solo ai primi 1024 cilindri, il che corrisponde ad una capacità approssimativa di 8,5 GB. Se la propria partizione {{ic|/boot}} si trova in un settore sopra tale limite, syslinux potrebbe non essere in grado di caricare i file {{ic|syslinux.cfg}}, l'{{ic|initramfs}} o il file {{ic|vmlinuz}}. Sarà quindi necessario posizionare la partizione {{ic|/boot}} all'inizio del disco.
 +
 
 +
Altri bootloaders come {{Pkg|grub}} utilizzano un "trucco" chiamato ''stage 1.5 bootloading'', dove GRUB crea un piccolo programma di circa 32 KB che contiene i driver del disco e lo inserisce all'inizio della tabella partizioni, nello spazio inutilizzato (che su sistemi MBR è chiamato ''MBR gap'') oppure, su sistemi GPT, nella partizione di boot BIOS.
 +
Il procedimento avviene in questo modo: il boot code nel MBR carica lo ''stage 1.5'', inizializza i dischi e vi accede tramite interfaccia SATA, evitando così le limitazioni del BIOS per il caricamento del kernel. Ciò consente di posizionare la partizione {{ic|/boot}} dovunque sul disco rigido.
 +
Sfortunatamente {{Pkg|syslinux}} non dispone di tale funzionalità e si avvale delle funzionalità fornite dal BIOS per il caricamento di {{ic|/boot}}.
 +
 
 +
===Installazione===
 +
 
 +
* Installare i pacchetti {{Pkg|syslinux}} e {{Pkg|efibootmgr}} dai [[Official repositories (Italiano)|repository ufficiali]].
  
 
{{Nota|
 
{{Nota|
* A partire dalla versione 4, Syslinux ed Extlinux sono la stessa cosa.
+
* A partire dalla versione 4, EXTLINUX e SYSLINUX sono la stessa cosa.
* Il supporto ad UEFI è stato aggiunto a partire dalle versioni 6.x. }}
+
* È necessario utilizzare {{Pkg|gptfdisk}} per avvalersi del supporto a [[Wikipedia:GUID_Partition_Table|GPT]].
 +
* Se la propria partizione di boot è formattata in FAT, sarà necessario installare il pacchetto {{Pkg|mtools}}.}}
  
===Installazione automatica===
+
====Installazione automatica====
  
Lo script {{ic|syslinux-install_update}} si occuperà dell'installazione di Syslinux, della copia/creazione link simbolici per i moduli {{ic|*.c32}} in {{ic|/boot/syslinux}}, dell'impostazione della flag di boot e dell'installazione de boot code nel MBR. Può gestire schemi di partizionamento [[Master Boot Record (Italiano)|MBR]] e [[GUID Partition Table|GPT]] e RAID software.
+
{{Nota|Lo script {{ic|syslinux-install_update}} è specifico di Arch Linux e non è supportato upstream. Si prega di riportare eventuali bug sul Bug Tracker di Arch Linux e non upstream.}}
  
:1. Se si utilizza una partizione di boot separata, assicurarsi che sia montata. Si controlli con {{ic|lsblk}}; se non si vede nessun mount point che punta a {{ic|/boot}}, si monti la partizione prima di procedere.
+
* Dopo aver eseguito lo script {{ic|syslinux-install_update}}, ricordarsi di modificare il file {{ic|/boot/syslinux/syslinux.cfg}}, seguendo [[#Configurazione]] e [[#Parametri del kernel]].
  
:2.Si esegua lo script {{ic|syslinux-install_update}} con gli argomenti {{ic|-i}} (installa i files) {{ic|-a}} (imposta la partizione come "attiva") {{ic|-m}} (installa il boot code nel MBR):
+
{{Attenzione|Lo script {{ic|syslinux-install_update}} utilizza come partizione root di default un valore che potrebbe non corrispondere a quello del vostro sistema. Pertanto è importante indicare a Syslinux la partizione root corretta modificando {{ic|/boot/syslinux/syslinux.cfg}}. In caso contrario, il sistema operativo non si avvierà. Si veda [[#Parametri del kernel]].}}
  
# syslinux-install_update -i -a -m
+
Lo script {{ic|syslinux-install_update}} si occuperà dell'installazione di Syslinux, della copia dei moduli {{ic|*.c32}} in {{ic|/boot/syslinux}}, dell'impostazione della flag di boot e dell'installazione de boot code nel MBR. Può gestire schemi di partizionamento [[Master Boot Record (Italiano)|MBR]] e [[GUID Partition Table|GPT]] e RAID software.
  
:3. Si modifichi {{ic|/boot/syslinux/syslinux.cfg}}.
+
Se si utilizza una partizione di boot separata, assicurarsi che sia montata. Si controlli con {{ic|lsblk}}; se non si vede nessun mount point che punta a {{ic|/boot}}, si monti la partizione prima di procedere.
  
{{Nota|Affinchè il procedimento sopra descritto funzioni con partizioni in formato [[GUID Partition Table|GPT]], è necessario installare il pacchetto {{Pkg|gptfdisk}} per impostare la flag di boot.}}
+
Si esegua lo script {{ic|syslinux-install_update}} con gli argomenti {{ic|-i}} (installa i files) {{ic|-a}} (imposta la partizione come "attiva") {{ic|-m}} (installa il boot code nel MBR): {{bc|# syslinux-install_update -i -a -m}} Se il comando di cui sopra restituisce l'errore {{ic|Syslinux BIOS install failed}} è probabile che l'eseguibile {{ic|extlinux}} non sia riuscito ad individuare la partizione contenente {{ic|/boot}}: {{bc|<nowiki>
 +
# extlinux --install /boot/syslinux
 +
extlinux: cannot find device for path /boot/syslinux
 +
extlinux: cannot open device (null) </nowiki>}} Questo problema può verificarsi quando si effettua l'upgrade da [[LILO]] e si utilizza un kernel personalizzato. Può infatti accadere che LILO modifichi il parametro {{ic|1=root=}} del kernel da (ad esempio) {{ic|1=root=/dev/sda1}} al suo equivalente numerico, come {{ic|1=root=801}}, come riportato dall'output di {{ic|/proc/cmdline}} e {{ic|mount}}. È possibile risolvere il problema effettuando l'installazione manuale descritta sotto, avendo cura di specificare il parametro {{ic|1=--device=/dev/sda1}} a {{ic|extlinux}}, oppure utilizzando un kernel stock di Arch, dal momento che l'utilizzo di un initramfs da parte di quest'ultimo evita il verificarsi dell'errore.
  
===Installazione manuale===
+
{{Nota|
 +
* Se si riavvia il proprio sistema ora, si otterrà solamente il prompt di Syslinux. Per ottenere un menù grafico sarà necessario creare un file di configurazione adatto.
  
{{Nota|Se non si è sicuri dello schema di partizionamento utilizzato (MBR o GPT), si starà probabilmente utilizzando MBR. Nella maggior parte dei casi, GPT creerà una partizione MBR speciale (avente tipo {{ic|0xEE}}) usando l'intera capacità del disco.
+
* Se ci si trova su una directory root differente (ad esempio si sta utilizzando un disco di installazione), si installi syslinux puntando all'ambiente di chroot:
Tale partizione è visualizzabile con:
+
  
  # fdisk -l /dev/sda
+
  # syslinux-install_update.sh -i -a -m -c /mnt
 +
}}
  
: o, in alternativa:
+
A questo punto modificare il file {{ic|/boot/syslinux/syslinux.cfg}} come indicato in [[#Configurazione]] e [[#Parametri del kernel]].
  
# sgdisk -p /dev/sda
+
====Installazione manuale====
  
: visualizzerà "GPT: not present" se il disco non usa GPT.}}
+
{{Nota|
 +
*Se non si è sicuri dello schema di partizionamento utilizzato (MBR o GPT), è possibile verificare con questo comando:
  
* Se si sta cercando di ripristinare il sistema tramite LiveCD, ci si assicuri di effettuare il [[chroot|chroot]] prima di eseguire i comandi che seguono.
+
# blkid -s PTTYPE -o value /dev/sda
 +
 
 +
* Se si sta cercando di ripristinare il sistema tramite LiveCD, ci si assicuri di effettuare il [[chroot]] prima di eseguire i comandi che seguono.
 
Se non si effettua il chroot, sarà necessario aggiungere il punto di mount a tutti i percorsi specificati sotto (tranne quelli che iniziano con {{ic|/dev}}.
 
Se non si effettua il chroot, sarà necessario aggiungere il punto di mount a tutti i percorsi specificati sotto (tranne quelli che iniziano con {{ic|/dev}}.
 +
}}
  
 
La partizione di boot dove si intende installare Syslinux deve avere filesystem fat, ext2, ext3, ext4 o btrfs. L'installazione deve avvenire in una directory montata, e non su {{ic|/dev/sdXY}}. Non è necessario installarlo nella root directory di un file system: se ad esempio si ha la partizione {{ic|/dev/sda1}} montata su {{ic|/boot}}, è possibile installare Syslinux nella directory {{ic|syslinux}}:
 
La partizione di boot dove si intende installare Syslinux deve avere filesystem fat, ext2, ext3, ext4 o btrfs. L'installazione deve avvenire in una directory montata, e non su {{ic|/dev/sdXY}}. Non è necessario installarlo nella root directory di un file system: se ad esempio si ha la partizione {{ic|/dev/sda1}} montata su {{ic|/boot}}, è possibile installare Syslinux nella directory {{ic|syslinux}}:
  
 
  # mkdir /boot/syslinux
 
  # mkdir /boot/syslinux
 +
# cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/ ## si copino TUTTI i files *.c32 da /usr/lib/syslinux/bios/, NON CREARE LINK SIMBOLICI
 
  # extlinux --install /boot/syslinux
 
  # extlinux --install /boot/syslinux
  
I comandi di cui sopra assumono che la partizione in questione abbia un filesystem ext[2,3,4]. Se la partizione è formattata in FAT, sarà necessario utilizzare il comando {{ic|syslinux}}.
+
Dopo l'esecuzione dei comandi di cui sopra, sarà necessario installare nella regione del disco di 440 byte chiamata Master Boot Record (da non confondersi con lo schema di partizionamento MBR) il boot code di Syslinux {{ic|mbr.bin}} o {{ic|gptmbr.bin}}, come descritto nella sezione successiva.
  
====Tabella partizioni in formato MBR====
+
=====Tabella partizioni in formato MBR=====
  
{{Box||Si faccia riferimento a: [[Master Boot Record (Italiano)|Master Boot Record]]|#E5E5FF|#FCFCFC}}
+
Si faccia riferimento a: [[Master Boot Record (Italiano)|Master Boot Record]].
  
Sarà quindi necessario contrassegnare la propria partizione di boot come attiva: {{ic|fdisk}}, {{ic|cfdisk}}, {{ic|sfdisk}} e {{ic|gparted}} sono applicazioni in grado di compiere questa operazione.
+
Sarà quindi necessario contrassegnare la propria partizione di boot come attiva: {{ic|fdisk}}, {{ic|cfdisk}}, {{ic|sfdisk}} e {{ic|gparted}} sono applicazioni in grado di compiere questa operazione (flag {{ic|boot}}).
 
   
 
   
 
Una volta effettuata l'operazione, la tabella partizioni dovrebbe essere simile alla seguente:
 
Una volta effettuata l'operazione, la tabella partizioni dovrebbe essere simile alla seguente:
Line 86: Line 107:
 
Si installi Syslinux nel MBR:
 
Si installi Syslinux nel MBR:
  
  # dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr.bin of=/dev/sda
+
  # dd bs=440 count=1 if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda
  
 
Syslinux offre inoltre un MBR alternativo: {{ic|altmbr.bin}}. Quest'ultimo non effettua la ricerca di una partizione avviabile, ma fa riferimento all'ultimo byte del MBR per ricavare la partizione dalla quale effettuare il boot. Ecco un esempio di utilizzo:
 
Syslinux offre inoltre un MBR alternativo: {{ic|altmbr.bin}}. Quest'ultimo non effettua la ricerca di una partizione avviabile, ma fa riferimento all'ultimo byte del MBR per ricavare la partizione dalla quale effettuare il boot. Ecco un esempio di utilizzo:
  
  # printf '\x5' | cat /usr/lib/syslinux/altmbr.bin - | dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sda
+
  # printf '\x5' | cat /usr/lib/syslinux/bios/altmbr.bin - | dd bs=440 count=1 iflag=fullblock of=/dev/sda
  
In questo caso, un singolo byte avente valore {{ic|5}} viene inserito alla fine del file {{ic|altmbr.bin}} e i 440 byte risultanti vengono scritti nel MBR del disco {{ic|/dev/sda}}.
+
In questo caso, un singolo byte avente valore {{ic|5}} (esadecimale) viene inserito alla fine del file {{ic|altmbr.bin}} e i 440 byte risultanti vengono scritti nel MBR del disco {{ic|/dev/sda}}.
  
 
Syslinux è stato quindi installato nella prima partizione logica ({{ic|/dev/sda5}}) del disco.
 
Syslinux è stato quindi installato nella prima partizione logica ({{ic|/dev/sda5}}) del disco.
  
====Tabella partizioni in formato GPT====
+
=====Tabella partizioni GUID=====
  
{{Box||Si faccia riferimento a: [[GUID Partition Table]]|#E5E5FF|#FCFCFC}}
+
Si faccia riferimento a: [[GUID Partition Table]].
  
È necessario impostare il bit 2 degli attributi relativi alla partizione {{ic|/boot}}:
+
È necessario impostare il bit 2 ({{ic|legacy_boot}}) degli attributi relativi alla partizione {{ic|/boot}}:
  
 
  # sgdisk /dev/sda --attributes=1:set:2
 
  # sgdisk /dev/sda --attributes=1:set:2
Line 113: Line 134:
 
Installazione nel MBR:
 
Installazione nel MBR:
  
  # dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/gptmbr.bin of=/dev/sda
+
  # dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sda
  
 
Se il comando di cui sopra non funziona è possibile provare ad utilizzare:
 
Se il comando di cui sopra non funziona è possibile provare ad utilizzare:
Line 119: Line 140:
 
  # syslinux-install_update -i -m
 
  # syslinux-install_update -i -m
  
====Riavvio====
+
==Sistemi UEFI==
  
Se si riavvia il sistema ora, si otterà il prompt di Syslinux poichè è necessario creare un file di configurazione per ottenere un menù di boot.
+
{{Nota|
 +
* {{ic|$esp}} identifica il punto di mount della partizione EFI di sistema
 +
* {{ic|efi64}} identifica i sistemi UEFI con architettura x86_64; in caso si utilizzino sistemi IA32 (a 32 bit), sostituire ogni occorrenza di {{ic|efi64}} con {{ic|efi32}}.
 +
* Syslinux richiede che il kernel e l'initrd risiedano sulla partizione EFI di sistema, in quanto a causa di un bug non può accedere a files che non si trovino sulla partizione nella quale è installato. È pertanto consigliabile montare la partizione EFI di sistema in {{ic|/boot}}.
 +
* Lo script di installazione automatico {{ic|/usr/bin/syslinux-install_update}} non supporta UEFI.
 +
* La sintassi del file di configurazione {{ic|syslinux.cfg}} è la stessa dei sistemi BIOS.
 +
}}
 +
 
 +
===Limitazioni di Syslinux in modalità UEFI===
 +
 
 +
* L'applicazione UEFI di Syslinux ({{ic|syslinux.efi}}) non può essere firmata da {{ic|sbsign}} (pacchetto ''sbsigntool'') per l'uso con il Secure Boot. Bug report - http://bugzilla.syslinux.org/show_bug.cgi?id=8
 +
* L'utilizzo del tasto {{ic|TAB}} per la modifica dei parametri del kernel in modalità UEFI crea artefatti a schermo e testo sovrapposto. Bug report - http://bugzilla.syslinux.org/show_bug.cgi?id=9
 +
* Syslinux UEFI non supporta il chainloading di altre applicazioni UEFI come {{ic|UEFI Shell} o {{ic|Windows Boot Manager}}. Bug report - http://bugzilla.syslinux.org/show_bug.cgi?id=17
 +
* Syslinux UEFI potrebbe non effettuare il boot in alcune macchine virtuali, come QEMU/OVMF o Virtualbox, oppure in alcune versioni dei prodotti VMware, oltre ad alcuni ambienti UEFI emulati come DUET. Un contributore di Syslinux ha confermato che non ci sono problemi su VMware Workstation 10.0.2 e Syslinux-6.02. Bug reports - http://bugzilla.syslinux.org/show_bug.cgi?id=21 e http://bugzilla.syslinux.org/show_bug.cgi?id=23
 +
* Memdisk non è disponibile in modalità UEFI. Bug report - http://bugzilla.syslinux.org/show_bug.cgi?id=30
 +
 
 +
===Installazione===
 +
 
 +
* Installare {{Pkg|syslinux}} ed {{Pkg|efibootmgr}} dai [[Official repositories (Italiano)|repository ufficiali]], quindi si installi Syslinux nella partizione EFI di sistema come mostrato sotto.
 +
 
 +
* Copiare i file di Syslinux nella partizione EFI di sistema (sostituire a {{ic|$esp}} il punto di mount della partizione, solitamente {{ic|/boot}}):
 +
 
 +
# mkdir -p $esp/EFI/syslinux
 +
# cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
 +
 
 +
* Si crei una voce di avvio per Syslinux utilizzando [[Unified Extensible Firmware Interface#efibootmgr]]:
 +
 
 +
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"
 +
 
 +
dove {{ic|/dev/sdXY}} è la partizione che contiene il bootloader.
 +
 
 +
* Si crei o modifichi il file {{ic|$esp/EFI/syslinux/syslinux.cfg}} seguendo le istruzioni in [[#Configurazione]].
 +
 
 +
{{Nota|il file di configurazione su sistemi UEFI è {{ic|$esp/EFI/syslinux/syslinux.cfg}} e non {{ic|/boot/syslinux/syslinux.cfg}}. I file contenuti nella directory {{ic|/boot}} sono specifici dei sistemi BIOS.}}
  
 
==Configurazione==
 
==Configurazione==
  
Il file di configurazione di Syslinux, {{ic|syslinux.cfg}}, dovrebbe essere creato nella stesa directory dove risiede Syslinux che nel nostro caso corrisponde a: {{ic|/boot/syslinux}}.
+
Il file di configurazione di Syslinux, {{ic|syslinux.cfg}}, dovrebbe essere creato nella stesa directory dove risiede Syslinux che corrisponde a {{ic|/boot/syslinux}} per sistemi BIOS e {{ic|$esp/EFI/syslinux/}} per sistemi UEFI.
 
Il bootloader controllerà l'esistenza del file {{ic|syslinux.cfg}} (preferito) o {{ic|extlinux.conf}}.
 
Il bootloader controllerà l'esistenza del file {{ic|syslinux.cfg}} (preferito) o {{ic|extlinux.conf}}.
  
Line 135: Line 189:
 
===Esempi===
 
===Esempi===
  
====Configurazione di base====
+
{{Nota|I file di configurazione di cui sotto dovranno essere modificati passando al kernel i parametri corretti. Si veda la sezione [[#Parametri del kernel]].}}
  
Di seguito viene presentato un semplice file di configurazione che visualizza il prompt {{ic|boot:}} ed esegue il boot automaticamente dopo 5 secondi.
+
====Prompt di boot====
  
{{Nota|La partizione in questione dovrà essere la propria {{ic|root}}, e non quella di {{ic|/boot}}.}}.
+
Di seguito viene presentato un semplice file di configurazione che visualizza il prompt {{ic|boot:}} ed esegue il boot automaticamente dopo 5 secondi. Se si vuole effettuare il boot direttamente senza visualizzare un prompt, si imposti {{ic|PROMPT}} a {{ic|0}}.
  
 
Configurazione:
 
Configurazione:
Line 160: Line 214:
 
</nowiki>
 
</nowiki>
 
}}
 
}}
 
Se si desidera effettuare automaticamente il boot senza visualizzare il prompt, si imposti {{ic|PROMPT}} a {{ic|0}}.
 
 
Se si desidera usare gli [[Persistent block device naming (Italiano)#by-uuid|UUID]] per la nomenclatura persistende dei dispositivi a blocchi si modifichi la riga APPEND inserendo l'UUID della propria partizione root:
 
 
APPEND root='''UUID='''978e3e81-8048-4ae1-8a06-aa727458e8ff ro
 
 
Se si usa il sistema di cifratura [[LUKS|LUKS]], si modifichi la riga {{ic|APPEND}} affinchè Syslinux utilizzi il volume criptato:
 
APPEND root=/dev/mapper/''gruppo''-''nome'' cryptdevice=/dev/sda2:''nome'' ro
 
 
Se si utilizza un [[Wikipedia:RAID]] software attraverso [http://neil.brown.name/blog/mdadm mdadm], si modifichi la linea {{ic|APPEND}} in modo da comprendere gli array del vostro RAID.
 
 
Nell'esempio che segue vengono utilizzati tre array in RAID 1 e impostato quello corretto come root:
 
 
APPEND root=/dev/md1 ro md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4
 
 
Se si riscontrano problemi con il boot da una partizione situata su un raid software usando il metodo di cui sopra, si provino ad utilizzare le etichette delle partizioni:
 
 
  APPEND root=LABEL=ETICHETTA_PARTIZIONE_ROOT ro
 
  
 
====Menù testuale====
 
====Menù testuale====
  
Syslinux consente di utilizzare un menù testuale. Per utilizzarlo si copi il modulo COM32 {{ic|menu}} nella propria directory di Syslinux:
+
Syslinux consente di utilizzare un menù testuale. Per utilizzarlo si copi il modulo {{ic|menu}} nella propria directory di Syslinux:
 
+
# cp /usr/lib/syslinux/menu.c32 /boot/syslinux/
+
 
+
Se {{ic|/boot}} si trova nella stessa partizione di {{ic|/usr}}, basterà utilizzare un link simbolico:
+
  
  # ln -s /usr/lib/syslinux/menu.c32 /boot/syslinux/
+
  # cp /usr/lib/syslinux/bios/menu.c32 /boot/syslinux/
  
 
Configurazione:
 
Configurazione:
Line 215: Line 246:
 
}}
 
}}
  
Per ulteriori dettagli sul menù, si veda [http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=doc/menu.txt la documentazione di Syslinux].
+
Per ulteriori dettagli sul menù, si veda [http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=doc/menu.txt la documentazione di Syslinux] o il [http://www.syslinux.org/wiki/index.php/Menu wiki] di Syslinux.
  
 
====Menù grafico====
 
====Menù grafico====
Line 221: Line 252:
 
È disponibile un menù grafico. Per utilizzarlo, si copi il modulo COM32 {{ic|vesamenu}} nella propria directory di Syslinux:
 
È disponibile un menù grafico. Per utilizzarlo, si copi il modulo COM32 {{ic|vesamenu}} nella propria directory di Syslinux:
  
  # cp /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/
+
  # cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/
 
+
Se {{ic|/boot}} si trova nella stessa partizione di {{ic|/usr}}, basterà utilizzare un link simbolico:
+
 
+
# ln -s /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/
+
  
[https://projects.archlinux.org/archiso.git/tree/configs/releng/syslinux Questo] file di configurazione utilizza la stessa impostazione grafica del CD di installazione di Arch Linux. Lo sfondo è disponibile allo stesso indirizzo.
+
{{Nota|Se si utilizza [[Unified Extensible Firmware Interface (Italiano)|UEFI]], assicurarsi di copiare il file {{ic|efi32}} dalla directory {{ic|/usr/lib/syslinux/efi64/}}, altrimenti si otterrà solamente una schermata nera.
 +
Nel caso si verificasse il problema, avviare il pc tramite LiveCD ed utilizzare [[chroot]] per effettuare le dovute modifiche.}}
  
Per essere certi che il sistema si avvii con questo file di configurazione, assicurarsi che lo stesso si riferisca alla partizione corretta
+
Questo file di configurazione utilizza lo stesso design del CD di installazione di Arch Linux, e può essere scaricato da [https://projects.archlinux.org/archiso.git/tree/configs/releng/syslinux projects.archlinux.org]. L'immagine di sfondo può essere [https://projects.archlinux.org/archiso.git/plain/configs/releng/syslinux/splash.png scaricata dallo stesso sito]. La si copi quindi in {{ic|/boot/syslinux/splash.png}}
  
 
Configurazione:
 
Configurazione:
Line 280: Line 308:
 
}}
 
}}
  
Dalla versione 3.84 di Syslinux, {{ic|vesamenu.c32}} supporta il parametro {{ic|MENU RESOLUTION $LARGHEZZA $ALTEZZA}}. Per utilizzarlo, si inserisca ad esempio {{ic|MENU RESOLUTION 1440 900}} nel proprio file di configurazione. Si noti tuttavia che l'immagine di sfondo dovrà essere della stessa risoluzione, altrimenti Syslinux si rifiuterà di caricare il menù.
+
Dalla versione 3.84 di Syslinux, {{ic|vesamenu.c32}} supporta il parametro {{ic|MENU RESOLUTION $ALTEZZA $LARGHEZZA}}. Per utilizzarlo, si inserisca ad esempio {{ic|MENU RESOLUTION 900 1440}} nel proprio file di configurazione. Si noti tuttavia che l'immagine di sfondo dovrà essere della stessa risoluzione, altrimenti Syslinux si rifiuterà di caricare il menù.
 +
 
 +
Per centrare il menù e modificare la risoluzione, si utilizzino i comandi {{ic|MENU RESOLUTION}}, {{ic|MENU HSHIFT $N}} e {{ic|MENU VSHIFT $N}}, dove {{ic|$N}} è un intero positivo. I valori di default sono {{ic|0}}, che corrispondono all'angolo in alto a sinistra del monitor. Similmente, inserire un numero positivo posizionerà il testo dal lato opposto dello schermo (ad esempio, {{ic|VHSHIFT -4}} posiziona il cursore 4 righe sotto il fondo dello schermo).
 +
 
 +
Per centrare il menù, si utilizzino questi valori:
 +
 
 +
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 +
MENU RESOLUTION 800 600 # inserire la risoluzione in uso
 +
MENU WIDTH 78          # larghezza menù richiesta per il corretto dimensionamento del menù box
 +
MENU VSHIFT 10          # muove il menù verso il basso
 +
MENU HSHIFT 10          # muove il menù vero l'alto
 +
</nowiki>}}
 +
 
 +
Gli standard VESA prevedono una dimensione massima di 25 righe e 80 colonne. Impostare valori più alti potrebbe impedire la corretta visualizzazione del menù, richiedendo la modifica del file di configurazione da un LiveCD.
 +
 
 +
===Parametri del kernel===
 +
 
 +
È possibile passare [[Kernel parameters|parametri]] al kernel utilizzando la variabile {{ic|APPEND}} in {{ic|syslinux.cfg}}. È raccomandabile applicare le stesse modifiche alla voce per il boot dell'immagine fallback.
 +
 
 +
'''Nel caso più semplice''', sarà necessario sostituire il valore del parametro {{ic|root}}: si modifichi quindi {{ic|/dev/sda2}} con il valore corretto.
 +
 
 +
'''Se si desidera usare gli [[Persistent block device naming (Italiano)#By-uuid|UUID]]''' per la [[Persistent block device naming (Italiano)|nomenclatura persistende dei dispositivi a blocchi]] si modifichi la riga APPEND inserendo l'UUID della propria partizione root:
 +
 
 +
APPEND root=UUID=''1234'' rw
 +
 
 +
'''Se si usa il sistema di cifratura [[LUKS]]''', si modifichi la riga {{ic|APPEND}} affinchè Syslinux utilizzi il volume criptato:
 +
APPEND root=/dev/mapper/''gruppo''-''nome'' cryptdevice=/dev/sda2:''nome'' rw
 +
 
 +
Se si utilizza un [[Wikipedia:RAID]] software attraverso [http://neil.brown.name/blog/mdadm mdadm], si modifichi la linea {{ic|APPEND}} in modo da comprendere gli array del vostro RAID.
 +
 
 +
Nell'esempio che segue vengono utilizzati tre array in RAID 1 e impostato quello corretto come root:
 +
 
 +
APPEND root=/dev/md1 rw md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4
 +
 
 +
Se si riscontrano problemi con il boot da una partizione situata su un raid software usando il metodo di cui sopra, si provino ad utilizzare le etichette delle partizioni:
 +
 
 +
  APPEND root=LABEL=ETICHETTA_PARTIZIONE_ROOT ro
 +
 
 +
'''Se si utilizza un sottovolume [[btrfs]]''', si modifichi la riga {{ic|APPEND}} come segue: {{ic|rootflags<nowiki>=</nowiki>subvol<nowiki>=</nowiki><sottovolume root>}}.
 +
Ad esempio, se {{ic|/dev/sda2}} è stato montato come sottovolume btrfs chiamato 'ROOT' (esempio: {{ic|mount -o noatime,subvol<nowiki>=</nowiki>ROOT /dev/sda2 /mnt}}):
 +
 
 +
APPEND root=/dev/sda2 rw rootflags=subvol=ROOT
 +
 
 +
La mancata applicazione delle modifiche di cui sopra, causerà il seguente messaggio di errore: {{ic|ERROR: Root device mounted successfully, but /sbin/init does not exist.}}.
  
 
===Boot automatico===
 
===Boot automatico===
  
Se non si desidera visualizzare il menù di Syslinux ed effettuare direttamente il boot, si commentino tutti i comandi contenenti la direttiva {{ic|UI}} e ci si assicuri che il parametro {{ic|DEFAULT}} esista nel proprio {{ic|syslinux.cfg}}.
+
Se non si desidera visualizzare il menù di Syslinux ed effettuare direttamente il boot, si veda [[#Prompt di boot]], ci si assicuri che {{ic|PROMPT}} abbia valore {{ic|0}} e si commentino eventuali tutte le voci di menu {{ic|UI}}. Potrebbe essere utile assegnare al parametro {{ic|TIMEOUT}} il valore {{ic|0}}. Assicurarsi inoltre che il parametro {{ic|DEFAULT}} esista nel proprio {{ic|syslinux.cfg}}.
 +
 
 +
===Sicurezza===
 +
 
 +
Syslinux dispone di due livelli di sicurezza: una master password per il menu ed una per ogni singola voce di avvio. Si inserisca in {{ic|syslinux.cfg}} quanto segue:
 +
 
 +
MENU MASTER PASSWD passwd
 +
 
 +
per impostare una master password e:
 +
 
 +
MENU PASSWD passwd
 +
 
 +
all'interno di un blocco {{ic|LABEL}} per proteggere con password voci individuali.
 +
 
 +
La password può essere espressa in chiaro o tramite il suo hash. Si veda in tal senso la [http://www.syslinux.org/wiki/index.php/Comboot/menu.c32 documentazione ufficiale].
  
 
===Chainloading===
 
===Chainloading===
  
Se si desidera effettuare il chainload di altri sistemi operativi (ad esempio Windows) o altri bootloader, si copi (o si utilizzi un link simbolico, se possibile) il modulo {{ic|chain.c32}} nella directory di Syslinux (per i dettagli si consulti la sezione precedente). Si crei quindi la seguente sezione nel file di configurazione:
+
{{Nota|Syslinux BIOS non è in grado di effettuare il chainload dei files su partizioni differenti da quella di installazione, tutavia il modulo {{ic|chain.c32}} può avviare il boot sector delle partizioni (VBR).}}
 +
 
 +
Se si desidera effettuare il chainload di altri sistemi operativi (ad esempio Windows) o altri bootloader, si copi il modulo {{ic|chain.c32}} nella directory di Syslinux (per i dettagli si consulti la sezione precedente). Si crei quindi la seguente sezione nel file di configurazione:
  
 
{{hc|/boot/syslinux/syslinux.cfg|
 
{{hc|/boot/syslinux/syslinux.cfg|
Line 299: Line 386:
  
 
{{ic|hd0 3}} rappresenta la terza partizione del primo disco identificato dal BIOS. I dischi sono contati partendo da zero, mentre le partizioni da uno.
 
{{ic|hd0 3}} rappresenta la terza partizione del primo disco identificato dal BIOS. I dischi sono contati partendo da zero, mentre le partizioni da uno.
 +
 +
{{Nota|Le operazioni di cui sopra inibiscono il funzionamento del boot manager di Windows {{ic|bootmgr}}, necessario per la corretta applicazione di alcuni aggiornamenti (ad esempio [http://support.microsoft.com/kb/2883200 qui]).
 +
In questi casi potrebbe essere utile impostare temporaneamente il flag Boot sulla partizione di Windows utilizzando [[GParted]], applicare l'aggiornamento e poi reimpostare il flag boot sulla partizione di Syslinux. (esempio con [http://www.online-tech-tips.com/computer-tips/set-active-partition-vista-xp DiskPart] per Windows).}}
  
 
Se non si è sicuri di quale drive venga identificato dal vostro BIOS come primo, è possibile utilizzare l'identificativo MBR oppure, se si usa GPT, l'etichetta del filesystem.
 
Se non si è sicuri di quale drive venga identificato dal vostro BIOS come primo, è possibile utilizzare l'identificativo MBR oppure, se si usa GPT, l'etichetta del filesystem.
Line 338: Line 428:
 
       append file=../grub/boot.img
 
       append file=../grub/boot.img
 
</nowiki>}}
 
</nowiki>}}
 +
 +
In alternativa, è possibile caricare [[GRUB (Italiano)|GRUB]] come kernel linux, facendo precedere {{ic|lnxboot.img}} a {{ic|core.img}}. Il file {{ic|lnxboot.img}} fa parte del pacchetto {{Pkg|grub}} e può essere trovato in {{ic|/usr/lib/grub/i386-pc}}.
 +
 +
{{hc|/boot/syslinux/syslinux.cfg|<nowiki>
 +
...
 +
LABEL grub2lnx
 +
        MENU LABEL Grub2 (lnxboot)
 +
        LINUX ../grub/i386-pc/lnxboot.img
 +
        INITRD ../grub/i386-pc/core.img
 +
...</nowiki>
 +
}}
 +
 +
Quanto sopra potrebbe essere necessario per avviare immagini ISO.
  
 
===Chainloading di un altro sistema Linux===
 
===Chainloading di un altro sistema Linux===
  
Quando si effettua il chainloading di un bootloader come quello di Windows, non ci sono problemi, in quanto si dispone di un bootloader da avviare, mentre Syslinux è in grado di caricare files che risiedono sulla stessa partizione del file di configurazione. Se quindi si ha un'altra versione di Linux installata su una partizione differente e senza {{ic|/boot}} separata, è necessario utilizzare Extlinux. In poche parole, è possibile installare quest'ultimo sul superblocco della partizione per poi essere richiamato dal Syslinux installato nel MBR.
+
Quando si effettua il chainloading di un bootloader come quello di Windows, non ci sono problemi, in quanto si dispone di un bootloader da avviare, mentre Syslinux è in grado di caricare files che risiedono sulla stessa partizione del file di configurazione. Se quindi si ha un'altra versione di Linux installata su una partizione differente e senza {{ic|/boot}} separata, è ''necessario'' utilizzare Extlinux al posto del bootloader di default (ad esempio GRUB). In poche parole, è possibile installare Extlinux sul superblocco della partizione/[[wikipedia:Volume_boot_record|VBR]] per poi essere richiamato come ''bootloader separato'' dal Syslinux installato nel MBR.
 +
Extlinux fa parte del progetto Syslinux ed è incluso nel pacchetto {{Pkg|syslinux}}.
  
Le seguenti istruzioni presuppongono che si sia già installato Syslinux, che il path al file di configurazione sia {{ic|/boot/syslinux}} e che la distribuzione di cui effettuare il chainload risieda su {{ic|/dev/sda3}}.
+
Le seguenti istruzioni presuppongono che si sia già installato Syslinux, che il path al file di configurazione sia {{ic|/boot/syslinux}} e che il sistema di cui effettuare il chainload risieda su {{ic|/dev/sda3}}.
  
 
Una volta avviata la distribuzione che Syslinux avvia di default, si monti la partizione di root dell'altra distribuzione su un mount point a piacere. In questo esempio si utilizzerà {{ic|/mnt}}; si noti che se si usa una partizione di boot separata sarà necessario montarla: l'esempio assume che questa sia {{ic|/dev/sda2}}.
 
Una volta avviata la distribuzione che Syslinux avvia di default, si monti la partizione di root dell'altra distribuzione su un mount point a piacere. In questo esempio si utilizzerà {{ic|/mnt}}; si noti che se si usa una partizione di boot separata sarà necessario montarla: l'esempio assume che questa sia {{ic|/dev/sda2}}.
Line 350: Line 454:
 
  # mount /dev/sda2 /mnt/boot (necessario solamente per /boot separata)
 
  # mount /dev/sda2 /mnt/boot (necessario solamente per /boot separata)
  
Si installi Extlinux e si copino i moduli {{ic|*.c32}} necesari:
+
Si installi Extlinux nel VBR della partizione e si copino i moduli {{ic|*.c32}} necesari:
  
  # extlinux -i /mnt/boot/syslinux
+
  # extlinux -i /mnt/boot/syslinux (creare la directory, se necessario)
  # cp /usr/lib/syslinux/{chain,menu}.c32 /mnt/boot/syslinux
+
  # cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux
  
Si crei {{ic|/mnt/boot/syslinux/syslinux.cfg}} (segue esempio):
+
Si crei {{ic|/mnt/boot/syslinux/syslinux.cfg}}. È possibile utilizzare come riferimento il file menu del sistema madre (segue esempio):
  
 
{{hc|
 
{{hc|
Line 374: Line 478:
  
 
Tratta dalla [[User:Djgera|pagina utente]] di Djgera.
 
Tratta dalla [[User:Djgera|pagina utente]] di Djgera.
 +
 +
Si noti che la voce relativa all'altro sistema in {{ic|<altro-OS>/boot/syslinux/syslinux.cfg}} dovrà essere modificata ogni volta che se ne aggiorna il kernel, dal momento che sti sta avviando direttamente quest'ultimo, al posto di effettuare il chainloading del bootloader di default.
  
 
===Usare memtest===
 
===Usare memtest===
  
Si installi {{Pkg|memtest86+}} dai [[Official Repositories (Italiano)|repository ufficiali]].
+
Si installi {{Pkg|memtest86+}} dai [[Official repositories (Italiano)|repository ufficiali]].
  
 
Si utilizzi questa sezione {{ic|LABEL}} per effettuare il boot di memtest.
 
Si utilizzi questa sezione {{ic|LABEL}} per effettuare il boot di memtest.
Line 388: Line 494:
 
</nowiki>
 
</nowiki>
 
}}
 
}}
 +
 +
{{Nota|Se si utilizza pxelinux, si cambi il nome del file da {{ic|memtest.bin}} a {{ic|memtest}}, poichè pxelinux tratta i files con estensione {{ic|.bin}} come boot sector e ne carica solo i primi 2 KiB.}}
  
 
===HDT===
 
===HDT===
  
[http://hdt-project.org/ HDT (Hardware Detection Tool)] è uno strumento per visualizzare informazioni sull'hardware. Come sempre, il rispettivo modulo {{ic|.c32}} dovrà essere copiato (o si dovrà creare un link simbolico) in {{ic|/boot/syslinux}}.
+
[http://hdt-project.org/ HDT (Hardware Detection Tool)] è uno strumento per visualizzare informazioni sull'hardware. Come sempre, il rispettivo modulo {{ic|.c32}} dovrà essere copiato in {{ic|/boot/syslinux}}.
Per i dispositivi PCI, si copi o si crei un link simbolico da {{ic|/usr/share/hwdata/pci.ids}} a {{ic|/boot/syslinux/pci.ids}} e si aggiunga quanto segue al proprio file di configurazione:
+
Per i dispositivi PCI, si copi {{ic|/usr/share/hwdata/pci.ids}} in {{ic|/boot/syslinux/pci.ids}} e si aggiunga quanto segue al proprio file di configurazione:
  
 
{{hc|/boot/syslinux/syslinux.cfg|
 
{{hc|/boot/syslinux/syslinux.cfg|
Line 403: Line 511:
  
 
===Riavvio e spegnimento===
 
===Riavvio e spegnimento===
 +
 +
{{Nota|A partire da Syslinux 6.03, {{ic|poweroff.c32}} funziona solamente con APM e non con ACPI. Per una possibile soluzione si veda [http://www.syslinux.org/archives/2012-March/017661.html questa discussione].}}
  
 
Si usino le seguenti sezioni per riavviare o spegnere la macchina:
 
Si usino le seguenti sezioni per riavviare o spegnere la macchina:
Line 414: Line 524:
 
LABEL poweroff
 
LABEL poweroff
 
         MENU LABEL Power Off
 
         MENU LABEL Power Off
         COMBOOT poweroff.com
+
         COM32 poweroff.c32
 
</nowiki>
 
</nowiki>
 
}}
 
}}
Line 430: Line 540:
 
Innanzitutto si deve creare una mappatura compatibile (nell'esempio si utilizzerà quella tedesca):
 
Innanzitutto si deve creare una mappatura compatibile (nell'esempio si utilizzerà quella tedesca):
  
# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./
+
{{Nota|Sarà necessario creare anche {{ic|us.keymap}}, o l'esempio non funzionerà.}}
# cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz ./
+
# gunzip {de,us}.map.gz
+
# mv de.{,k}map
+
# mv us.{,k}map
+
# keytab-lilo de > de.ktl
+
  
L'ultimo comando dovrà essere eseguito come root, altrimenti non funzionerà.
+
$ cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz .
 +
$ cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz .
 +
$ gunzip de.map.gz
 +
$ gunzip us.map.gz
 +
$ mv de.map de.kmap
 +
$ mv us.map us.kmap
 +
# keytab-lilo us de > de.ktl
  
 
Si copi {{ic|de.ktl}} in {{ic|/boot/syslinux}} e si imposti il proprietario a {{ic|root}}:
 
Si copi {{ic|de.ktl}} in {{ic|/boot/syslinux}} e si imposti il proprietario a {{ic|root}}:
Line 443: Line 554:
 
  # chown root:root /boot/syslinux/de.ktl
 
  # chown root:root /boot/syslinux/de.ktl
  
Ora si modifichi il proprio {{ic|syslinux.conf}} aggiungendo:
+
Ora si modifichi il proprio {{ic|syslinux.cfg}} aggiungendo:
  
KEYMAP de.ktl
+
{{hc|/boot/syslinux/syslinux.cfg|
 +
KBDMAP de.ktl
 +
}}
  
 
===Nascondere il menu===
 
===Nascondere il menu===
  
 
Si utilizzi l'opzione {{hc|/boot/syslinux/syslinuxcfg|MENU HIDDEN}} per nascondere il menu e visualizzare solamente il timeout. Si prema un tasto qualsiasi per mostrarlo nuovamente.
 
Si utilizzi l'opzione {{hc|/boot/syslinux/syslinuxcfg|MENU HIDDEN}} per nascondere il menu e visualizzare solamente il timeout. Si prema un tasto qualsiasi per mostrarlo nuovamente.
 +
 +
===Pxelinux===
 +
 +
{{Nota|Su sistemi UEFI, Syslunux utilizza lo stesso eseguibile sia per il boot da disco che per quello via rete. Sarà necessario avviare Syslinux in modalità di rete per il trasferimento di eventuali files tramite TFTP o altri protocolli di rete.}}
 +
 +
Pxelinux è fornito dal pacchetto {{Pkg|syslinux}}.
 +
 +
Si copi il bootloader {{ic|1=pxelinux.0}} (fornito dal pacchetto {{Pkg|syslinux}} nella directory {{ic|/boot}} del client. Per versioni 5.00 e successive, si copi inoltre il file {{ic|ldlinux.c32}} dallo stesso pacchetto:
 +
 +
# cp /usr/lib/syslinux/bios/pxelinux.0 "$root/boot"
 +
# cp /usr/lib/syslinux/bios/ldlinux.c32 "$root/boot"
 +
# mkdir "$root/boot/pxelinux.cfg"
 +
 +
Si noti la creazione della directory {{ic|pxelinux.cfg}}, dove PXELINUX cerca il file di configurazione di default. Dal momento che non si intende fare differenze tra i MAC dei vari host, sarà creato il file di configurazione {{ic|default}}.
 +
 +
{{hc|# vim "$root/boot/pxelinux.cfg/default"|<nowiki>
 +
default linux
 +
 +
label linux
 +
kernel vmlinuz-linux
 +
append initrd=initramfs-linux.img quiet ip=:::::eth0:dhcp nfsroot=10.0.0.1:/arch
 +
</nowiki>}}
 +
 +
Se si utilizza NBD, modificare la riga {{ic|append}} come segue:
 +
 +
append ro initrd=initramfs-linux.img ip=:::::eth0:dhcp nbd_host=10.0.0.1 nbd_name=arch root=/dev/nbd0
 +
 +
{{Nota|Sarà necessario modificare {{ic|nbd_host}} e {{ic|nfsroot}} a seconda della configurazione della propria rete, ovvero a seconda dell'indirizzo del proprio server NFS/NBD.}}
 +
 +
La sintassi del file di configurazione di PXELINUX è identica a quella di Syslinux: si faccia riferimento alla documentazione ufficiale per ulteriori informazioni.
 +
 +
Il kernel e l'initrd saranno trasmessi via TFTP, perciò i percorsi saranno relativi alla root del server TFTP, oppure il filesystem root potrebbe essere proprio quello montato tramite NFS: in questo caso i percorsi saranno relativi alla root del server NFS.
 +
 +
Per avviare pxelinux, si sostituisca {{ic|filename "/grub/i386-pc/core.0";}} nel file {{ic|/etc/dhcpd.conf}} con {{ic|filename "/pxelinux.0"}}.
 +
 +
===Avviare un'immagine ISO 9660 tramite memdisk===
 +
 +
Syslinux supporta l'avvio di immagini ISO tramite il modulo [http://www.syslinux.org/wiki/index.php/MEMDISK memdisk]; si veda [[Multiboot USB drive#Using Syslinux and memdisk]] per ulteriori esempi.
 +
 +
===Utilizzare la console seriale===
 +
 +
Per abilitare la console seriale, si aggiunga {{ic|SERIAL port [baudrate]}} in cima al proprio {{ic|syslinux.cfg}}. ''port'' è un numero (0 per {{ic|/dev/ttyS0}}). Se ''baudrate'' viene omesso, il default è 9600 bps. I parametri per la trasmissione seriale sono preimpostati a 8 bit, nessuna parità e 1 bit di stop. [http://www.syslinux.org/wiki/index.php/SYSLINUX#SERIAL_port_.5Bbaudrate_.5Bflowcontrol.5D.5D.]
 +
 +
{{hc|syslinux.cfg|
 +
SERIAL 0 115200
 +
}}
 +
 +
Si abiliti la console seriale all'avvio aggiungendo {{ic|1=console=tty0 console=ttyS0,115200n8}} al parametro {{ic|APPEND}}. [http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt#681]
 +
 +
{{hc|syslinux.cfg|2=
 +
APPEND root=UUID=126ca36d-c853-4f3a-9f46-cdd49d034ce4 rw console=tty0 console=ttyS0,115200n8
 +
}}
 +
 +
Abilitare la console seriale su GRUB: [[Working with the serial console#GRUB2 and systemd]].
  
 
==Risoluzione dei problemi==
 
==Risoluzione dei problemi==
Line 501: Line 668:
 
===Missing Operating System===
 
===Missing Operating System===
  
Se si ottiene questo messaggio, si controlli se la partizione di {{ic|/boot}} ha la flag di boot attiva. In caso affermativo, probabilmente la partizione inizia al settore 1 invece che al 63 o al 2048. Si controlli con {{ic|fdisk -l}}. Se inizia al settore 1, si sposti la partizione con gparted da un disco di ripristino. Se si ha una partizione {{ic|/boot}} separata, si effettui il backup con:
+
* Si verifichi di aver installato {{ic|gptmbr.bin}} per sistemi di partizionamento GPT o {{ic|mbr.bin}} per tabelle partizioni DOS. {{ic|mbr.bin}} visualizza il messaggio d'errore ''Missing operating system'', mentre {{ic|gptmbr.bin}} mostra ''Missing OS''.
 +
 
 +
* Si verifichi se la partizione che contiene {{ic|/boot}} è contrassegnata come avviabile.
 +
 
 +
* Si verifichi tramite {{ic|fdisk -l}} se la prima partizione del disco avviabile inizia al settore 1 al posto del settore 63 o 2048. In questo caso è possibile spostare le partizioni tramite {{ic|gparted}} utilizzando un disco di ripristino. Se si dispone di una partizione {{ic|/boot}} separata, è possibile effettuarne il backup tramite:
  
 
  # cp -a /boot /boot.bak
 
  # cp -a /boot /boot.bak
  
E si effettui il boot con il disco di installazione di Arch. Si usi poi {{ic|cfdisk}} per cancellare la partizione di {{ic|/boot}} e la si ricrei: ora dovrebbe iniziare al settore giusto (63). Si montino quindi le proprie partizioni e si effettui il chroot nel sistema Arch installato su disco, come descritto nella Beginners guide. Si ripristini il backup di {{ic|/boot}} con:
+
Si effettui quindi il boot con il disco di installazione di Arch. Si usi poi {{ic|cfdisk}} per cancellare la partizione di {{ic|/boot}} e la si ricrei: ora dovrebbe iniziare al settore giusto (63). Si montino quindi le proprie partizioni e si effettui il chroot nel sistema Arch installato su disco, come descritto nella Beginners guide. Si ripristini il backup di {{ic|/boot}} con:
  
 
  # cp -a /boot.bak/* /boot
 
  # cp -a /boot.bak/* /boot
Line 514: Line 685:
  
 
Si riavvii quindi il sistema.
 
Si riavvii quindi il sistema.
 +
 +
È possibile ottenere questo errore anche se si prova ad effettuare il boot da un array [[RAID (Italiano)|RAID]] {{ic|md1}} creato con una versione dei metadata non supportata da Syslinux. A partire da Agosto 2013, {{Pkg|mdadm}} crea un array con la versione metadata {{ic|1.2}}, mentre Syslinux supporta solo la {{ic|1.0}}. Sarà quindi necessario ricreare il proprio array RAID passando l'opzione {{ic|1=--metadata=1.0}} a {{ic|mdadm}}.
  
 
===Viene eseguito Windows al posto di Syslinux!===
 
===Viene eseguito Windows al posto di Syslinux!===
Line 523: Line 696:
 
===Le voci del menù non hanno effetto===
 
===Le voci del menù non hanno effetto===
  
Se si seleziona una voce del menù di boot e non succede niente a parte il ricaricamento dello stesso, è probabile che si abbia un errore nel proprio {{ic|syslinux.cfg}}. Si prema {{Keypress|tab}} per modificare i propri parametri di boot. In alternativa si prema {{Keypress|esc}} e si scriva il valore del parametro {{ic|LABEL}} corrispondente al sistema da avviare (ad esempio {{ic|arch}}).
+
Se si seleziona una voce del menù di boot e non succede niente a parte il ricaricamento dello stesso, è probabile che si abbia un errore nel proprio {{ic|syslinux.cfg}}. Si prema {{ic|tab}} per modificare i propri parametri di boot. In alternativa si prema {{ic|esc}} e si scriva il valore del parametro {{ic|LABEL}} corrispondente al sistema da avviare (ad esempio {{ic|arch}}).
 +
 
 +
Il problema potrebbe anche essere causato dall'assenza di un kernel. Si acceda al proprio filesystem tramite LiveCD, si monti la propria partizione {{ic|/boot}} ed assicurarsi che {{ic|/puntodimount/vmlinuz-linux}} esista e non abbia dimensione 0. In caso procedere con [[Kernel Panics#Option 2: Reinstall kernel]].
  
 
===Impossibile rimuovere ldlinux.sys===
 
===Impossibile rimuovere ldlinux.sys===
Line 543: Line 718:
  
 
  APPEND root=/dev/sda6 ro 5 '''vga=current''' quiet splash
 
  APPEND root=/dev/sda6 ro 5 '''vga=current''' quiet splash
 +
 +
===Il chainloading del bootloader di Windows non funziona quando Windows si trova su un drive diverso===
 +
 +
Se Windows è installato in un hard disk diverso da Arch e si riscontrano problemi nel chainloading, si provi con la seguente configurazione:
 +
 +
{{bc|<nowiki>
 +
LABEL Windows
 +
        MENU LABEL Windows
 +
        COM32 chain.c32
 +
        APPEND mbr:0xdfc1ba9e swap
 +
</nowiki>}}
 +
 +
si sostituisca il codice MBR con quello del drive dove è installato Windows (Si veda [[#Chainloading|sopra]]), e si aggiunga {{ic|swap}} alle opzioni.
 +
 +
===Leggere i log del bootloader===
 +
 +
In alcuni casi (ad esempio quando il bootloader non è in grado di effettuare il boot del kernel, è utile poter ottenere più informazioni sul processo di avvio. ''Syslinux'' stampa eventuali messaggi d'errore a schermo, che vengono però subito sostituiti dal menu. Per evitare di perdere queste informazioni sarà necessario disabilitare l'interfaccia del menu in {{ic|syslinux.cfg}} e utilizzare il prompt d'avvio di default, il che si traduce nell'evitare:
 +
 +
* direttive {{ic|UI}}
 +
* {{ic|ONTIMEOUT}}
 +
* {{ic|ONERROR}}
 +
* {{ic|MENU CLEAR}}
 +
 +
* aumentare il valore di {{ic|TIMEOUT}}
 +
* utilizzare {{ic|PROMPT 1}}
 +
* utilizzare {{ic|DEFAULT <label che causa il problema>}}
 +
 +
Per ottenere informazioni di debug più dettagliate sarà necessario ricompilare {{Pkg|syslinux}} con CFLAGS aggiuntive:
 +
 +
-DDEBUG_STDIO=1 -DCORE_DEBUG=1
 +
 +
===Compressione BTRFS===
 +
 +
L'avvio da partizioni BTRFS compresse non è supportato. [http://www.syslinux.org/wiki/index.php/Syslinux_4_Changelog#Changes_in_4.02]
 +
 +
Verrà visualizzato il seguente messaggio d'errore:
 +
 +
{{bc|
 +
btrfs: found compressed data, cannot continue!
 +
invalid or corrupt kernel image.
 +
}}
 +
 +
[[GRUB (Italiano)|GRUB]] supporta l'avvio da partizioni BTRFS compresse.
  
 
==Vedere anche==
 
==Vedere anche==
Line 548: Line 766:
 
* Il [http://www.syslinux.org/ sito] del progetto Syslinux.
 
* Il [http://www.syslinux.org/ sito] del progetto Syslinux.
 
* [http://www.josephn.net/scrapbook/pxelinux_stuff configurazione di PXELinux]
 
* [http://www.josephn.net/scrapbook/pxelinux_stuff configurazione di PXELinux]
 +
* [http://blog.jak.me/2013/01/03/creating-a-multiboot-usb-stick-using-syslinux/ Penna USB Multiboot utilizzando Syslinux]{{Dead link|2015|05|15}}

Latest revision as of 11:59, 30 April 2016

Syslinux è una collezione di boot loaders capaci di effettuare il boot da dischi rigidi, CD e via rete utilizzando PXE. Supporta i filesystems Wikipedia:FAT, Wikipedia:ext2, ext3, ext4 e Btrfs.

Nota: Syslinux non può accedere a files che non si trovino nella partizione sulla quale è installato. Se si necessita della funzionalità multi-fs, si utilizzi un bootloader alternativo come GRUB.

Sistemi BIOS

Visione d'insieme del processo di boot

  1. Fase 1 : Parte 1 - Caricamento del MBR - Durante l'avvio, il BIOS legge il boot code contenuto nel Wikipedia:MBR, la regione di 440 byte situata all'inizio del disco (contenente il file /usr/lib/syslinux/bios/mbr.bin o /usr/lib/syslinux/bios/gptmbr.bin).
  2. Fase 1: Parte 2 - Ricerca della partizione attiva - Il boot code Stage 1 cerca la partizione segnata come attiva (flag boot nei dischi MBR). Nell'esempio si assume che tale partizione corrisponda a quella di /boot.
  3. Fase 2 : Parte 1 - Esecuzione del Volume Boot Record - Il boot code Stage 1 esegue il Volume Boot Record (VBR) della partizione /boot. Nel caso di Syslinux, il VBR è il settore iniziale del file /boot/syslinux/ldlinux.sys, creato dal comando extlinux --install. Si noti che ldlinux.sys e ldlinux.c32 sono due cose diverse.
  4. Fase 2 : Parte 2 - Esecuzione del file /boot/syslinux/ldlinux.sys - Il VBR carica il resto del file /boot/syslinux/ldlinux.sys, la cui posizione su disco non deve cambiare, pena l'impossibilità di effettuare il boot con Syslinux.
    Nota: Se si utilizza il file system Btrfs i metodi scritti sopra non funzioneranno in quanto i files vengono continuamente spostati, variando di conseguenza la posizione del file ldlinux.sys. Per questo motivo, in presenza di un file system BTRFS, l'intero boot code di ldlinux.sys viene copiato nello spazio che segue il VBR e non viene installato nel percorso canonico come avviene con altri file systems.
  5. Fase 3 - Caricamento del file /boot/syslinux/ldlinux.c32 - Il file /boot/syslinux/ldlinux.sys caricherà /boot/syslinux/ldlinux.c32 (modulo principale) che contiene la parte di Syslinux che non è stato possibile inserire nel ldlinux.sys (a causa di limitazioni sulla grandezza dei files). Il file ldlinux.c32 dovrebbe essere presente in ogni installazione di Syslinux/Extlinux e la sua versione dovrebbe corrispondere a quella del file ldlinux.sys installato, pena l'impossibilità di effettuare il boot. Si veda http://bugzilla.syslinux.org/show_bug.cgi?id=7 per ulteriori informazioni.
  6. Fase 4 - Ricerca e caricamento del file di configurazione - Una volta effettuato il caricamento di Syslinux, verrà cercato il file /boot/syslinux/syslinux.cfg (o, in certi casi, /boot/syslinux/extlinux.conf) e caricato, se presente. In caso di assenza del suddetto file, si verrà lasciati al prompt boot: di Syslinux. Quanto descritto in questa fase e il resto delle componenti secondarie di Syslinux (i moduli /boot/syslinux/*.c32, esclusi lib*.c32 e ldlinux.c32) richiedono che i moduli libreria /boot/syslinux/lib*.c32 siano presenti (http://www.syslinux.org/wiki/index.php/Common_Problems#ELF). Come sopra, la versione dei moduli libreria lib*.c32 e dei moduli secondari *.c32 deve combaciare con quella di ldlinux.sys.

Limitazioni di Syslinux su sistemi BIOS

Su questi sistemi, syslinux utilizza delle funzionalità fornite dal BIOS della propria scheda madre per accedere al contenuto dei dischi rigidi. Sfortunatamente, tali funzionalità hanno limitazioni che variano in funzione all'età del BIOS. La maggior parte dei BIOS moderni posono accedere solo ai primi 1024 cilindri, il che corrisponde ad una capacità approssimativa di 8,5 GB. Se la propria partizione /boot si trova in un settore sopra tale limite, syslinux potrebbe non essere in grado di caricare i file syslinux.cfg, l'initramfs o il file vmlinuz. Sarà quindi necessario posizionare la partizione /boot all'inizio del disco.

Altri bootloaders come grub utilizzano un "trucco" chiamato stage 1.5 bootloading, dove GRUB crea un piccolo programma di circa 32 KB che contiene i driver del disco e lo inserisce all'inizio della tabella partizioni, nello spazio inutilizzato (che su sistemi MBR è chiamato MBR gap) oppure, su sistemi GPT, nella partizione di boot BIOS. Il procedimento avviene in questo modo: il boot code nel MBR carica lo stage 1.5, inizializza i dischi e vi accede tramite interfaccia SATA, evitando così le limitazioni del BIOS per il caricamento del kernel. Ciò consente di posizionare la partizione /boot dovunque sul disco rigido. Sfortunatamente syslinux non dispone di tale funzionalità e si avvale delle funzionalità fornite dal BIOS per il caricamento di /boot.

Installazione

Nota:
  • A partire dalla versione 4, EXTLINUX e SYSLINUX sono la stessa cosa.
  • È necessario utilizzare gptfdisk per avvalersi del supporto a GPT.
  • Se la propria partizione di boot è formattata in FAT, sarà necessario installare il pacchetto mtools.

Installazione automatica

Nota: Lo script syslinux-install_update è specifico di Arch Linux e non è supportato upstream. Si prega di riportare eventuali bug sul Bug Tracker di Arch Linux e non upstream.
Attenzione: Lo script syslinux-install_update utilizza come partizione root di default un valore che potrebbe non corrispondere a quello del vostro sistema. Pertanto è importante indicare a Syslinux la partizione root corretta modificando /boot/syslinux/syslinux.cfg. In caso contrario, il sistema operativo non si avvierà. Si veda #Parametri del kernel.

Lo script syslinux-install_update si occuperà dell'installazione di Syslinux, della copia dei moduli *.c32 in /boot/syslinux, dell'impostazione della flag di boot e dell'installazione de boot code nel MBR. Può gestire schemi di partizionamento MBR e GPT e RAID software.

Se si utilizza una partizione di boot separata, assicurarsi che sia montata. Si controlli con lsblk; se non si vede nessun mount point che punta a /boot, si monti la partizione prima di procedere.

Si esegua lo script syslinux-install_update con gli argomenti -i (installa i files) -a (imposta la partizione come "attiva") -m (installa il boot code nel MBR):
# syslinux-install_update -i -a -m
Se il comando di cui sopra restituisce l'errore Syslinux BIOS install failed è probabile che l'eseguibile extlinux non sia riuscito ad individuare la partizione contenente /boot:
 # extlinux --install /boot/syslinux
 extlinux: cannot find device for path /boot/syslinux
 extlinux: cannot open device (null) 
Questo problema può verificarsi quando si effettua l'upgrade da LILO e si utilizza un kernel personalizzato. Può infatti accadere che LILO modifichi il parametro root= del kernel da (ad esempio) root=/dev/sda1 al suo equivalente numerico, come root=801, come riportato dall'output di /proc/cmdline e mount. È possibile risolvere il problema effettuando l'installazione manuale descritta sotto, avendo cura di specificare il parametro --device=/dev/sda1 a extlinux, oppure utilizzando un kernel stock di Arch, dal momento che l'utilizzo di un initramfs da parte di quest'ultimo evita il verificarsi dell'errore.
Nota:
  • Se si riavvia il proprio sistema ora, si otterrà solamente il prompt di Syslinux. Per ottenere un menù grafico sarà necessario creare un file di configurazione adatto.
  • Se ci si trova su una directory root differente (ad esempio si sta utilizzando un disco di installazione), si installi syslinux puntando all'ambiente di chroot:
# syslinux-install_update.sh -i -a -m -c /mnt

A questo punto modificare il file /boot/syslinux/syslinux.cfg come indicato in #Configurazione e #Parametri del kernel.

Installazione manuale

Nota:
  • Se non si è sicuri dello schema di partizionamento utilizzato (MBR o GPT), è possibile verificare con questo comando:
# blkid -s PTTYPE -o value /dev/sda
  • Se si sta cercando di ripristinare il sistema tramite LiveCD, ci si assicuri di effettuare il chroot prima di eseguire i comandi che seguono.

Se non si effettua il chroot, sarà necessario aggiungere il punto di mount a tutti i percorsi specificati sotto (tranne quelli che iniziano con /dev.

La partizione di boot dove si intende installare Syslinux deve avere filesystem fat, ext2, ext3, ext4 o btrfs. L'installazione deve avvenire in una directory montata, e non su /dev/sdXY. Non è necessario installarlo nella root directory di un file system: se ad esempio si ha la partizione /dev/sda1 montata su /boot, è possibile installare Syslinux nella directory syslinux:

# mkdir /boot/syslinux
# cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/ ## si copino TUTTI i files *.c32 da /usr/lib/syslinux/bios/, NON CREARE LINK SIMBOLICI 
# extlinux --install /boot/syslinux

Dopo l'esecuzione dei comandi di cui sopra, sarà necessario installare nella regione del disco di 440 byte chiamata Master Boot Record (da non confondersi con lo schema di partizionamento MBR) il boot code di Syslinux mbr.bin o gptmbr.bin, come descritto nella sezione successiva.

Tabella partizioni in formato MBR

Si faccia riferimento a: Master Boot Record.

Sarà quindi necessario contrassegnare la propria partizione di boot come attiva: fdisk, cfdisk, sfdisk e gparted sono applicazioni in grado di compiere questa operazione (flag boot).

Una volta effettuata l'operazione, la tabella partizioni dovrebbe essere simile alla seguente:

# fdisk -l /dev/sda
[...]
  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      104447       51200   83  Linux
/dev/sda2          104448   625142447   312519000   83  Linux

Si installi Syslinux nel MBR:

# dd bs=440 count=1 if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda

Syslinux offre inoltre un MBR alternativo: altmbr.bin. Quest'ultimo non effettua la ricerca di una partizione avviabile, ma fa riferimento all'ultimo byte del MBR per ricavare la partizione dalla quale effettuare il boot. Ecco un esempio di utilizzo:

# printf '\x5' | cat /usr/lib/syslinux/bios/altmbr.bin - | dd bs=440 count=1 iflag=fullblock of=/dev/sda

In questo caso, un singolo byte avente valore 5 (esadecimale) viene inserito alla fine del file altmbr.bin e i 440 byte risultanti vengono scritti nel MBR del disco /dev/sda.

Syslinux è stato quindi installato nella prima partizione logica (/dev/sda5) del disco.

Tabella partizioni GUID

Si faccia riferimento a: GUID Partition Table.

È necessario impostare il bit 2 (legacy_boot) degli attributi relativi alla partizione /boot:

# sgdisk /dev/sda --attributes=1:set:2

Così facendo, si rende il dispositivo avviabile.

Verificare che l'operazione sia stata eseguita correttamente:

# sgdisk /dev/sda --attributes=1:show
1:2:1 (legacy BIOS bootable)

Installazione nel MBR:

# dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sda

Se il comando di cui sopra non funziona è possibile provare ad utilizzare:

# syslinux-install_update -i -m

Sistemi UEFI

Nota:
  • $esp identifica il punto di mount della partizione EFI di sistema
  • efi64 identifica i sistemi UEFI con architettura x86_64; in caso si utilizzino sistemi IA32 (a 32 bit), sostituire ogni occorrenza di efi64 con efi32.
  • Syslinux richiede che il kernel e l'initrd risiedano sulla partizione EFI di sistema, in quanto a causa di un bug non può accedere a files che non si trovino sulla partizione nella quale è installato. È pertanto consigliabile montare la partizione EFI di sistema in /boot.
  • Lo script di installazione automatico /usr/bin/syslinux-install_update non supporta UEFI.
  • La sintassi del file di configurazione syslinux.cfg è la stessa dei sistemi BIOS.

Limitazioni di Syslinux in modalità UEFI

Installazione

  • Copiare i file di Syslinux nella partizione EFI di sistema (sostituire a $esp il punto di mount della partizione, solitamente /boot):
# mkdir -p $esp/EFI/syslinux
# cp -r /usr/lib/syslinux/efi64/* $esp/EFI/syslinux
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"

dove /dev/sdXY è la partizione che contiene il bootloader.

  • Si crei o modifichi il file $esp/EFI/syslinux/syslinux.cfg seguendo le istruzioni in #Configurazione.
Nota: il file di configurazione su sistemi UEFI è $esp/EFI/syslinux/syslinux.cfg e non /boot/syslinux/syslinux.cfg. I file contenuti nella directory /boot sono specifici dei sistemi BIOS.

Configurazione

Il file di configurazione di Syslinux, syslinux.cfg, dovrebbe essere creato nella stesa directory dove risiede Syslinux che corrisponde a /boot/syslinux per sistemi BIOS e $esp/EFI/syslinux/ per sistemi UEFI. Il bootloader controllerà l'esistenza del file syslinux.cfg (preferito) o extlinux.conf.

Suggerimento:
  • È possibile usare la keyword LINUX al posto di KERNEL. La differenza è che KERNEL cerca di identificare il tipo di file, mentre LINUX si aspetta un kernel Linux come parametro.
  • Il valore TIMEOUT è in unità da un decimo di secondo.

Esempi

Nota: I file di configurazione di cui sotto dovranno essere modificati passando al kernel i parametri corretti. Si veda la sezione #Parametri del kernel.

Prompt di boot

Di seguito viene presentato un semplice file di configurazione che visualizza il prompt boot: ed esegue il boot automaticamente dopo 5 secondi. Se si vuole effettuare il boot direttamente senza visualizzare un prompt, si imposti PROMPT a 0.

Configurazione:

/boot/syslinux/syslinux.cfg

PROMPT 1
TIMEOUT 50
DEFAULT arch

LABEL arch
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux.img

LABEL archfallback
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux-fallback.img

Menù testuale

Syslinux consente di utilizzare un menù testuale. Per utilizzarlo si copi il modulo menu nella propria directory di Syslinux:

# cp /usr/lib/syslinux/bios/menu.c32 /boot/syslinux/

Configurazione:

/boot/syslinux/syslinux.cfg

UI menu.c32
PROMPT 0

MENU TITLE Boot Menu
TIMEOUT 50
DEFAULT arch

LABEL arch
        MENU LABEL Arch Linux
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux.img

LABEL archfallback
        MENU LABEL Arch Linux Fallback
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux-fallback.img

Per ulteriori dettagli sul menù, si veda la documentazione di Syslinux o il wiki di Syslinux.

Menù grafico

È disponibile un menù grafico. Per utilizzarlo, si copi il modulo COM32 vesamenu nella propria directory di Syslinux:

# cp /usr/lib/syslinux/bios/vesamenu.c32 /boot/syslinux/
Nota: Se si utilizza UEFI, assicurarsi di copiare il file efi32 dalla directory /usr/lib/syslinux/efi64/, altrimenti si otterrà solamente una schermata nera. Nel caso si verificasse il problema, avviare il pc tramite LiveCD ed utilizzare chroot per effettuare le dovute modifiche.

Questo file di configurazione utilizza lo stesso design del CD di installazione di Arch Linux, e può essere scaricato da projects.archlinux.org. L'immagine di sfondo può essere scaricata dallo stesso sito. La si copi quindi in /boot/syslinux/splash.png

Configurazione:

/boot/syslinux/syslinux.cfg

UI vesamenu.c32
DEFAULT arch
PROMPT 0
MENU TITLE Boot Menu
MENU BACKGROUND splash.png
TIMEOUT 50

MENU WIDTH 78
MENU MARGIN 4
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 11
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

# Refer to http://www.syslinux.org/wiki/index.php/Comboot/menu.c32

MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std


LABEL arch
        MENU LABEL Arch Linux
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux.img


LABEL archfallback
        MENU LABEL Arch Linux Fallback
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sda2 ro
        INITRD ../initramfs-linux-fallback.img

Dalla versione 3.84 di Syslinux, vesamenu.c32 supporta il parametro MENU RESOLUTION $ALTEZZA $LARGHEZZA. Per utilizzarlo, si inserisca ad esempio MENU RESOLUTION 900 1440 nel proprio file di configurazione. Si noti tuttavia che l'immagine di sfondo dovrà essere della stessa risoluzione, altrimenti Syslinux si rifiuterà di caricare il menù.

Per centrare il menù e modificare la risoluzione, si utilizzino i comandi MENU RESOLUTION, MENU HSHIFT $N e MENU VSHIFT $N, dove $N è un intero positivo. I valori di default sono 0, che corrispondono all'angolo in alto a sinistra del monitor. Similmente, inserire un numero positivo posizionerà il testo dal lato opposto dello schermo (ad esempio, VHSHIFT -4 posiziona il cursore 4 righe sotto il fondo dello schermo).

Per centrare il menù, si utilizzino questi valori:

/boot/syslinux/syslinux.cfg
MENU RESOLUTION 800 600 # inserire la risoluzione in uso
MENU WIDTH 78           # larghezza menù richiesta per il corretto dimensionamento del menù box
MENU VSHIFT 10          # muove il menù verso il basso
MENU HSHIFT 10          # muove il menù vero l'alto

Gli standard VESA prevedono una dimensione massima di 25 righe e 80 colonne. Impostare valori più alti potrebbe impedire la corretta visualizzazione del menù, richiedendo la modifica del file di configurazione da un LiveCD.

Parametri del kernel

È possibile passare parametri al kernel utilizzando la variabile APPEND in syslinux.cfg. È raccomandabile applicare le stesse modifiche alla voce per il boot dell'immagine fallback.

Nel caso più semplice, sarà necessario sostituire il valore del parametro root: si modifichi quindi /dev/sda2 con il valore corretto.

Se si desidera usare gli UUID per la nomenclatura persistende dei dispositivi a blocchi si modifichi la riga APPEND inserendo l'UUID della propria partizione root:

APPEND root=UUID=1234 rw

Se si usa il sistema di cifratura LUKS, si modifichi la riga APPEND affinchè Syslinux utilizzi il volume criptato:

APPEND root=/dev/mapper/gruppo-nome cryptdevice=/dev/sda2:nome rw

Se si utilizza un Wikipedia:RAID software attraverso mdadm, si modifichi la linea APPEND in modo da comprendere gli array del vostro RAID.

Nell'esempio che segue vengono utilizzati tre array in RAID 1 e impostato quello corretto come root:

APPEND root=/dev/md1 rw md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4

Se si riscontrano problemi con il boot da una partizione situata su un raid software usando il metodo di cui sopra, si provino ad utilizzare le etichette delle partizioni:

 APPEND root=LABEL=ETICHETTA_PARTIZIONE_ROOT ro

Se si utilizza un sottovolume btrfs, si modifichi la riga APPEND come segue: rootflags=subvol=<sottovolume root>. Ad esempio, se /dev/sda2 è stato montato come sottovolume btrfs chiamato 'ROOT' (esempio: mount -o noatime,subvol=ROOT /dev/sda2 /mnt):

APPEND root=/dev/sda2 rw rootflags=subvol=ROOT

La mancata applicazione delle modifiche di cui sopra, causerà il seguente messaggio di errore: ERROR: Root device mounted successfully, but /sbin/init does not exist..

Boot automatico

Se non si desidera visualizzare il menù di Syslinux ed effettuare direttamente il boot, si veda #Prompt di boot, ci si assicuri che PROMPT abbia valore 0 e si commentino eventuali tutte le voci di menu UI. Potrebbe essere utile assegnare al parametro TIMEOUT il valore 0. Assicurarsi inoltre che il parametro DEFAULT esista nel proprio syslinux.cfg.

Sicurezza

Syslinux dispone di due livelli di sicurezza: una master password per il menu ed una per ogni singola voce di avvio. Si inserisca in syslinux.cfg quanto segue:

MENU MASTER PASSWD passwd

per impostare una master password e:

MENU PASSWD passwd

all'interno di un blocco LABEL per proteggere con password voci individuali.

La password può essere espressa in chiaro o tramite il suo hash. Si veda in tal senso la documentazione ufficiale.

Chainloading

Nota: Syslinux BIOS non è in grado di effettuare il chainload dei files su partizioni differenti da quella di installazione, tutavia il modulo chain.c32 può avviare il boot sector delle partizioni (VBR).

Se si desidera effettuare il chainload di altri sistemi operativi (ad esempio Windows) o altri bootloader, si copi il modulo chain.c32 nella directory di Syslinux (per i dettagli si consulti la sezione precedente). Si crei quindi la seguente sezione nel file di configurazione:

/boot/syslinux/syslinux.cfg

LABEL windows
        MENU LABEL Windows
        COM32 chain.c32
        APPEND hd0 3

hd0 3 rappresenta la terza partizione del primo disco identificato dal BIOS. I dischi sono contati partendo da zero, mentre le partizioni da uno.

Nota: Le operazioni di cui sopra inibiscono il funzionamento del boot manager di Windows bootmgr, necessario per la corretta applicazione di alcuni aggiornamenti (ad esempio qui). In questi casi potrebbe essere utile impostare temporaneamente il flag Boot sulla partizione di Windows utilizzando GParted, applicare l'aggiornamento e poi reimpostare il flag boot sulla partizione di Syslinux. (esempio con DiskPart per Windows).

Se non si è sicuri di quale drive venga identificato dal vostro BIOS come primo, è possibile utilizzare l'identificativo MBR oppure, se si usa GPT, l'etichetta del filesystem. Per utilizzare l'identificativo MBR si utilizzi il comando:

# fdisk -l /dev/sdb

Disk /dev/sdb: 128.0 GB, 128035676160 bytes 
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf00f1fd3
 
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152    7  HPFS/NTFS/exFAT
/dev/sdb2         4196352   250066943   122935296    7  HPFS/NTFS/exFAT

sostituendo /dev/sdb all'identificativo del drive del quale si vuole effettuare il chainload. Utilizzando il valore esadecimale reperibile in Disk identifier:, la sintassi del syslinux.cfg sarà:

 LABEL windows
        MENU LABEL Windows
        COM32 chain.c32
        APPEND mbr:0xf00f1fd3

Per ulteriori dettagli sul chainloading si veda: [1].

Se GRUB2 è installato nella propria partizione di boot, è possibile effettuarne il chainload utilizzando:

/boot/syslinux/syslinux.cfg

LABEL grub2
       MENU LABEL Grub2
       COM32 chain.c32
       append file=../grub/boot.img

In alternativa, è possibile caricare GRUB come kernel linux, facendo precedere lnxboot.img a core.img. Il file lnxboot.img fa parte del pacchetto grub e può essere trovato in /usr/lib/grub/i386-pc.

/boot/syslinux/syslinux.cfg
...
 LABEL grub2lnx
        MENU LABEL Grub2 (lnxboot)
        LINUX ../grub/i386-pc/lnxboot.img
        INITRD ../grub/i386-pc/core.img
...

Quanto sopra potrebbe essere necessario per avviare immagini ISO.

Chainloading di un altro sistema Linux

Quando si effettua il chainloading di un bootloader come quello di Windows, non ci sono problemi, in quanto si dispone di un bootloader da avviare, mentre Syslinux è in grado di caricare files che risiedono sulla stessa partizione del file di configurazione. Se quindi si ha un'altra versione di Linux installata su una partizione differente e senza /boot separata, è necessario utilizzare Extlinux al posto del bootloader di default (ad esempio GRUB). In poche parole, è possibile installare Extlinux sul superblocco della partizione/VBR per poi essere richiamato come bootloader separato dal Syslinux installato nel MBR. Extlinux fa parte del progetto Syslinux ed è incluso nel pacchetto syslinux.

Le seguenti istruzioni presuppongono che si sia già installato Syslinux, che il path al file di configurazione sia /boot/syslinux e che il sistema di cui effettuare il chainload risieda su /dev/sda3.

Una volta avviata la distribuzione che Syslinux avvia di default, si monti la partizione di root dell'altra distribuzione su un mount point a piacere. In questo esempio si utilizzerà /mnt; si noti che se si usa una partizione di boot separata sarà necessario montarla: l'esempio assume che questa sia /dev/sda2.

# mount /dev/sda3 /mnt
# mount /dev/sda2 /mnt/boot (necessario solamente per /boot separata)

Si installi Extlinux nel VBR della partizione e si copino i moduli *.c32 necesari:

# extlinux -i /mnt/boot/syslinux (creare la directory, se necessario)
# cp /usr/lib/syslinux/bios/*.c32 /mnt/boot/syslinux

Si crei /mnt/boot/syslinux/syslinux.cfg. È possibile utilizzare come riferimento il file menu del sistema madre (segue esempio):

/boot/syslinux/syslinux.cfg su /dev/sda3
timeout 10
ui menu.c32

label Other Linux
    linux /boot/vmlinuz-linux
    initrd /boot/initramfs-linux.img
    append root=/dev/sda3 ro quiet

label MAIN
    com32 chain.c32
    append hd0 0

Tratta dalla pagina utente di Djgera.

Si noti che la voce relativa all'altro sistema in <altro-OS>/boot/syslinux/syslinux.cfg dovrà essere modificata ogni volta che se ne aggiorna il kernel, dal momento che sti sta avviando direttamente quest'ultimo, al posto di effettuare il chainloading del bootloader di default.

Usare memtest

Si installi memtest86+ dai repository ufficiali.

Si utilizzi questa sezione LABEL per effettuare il boot di memtest.

/boot/syslinux/syslinux.cfg

LABEL memtest
        MENU LABEL Memtest86+
        LINUX ../memtest86+/memtest.bin

Nota: Se si utilizza pxelinux, si cambi il nome del file da memtest.bin a memtest, poichè pxelinux tratta i files con estensione .bin come boot sector e ne carica solo i primi 2 KiB.

HDT

HDT (Hardware Detection Tool) è uno strumento per visualizzare informazioni sull'hardware. Come sempre, il rispettivo modulo .c32 dovrà essere copiato in /boot/syslinux. Per i dispositivi PCI, si copi /usr/share/hwdata/pci.ids in /boot/syslinux/pci.ids e si aggiunga quanto segue al proprio file di configurazione:

/boot/syslinux/syslinux.cfg

LABEL hdt
        MENU LABEL Hardware Info
        COM32 hdt.c32

Riavvio e spegnimento

Nota: A partire da Syslinux 6.03, poweroff.c32 funziona solamente con APM e non con ACPI. Per una possibile soluzione si veda questa discussione.

Si usino le seguenti sezioni per riavviare o spegnere la macchina:

/boot/syslinux/syslinux.cfg

LABEL reboot
        MENU LABEL Reboot
        COM32 reboot.c32

LABEL poweroff
        MENU LABEL Power Off
        COM32 poweroff.c32

Menù pulito

Per pulire lo schermo dopo l'uscita dal menù, si aggiunga la seguente riga al file di configurazione:

MENU CLEAR

Mappatura tastiera

Se si necessita di modificare continuamente i propri parametri di boot, si potrebbe voler cambiare la mappatura della tastaera, affinchè risulti più facile inserire i caratteri =, / ed altri su una tastiera non americana.

Innanzitutto si deve creare una mappatura compatibile (nell'esempio si utilizzerà quella tedesca):

Nota: Sarà necessario creare anche us.keymap, o l'esempio non funzionerà.
$ cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz .
$ cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz .
$ gunzip de.map.gz
$ gunzip us.map.gz
$ mv de.map de.kmap
$ mv us.map us.kmap
# keytab-lilo us de > de.ktl

Si copi de.ktl in /boot/syslinux e si imposti il proprietario a root:

# chown root:root /boot/syslinux/de.ktl

Ora si modifichi il proprio syslinux.cfg aggiungendo:

/boot/syslinux/syslinux.cfg
KBDMAP de.ktl

Nascondere il menu

Si utilizzi l'opzione
/boot/syslinux/syslinuxcfg
MENU HIDDEN
per nascondere il menu e visualizzare solamente il timeout. Si prema un tasto qualsiasi per mostrarlo nuovamente.

Pxelinux

Nota: Su sistemi UEFI, Syslunux utilizza lo stesso eseguibile sia per il boot da disco che per quello via rete. Sarà necessario avviare Syslinux in modalità di rete per il trasferimento di eventuali files tramite TFTP o altri protocolli di rete.

Pxelinux è fornito dal pacchetto syslinux.

Si copi il bootloader pxelinux.0 (fornito dal pacchetto syslinux nella directory /boot del client. Per versioni 5.00 e successive, si copi inoltre il file ldlinux.c32 dallo stesso pacchetto:

# cp /usr/lib/syslinux/bios/pxelinux.0 "$root/boot"
# cp /usr/lib/syslinux/bios/ldlinux.c32 "$root/boot"
# mkdir "$root/boot/pxelinux.cfg"

Si noti la creazione della directory pxelinux.cfg, dove PXELINUX cerca il file di configurazione di default. Dal momento che non si intende fare differenze tra i MAC dei vari host, sarà creato il file di configurazione default.

# vim "$root/boot/pxelinux.cfg/default"
default linux

label linux
kernel vmlinuz-linux
append initrd=initramfs-linux.img quiet ip=:::::eth0:dhcp nfsroot=10.0.0.1:/arch

Se si utilizza NBD, modificare la riga append come segue:

append ro initrd=initramfs-linux.img ip=:::::eth0:dhcp nbd_host=10.0.0.1 nbd_name=arch root=/dev/nbd0
Nota: Sarà necessario modificare nbd_host e nfsroot a seconda della configurazione della propria rete, ovvero a seconda dell'indirizzo del proprio server NFS/NBD.

La sintassi del file di configurazione di PXELINUX è identica a quella di Syslinux: si faccia riferimento alla documentazione ufficiale per ulteriori informazioni.

Il kernel e l'initrd saranno trasmessi via TFTP, perciò i percorsi saranno relativi alla root del server TFTP, oppure il filesystem root potrebbe essere proprio quello montato tramite NFS: in questo caso i percorsi saranno relativi alla root del server NFS.

Per avviare pxelinux, si sostituisca filename "/grub/i386-pc/core.0"; nel file /etc/dhcpd.conf con filename "/pxelinux.0".

Avviare un'immagine ISO 9660 tramite memdisk

Syslinux supporta l'avvio di immagini ISO tramite il modulo memdisk; si veda Multiboot USB drive#Using Syslinux and memdisk per ulteriori esempi.

Utilizzare la console seriale

Per abilitare la console seriale, si aggiunga SERIAL port [baudrate] in cima al proprio syslinux.cfg. port è un numero (0 per /dev/ttyS0). Se baudrate viene omesso, il default è 9600 bps. I parametri per la trasmissione seriale sono preimpostati a 8 bit, nessuna parità e 1 bit di stop. [2]

syslinux.cfg
SERIAL 0 115200

Si abiliti la console seriale all'avvio aggiungendo console=tty0 console=ttyS0,115200n8 al parametro APPEND. [3]

syslinux.cfg
APPEND root=UUID=126ca36d-c853-4f3a-9f46-cdd49d034ce4 rw console=tty0 console=ttyS0,115200n8

Abilitare la console seriale su GRUB: Working with the serial console#GRUB2 and systemd.

Risoluzione dei problemi

Utilizzare il prompt di Syslinux

È possiblie scrivere il valore del parametro LABEL corrispondente al sistema operativo che si vuole eseguire. Se si sono utilizzate le configurazioni d'esempio, si scriva:

boot: arch

Se si ottiene un errore di caricamento del file di configurazione, èp possibile passare manualmente i parametri di boot:

boot: ../vmlinuz-linux root=/dev/sda2 ro initrd=../initramfs-linux.img

Se non si ha accesso a boot: in ramfs e si è quindi impossibilitati ad effettuare il boot del kernel, si proceda come segue:

1. Si crei una directory temporanea per montare la propria partizione root (se non esiste già):
# mkdir -p /new_root
2. Si monti / in /new_root (Se boot è si una partizione separata, si dovrà montare anche quest'ultima):
Nota: Busybox non può montare /boot se quest'ultima si trova su una partizione ext2 dedicata.
# mount /dev/sd[a-z][1-9] /new_root
3. Si utilizzi vim e si modifichi il proprio syslinux.cfg secondo le proprie preferenze e si salvi.
4. Riavviare.

Il fsck fallisce sulla partizione root

Nell'eventualità di una partizione root corrotta (con danni al journal) si monti il filesystem di root nella shell di emergenza del ramfs:

# mount /dev/partizione root /new_root;  ## Si monti la partizione root

Procurarsi l'eseguibile tune2fs dalla partizione root (non è incluso in syslinux):

# cp /new_root/sbin/tune2fs /sbin/;

Si seguano quindi le seguenti istruzioni per creare un nuovo journal per la partizione root.

DEFAULT o UI non trovati

Alcuni produttori di schede madri non hanno un buon supporto al boot da dispositivi USB. Se, ad esempio, un drive USB formattato in Ext4 potrebbe bootare tranquillamente su un PC più recente, macchine più vecchie potrebbero bloccarsi se la partizione di boot contenente "kernel" e "initrd" non si trova su una partizione FAT16. Per ovviare al problema, si crei una partizione FAT16 (con dimensione minore o uguale a 2GB) e la si formatti con dosfstools:

# mkfs.dosfs -F 16 /dev/sda1

Poi si installi e configuri Syslinux.

Missing Operating System

  • Si verifichi di aver installato gptmbr.bin per sistemi di partizionamento GPT o mbr.bin per tabelle partizioni DOS. mbr.bin visualizza il messaggio d'errore Missing operating system, mentre gptmbr.bin mostra Missing OS.
  • Si verifichi se la partizione che contiene /boot è contrassegnata come avviabile.
  • Si verifichi tramite fdisk -l se la prima partizione del disco avviabile inizia al settore 1 al posto del settore 63 o 2048. In questo caso è possibile spostare le partizioni tramite gparted utilizzando un disco di ripristino. Se si dispone di una partizione /boot separata, è possibile effettuarne il backup tramite:
# cp -a /boot /boot.bak

Si effettui quindi il boot con il disco di installazione di Arch. Si usi poi cfdisk per cancellare la partizione di /boot e la si ricrei: ora dovrebbe iniziare al settore giusto (63). Si montino quindi le proprie partizioni e si effettui il chroot nel sistema Arch installato su disco, come descritto nella Beginners guide. Si ripristini il backup di /boot con:

# cp -a /boot.bak/* /boot

Si controlli se /etc/fstab è corretto e poi si esegua:

# syslinux-install_update -iam

Si riavvii quindi il sistema.

È possibile ottenere questo errore anche se si prova ad effettuare il boot da un array RAID md1 creato con una versione dei metadata non supportata da Syslinux. A partire da Agosto 2013, mdadm crea un array con la versione metadata 1.2, mentre Syslinux supporta solo la 1.0. Sarà quindi necessario ricreare il proprio array RAID passando l'opzione --metadata=1.0 a mdadm.

Viene eseguito Windows al posto di Syslinux!

Soluzione: Assicurarsi che la partizione di /boot abbia la flag di boot attiva e che quella di Windows non la abbia. Si veda la sezione "Installazione" di questo articolo per ulteriori dettagli.

Il MBR che fornisce Syslinux cerca la prima partizione attiva ad avere la flag di boot abilitata, quindi è probabile che quella di Windows sia stata trovata per prima e che avesse la flag di boot attiva. Se lo si desidera, è possbiile utilizzare anche il MBR fornito da Windows o MS-DOS fdisk.

Le voci del menù non hanno effetto

Se si seleziona una voce del menù di boot e non succede niente a parte il ricaricamento dello stesso, è probabile che si abbia un errore nel proprio syslinux.cfg. Si prema tab per modificare i propri parametri di boot. In alternativa si prema esc e si scriva il valore del parametro LABEL corrispondente al sistema da avviare (ad esempio arch).

Il problema potrebbe anche essere causato dall'assenza di un kernel. Si acceda al proprio filesystem tramite LiveCD, si monti la propria partizione /boot ed assicurarsi che /puntodimount/vmlinuz-linux esista e non abbia dimensione 0. In caso procedere con Kernel Panics#Option 2: Reinstall kernel.

Impossibile rimuovere ldlinux.sys

Il file ldlinux.sys ha l'attributo immutable impostato, che ne impedisce la rimozione o sovrascrittura. Questo comportamento si verifica poichè il settore sul quale risiede il file in questione non deve cambiare, altrimenti Syslinux dovrà essere reinstallato.

Per rimuovere il file si esegua:

# chattr -i /boot/syslinux/ldlinux.sys
# rm /boot/syslinux/ldlinux.sys

Viene visualizzato un quadretto bianco nell'angolo in alto a sinistra dello schermo quando si sta usando vesamenu

Problema:

A partire da linux-3.0, il driver del modesetting tenta di mantenere il contenuto corrente dello schermo dopo il cambio di risoluzione (o almeno questo si verifica sulla mia Intel, quando utilizzo Syslinux in modalità testuale). Pare che tale comportamento crei problemi se si usa il modulo vesamenu di Syslinux (il quadrato bianco rappresenta infatti un tentativo di salvare il menù di Syslinux, ma il driver non riesce a catturare l'immagine dalla modalità grafica VESA).

Se si è scelta una risoluzione personalizzata e si utilizza vesamenu assieme al modesetting, si provi ad inserire la seguente riga nel syslinux.cfg per rimuovere il quadretto bianco e continuare il boot in modalità grafica:

APPEND root=/dev/sda6 ro 5 vga=current quiet splash

Il chainloading del bootloader di Windows non funziona quando Windows si trova su un drive diverso

Se Windows è installato in un hard disk diverso da Arch e si riscontrano problemi nel chainloading, si provi con la seguente configurazione:

LABEL Windows
        MENU LABEL Windows
        COM32 chain.c32
        APPEND mbr:0xdfc1ba9e swap

si sostituisca il codice MBR con quello del drive dove è installato Windows (Si veda sopra), e si aggiunga swap alle opzioni.

Leggere i log del bootloader

In alcuni casi (ad esempio quando il bootloader non è in grado di effettuare il boot del kernel, è utile poter ottenere più informazioni sul processo di avvio. Syslinux stampa eventuali messaggi d'errore a schermo, che vengono però subito sostituiti dal menu. Per evitare di perdere queste informazioni sarà necessario disabilitare l'interfaccia del menu in syslinux.cfg e utilizzare il prompt d'avvio di default, il che si traduce nell'evitare:

  • direttive UI
  • ONTIMEOUT
  • ONERROR
  • MENU CLEAR
  • aumentare il valore di TIMEOUT
  • utilizzare PROMPT 1
  • utilizzare DEFAULT <label che causa il problema>

Per ottenere informazioni di debug più dettagliate sarà necessario ricompilare syslinux con CFLAGS aggiuntive:

-DDEBUG_STDIO=1 -DCORE_DEBUG=1

Compressione BTRFS

L'avvio da partizioni BTRFS compresse non è supportato. [4]

Verrà visualizzato il seguente messaggio d'errore:

btrfs: found compressed data, cannot continue!
invalid or corrupt kernel image.

GRUB supporta l'avvio da partizioni BTRFS compresse.

Vedere anche