User Tools

Site Tools


doc:appunti:linux:sa:install_usb

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.

  1. 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.
  2. Montare la partizione /dev/sdb1.
  3. 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.
  4. Spostare tutti i file contenuti nella directory isolinux nella directory radice della chiavetta USB.
  5. Rinominare isolinux.cfg in syslinux.cfg.
  6. 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
doc/appunti/linux/sa/install_usb.txt · Last modified: 2018/04/16 09:53 by niccolo