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 sfs
Bilddatei 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 686
Dateien durch die Dateien, auf die x86-64
ich 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 .iso
Image funktioniert also, indem es den iso
Image-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.img
Datei. 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 gdisk
und 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 fallocate
oder losetup
ich 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 ENTER
angezeigt 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 L
auf die letzte Eingabeaufforderung klicken, wird eine Liste aller verfügbaren Partitionstypen angezeigt. Sie benötigen jedoch einen Typ ef00
für die efi-Systempartition. Und du bist fast fertig.
Schauen Sie sich Ihre neue Partition an p
und folgen Sie ihr, w
wenn 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, rEFInd
was eigentlich eine Wiederbelebung eines älteren Projekts war und von demselben Typ geschrieben und gepflegt wurde, der geschrieben hat gdisk
.
Holen refind.bin.*.zip
Sie 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 loop
und verwenden Sie Ihr eigenes Gerät. -n
benennt 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 rEFInd
ein 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.conf
In 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.