2013-05-03 20:11:23 +0000 2013-05-03 20:11:23 +0000
50
50

Come creare una USB avviabile da una ISO avviabile con la linea di comando su Linux?

Ho un CD creato da un file ISO che uso per installare una versione personalizzata di Ubuntu tramite plop linux.

Il cd funziona bene, ma vorrei invece utilizzare un drive USB avviabile. Ho usato il comando dd per provare a creare l'USB avviabile:

dd if=filename.iso of=/dev/sdb1 bs=4k

Ora questo copia i file e rende l'USB avviabile ma ottengo l'errore “Missing operating system”

Qualche idea?

Risposte (4)

58
58
58
2013-05-07 16:46:56 +0000

Ok, dopo alcune ricerche ho trovato una soluzione, e la esaminerò passo dopo passo. Il problema era duplice.

  1. Inserire la chiavetta USB e determinare il dispositivo su cui è montata con il comando:

  2. Smontare il dispositivo

  3. Non sono sicuro che sia necessario, ma ho formattato l'unità in FAT32, per sicurezza

  4. Ora la mia ISO stava usando isolinux non syslinux. Sapevo che funzionava con i CD, così ho capito che avevo bisogno di chiamare il comando isohybrid, che permette a una ISO di essere riconosciuta dal BIOS da un disco rigido.

  5. Il passo successivo è copiare la iso. Il mio secondo problema stava qui, dove stavo copiando sulla partizione, sdc1, non sul dispositivo, sdc.

3
3
3
2013-05-03 20:25:22 +0000

Questo è un problema comune con le chiavette USB SanDisk, o con quelle non formattate in FAT32.

Se non è uno di questi due casi, è sicuramente un problema con l'ordine delle partizioni della chiavetta o con il file syslinux.cfg.

1
1
1
2016-01-20 13:42:39 +0000

isohybrid potrebbe non funzionare sempre. Per esempio, avevo una .iso con FreeDOS e isohybrid non è stato in grado di trovarvi alcuni file importanti (non so se fossero stati messi lì da syslinux, che ho usato anch'io, o altro). Qui propongo diverse alternative.

1) Installare lì un altro bootloader come GRUB. È spiegato qui :

“Assumi che la prima partizione della tua chiavetta USB sia FAT32 e che la sua partizione sia /dev/sdy1” (io avevo grub2 sul mio Fedora Core, quindi ho cambiato un po’ i comandi):

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2) FreeDOS wiki offre un metodo composto con GRUB e syslinux qui (anche se non capisco come abbiano lanciato grub> - non ho potuto avviare dalla usb fino a quella fase).

3) Qui è un post che può essere utile - dice ‘Finché i file command.com, kernel.sys, syslinux.cfg, ldlinux.sys e fat32lba.bss sono nella root del drive e l'MBR e il settore di boot non vengono riscritti il drive dovrebbe rimanere avviabile.

4) Qui viene spiegato come generare un file .iso avviabile con un bootloader syslinux. Non usano nemmeno isohybrid. Purtroppo questo non mi ha aiutato (forse a causa di syslinux).

5*) Usare un programma per windows tramite wine. Ho provato rufus, ma non ha funzionato, non ha trovato il dispositivo.

Vi avverto che purtroppo non sono riuscito a risolvere questo problema, il mio dispositivo non era avviabile, ma spero che questo possa essere utile ad altre persone (anche quelle che vogliono installare non un linux sulla usb). L'immagine usb generata da chtaube però ha funzionato per me, quindi penso che questi metodi siano corretti.

UPD: Il 3° metodo funziona davvero (con una correzione per un file di installazione personalizzato).

UPD2: (link fisso). Il problema con isohybrid era probabilmente perché le versioni di isolinux.bin sulla iso e sul mio sistema erano diverse. Ricompilare la iso usando genisoimage come suggerito qui :

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

C'erano anche alcuni problemi, sono stati risolti con il metodo qui prima di genisoimage:

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== fine UPD2 ==

0
0
0
2018-04-09 23:44:32 +0000

Potreste usare l'utility bootiso , che fa esattamente questo, in modo sicuro:

bootiso -d /dev/sdb filename.iso

bootiso controllerà che il dispositivo selezionato /dev/sdb sia connesso tramite USB e fallirà se non lo è, il che è un grande vantaggio per la sicurezza. Rileverà anche il dispositivo USB se c'è esattamente un'unità USB collegata al vostro sistema, vedetelo in azione:

Se vuoi installare il bootloader syslinux per aggirare i problemi menzionati da @xsdf, usa l'opzione -b:

bootiso -b -d /dev/sdb filename.iso

Per installarlo:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso