Syslinux (Italiano)

From ArchWiki
Revision as of 17:14, 7 November 2013 by Hilinus (Talk | contribs)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary end

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.

Nota: A partire dalla versione 6.02, Syslinux (sia in versione BIOS che UEFI) non è in grado di accedere ai files contenuti in partizioni differenti da quella nella quale è installato. Tale caratteristica (chiamata multi-fs) deve essere ancora implementata dagli sviluppatori. Se si vuole contribuire allo sviluppo si veda questo bug report.
Nota: Il recente aggiornamento di Syslinux (versione 6.02-3 -> 6.02-4) contiene una nuova versione del BIOS di Syslinux, e potrebbe causare il mancato avvio del sistema. Per risolvere il problema si effettui nuovamente l'installazione di Syslinux: # syslinux-install_update -i -a -m Si noti inoltre che è necessario eseguire il comando di cui sopra subito dopo l'aggiornamento, pena l'impossibilità di avviare il sistema e il dover ricorrere ad immagini come il Grub Super Boot CD per effettuare un avvio con successo ed essere quindi in grado di lanciare il comando.

Sistemi BIOS

Il processo di boot di Syslinux

  1. Caricamento del MBR. Durante la fase di boot, il computer legge il contenuto del MBR (/usr/lib/syslinux/bios/mbr.bin).
  2. Ricerca della partizione attiva. Il MBR identifica la partizione contrassegnata come attiva (ossia avente la cosiddetta "boot flag").
  3. 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 ldlinux.sys è hardcoded nel VBR
  4. Esecuzione di ldlinux.sys. Viene eseguito il VBR (ldlinux.sys). Se la posizione di 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 ldlinux.sys risiede. Per questo motivo, l'intero codice di Syslinux dovrà essere scritto fuori dal filesystem, ovvero nei settori seguenti al VBR.
  5. Ricerca del file di configurazione. Una volta che Syslinux è stato caricato, viene cercato uno tra i seguenti fils di configurazione: extlinux.conf o syslinux.cfg.
  6. Caricamento del file di configurazione. Se un file valido è stato trovato, allora viene caricato in memoria, altrimenti verrà visualizzato il prompt di Syslinux.

Installazione

# pacman -S syslinux
Nota:
  • A partire dalla versione 4, Syslinux ed Extlinux 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

Lo script syslinux-install_update si occuperà dell'installazione di Syslinux, della copia/creazione link simbolici per i 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.

1. 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.
2.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
3. Si crei o modifichi il file /boot/syslinux/syslinux.cfg secondo le indicazioni riportate in #Configurazione.
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 si è appena clonato il proprio disco fisso e lo si è montato, ad esempio, sotto /mnt/clone, si esegua syslinux direttamente dall'immagine di installazione di Arch:
# syslinux-install_update.sh -i -a -m -c /mnt/clone

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/* /boot/syslinux 
# 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

Tabella partizioni in formato MBR

Template:Box

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 conv=notrunc 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 conv=notrunc of=/dev/sda

In questo caso, un singolo byte avente valore 5 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

Template:Box

È 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:
  • Il supporto ad UEFI è disponibile in Syslinux dalle versioni 6.xx e successive.
  • $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

Installare il pacchetto syslinux ed installare Syslinux nella partizione EFI di sistema come mostrato sotto.

# pacman -S syslinux

Copiare i file di Syslinux nella partizione EFI di sistema:

# 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:

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/syslinux/syslinux.efi -L "Syslinux"

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 nel nostro caso corrisponde a: /boot/syslinux. 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

Configurazione di base

Di seguito viene presentato un semplice file di configurazione che visualizza il prompt boot: ed esegue il boot automaticamente dopo 5 secondi.

Nota: La partizione in questione dovrà essere la propria root, e non quella di /boot.
.

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

Se si desidera effettuare automaticamente il boot senza visualizzare il prompt, si imposti PROMPT a 0.

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=978e3e81-8048-4ae1-8a06-aa727458e8ff ro

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 ro

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

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.

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/

Questo file di configurazione utilizza la stessa impostazione grafica del CD di installazione di Arch Linux. Lo sfondo è disponibile allo stesso indirizzo.

Per essere certi che il sistema si avvii con questo file di configurazione, assicurarsi che lo stesso si riferisca alla partizione corretta

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 $LARGHEZZA $ALTEZZA. Per utilizzarlo, si inserisca ad esempio 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ù.

Boot automatico

Se non si desidera visualizzare il menù di Syslinux ed effettuare direttamente il boot, si commentino tutti i comandi contenenti la direttiva UI e ci si assicuri che il parametro DEFAULT esista nel proprio syslinux.cfg.

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 (o si utilizzi un link simbolico, se possibile) 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.

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

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. In poche parole, è possibile installare quest'ultimo sul superblocco della partizione per poi essere richiamato dal Syslinux installato nel MBR.

Le seguenti istruzioni presuppongono che si sia già installato Syslinux, che il path al file di configurazione sia /boot/syslinux e che la distribuzione 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 e si copino i moduli *.c32 necesari:

# extlinux -i /mnt/boot/syslinux
  1. cp /usr/lib/syslinux/bios/{chain,menu,libutil,libcom32}.c32 /mnt/boot/syslinux

Si crei /mnt/boot/syslinux/syslinux.cfg (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.

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

HDT

HDT (Hardware Detection Tool) è uno strumento per visualizzare informazioni sull'hardware. Come sempre, il rispettivo modulo .c32 dovrà essere copiato (o si dovrà creare un link simbolico) in /boot/syslinux. Per i dispositivi PCI, si copi o si crei un link simbolico da /usr/share/hwdata/pci.ids a /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

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
        COMBOOT poweroff.com

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):

# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./
# 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à.

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.conf aggiungendo:

KEYMAP 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: Syslinux non dispone di uno stack di rete UEFI al momento, perciò non sarà possibile utilizzare syslinux-efi-gitAUR (come invece accade con GRUB) per ottenere kernel ed initramfs da un server TFTP. Si noti che pxelinux funziona tranquillamente effettuando un avvio PXE classico.

Pxelinux è fornito dal pacchetto syslinux.

Si copi il bootloader pxelinux (fornito dal pacchetto syslinux nella directory /boot del client.

# cp /usr/lib/syslinux/bios/pxelinux.0 "$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".

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

Se si ottiene questo messaggio, si controlli se la partizione di /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 fdisk -l. Se inizia al settore 1, si sposti la partizione con gparted da un disco di ripristino. Se si ha una partizione /boot separata, si effettui il backup con:

# cp -a /boot /boot.bak

E si effettui 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).

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.

Vedere anche