Wie erstelle ich einen bootfähigen USB von einem bootfähigen ISO mit der Befehlszeile unter Linux?

144630
xsdf

Ich habe eine CD, die aus einer ISO-Datei erstellt wurde, mit der ich eine benutzerdefinierte Version von Ubuntu über Plop Linux installiere.

Die CD funktioniert gut, aber ich möchte stattdessen ein bootfähiges USB-Laufwerk verwenden. Ich habe den Befehl dd verwendet, um den startfähigen USB zu versuchen und zu erstellen:

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

Nun werden die Dateien kopiert und der USB-Server bootfähig gemacht. Ich erhalte jedoch die Fehlermeldung "Fehlendes Betriebssystem".

Irgendwelche Ideen?

50
Haben Sie nur Zugriff auf die Befehlszeile? Es gibt Schnittstellen wie Unetbootin, die sehr gut funktionieren und unter Linux laufen. dashboard vor 11 Jahren 0
@dashboard Ich würde die Kommandozeile bevorzugen, da sie auf jeder Linux-Maschine verfügbar ist. xsdf vor 11 Jahren 3
http://askubuntu.com/questions/116942/any-way-to-manually-make-a-bootable-usb-from-iso Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 8 Jahren 0
@dashboard - Die GUI-Tools scheinen für mich nie gut zu funktionieren, und dies hat sich seit vielen Jahren bewährt. Ich bin froh, die Kommandozeilenmethode zu kennen. Ich finde es einfacher und zuverlässiger. Es ist viel weniger frustrierend! MountainX vor 8 Jahren 0

4 Antworten auf die Frage

57
xsdf

Ok, nach einigen Recherchen habe ich eine Lösung gefunden, und ich werde sie Schritt für Schritt durchgehen. Das Problem war zweifach.

  1. Schließen Sie das USB-Flashlaufwerk an und bestimmen Sie mit dem Befehl, auf welchem ​​Gerät es installiert ist:

    sudo fdisk -l 

    Diesmal war es für mich / dev / sdc1, also werde ich das als Beispiel verwenden.

  2. Gerät abhängen

    umount /dev/sdc1 
  3. Ich bin nicht sicher, wenn nötig, aber ich habe das Laufwerk in FAT32 formatiert, nur für den Fall

    sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32 
  4. Jetzt verwendete mein ISO isolinux nicht syslinux. Ich wusste, dass es mit CDs funktioniert hat, also habe ich herausgefunden, dass ich den isohybrid-Befehl aufrufen muss, der es ermöglicht, dass eine ISO vom BIOS von einer Festplatte erkannt wird.

     isohybrid filename.iso 

    Weitere Informationen zu diesem Befehl finden Sie hier . Dies war jedoch die Ursache für die Meldung "Missing Operating System". Das erste Problem wurde behoben. Jetzt stand jedoch "Isolinux.bin fehlt oder ist beschädigt".

  5. Der nächste Schritt ist das Kopieren der ISO. Mein zweites Problem lag hier, wo ich auf die Partition sdc1 kopierte, nicht das Gerät sdc.

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

    Dies scheint ganz gut zu funktionieren, aber in dem Forum, in dem ich die letzte Korrektur erhalten habe, wurde empfohlen, Folgendes zu tun, bevor Sie das Gerät vom Netz trennen:

    sync sudo eject /dev/sdc 
So überprüfen Sie den Fortschritt von dd: http://unix.stackexchange.com/a/11264/13011. Nikos Alexandris vor 9 Jahren 3
Wenn ich hier eine Annahme mache, denke ich, dass der Befehl `mkdosfs` möglicherweise nicht notwendig ist, da auf dem ISO-Dateisystem bereits ein Dateisystem gespeichert ist (wahrscheinlich einschließlich eines MBR (nicht sicher)), das an den Anfang des Blockgeräts kopiert wird. Mann, "isohybrid" ist ein cooler Befehl, wusste nichts davon! Ehtesh Choudhury vor 9 Jahren 3
Für ein bootfähiges Windows 7-Installationsprogramm, siehe USB, siehe auch http://superuser.com/questions/256869/what-eine-die-nutzungen-von-erstellungs-auchboot-fenster-7-usb-drive-from-linux-wit rq = 1 cwd vor 9 Jahren 1
Schritt # 3 ist nicht notwendig; Der `dd`-Befehl in Schritt # 5 löscht das neu erstellte Dateisystem mit den Inhalten der ISO. ewhac vor 9 Jahren 7
Ich bin fast 12 Stunden auf der Suche nach dem gleichen Problem, bis ich hier Ihren Beitrag finde und ich folgte und Schritt und ... es hat funktioniert! (der fünfte schritt war auch mein thema, ich bin noch nicht "pro" bei linux, also danke) Ismael vor 7 Jahren 0
3
Shouvik Sayef

Dies ist ein häufiges Problem mit SanDisk USB-Sticks oder nicht mit FAT32 formatierten Sticks.

Wenn dies nicht der Fall ist, liegt dies höchstwahrscheinlich bei der Reihenfolge Ihrer Stickpartition oder der Datei syslinux.cfg.

Das USB-Flashlaufwerk stammt von Verbatim. Ich bin in FAT32 umformatiert worden, nur um sicher zu sein, und habe immer noch den gleichen Fehler erhalten. xsdf vor 11 Jahren 0
1
Yaroslav Nikitenko

isohybridkann nicht immer funktionieren. Ich hatte zum Beispiel eine .iso-Datei mit FreeDOS und Isohybrid konnte dort keine wichtigen Dateien finden (ich weiß nicht, ob sie von syslinux dort hingelegt worden waren, was ich auch verwendet habe, oder etwas anderes). Ich schlage hier mehrere Alternativen vor.

1) Installieren Sie dort einen anderen Bootloader wie GRUB. Es wird hier erklärt :

"Nehmen Sie an, die erste Partition Ihres USB-Sticks ist FAT32 und die Partition ist / dev / sdy1" (ich hatte grub2auf meinem Fedora-Core, also habe ich die Befehle ein wenig geändert):

# 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 bietet eine Verbindung Methode mit GRäBT und syslinux hier (obwohl ich verstehe nicht, wie sie ins Leben gerufen grub>- ich konnte nicht aus dem USB - Boot bis zu diesem Zeitpunkt).

3) Hier ist ein Beitrag, der nützlich sein kann - er sagt: 'Solange sich die Dateien command.com, kernel.sys, syslinux.cfg, ldlinux.sys und fat32lba.bss im Stammverzeichnis des Laufwerks befinden, werden der MBR und der Boot gestartet Sektor nicht neu geschrieben, sollte das Laufwerk bootfähig bleiben. '

4) Hier wird erklärt, wie eine bootfähige .iso-Datei mit einem syslinux-Bootloader erstellt wird. Sie verwenden nicht einmal Isohybrid. Leider hat mir das nicht geholfen (vielleicht wegen syslinux).

5 *) Verwenden Sie ein Windows-Programm über wine. Ich habe Rufus ausprobiert, aber das hat nicht funktioniert, er konnte das Gerät nicht finden.

Ich warne Sie, dass ich dieses Problem leider nicht lösen konnte, mein Gerät war nicht startfähig, aber ich hoffe, dass dies für andere Leute nützlich sein kann (auch für diejenigen, die keinen Linux auf dem USB installieren möchten). Das von chtaube erzeugte USB-Image hat zwar für mich funktioniert, daher denke ich, dass diese Methoden korrekt sind.

UPD: Die 3. Methode funktioniert wirklich (mit einer Korrektur für eine benutzerdefinierte Installationsdatei).

UPD2: (feste Verbindungen). Das Problem isohybridwar wahrscheinlich, weil die Versionen von isolinux.bin auf iso und meinem System unterschiedlich waren. Rekompiliert das Iso genisoimagewie hier vorgeschlagen :

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 

Es gab auch einige Probleme, die durch die Methode hier vor dem Genisoimage gelöst wurden :

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

== Ende UPD2 ==

1. Link: https://wiki.archlinux.org/index.php/GRUB#Install_to_external_USB_stick Yaroslav Nikitenko vor 8 Jahren 0
2.: http://freedos.sourceforge.net/wiki/index.php/USB#Linux_2 Sie können diese Links zum Beitrag hinzufügen, wenn das System Ihnen mehr als mir vertraut. StackOverflow kennt mich schon gut, warum also ein solches Problem bei Superuser? Ich hatte auch Probleme, dies zu veröffentlichen, es zeigte mir jedoch nicht, dass meine Antwort bereits gepostet wurde. Yaroslav Nikitenko vor 8 Jahren 0
Es scheint, dass Superuser Links anhand ihrer Referenzen zählt, dh wenn ich zweimal auf dieselbe Ressource verlinke, werden sie gezählt. Dies scheint ein Fehler zu sein. Eine Problemumgehung in UPD kam von http://www.spiderbird.com/tag/fat32lba-bss/ Yaroslav Nikitenko vor 8 Jahren 0
Alle Links in den Kommentaren behoben. Ich lasse sie hier, um zu zeigen, wie viel Probleme diese Politik mit sich bringt. Yaroslav Nikitenko vor 8 Jahren 0
0
Jules Randolph

Sie könnten das bootisoDienstprogramm verwenden, das genau das tut:

bootiso -d /dev/sdb filename.iso 

bootiso überprüft, ob das ausgewählte Gerät /dev/sdbüber USB angeschlossen ist, und schlägt fehl, wenn dies nicht der Fall ist. Dies ist ein großes Sicherheitsplus. Das USB-Gerät wird automatisch erkannt, wenn genau ein USB-Laufwerk an Ihr System angeschlossen ist.

Wenn Sie den syslinux-Bootloader installieren möchten, um die von @xsdf genannten Probleme zu umgehen, verwenden Sie die -bOption:

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

Um es zu installieren:

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