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
.
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
.
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
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.
/dev/sdb
), creando una partizione primaria di tipo e (W95 FAT16 LBA) oppure di tipo b (W95 FAT32). Marcare la partizione come attiva..disk/
, che sono indispensabili.isolinux
nella directory radice della chiavetta USB.isolinux.cfg
in syslinux.cfg
.install-mbr /dev/sdb syslinux /dev/sdb1
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:
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.
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:
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