Frage Wie erstelle ich ein bootfähiges Ubuntu USB-Flash-Laufwerk vom Terminal?


Gibt es eine Möglichkeit, ein bootfähiges Ubuntu-USB-Flash-Laufwerk vom Terminal zu erstellen, ohne Anwendungen von Drittanbietern wie YUMI, Unetbootin, Startdisk Creator, etc.

Ich habe versucht, ein bootfähiges Ubuntu-Flash-Laufwerk mit zu erstellen dd Methode,

sudo umount /dev/sdb
sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M

Es erstellt Dateien auf der USB-Festplatte, aber wenn ich versuche, die USB-Festplatte zu booten, zeigt es ein Operating System Not Found Error.


263
2017-11-15 17:29


Ursprung


Sie müssen sicherstellen, dass Ihr USB-Stick nicht installiert ist. Überprüfen Sie mit lsblk. Falls nötig, sudo umount / dev / sdb (wahrscheinlich sdb1, sdb2). Hinzufügen; echo $? nach dem Befehl dd copy. Also: sudo dd if = ... von = ... bs = 4M; echo $? Wenn der Befehl endet, sollte der Rückgabewert 0 sein.
Ich folge deinen Schritten, aber es erzeugt auch die gleichen Dateien wie sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1M creates.It erstellt keine ubninit,ldlinux.sys,etc Dateien, die hauptsächlich wichtig sind, um ein Linux-Betriebssystem zu booten. - Avinash Raj
Ich würde Grub auf dem MBR der USB-Festplatte als letzten Schritt installieren. - Elder Geek
Das am einfachsten Weg mit den eingebauten Tools über das Terminal zu nutzen ist dd wie hier beschrieben. Es funktioniert mit allen hybriden ISO-Dateien. Aber dd ist ein gefährliches Werkzeug, weil es tut, was Sie sagen, es ohne Fragen zu tun. Also wenn du es sagst die Familienbilder zu löschen ... und es ist ein kleiner Tippfehler weg. Viele Tools sind sicherer. Sie helfen Ihnen, das Ziellaufwerk zu identifizieren, auszuwählen und einen endgültigen Prüfpunkt bereitzustellen, wo Sie überprüfen können, dass Sie auf das richtige Laufwerk schreiben werden. Die meisten davon sind GUI-Werkzeuge, einige können auch im Textmodus arbeiten, z. mkusb-dus. - sudodus
Der folgende Link zeigt ein Beispiel, bei dem das interne Laufwerk versehentlich überschrieben wurde, wenn eine Befehlszeile mit dd wurde verwendet, um ein bootfähiges Ubuntu USB-Flash-Laufwerk zu erstellen, askubuntu.com/questions/982552/accidentally-did-dd-dev-sda - sudodus


Antworten:


Sie können verwenden dd.

 sudo umount /dev/sd<?><?>  

woher <?><?> ist ein Buchstabe gefolgt von einer Zahl, schaue nach. Dann als nächstes:

 sudo dd bs=4M if=input.iso of=/dev/sd<?> conv=fdatasync

woher input.iso ist die Eingabedatei und /dev/sd<?> ist das USB-Gerät, auf das du schreibst (run lsblk um alle Laufwerke zu sehen, um was herauszufinden <?> ist für dein USB).

Diese Methode ist schnell und hat mich nie im Stich gelassen.


EDIT: für diejenigen auf einem Mac, die hier enden, verwenden Sie Kleinbuchstaben für bs=4m:

sudo dd if=inputfile.img of=/dev/disk<?> bs=4m && sync

EDIT: Wenn USB-Laufwerk nicht bootet (das ist mir passiert), ist es, weil das Ziel eine bestimmte Partition auf dem Laufwerk anstelle des Laufwerks ist. Also muss das Ziel / dev / sdc und nicht dev / sdc sein <?> Für mich war es / dev / sdb.

Referenz: https://superuser.com/a/407327 und https://askubuntu.com/a/579615/669976


302
2017-11-13 11:51



es funktioniert nicht für mich. - Avinash Raj
"Ja wirklich?" Sind Sie sicher, dass Sie den richtigen .iso-Dateinamen einschließlich Pfad und das richtige / dev für Ihr USB-Laufwerk haben? Wie scheitert es? Gibt es eine Fehlermeldung oder schlägt das Booten fehl? Sind Sie sicher, dass die .iso nicht beschädigt ist? - Marc
Du könntest ein korruptes .iso haben. Hast du es überprüft? Sind Sie sicher, dass das .iso tatsächlich eine Kopie von etwas ist, das? ist bootfähig? - Marc
Die ursprüngliche Frage und die meistbeantwortete Antwort ist dieselbe Person, die sagte, dass diese Methode nicht für ihn funktioniert. ;-) Für mich funktioniert die freigegebene Antwort nicht und das tut es auch. :-) Upvoting. - Drachenfels
benutzen df -lh um zu prüfen, was dev/sdc ist dein /media/user/XXXX-YYY (der Schnittstellenname des USB) - Peter Krauss


Erstellen eines bootfähigen Ubuntu-USB-Flash-Laufwerks vom Terminal

  • Setze das ubuntu.iso Datei in einer beliebigen Festplattenpartition.

  • Dann montieren Sie die ubuntu.iso Datei mit den folgenden Befehlen im Terminal:

    sudo mkdir /media/iso/
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Stecken Sie Ihren USB-Stick ein. Meine Fahrt ist /dev/sdd. Hier ist ein Screenshot:

GParted screenshot

  • Ihr Laufwerk kann automatisch im Inneren montiert werden /media/. Nehmen wir an, dass es in montiert wurde /media/xxx/.

  • Kopiere alle Dateien von /media/iso/ zu Ihrem gemounteten USB-Flash-Laufwerk, indem Sie den folgenden Befehl ausführen (stellen Sie sicher, dass Sie den Punkt einfügen):

    cp -a /media/iso/. /media/xxx/
    
  • Als nächstes brauchen Sie die ldlinux.sys Datei in Ihrem USB-Flash-Laufwerk, um den USB zu machen bootfähig. Meine USB-Partition ist /dev/sdd1; eingeben lsblk um zu sehen, was dir gehört. Führen Sie die folgenden Befehle aus:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Navigieren Sie zu /media/xxx Ordner mounten und umbenennen isolinux Verzeichnis zu syslinux. Dann gehen Sie in den umbenannten Ordner und benennen Sie die Datei um isolinux.cfg zu syslinux.cfg.

  • Starten Sie Ihren PC neu und ändern Sie die Boot-Reihenfolge im BIOS, um das Booten von einem USB-Laufwerk zu ermöglichen. Jetzt startet Ihr Ubuntu USB-Flash-Laufwerk und Sie können es installieren.

Diese Methode funktioniert für jede Linux-Distribution, nicht nur für Ubuntu. Sie müssen keine Software von Drittanbietern installieren, um ein Linux-USB-Flash-Laufwerk zu erstellen.


84
2017-11-07 18:19



Ich versuche es im Moment, könntest du bitte angeben was / warum du verwendest: cp -a anstatt cp -r - moldovean
Du brauchst sudo für die syslinux Befehl. - Cammy_the_block
Diese Methode hat bei mir nicht funktioniert. Der cp -a gibt: 'cp: kann keine symbolische Verbindung erstellen' /media/xxx/./ubuntu ': Operation nicht erlaubt' und andere ähnliche, da das Ziel fat32 ist. Ich habe versucht, das zu ignorieren ... hat nicht funktioniert - sheß
Wichtig zu beachten, dass der USB ein Fat32-Dateisystem sein muss, sonst wird syslinux nicht funktionieren - Ricardo BRGWeb
Die Konsole zeigt mir denselben Fehler wie @Sheß. Ich habe Dateisystem (FAT32) verifiziert und BOOT markiert. - Chofoteddy


Du bist fast mit dabei dd, aber du verpasst einen Schritt.

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdX bs=4M && sync

woher sdX ist Ihr USB - Gerät (dies kann mit überprüft werden lsblk).

Das sync Bit ist wichtig als dd kann zurückkehren, bevor der Schreibvorgang abgeschlossen ist.


77



+1 für Erwähnung sync. Ohne sie haben Sie keine Ahnung, ob der Inhalt tatsächlich kopiert wurde. Auch, wenn Sie nicht in Eile sind, sollten Sie md5sum beide Dateien, um doppelt sicher zu sein. - Dave
Erwähnenswert ist vielleicht, dass der USB als FAT32 mit (neu) formatiert werden muss sudo mkfs.msdos -F 32 /dev/sdX zuerst? - Nemo
@Nemo, ist es möglich, dass das einen Unterschied macht? dd to / dev / sdX überschreibt jedes existierende Dateisystem. - mwfearnley
sync ist hier sinnlos. Es betrifft nur Dateisystemvorgänge. - punund
conv=fdatasync - Schreiben Sie die Ausgabedateidaten vor dem Beenden physisch sollte sich um die Synchronisierung kümmern, aber es ist ratsam, sicherzustellen, dass das Gerät zuerst deaktiviert wird. - Johnathon Havens


Sie haben zwei Möglichkeiten.

Wenn Sie eine grafische Oberfläche wünschen, verwenden Sie usb-creator (es ist in den ubuntu repos)

enter image description here

Wenn Sie ein Befehlszeilenwerkzeug verwenden möchten, verwenden Sie dd

#Replace X accordingly in both commands

sudo umount /dev/sdX
sudo dd if=/path/to/ubuntu.iso of=/dev/sdbX bs=1M

Sei nur sicher /dev/sdX ist das Flash-Laufwerk, das Sie verwenden möchten (es wird die Daten auf dem Flash-Laufwerk zerstören).

Sehen https://help.ubuntu.com/community/Installation/FromUSBStickfür weitere Informationen.


36



Ich möchte nur Befehlszeilen-Tools, nicht GUI-Tool (wie Startup Disk Creator). Nach der dd Methode, nur 3 Ordner und 1 Datei wurde in meinem USB erstellt. Während ich versuche zu booten sagt es operating system not found Fehler. Dateien wie ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sys fehlen (die sind sehr wichtig, Live Ubuntu USB zu booten). - Avinash Raj
Ich habe die DD-Methode mit ubuntu.iso ausprobiert und es hat funktioniert! es ist aber auch sehr viel zeit auf einen USB zu schreiben. Ich frage mich, wofür bs = 1M steht. Ich habe diese Seite gefunden manpages.ubuntu.com/manpages/karmic/en/man1/dd.1.html. Jetzt frage ich mich, ob das Ändern des Wertes das Kopieren auf den USB schneller macht? Und was sind die Risiken .. vielleicht weiß jemand. - moldovean
Die BS ist die Blockgröße. dd liest 1MB Daten in den Speicher und fährt fort, sie auf die Festplatte als Ganzes zu schreiben. Mit einer sehr kleinen Blockgröße erhalten Sie eine Menge CPU-Overhead. Die Verwendung einer sehr großen Blockgröße kann zu unerwarteten Nebenwirkungen führen, z. längere Pausen ohne Festplattenaktivität und / oder große RAM-Auslastung. 1M oder 4M ist normalerweise ein guter Wert, wenn Sie eine Festplatte von einer ISO erstellen. Weitere Informationen zu Blockgrößen: stackoverflow.com/questions/6161823/... - ApolloLV
Ich denke, ein bootfähiger USB ist etwas, was ich selten mache, aber wenn ich es mache, will ich, dass es richtig gemacht wird. Eine kleinere Blockgröße kann länger dauern, aber ist das ein Problem? Nee. - Marc
@Marc - Das einzige Problem ist die Geschwindigkeit, eine kleinere Blockgröße ist nicht mehr oder weniger fehleranfällig als eine größere Blockgröße und damit eine kleinere Blockgröße! = "Done right". Done right bedeutet, die md5sum des iso zu überprüfen und die md5sum des geschriebenen Bildes zu bestätigen. Sobald Sie die m5dsums bestätigen, wissen Sie, dass es richtig gemacht wurde. - Panther


Zuerst das USB-Gerät aushängen und dann verwenden lsblk um das Gerät zu überprüfen.

Manchmal (normalerweise ältere ISO-Dateien) ist dd nicht ausreichend und der USB-Stick bootet nicht. In diesem Fall müssen Sie möglicherweise syslinux installieren:

sudo apt-get install syslinux

und führen Sie dann die folgenden Befehle aus:

sudo mkfs -t vfat -I /dev/sdX

Sie möchten den letzten Befehl ausführen /dev/sdX und nicht  /dev/sdX1.

Fahren Sie dann mit den folgenden Befehlen fort:

isohybrid /path/to/file.iso --entry 4 --type 0x1c
dd if='/path/to/file.iso' of=/dev/sdX bs=8M

oder, um den Fortschritt des Bildschreibens zu sehen:

pv -tpreb /path/to/file.iso | dd of=/dev/sdX bs=8M

oder statt ddkannst du benutzen cat stattdessen:

sudo -s
cat /path/to/file.iso > /dev/sdX

Erinnern Sie sich daran, einen Synchronisierungsbefehl zum Leeren des Schreibcaches auszugeben

sync

web.archive.org/web/20140327085331/https://tails.boum.org/doc/first_steps/installation/manual/linux/index.de.html


23



Ich muss erwähnen, dass für mich alles andere fehlgeschlagen ist, aber das hat funktioniert - ich habe mich für das entschieden cat Befehl. - Digital Dracula
Für diejenigen, die darauf bestehen dd alleine ist genug, ich brauchte das auch um zu arbeiten. - GuiRitter
Wenn du ein Werkzeug willst, das benutzt dd Wenn ISO hybrid und mount ist, ISO-Datei kopieren + SYSLINUX installieren, wenn ISO nicht verwendet wird bootiso stattdessen. - Jules Randolph


$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Verwenden Sie nicht den Pfad zum Bit.

  1. Benutze die cd Befehl, um zu dem Ordner zu gelangen, der die ISO-Datei enthält
  2. benutze den Befehl dd if=FILE NAME HERE.iso of=/dev/sdX bs=1MB
  3. Warten Sie, bis die Konsolenausgabe ungefähr so ​​aussieht:

    1028+1 records in
    1028+1 records out
    1028653056 bytes (1.0 GB) copied, 55.4844 s, 18.5 MB/s
    
  4. Booten Sie vom USB.

Hinweis: Achten Sie darauf, dass Sie auf das richtige Gerät schreiben, auf dem ein USB-Stick nicht immer gemounted wird: dev/sdX wo X ein beliebiger Buchstabe sein kann.


6



Was ist die Bedeutung von bs = 1MB in dd Befehl ??? - juggernaut1996
@ juggernaut1996 keine. Es ist die Blockgröße, die beim Kopieren verwendet wird. Da kein count-Argument angegeben wurde, wird die gesamte Eingabe in 1MB-Blöcke kopiert. Es könnte entfernt werden. - sjbx
Das "Benutze nicht den Pfad zum Bit" ist eine Fehlinformation. Der Prozess selbst bügelt die Pfadkomponenten in keinem Schritt in das kopierte Bild. Es ist also unerheblich, ob Sie zu dem Verzeichnis mit Ihrem ISO-Image navigieren oder nur den vollständigen Pfad angeben. Darüber hinaus kann dd auch Eingaben von stdin akzeptieren, so dass Sie einfach zwei dd miteinander verbinden können, um sicherzustellen, dass kein Pfad in das Bild eingebacken ist. - Gabor Garami
Das wird nur für hybride ISOs funktionieren, die heute die große Mehrheit der Fälle abdecken, aber es gibt merkliche Ausnahmen wie UltimateBootCD. Benutzen bootiso stattdessen. - Jules Randolph


Wenn du von "Dritten" meinst "gui", Ich schlage ein leichtgewichtiges Skript namens bootiso vor nach Avinash Raj antwort, weil dd funktioniert nicht immer. Das große Plus ist, dass es sehr sicher ist (führt viele Sicherheitskontrollen durch, um nicht mit dem System zu versauen), einfach zu installieren und tragbar.

Ebenfalls, bootiso überprüft die ISO-Datei, um zwischen zwei Modi zu wählen: image-copy (dd) Wenn ISO-Datei ist hybrid, das ist USB-freundlich. Und mount-rsync-Modus, wenn ISO-Datei nicht hybrid ist, in diesem Fall wird ein SYSLINUX-Bootloader automatisch installiert, falls unterstützt [Weitere Details zum automatischen Verhalten].

Wie man es benutzt

Als erste Option geben Sie einfach das ISO als erstes Argument an und Sie werden aufgefordert, ein Laufwerk aus einer Liste auszuwählen, aus der extrahiert wurde lsblk:

bootiso myfile.iso

Oder geben Sie explizit das USB-Gerät an:

bootiso -d /dev/sde myfile.iso

Schnellinstallation

curl -L https://git.io/bootiso -O
chmod +x bootiso

Sehen Sie es in Aktion:


5



Ich stimme zu, das ist ein sehr schönes Skript, das die gruseligen Teile aus dem Prozess nimmt. Weitere Details hier: tecmint.com/create-bootable-usb-in-linux-commandline - kr37


Versuchen Sie das und haben Sie mich nie mehr als 100 Mal im Stich gelassen:

Formatiere die Karte:

$ sudo mkfs.vfat -F32 /dev/sdx

Mounten Sie das ISO-Image:

$ sudo mount ubuntu.iso /mnt

Inhalt auf Karte kopieren:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Dann:

  • umbenennen isolinux Ordner in syslinux
  • umbenennen syslinux/isolinux.cfg zu syslinux/syslinux.cfg
  • umbenennen syslinux/isolinux.bin zu syslinux/syslinux.bin
  • Lauf syslinux -s /dev/sdx

-4



-1. Hast du das mal getestet? sudo cp -rvf /mnt/* /dev/sdx wird nicht funktionieren (oder zumindest nicht tun, was Sie vorhaben). Sie kopieren keine Dateien auf ein Raw-Gerät (/dev/). Stattdessen sollten Sie die Karte mounten und den Inhalt der ISO-Datei auf die Karte kopieren (Mount Point to Mount Point). Und was stimmt nicht mit der aktuell akzeptierten Antwort, die den gleichen Ansatz verfolgt. - gertvdijk