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

353

Gibt es eine Möglichkeit, ein bootfähiges Ubuntu-USB-Flash-Laufwerk vom Terminal aus zu erstellen, ohne Anwendungen von Drittanbietern wie YUMI , Unetbootin , Startup Disk Creator usw. zu verwenden ?

Ich habe versucht, ein bootfähiges Ubuntu-Flash-Laufwerk mit der ddMethode zu erstellen ,

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

Es werden Dateien auf dem USB-Datenträger erstellt, aber wenn ich versuche, den USB-Datenträger zu starten, wird ein Operating System Not FoundFehler angezeigt.

Avinash Raj
quelle
Sie müssen sicherstellen, dass Ihr USB-Stick NICHT gemountet ist. Fragen Sie bei lsblk nach. Führen Sie bei Bedarf sudo umount / dev / sdb aus (wahrscheinlich sdb1, sdb2). Hinzufügen; $ echo? nach deinem dd copy befehl. Also: sudo dd if = ... of = ... bs = 4M; echo $? Wenn der Befehl beendet wird, sollte der Rückgabewert 0 sein.
Ich habe Ihre Schritte befolgt, aber es werden auch die gleichen Dateien erstellt, die auch erstellt werden. Es werden sudo umount /dev/sdb sudo dd if=/path/to/ubuntu.iso of=/dev/sdb bs=1Mkeine ubninit,ldlinux.sys,etcDateien erstellt, die hauptsächlich für den Start eines Linux- Betriebssystems wichtig sind.
Avinash Raj
Als letzten Schritt würde ich grub auf dem MBR des USB-Laufwerks installieren.
Elder Geek
2
Der einfachste Weg mit den eingebauten Werkzeugen das Terminal zu benutzen ist ddwie hier beschrieben. Es funktioniert mit allen hybriden ISO-Dateien. Ist ddaber ein gefährliches Werkzeug, weil es das tut, was Sie ihm sagen, ohne Fragen zu stellen. Also, wenn Sie sagen, es soll die Familienbilder abwischen ... und es ist ein kleiner Tippfehler weg. Viele Tools sind sicherer. Sie helfen Ihnen bei der Identifizierung und Auswahl des Ziellaufwerks und bieten einen endgültigen Prüfpunkt , an dem Sie überprüfen können, ob Sie auf das richtige Laufwerk schreiben. Die meisten davon sind GUI-Tools, einige können auch im Textmodus arbeiten, z mkusb-dus.
Sudodus
1
Der folgende Link zeigt ein Beispiel, in dem das interne Laufwerk versehentlich überschrieben wurde, als eine Befehlszeile mit ddverwendet wurde, um ein bootfähiges Ubuntu-USB-Flash-Laufwerk zu erstellen: askubuntu.com/questions/982552/accidentally-did-dd-dev- sda
sudodus

Antworten:

431

Sie können verwenden dd.

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

wo <?><?>ist gefolgt von einer Nummer ein Brief, schauen sie durch angerannt lsblk.

Es wird ungefähr so ​​aussehen

sdb      8:16   1  14.9G  0 disk 
├─sdb1   8:17   1   1.6G  0 part /media/username/usb volume name
└─sdb2   8:18   1   2.4M  0 part 

Ich würde sdb1 aussteigen.

Dann weiter (dies ist ein destruktiver Befehl und löscht das gesamte USB-Laufwerk mit dem Inhalt der ISO, also seien Sie vorsichtig):

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

wo input.isodie Eingabedatei, und /dev/sd<?>ist das USB - Gerät an , Sie schreiben (laufen lsblkalle Laufwerke zu sehen , um herauszufinden , was <?>für Ihren USB ist).

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


BEARBEITEN: Wenn Sie einen Mac haben, der hier landet, verwenden Sie Kleinbuchstaben für bs=4m:

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

BEARBEITEN: Wenn das USB-Laufwerk nicht bootet (das ist mir passiert), liegt das daran, dass das Ziel eine bestimmte Partition auf dem Laufwerk ist und nicht das Laufwerk. Das Ziel muss also / 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

Marc
quelle
13
das klappt bei mir nicht
Avinash Raj
7
"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 der Start fehl? Sind Sie sicher, dass die .iso nicht beschädigt ist?
Marc
8
Sie könnten eine beschädigte .iso haben. Hast du es überprüft? Sind Sie sicher, dass die .iso-Datei tatsächlich eine Kopie von etwas ist, das bootfähig ist?
Marc
5
Die ursprüngliche Frage und die am häufigsten gewählte Antwort ist dieselbe Person, die gesagt hat, dass diese Methode für ihn nicht funktioniert. ;-) Bei mir funktioniert die bestätigte Antwort nicht und diese tut es. :-) Upvoting.
Drachenfels
20
Das Hinzufügen von a status=progresszur Befehlszeile ist auch hilfreich, um zu sehen, wie viel oben noch kopiert werden muss.
Supernormal
101

Sie haben es fast geschafft dd, aber Sie verpassen einen Schritt.

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

wo sdXist dein usb gerät (das kann mit überprüft werden lsblk).

Das syncBit ist wichtig, da ddes zurückkehren kann, bevor der Schreibvorgang abgeschlossen ist.

user373766
quelle
17
+1 für die Erwähnung sync. Ohne sie haben Sie keine Ahnung, ob der Inhalt tatsächlich kopiert wurde. Wenn Sie es nicht eilig haben, sollten Sie md5sumbeide Dateien nur aus Sicherheitsgründen verwenden.
Dave
4
Vielleicht ist es erwähnenswert, dass der USB sudo mkfs.msdos -F 32 /dev/sdXzuerst als FAT32 (neu) formatiert werden muss ?
Nemo
10
@Nemo, kann das einen Unterschied machen? ddto / dev / sdX überschreibt jedes vorhandene Dateisystem.
Mwfearnley
5
syncist hier sinnlos. Dies betrifft nur Dateisystemvorgänge.
Punund
3
conv=fdatasync- Das physische Schreiben der Ausgabedateidaten vor dem Abschluss sollte für die Synchronisierung sorgen. Achten Sie jedoch unbedingt darauf, dass das Gerät zuerst abgemeldet wird.
Johnathon Havens
98

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

  • Platzieren Sie die ubuntu.isoDatei in einer beliebigen Festplattenpartition.

  • Hängen Sie dann die ubuntu.isoDatei mit den folgenden Befehlen in das Terminal ein:

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

GParted-Screenshot

  • Ihr Laufwerk wird möglicherweise automatisch in das Laufwerk eingebunden /media/. Nehmen wir an, es wurde eingehängt /media/xxx/.

  • Kopieren Sie alle Dateien von /media/iso/auf Ihren gemounteten USB-Stick, indem Sie den folgenden Befehl ausführen (achten Sie darauf, den Punkt einzuschließen):

    cp -a /media/iso/. /media/xxx/
    
  • Als nächstes benötigen Sie die ldlinux.sysDatei auf Ihrem USB-Stick, um den USB-Stick bootfähig zu machen . Meine USB-Partition ist /dev/sdd1; Betreten Sie lsblk, um zu sehen, was Ihnen gehört. Führen Sie die folgenden Befehle aus:

    sudo apt-get install syslinux mtools
    sudo syslinux -s /dev/sdd1
    
  • Navigieren Sie zum /media/xxxMount-Ordner und benennen Sie das isolinuxVerzeichnis in um syslinux. Gehen Sie dann in den umbenannten Ordner und benennen Sie die Datei isolinux.cfgin um syslinux.cfg.

  • Starten Sie Ihren PC neu und ändern Sie die Startreihenfolge im BIOS, um das Starten von einem USB-Laufwerk zu ermöglichen. Jetzt bootet 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 .

Avinash Raj
quelle
3
Ich versuche es im Moment, können Sie bitte angeben, was / warum Sie verwenden: cp -a anstelle von cp -r
Moldovean
2
Sie benötigen sudofür den syslinuxBefehl.
Cammy_the_block
9
Diese Methode hat bei mir nicht funktioniert. Das cp -a gibt an: 'cp: kann keinen symbolischen Link erstellen' /media/xxx/./ubuntu ': Operation nicht erlaubt' und ähnliches, da das Ziel fat32 ist. Ich habe versucht, das zu ignorieren ... hat nicht funktioniert
sheß
6
Wichtig zu beachten, dass der USB ein Fat32-Dateisystem sein muss, sonst funktioniert Syslinux nicht
Ricardo BRGWeb
2
Die Konsole zeigt mir den gleichen Fehler an wie @ sheß. Ich habe das Dateisystem (FAT32) überprüft und BOOT markiert.
Chofoteddy
40

Sie haben zwei Möglichkeiten.

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

Bildbeschreibung hier eingeben

Wenn Sie ein Befehlszeilentool 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

Stellen Sie nur sicher, dass Sie /dev/sdXdas gewünschte Flash-Laufwerk verwenden möchten (es zerstört die Daten auf dem Flash-Laufwerk).

Weitere Informationen finden Sie unter https://help.ubuntu.com/community/Installation/FromUSBStick .

Panther
quelle
1
Ich möchte nur Kommandozeilen - Tools, nicht GUI - Tool (wie Startdiskette Konzept) .Nach das ddVerfahren, nur 3 Ordner und 1 Datei wurden in meinem usb.While erstellt ich versuche , es zu starten , sagt operating system not founderror.Files wie ubninit,menu.c32,ubnpathl.txt,ubnfilel.txt,ldlinux.sysfehlen (die sehr wichtig, um Live Ubuntu USB zu booten).
Avinash Raj
1
Ich habe die dd-Methode mit ubuntu.iso ausprobiert und es hat funktioniert! Es ist jedoch zu viel Zeit, um auf einen USB-Stick geschrieben zu werden. 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 Werts das Kopieren auf den USB-Stick beschleunigt. Und was sind die Risiken .. vielleicht weiß jemand Bescheid.
Moldau
4
Das bs ist die Blockgröße. dd liest 1 MB Daten in den Speicher und schreibt sie dann auf die gesamte Festplatte. Wenn Sie eine sehr kleine Blockgröße verwenden, erhalten Sie viel CPU-Overhead. Die Verwendung einer sehr großen Blockgröße kann zu unerwarteten Nebenwirkungen führen, z. B. längeren Pausen ohne Festplattenaktivität und / oder einer hohen RAM-Auslastung. 1M oder 4M sind in der Regel ein guter Wert, wenn Sie eine ISO-Platte erstellen. Weitere Informationen zu Blockgrößen: stackoverflow.com/questions/6161823/…
ApolloLV
Ich denke, ein bootfähiges USB zu machen, ist etwas, was ich selten tue, aber wenn ich es tue, möchte ich, dass es richtig gemacht wird. Eine kleinere Blockgröße kann länger dauern, aber ist das ein Problem? Nee.
Marc
2
@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! = "Richtig gemacht". Richtig gemacht bedeutet, die MD5-Summe der ISO zu überprüfen und die MD5-Summe des geschriebenen Bildes zu bestätigen. Sobald Sie die m5dsums bestätigen, wissen Sie, dass es richtig gemacht wurde.
Panther
28

Hängen Sie zuerst das USB-Gerät aus und lsblküberprüfen Sie dann das Gerät mit.

Manchmal (normalerweise ältere ISO-Dateien) reicht dd nicht aus und der pendrive bootet nicht. In diesem Fall müssen Sie möglicherweise Syslinux installieren:

sudo apt-get install syslinux

Führen Sie dann die folgenden Befehle aus:

sudo mkfs -t vfat -I /dev/sdX

Sie möchten den letzten Befehl ausführen /dev/sdXund 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 stattdessen ddkönnen Sie verwenden cat:

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

Denken Sie daran, den Synchronisierungsbefehl zum Leeren des Schreibcaches abzusetzen

sync

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

mchid
quelle
Ich muss erwähnen, dass für mich alles andere fehlgeschlagen ist, aber das hat funktioniert - ich habe mich für den catBefehl entschieden.
Digital Dracula
Für diejenigen, die darauf bestehen, dass ddallein genug ist, brauchte ich dies auch, um zu arbeiten.
GuiRitter
Wenn Sie ein Tool benötigen, das verwendet wird, ddwenn ISO hybrid und mount ist, kopieren Sie die ISO-Datei und installieren SYSLINUX, wenn ISO nicht vorhanden ist. Verwenden Sie bootisostattdessen.
Jules Randolph
1
Können Sie erklären, was jeder dieser Befehle tatsächlich bewirkt? Was bringt es, ein vfat-Dateisystem auf dem Gerät zu erstellen und es dann sofort mit dem Inhalt der ISO-Datei zu überschreiben? Was macht isohybrideigentlich? ändert es die ISO in irgendeiner Weise?
Cheshirekow
10

Wenn mit "Drittanbieter" "gui" gemeint ist, empfehle ich ein leichtes Skript mit dem Namen bootiso nach der Antwort von Avinash Raj , da dddies nicht immer funktioniert. Das große Plus ist, dass es sehr sicher ist (führt viele Sicherheitsüberprüfungen durch, um das System nicht zu beschädigen), einfach zu installieren und tragbar ist.

Außerdem bootisowird prüfen ISO - Datei von zwei Modi zur Auswahl: Bildkopie ( dd) , wenn die ISO - Datei - Hybrid ist, dh USB freundlich. Und mount-rsync-Modus, wenn die ISO-Datei nicht hybrid ist. In diesem Fall wird ein SYSLINUX-Bootloader automatisch installiert, sofern dieser unterstützt wird [ weitere Informationen zum automatischen Verhalten ].

Wie man es benutzt

Erste Option, geben Sie einfach die ISO als erstes Argument ein und Sie werden aufgefordert, ein Laufwerk aus einer Liste auszuwählen, die aus Folgendem extrahiert wurde lsblk:

bootiso myfile.iso

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

bootiso -d /dev/sde myfile.iso

Schnellinstallation

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

Sehen Sie es in Aktion:

Jules Randolph
quelle
1
Ich stimme zu, dies ist ein sehr nettes Skript, das die beängstigenden Teile aus dem Prozess entfernt. Weitere Details hier: tecmint.com/create-bootable-usb-in-linux-commandline
kr37
Es wird sogar Windows 10 Oct 2018 unterstützt, da es das "wim splitting" der "install.wim" -Datei (mit dem Befehl "wimlib-imagex") unterstützt, die größer als 4 GB ist und ansonsten nicht auf FAT32 gespeichert werden kann.
mevdschee
7
$ dd if=ubuntu-14.04.1-desktop-amd64.iso of=/dev/sdX bs=1MB

Verwenden Sie den Pfad nicht zum Beissen.

  1. Verwenden Sie den cdBefehl, 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: Stellen Sie sicher, dass Sie auf das richtige Gerät schreiben, auf dem ein USB-Stick nicht immer installiert ist: dev/sdXwobei X ein beliebiger Buchstabe sein kann.

Alexander Stamos
quelle
2
Was bedeutet bs = 1 MB im Befehl dd?
Juggernauthk108
1
@ juggernaut1996 keine. Dies ist die Blockgröße, die beim Kopieren verwendet werden soll. Da kein count-Argument angegeben wurde, wird die gesamte Eingabe in 1-MB-Blöcken kopiert. Es könnte entfernt werden.
sjbx
Das "Verwenden Sie nicht den Pfad zu Bit" ist eine Fehlinformation. Der Prozess selbst backt in keinem Schritt die Pfadkomponenten in das kopierte Image. Daher ist es unerheblich, ob Sie zu dem Verzeichnis navigieren, das Ihr ISO-Image enthält, oder nur den vollständigen Pfad angeben. Darüber hinaus kann dd auch Eingaben von stdin akzeptieren, sodass Sie einfach zwei dd ineinander überführen können, um sicherzustellen, dass kein Pfad in das Bild eingebrannt wird.
Gabor Garami
Das funktioniert nur für Hybrid-ISOs, die heutzutage einen Großteil der Fälle ausfüllen, aber es gibt bemerkenswerte Ausnahmen wie UltimateBootCD. Verwenden Sie bootisostattdessen.
Jules Randolph
-5

Probieren Sie es aus und haben mich über 100 Mal im Stich gelassen:

Formatieren Sie die Karte:

$ sudo mkfs.vfat -F32 /dev/sdx

Hängen Sie das ISO-Image ein:

$ sudo mount ubuntu.iso /mnt

Inhalt auf Karte kopieren:

$ sudo cp -rvf /mnt/* /SD_CardMountPoint

Dann:

  • isolinuxOrdner umbenennen insyslinux
  • umbenennen syslinux/isolinux.cfginsyslinux/syslinux.cfg
  • umbenennen syslinux/isolinux.bininsyslinux/syslinux.bin
  • Lauf syslinux -s /dev/sdx
Nooty
quelle
4
-1. Hast du das mal getestet? sudo cp -rvf /mnt/* /dev/sdxwird nicht funktionieren (oder zumindest nicht tun, was Sie beabsichtigen). Sie kopieren keine Dateien auf ein Raw-Gerät ( /dev/). Mounten Sie stattdessen die Karte und kopieren Sie den Inhalt der ISO-Datei auf die Karte (Mount Point to Mount Point). Und was ist los mit der aktuell akzeptierten Antwort, die den gleichen Ansatz hat.
Gertvdijk