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