Table of Contents
Boot da USB
Installare GRUB sul MBR di una chiavetta USB
I file di GRUB devono risiedere su una partizione, per comodità si crea una partizione primaria /dev/sdc1
, formattata FAT32.
Questa stessa partizione può essere usata come partizione dati. Nota che Windows XP riconosce solo la prima partizione presente su una chiavetta USB, quindi questa è l'unica utilizzabile per lo scambio dei dati.
mkfs.vfat /dev/sdc1 mount /dev/sdc1 /mnt/sdc1 cp -p /usr/lib/grub/i386-pc/* /mnt/sdc1/boot/grub/ grub --no-floppy --device-map=/dev/null grub> device (hd0) /dev/sdc grub> root (hd0,0) grub> setup (hd0) grub> quit
Ovviamente si deve creare anche un file menu.lst
.
Installare GRUB su una partizione FAT32
Nel nostro caso si è scompattata la distribuzione GRML sulla partizione FAT32 /dev/sdc6
e si vuole rendere la partizione stessa avviabile (tramite chainloading da un boot manager che si trova su /dev/sdc
):
mount /dev/sdc6 /mnt/sdc6 cp -p /mnt/sdc6/usr/lib/grub/i386-pc/* /mnt/sdc6/boot/grub/ grub --no-floppy --device-map=/dev/null grub> device (hd0) /dev/sdc grub> root (hd0,5) grub> setup (hd0,5) grub> quit
Ovviamente nella directory grub
si deve installare anche un file menu.lst
.
GRUB: chainload di una partizione logica
Supponiamo che GRUB sia installato sul MBR di /dev/sdc
, vogliamo una voce nel menu che passi il controllo al GRUB (o altro boot manager) che si trova installato sulla partizione /dev/sdc6
:
title GRML 2009.05 Boot Menu (/dev/sdc6) rootnoverify (hd0,5) chainloader +1
Avvio di Ubuntu Live da USB
NOTA: Questa operazione viene automatizzata dal programma Unetbootin, che trasferisce una immagine ISO avviabile su una chiavetta USB, formattata vfat.
Come travasare un CD Live Ubuntu in una chiavetta USB. Provato con Ubuntu 8.04 e chiavetta da 2 Gb.
- Formattare la chiavetta (supponiamo che sia
/dev/sdb
), creando una partizione primaria di tipo e (W95 FAT16 LBA) oppure di tipo b (W95 FAT32). Marcare la partizione come attiva. - Montare la partizione /dev/sdb1.
- Montare l'immagine ISO del CD-ROM e copiare tutto il contenuto nella chiavetta, i link simbolici non si copiano sul filesystem vfat, ma non dovrebbero servire. Fare attenzione invece ad eventuali directory nascoste, ad esempio
.disk/
, che sono indispensabili. - Spostare tutti i file contenuti nella directory
isolinux
nella directory radice della chiavetta USB. - Rinominare
isolinux.cfg
insyslinux.cfg
. - Rendere la chiavetta USB avviabile con i comandi
install-mbr /dev/sdb syslinux /dev/sdb1
Unetbootin
Unetbootin è un programma che trasferisce il contenuto di file ISO (immagine di CD-ROM avviabile) su una chiavetta USB, rendendola avviabile. Il programma ha bisogno del display grafico e dei permessi di root (usare ad esempio ssh -X root@localhost
per ottenere entrambi).
La chiavetta USB deve essere già partizionata, formattata VFAT e montata. Inoltre bisogna che ci sia installato un MBR avviabile. I pacchetti che bisogna aver installato sono:
- unetbootin
- syslinux
- mbr
Ecco la procedura completa da seguire:
dd if=/dev/zero of=/dev/sdb bs=1024 count=1024 fdisk /dev/sdb # Create one primary partition, type c, bootable (keypress: n 1 p Enter Enter t c a w) install-mbr /dev/sdb mkfs.vfat -F 32 /dev/sdb1 mount /dev/sdb1 /mnt unetbootin
La chiavetta così preparata potrebbe non essere avviabile, vedi più avanti per possibili problemi e soluzioni.
Problemi con Syslinux
Ci possono essere problemi con immagini Syslinux v.6 e alcuni creatori di chiavette USB che invece installano il binario del boot manager in versione 4. Il problema si manifesta con l'errore in fase di boot:
not a COM32R image
Su un host che abbia installato il pacchetto syslinux versione 6, supponendo che la partizione FAT da rendere avviabile sia /dev/sdb1
, è sufficiente dare il comando:
syslinux --install /dev/sdb1
Viene sostituito il file ldlinux.sys
con la versione più aggiornata.
In altri casi il messaggio di errore potrebbe essere:
Failed to load COM32 file menu.c32
in questo caso dovrebbe essere sufficiente copiare tre file nella directory principale della chiavetta, prendendoli da /usr/lib/syslinux/modules/bios/
di una installazione Debian:
- libcom32.c32
- libutil.c32
- menu.c32
Assegnare una label ad una partizione FAT32
ATTENZIONE: Impostare una label MS-DOS su una partizione FAT può corrompere l'installazione di GRUB sulla stessa partizione e viceversa. In particolare l'installazione di GRUB può risultare in un errore rilevato da dosfsck
.
Una label sulla partizione può tornare utile per l'automount: i punti di montaggio diventano qualcosa del tipo /media/LABEL
:
dosfslabel /dev/sdc6 dosfslabel /dev/sdc6 LABEL
Se ci sono errori sul filesystem si può tentare di ripararli con:
dosfsck -r /dev/sdb6