Es kann kein bootfähiger (Live-) USB-Flash für Arch Linux erstellt werden

7

Ich habe einen bootfähigen USB-Stick erstellt, von dem aus ich Arch installieren wollte. Ich habe das folgendermaßen gemacht:

sudo dd if=/path_to_arch_.iso of=/dev/sdX

Aber als ich versuchte, von diesem USB-Flash zu booten, schlug ich fehl. Es gab keinen Fehler, es konnte einfach nicht davon booten. Ich habe kürzlich eine ISO-Datei von der offiziellen Arch Linux-Website heruntergeladen, damit sie auf dem neuesten Stand ist. Zuvor konnte ich Mint, Elementary und Ubuntu von USB Flash erfolgreich installieren.

Es verhindert, dass ich auf folgende Weise boote:

Nachdem ich "Von USB booten" ausgewählt hatte, wurde mir 1 Sekunde lang ein schwarzer Bildschirm angezeigt und ich kehrte zu dem Menü zurück, in dem ich ein temporäres Startgerät auswählen musste. Als ich es wieder tat, wiederholte sich die Geschichte.

Was könnte die Ursache sein?

ア レ ッ ク ス
quelle
Manchmal kann Uefi oder ähnliche Konfigurationen dd'ed Flash nicht starten. Versuchen Sie stattdessen, Tools zu verwenden, die UEFI und BIOS unterstützen, wie Liveusb-Creator (es gibt es unter Fedora, Archlinux Aur Repo, Windows ( Fedorahosted.org/liveusb-creator )).
IBr
@IBr, ich brauche ein solches Tool für Linux (das ich unter Linux starten kann).
レ ッ ク
@IBr, sudo aptitude install liveusb-creator funktioniert nicht, es kann es nicht finden.
レ ッ ク
2
Können Sie bitte etwas mehr klarstellen? Auf welche Weise wurden Sie daran gehindert, das Laufwerk zu starten? War es nicht eine Option in Ihrem Boot-Menü? War es dort, aber die Auswahl führte nur zu einem schwarzen Bildschirm? Etc.
HalosGhost
2
Verwenden Sie keinen Liveusb-Ersteller. Wenn Sie versuchen, mit UEFI zu booten, müssen Sie die Festplatte nur richtig formatieren! Verwenden Sie gdiskund Ihre manSeiten!
Mikesserv

Antworten:

4

Also schreibe ich das so, wie ich es selbst mache. Ich habe gerade die neueste Arch ISO heruntergeladen und gemountet:

du archlinux-2014.04.01-dual.iso
535M    archlinux-2014.04.01-dual.iso

mkdir -p /mnt/iso
mount ./arch*iso $_
mount: /dev/loop0 is write-protected, mounting read-only

ls $_/arch
boot  x86_64  checksum.i686.md5    pkglist.i686.txt
i686  aitab   checksum.x86_64.md5  pkglist.x86_64.txt

Das meiste brauchst du dort oben nicht. Oder es ist besser zu sagen, dass Sie wahrscheinlich nur die Hälfte davon benötigen. Hier gibt es zwei Bilder - jeweils eines für 32- und 64-Bit-Computer:

ls $_/x86_64
root-image.fs.sfs

du $_
230M    /mnt/iso/arch/x86_64

Ich bin bereit zu wetten, dass Sie einen 64-Bit-Computer haben, wenn Sie mit Arch arbeiten, und daher macht die sfsBilddatei im obigen Verzeichnis den Großteil dessen aus, was Sie benötigen. Wenn es sich jedoch um eine 32-Bit-Maschine handelt, folgen Sie einfach, aber ersetzen Sie von nun an die 686Dateien durch die Dateien, auf die x86-64ich abzielen werde.

mkdir -p /mnt/img
mount /mnt/iso/EFI/archiso/efiboot.img $_
cd $_ ; ls
EFI  loader

cd EFI ; ls
archiso  boot  shellx64_v1.efi  shellx64_v2.efi

ls ./*/*
./archiso/archiso.img  ./archiso/vmlinuz.efi  
./boot/HashTool.efi  ./boot/bootx64.efi  ./boot/loader.efi

Das hybrid .isoImage funktioniert also, indem es den isoImage-Standard unterwandert und so etwas wie eine gefälschte Partition oder so etwas erstellt. Ich weiß nicht wirklich viel darüber, aber wenn Sie ein UEFI-System haben, befinden sich der Kernel und das Initramfs-Image, die Sie benötigen, in der efiboot.imgDatei. Sobald Sie das, was Sie brauchen, hier rausgezogen haben, brauchen Sie nur noch die andere Datei, auf die ich bereits hingewiesen habe. Also, jetzt werde ich loslegen gdiskund unsere Ziel-EFI-Systempartition vorbereiten. Es ist eine Art Kuchenwanderung.

OK, ich glaube, ich habe keinen USB-Stick zur Hand, also mache ich es einfach so:

fallocate --l $((650*1024*1024)) /tmp/bootimage
losetup -f --show -P $_
/dev/loop2

Sie möchten nicht verwenden fallocateoder losetupich zeige Ihnen nur, dass ich im Interesse einer vollständigen Offenlegung bin. Aber sonst mache ich das, was du tun musst. Da Sie beispielsweise wahrscheinlich einige sehr frühe Blöcke auf dieser Festplatte überschrieben haben, müssen wir sie löschen:

dd ibs=4M count=1 if=/dev/zero of=/dev/loop2

Jetzt kommen wir rein gdisk. Ersetzen Sie die /dev/...Gerätedatei, auf der sich Ihre USB-Festplatte befindet, durch meine /dev/loop2:

gdisk /dev/loop2
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present
Creating new GPT entries.Command (? for help): ?

Wenn Sie öffnen gdisk, sehen Sie etwas wie das oben Genannte. Klicken Sie auf ?das Menü:

b       back up GPT data to a file
c       change a partition's name
d       delete a partition
i       show detailed information on a partition
l       list known partition types
n       add a new partition
o       create a new empty GUID partition table (GPT)
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit
x       extra functionality (experts only)
?       print this menu
Command (? for help): o

Wir brauchen eine neue leere Partitionstabelle. Das ist o.

Sie müssen hier zustimmen:

This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Als nächstes brauchen wir eine Partition. Bei den folgenden Eingabeaufforderungen, bei denen der eingegebene Schlüssel nicht ENTERangezeigt wird, habe ich nur gedrückt , um dem Standard zuzustimmen:

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1331166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-1331166, default = 1331166) or {+-}size{KMGTP}: 500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00

Wenn Sie oben Lauf die letzte Eingabeaufforderung klicken, wird eine Liste aller verfügbaren Partitionstypen angezeigt. Sie benötigen jedoch einen Typ ef00für die efi-Systempartition. Und du bist fast fertig.

Schauen Sie sich Ihre neue Partition an pund folgen Sie ihr, wwenn Sie möchten, dass Ihre anstehenden Änderungen aufgeschrieben werden :

Command (? for help): p
Disk /dev/loop2: 1331200 sectors, 650.0 MiB
Logical sector size: 512 bytes
Disk identifier (GUID): E5D5A761-6AFA-48C6-9BA5-CED0DA2F62CA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1331166
Partitions will be aligned on 2048-sector boundaries
Total free space is 309180 sectors (151.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1024000   499.0 MiB   EF00  EFI System

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/loop2.
The operation has completed successfully.

Ich gehe davon aus, dass Sie einen Bootloader haben, aber Sie können auch einen auf Ihren USB-Stick legen, und das ist wirklich einfach. In der Tat werde ich Ihnen zeigen, wie Sie es einrichten, rEFIndwas eigentlich eine Wiederbelebung eines älteren Projekts war und von demselben Typ geschrieben und gepflegt wurde, der geschrieben hat gdisk.

Holen refind.bin.*.zipSie sich das, was Sie hier finden , und wir entpacken es auf unsere Festplatte. Kopieren Sie dann das Bogenbild und wir sind fertig.

Eigentlich brauchen wir definitiv zuerst ein Dateisystem. Ich bin froh, dass ich das tatsächlich mache, während ich es schreibe - wenn ich es vermisse, wäre das mit Sicherheit ein Dealbreaker gewesen.

mkfs.vfat -n ESP /dev/loop2
mkfs.fat 3.0.26 (2014-03-07)
Loop device does not match a floppy size, using default hd params

Ignorieren Sie das Zeug loopund verwenden Sie Ihr eigenes Gerät. -nbenennt die Partition. Ich benutze gerne ESP.

Ok, jetzt zu rEFInd:

mkdir /tmp/refind
unzip ~/Downloads/refind-bin-0.7.9.zip -d $_  
...
$_/ref*/install.sh --usedefault /dev/loop2
Not running as root; attempting to elevate privileges via sudo....
Installing rEFInd on Linux....
UnmountEsp = 1
Copied rEFInd binary files
Copying sample configuration file as refind.conf; edit this file to configure
rEFInd.
Installation has completed successfully.
Unmounting install dir

mkdir -p /mnt/bootdisk
mount /dev/loop2 $_

mkdir /mnt/bootdisk/EFI/arch_linux
cp /mnt/img/EFI/archiso/* -t $_
cp -R /mnt/iso/arch/*64* $_
cp -R /mnt/iso/arch/aitab $_
ls -lR $_
/mnt/bootdisk/EFI/arch_linux:
total 23328
drwxr-xr-x 2 root root     4096 Apr 22 02:09 x86_64
-rwxr-xr-x 1 root root      228 Apr 22 02:09 aitab
-rwxr-xr-x 1 root root 19882780 Apr 22 02:08 archiso.img
-rwxr-xr-x 1 root root       99 Apr 22 02:09 checksum.x86_64.md5
-rwxr-xr-x 1 root root     5142 Apr 22 02:09 pkglist.x86_64.txt
-rwxr-xr-x 1 root root  3979248 Apr 22 02:08 vmlinuz.efi

/mnt/bootdisk/EFI/arch_linux/x86_64:
total 234812
-rwxr-xr-x 1 root root 240447488 Apr 22 02:09 root-image.fs.sfs

Das macht es fast. Sie müssen rEFIndein wenig einrichten ...

echo '"ArchISO" "archisolabel=ESP archisobasedir=/EFI/arch_linux \
    copytoram rootwait initrd=EFI\arch_linux\archiso.img"'\
    >$_/refind_linux.conf

Das sollte Ihnen ein bootfähiges System geben. Bitte schauen Sie sich das Haupt- refind.confIn an ../BOOT- es ist sehr gut kommentiert und dokumentiert so ziemlich alles. Sie sollten auch zu rodsbooks.com gehen und dort die Dokumente lesen.

Ein letzter Hinweis. Wenn Sie das gleiche Material auf der Festplatte Ihres Systems auf der EFI-Systempartition ablegen würden, hätten Sie immer Zugriff auf die bootfähige Arch Live-CD.

mikeserv
quelle
Vielen Dank. Hinweis: Ich habe bereits nicht zugewiesenen Speicherplatz. Ich habe ihn früher von gparted erstellt.
レ ッ ク
@ Alex - na ja, dann keine Garantie. Ich gpartedpersönlich mag es wirklich nicht . gdiskist einfach - und es funktioniert die ganze Zeit im Gegensatz zugparted...
mikeserv
1
Das OP möchte nur eine Installationsdiskette erstellen: nichts davon ist notwendig ...
Jasonwryan
@ jasonwryan Das ist eine Installationsdiskette. Und genauer gesagt, eine separate Festplatte ist sowieso überhaupt nicht erforderlich. Obwohl ich tatsächlich nur das kopiere, was notwendig ist - nicht eingeschlossen rEFInd, das heißt.
Mikesserv
@mikeserv Das Archiso muss nur bearbeitet werden dd; Sagen Sie mir, warum dies entweder notwendig oder wünschenswert ist.
Jasonwryan
4

Der richtige Weg, dies zu tun, ist (wie im Arch Linux Wiki beschrieben )

# dd bs=4M if=/path_to_arch_.iso of=/dev/sdX && sync

mit GNU dd.

enedil
quelle
Ich habe etwas davon geschrieben. Zumindest war meine nicht zuverlässig. Ich habe meinen Kommentar trotzdem gelöscht. In jedem Fall benötigen Sie definitiv nicht beide Bilddateien. Und warum ein nicht kompatibles Dateisystem wie Hybrid ISO verwenden, wenn Sie es nicht müssen? Ich hätte lieber eine echte Partitionstabelle.
Mikesserv
Was ist GNU dd? Habe ich es nicht benutzt? Was ist der Unterschied zu meinem Code?
レ ッ ク ス
Sie verwenden GNU dd. Der Unterschied ist bs=4Mund syncBefehl. linux.die.net/man/2/sync
enedil
das hat auch bei mir nicht funktioniert. Vielleicht sollte ich eine CD anstelle von USB-Flash verwenden?
ス レ ッ ク ス
Sie können versuchen, obwohl der Befehl für mich funktioniert hat.
Ende
0

Ich habe eine Weile gebraucht, um zu verstehen, wie man einen Live-USB mit Arch Linux erstellt. Die Lösung ist einfach. Ich habe gerade geschrieben:

$ dd if=/adress/of/iso-file of=/adress/of/usb-stick/sda/not/sdaY/don't/write/the/partition/number

Ich habe viel mit dem Gnome Disk Utility gearbeitet und gparted. Es ist in Ordnung, die Partitionstabelle des USB-Sticks zu löschen.

Eine interessante Tatsache ist wichtig. Wenn dd mit nur 100-400 Dateien endet, ist ein Fehler aufgetreten. Manchmal dauerte es länger, aber ich brach ab, weil ich nicht so lange warten wollte. Dann habe ich es einmal gemacht, bis es fertig ist. Ich bin mir sicher, dass es ungefähr 20 Minuten gedauert hat und plötzlich wird dd mit ungefähr 10000 korrekt übertragenen Dateien angezeigt. Ich habe den Stick gebootet und alles funktioniert gut. Ich wusste nichts über die Anzahl der Dateien und ich denke, wenn Sie es so machen wie ich (wie Sie sehen, habe ich den Teil bs = nicht verwendet) und ungefähr 30 Minuten warten, sollte alles in Ordnung sein.

Ein USB 3.0-Stick kann Ihnen wirklich helfen.

user371780
quelle
1
(1) Wie unterscheidet sich das, was Sie getan haben, von dem, was das OP getan hat? (2) Worüber sprichst du mit dd-Übertragungsdateien? ... ... ... ... ... ... ... ... ... ... ... ... ... (3) Beachten Sie, dass diese Antwort (bis hinunter zu den gleichen Fehlern) identisch ist diese auf Super User (mit dem gleichen neuen Benutzer).
G-Man sagt 'Reinstate Monica'