USB-Installer erstellen, um Ubuntu von der Kommandozeile aus zu installieren?


22

Ich versuche ein bootfähiges USB-Image zu erstellen, um Ubuntu auf einem neuen Computer zu installieren.

Ich habe dies getan, bevor ich den Anweisungen zum Erstellen eines USB-Laufwerks für den Ubuntu-Desktop gefolgt bin, aber ich habe keinen Ubuntu-Desktop zur Verfügung.

Wie kann ich dasselbe nur über die Befehlszeile tun?

Dinge, die ich versucht habe:

  • Erstellen Sie unter Mac OS X einen bootfähigen USB-Stick. Befolgen Sie dazu die ubuntu.com-Anweisungen zum Erstellen eines USB-Laufwerks für Mac: Startet nicht.
  • usb-creator: Laut apt-cache search usb-creatorund Wikipedia existiert der usb-creator nur als grafisches Tool.
  • „Erstellen Sie manuell“ Anweisungen an help.ubuntu.com: Keine der Dateien und Verzeichnisse beschrieben ( zum Beispiel casper, filesystem.manifest, menu.lst) ist in dem ISO - Image, und ich weiß nicht , was sie ersetzt hat.
  • Unetbootin Scripting : Erfordert X-Server (Grafikunterstützung), um ausgeführt zu werden, auch wenn das Script vollständig ist. (Der Befehl sudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesgibt eine Fehlermeldung aus unetbootin: cannot connect to X server.)

Aktualisieren

Auch GRUB-Fiddling ausprobiert: Zusammenführen von Informationen aus

Ich konnte auf halbem Weg dorthin gelangen - es wurde von USB gebootet, das Grub-Menü angezeigt und die Installation gestartet, die Installation wurde jedoch nicht abgeschlossen.

Als Referenz ist dies die nächste, die ich bekommen habe:

sudo su
  # mount USB pen
mount /dev/sd[X]1 /media/usb
  # install GRUB
grub-install --force --no-floppy --root-directory=/media/usb /dev/sd[X]
  # copy ISO image to USB
cp ~/ubuntu-10.10-server-amd64.iso /media/usb
  # mount ISO image, copy existing grub.cfg
mount ~/ubuntu-10.10-server-amd64.iso /media/iso/ -o loop
cp /media/iso/boot/grub/grub.cfg /media/usb/boot/grub/

Ich habe dann bearbeitet /media/usb/boot/grub.cfg, um einen .iso-Loopback hinzuzufügen, Beispiel für einen Grub-Eintrag:

menuentry "Install Ubuntu Server" {
  set gfxpayload=keep
  loopback loop /ubuntu-10.10-server-amd64.iso  
  linux (loop)/install/vmlinuz  file=(loop)/preseed/ubuntu-server.seed iso-scan/filename=/ubuntu-10.10-server-amd64.iso quiet --
  initrd (loop)/install/initrd.gz
}

Wenn ich von USB boote, erhalte ich das Grub-Startmenü und starte das Installationsprogramm. Das Installationsprogramm gab jedoch nach einigen Bildschirmen auf, in denen beanstandet wurde, dass das CD-ROM-Laufwerk nicht gefunden werden konnte. (Natürlich hat die Box, auf der ich installiere, kein optisches Laufwerk.)

Ich habe dieses spezielle Problem behoben, indem ich die Routine "USB-Laufwerk erstellen" mit der Ubuntu Live-Desktop-CD (auf einem Computer mit optischem Laufwerk) aufgegeben und ausgeführt habe. Dann funktioniert die USB-Installation.

Aber ich gehe davon aus, dass es einen Weg gibt, dies von der Kommandozeile eines Ubuntu-Systems ohne X-Server und ohne optisches Laufwerk aus zu tun. Die Frage bleibt also offen.

Weiß jemand wie?


Versuchen Sie, das Booten zu beenden.
RolandiXor

@ Roland unetbootin: cannot connect to X server - scheint X zu erfordern, auch wenn es vollständig mit einem Skript versehen ist ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes), und ich würde es vorziehen, ohne Kopf zu bleiben. Vielen Dank für den Tipp. Ich kann X installieren, wenn mir andere Optionen ausgehen.
jg-faustus


@ jg-faustus: Wenn die Dinge so kompliziert wären, hätte ich Linux vielleicht verlassen. verwenden dd. Es ist ein Juwel. kann nicht genug sagen. Und jede Linux-Distribution hat dd; Sie haben also eine universelle Lösung, bei der Sie nichts skripten / schreiben / konfigurieren müssen. nur eine schöne Linie.
Mahesh

Dieser grub.cfgEintrag muss in file=/cdrom/preseed/ubuntu-server.seedder linuxZeile stehen (und nicht file=(loop)/preseed/ubuntu-server.seed), um den schwerwiegenden Fehler "Fehler beim Abrufen der Vorkonfigurationsdatei" zu vermeiden, nachdem das CD-Image erfolgreich erkannt wurde.
Paul Whittaker

Antworten:


9

Wenn ich von USB boote, erhalte ich das Grub-Startmenü und starte das Installationsprogramm. Das Installationsprogramm gab jedoch nach einigen Bildschirmen auf, in denen beanstandet wurde, dass das CD-ROM-Laufwerk nicht gefunden werden konnte.

Dies ist ein bekannter Fehler bei Ubuntu-Server-ISO (Desktop-ISO funktioniert einwandfrei), aber es gibt einen Fix, um die Pakete von der ISO auf das USB-Laufwerk zu bekommen: Einmal auf dem Installer, Strg + Alt + F2, um ein tty und in zu öffnen Das Terminal:

mount -t vfat /dev/sdX1 /mnt
ln -sf /mnt/ubuntu-server.iso /dev/sr0

Wechseln Sie dann zurück zum Installationsprogramm und versuchen Sie erneut, die CD nach Paketen zu durchsuchen. Es sollte funktionieren.


Ich habe im Moment kein System, um es auszuprobieren, aber ja - es klingt so, als ob es funktionieren sollte :) Danke!
jg-faustus

Ich habe festgestellt, dass die Menüoption "CD-ROM erkennen und einbinden" zurückgesetzt wird /dev/sr0, lnwodurch der Zustand rückgängig gemacht und der ursprüngliche Zustand wiederhergestellt wird . Wenn ich jedoch beim "Wiederholen des Einbindens der CD-ROM" gewartet habe? Eingabeaufforderung, tat die lnin tty2, und kehrte dann auf "Ja", es hat funktioniert. (Dieses Dialogfeld "Wiederholen?" Wird jedoch erst angezeigt, wenn der mountBefehl erteilt wurde.)
Paul Whittaker,

10

Hast du es mit # versucht dd if=path/to/image.iso of=/dev/sd# ?


Dieser ist ein Juwel. Die beste. funktioniert auf jeder Linux-Distribution. aber Sie müssen besonders vorsichtig sein. Hinzufügen bs=20Moder ein anderer geeigneter Wert beschleunigt die Dinge. Einzelheiten finden Sie unterman dd
Mahesh

1
@ Mahesh Nein, einige Linux-Distributionen funktionieren auch mit diesem Befehl nicht. Eine davon ist OpenSUSE
Anwar

oder MeeGo und leitet diese Bilder als hybride ab
rzr

5

Nehmen wir an, Sie haben nur eine Eingabeaufforderung vor sich. Wenn Sie eine grafische Benutzeroberfläche haben, können Sie ein Terminal öffnen und alle hier beschriebenen Schritte ausführen. Oder Sie können ein tty verwenden.

WARNUNG:
Um mögliche Schäden zu vermeiden, befolgen Sie die Anweisungen sehr genau.

  • Wechseln Sie zu einer Root-Eingabeaufforderung, indem Sie Folgendes eingeben sudo su

    Erkennen Sie, welches Gerät der USB ist.

  • tail -f /var/log/syslog

Sie haben jetzt eine Live-Ansicht bei syslog. Stecken Sie Ihr USB-Laufwerk ein. Sie sollten einige Meldungen auf dem Bildschirm sehen. Etwas wie das.

May 27 00:35:07 Mahesh kernel: [ 5054.646585] usb 2-1.1: new high-speed USB device number 5 using ehci_hcd
May 27 00:35:07 Mahesh kernel: [ 5054.741437] scsi8 : usb-storage 2-1.1:1.0
May 27 00:35:07 Mahesh mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
May 27 00:35:07 Mahesh mtp-probe: bus: 2, device: 5 was not an MTP device
May 27 00:35:08 Mahesh kernel: [ 5055.739177] scsi 8:0:0:0: Direct-Access     JetFlash TS2GJFV30        8.07 PQ: 0 ANSI: 2
May 27 00:35:08 Mahesh kernel: [ 5055.740198] sd 8:0:0:0: Attached scsi generic sg3 type 0
May 27 00:35:08 Mahesh kernel: [ 5055.741593] sd 8:0:0:0: [sdc] 4005888 512-byte logical blocks: (2.05 GB/1.91 GiB)
May 27 00:35:08 Mahesh kernel: [ 5055.742214] sd 8:0:0:0: [sdc] Write Protect is off
May 27 00:35:08 Mahesh kernel: [ 5055.742218] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00
May 27 00:35:08 Mahesh kernel: [ 5055.742712] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.742715] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.745326] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.745329] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.781564]  sdc: sdc1
May 27 00:35:08 Mahesh kernel: [ 5055.784191] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.784196] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.784200] sd 8:0:0:0: [sdc] Attached SCSI removable disk

Sieh es dir an und finde eine Sache in eckigen Klammern, die sich wiederholt? sdcin diesem Fall. Notiere es auf einem Blatt Papier. Geben Sie Ctrl+ ein C, um zur Eingabeaufforderung zu gelangen.

Suchen Sie die ISO-Datei, die auf USB gebrannt werden soll.

Wenn die ISO-Datei bei ist /path/to/iso/somecd.iso; Notieren Sie diesen Pfad auf einem Blatt Papier.

Schreiben Sie auf USB

Warnung:

Dies wird löscht die gesamte USB - Festplatte. Sichern Sie, bevor Sie fortfahren.

  • dd if=/path/to/iso/somecd.iso of=/dev/sdc ibs=20M obs=20M

Ersetzen Sie /path/to/iso/somecd.isodurch den tatsächlichen Pfad zu Ihrer ISO-Datei.

Ersetzen Sie es /dev/sdcdurch das, was Sie zuvor notiert haben. Wenn der sich wiederholende Teil ist sdb; verwenden /dev/sdbund so weiter.

Warnung:

Wenn Sie einen falschen Laufwerksbuchstaben eingeben, gehen permanent Daten auf einem anderen Laufwerk verloren. Achten Sie beim Ausgeben des ddBefehls besonders darauf.


2
Um Datenverlust durch Auswahl einer falschen Festplatte zu vermeiden, wird empfohlen, /dev/disk/by-label/LABELanstelle von/dev/sdc
totti den

1
Vernünftiger Vorschlag. Aber wenn Sie sich des Etiketts nicht sicher sind oder eine Menge neuer Bände haben, wird es zum Schmerz. Ich bevorzuge immer das sdX, aber das ist eine persönliche Entscheidung.
Mahesh

1
Beste Antwort. Eine vorgeschlagene Verbesserung ist die Verwendung von pv für den Eingabestream zu dd, damit der Benutzer eine Fortschrittsrückmeldung erhält (dh pv liest die ISO, streamt sie zu dd und zeigt den Fortschritt auf stderr an).
Stabledog

2

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

  • ubuntu.isoHängen Sie die Datei ein. Führen Sie dazu die folgenden Befehle im Terminal aus.

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Kopieren Sie dann alle Dateien von /media/isoin den Ordner Ihres gemounteten USB-Flash-Laufwerks /media.

    Stecken Sie Ihren USB-Stick ein.

    Es wird automatisch gemountet, wenn Sie es einfügen. Ihre USB-Partition muss im /mediaOrdner gemountet sein. Nehmen wir an, Ihr USB-Laufwerk ist im /media/xxxxOrdner gemountet. Führen Sie dann den folgenden Befehl aus:

    cp -a /media/iso/. /media/xxx
    

    Führen Sie den lsblkBefehl aus, um die USB-Gerätepartition zu ermitteln.

  • Fügen Sie dann die ldlinux.sysDatei in Ihre USB-Stick-Partition ein (in meinem Fall / dev / sdd1 ), um den USB-Stick bootfähig zu machen. Führen Sie dazu die folgenden Befehle aus:

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

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • boot-orderStarten Sie Ihren PC neu und ändern Sie das BIOS in USB. Jetzt wird Ihr Ubuntu-USB-Flash-Laufwerk hochgefahren und Sie können es installieren.

Diese Methode funktioniert für alle Linux-Distributionen, nicht nur für Ubuntu.


1

Ich habe dieses spezielle Problem mit der Ubuntu Live-Desktop-CD gelöst.

Durch das Booten der Live-CD auf einem Computer mit einem optischen Laufwerk konnte ich mithilfe der Ubuntu-Desktopanweisungen das USB-Stift-Installationsprogramm erstellen, ohne die vorhandene Installation zu berühren.


1

Sie können usb-creator hacken, um dies zu tun.

Sie sollten bereits eine einzelne vfat-Partition als Partition 1 auf dem USB-Gerät haben (der Schritt zum Löschen der Festplatte von usb-creator-gtk führt dies aus) und sie sollte als bootfähig markiert sein.

Als nächstes erhalten wir den Python-Code von usb-creator, der uns dabei hilft.

$ sudo apt-get install usb-creator

oder

$ bzr branch lp:usb-creator

erstelle eine datei mit diesem inhalt und bezeichne sie als usb-creator-cli, wenn du im letzten schritt bzr benutzt, lege diese datei in das usb-creator verzeichnis (root von bzr branch)

#!/usr/bin/env python
from __future__ import print_function
from usbcreator.misc import sane_path, setup_gettext, setup_logging, text_type

from usbcreator.install import install

sane_path()
setup_logging()
setup_gettext()

#/dev/sdb1 should be mounted on /mnt
#iso should be mounted to /iso
dev = '/dev/sdb1'
source = '/iso'
target = '/mnt' 
ugh = install(source, target, False, device=dev)
ugh.success = print
ugh.failure = print
ugh.progress = print
ugh.progress_message = print
ugh.progress_pulse = print
ugh.progress_pulse_stop = print
ugh.retry = print
ugh.run()

Mach es ausführbar

$ chmod +x usb-creator-cli

Nun mounten Sie Ihre ISO nach / iso und Ihr USB-Gerät nach / mnt

$ sudo mkdir /iso ; sudo mount ubuntu-server-12.10-amd64.iso /iso
$ sudo mount /dev/sdb1 /mnt

Wenn Sie sehr ausführliche Nachrichten an Ihrer Konsole haben möchten, können Sie ~ / .cache / usb-creator.log einstellen

$ tail -f ~/.cache/usb-creator.log &

Führen Sie nun das Skript usb-creator-cli aus

$ sudo ./usb-creator-cli

Und sehen Sie sich alle Nachrichten an.

Wenn Sie zur Eingabeaufforderung zurückkehren, vergessen Sie nicht, / mnt abzumelden, bevor Sie Ihr USB-Speichergerät ziehen.


-2

Sie können ein Befehlszeilen-Ubuntu (CLI) mit Alternate Install oder Mini iso installieren (das sollte auf Ihren 512-MB-Stick passen).

Dann installiere Crunchbang mit der alternativen Methode: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

Sie können auch die Lite-Version von CrunchBang ausprobieren, die kleiner als 512 MB ist.

Mit Unetbootin können Sie den USB-Stick vorbereiten.


Crunchbang? Haha?
RolandiXor

Ich habe kein Problem damit, die ISO auf dem Stick zu installieren (es sind 16 GB). Es geht vielmehr darum, wie ich einen USB-Stick erstellen kann, der in erster Linie mit der ISO startet und ihn ausschließlich über die CLI erstellt.
jg-faustus

Und unetbootin funktioniert leider nicht - es scheint Grafikunterstützung zu erfordern, auch wenn Sie es über die Befehlszeile ausführen.
jg-faustus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.