====== 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''** in **''syslinux.cfg''**.
- Rendere la chiavetta USB avviabile con i comandiinstall-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