
Ich folgedieser Leitfadenum eine virtuelle ARM-Umgebung auf Ubuntu zu installieren.
- Ich habe die Pakete Linaro und QEMU installiert:
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get install linaro-image-tools qemu-user-static qemu-system
- Cross-Compiler:
sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
- Eine Linaro-Version und ein Hardwarepaket heruntergeladen:
wget http://releases.linaro.org/platform/linaro-n/nano/alpha-3/linaro-natty-nano-tar-20110302-0.tar.gz
wget http://releases.linaro.org/platform/linaro-n/hwpacks/alpha-3/hwpack_linaro-vexpress_20110302-0_armel_supported.tar.gz
- Ein VM-Disk-Image erstellt:
linaro-media-create --image_file vexpress.img --dev vexpress \
--binary linaro-natty-nano-tar-20110302-0.tar.gz \
--hwpack hwpack_linaro-vexpress_20110302-0_armel_supported.tar.gz
Ich scheitere anExtrahieren des Kernels und des Initrd. In der Anleitung steht:
sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } /partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp
Aber ich erhalte die Fehlermeldung:
mount: Mount-Optionen konnten nicht analysiert werden
In der Anleitung gibt es einen Hinweis, der besagt:
Die tatsächlichen Namen der Dateien können in Ihrem Build leicht abweichen.
Weiß also jemand, wie man diese letzte Zeile so ändert, dass sie auf Ubuntu passt?
Antwort1
sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } \
/partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp
Was der obige Befehl macht, ist eigentlich einfach: Er findet den Startsektor der Partition 2 des Images vexpress.img
, multipliziert ihn mit 512 und verwendet das Ergebnis als Offset, um es als Loop-Gerät zu mounten.
Der mount
Befehl akzeptiert Offsetwerte inByte. Jeder Sektor hat 512 Bytes, wenn man also den Startsektor-Offset mit 512 multipliziert, erhält man den Start-Offset in Bytes.
Hier ist eine alternative Möglichkeit, dies zu tun: (Ich nehme als Beispiel ein Roh-Raspbian-Image)
Finden Sie den Offset:
$ fdisk -lu 2016-09-23-raspbian-jessie-lite.img Disk 2016-09-23-raspbian-jessie-lite.img: 1.3 GiB, 1389363200 bytes, 2713600 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x5a7089a1 Device Boot Start End Sectors Size Id Type 2016-09-23-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA) 2016-09-23-raspbian-jessie-lite.img2 137216 2713599 2576384 1.2G 83 Linux
Der Start-Offset von Partition zwei ist 137216
. Wie bei vexpress.img
ist Partition 2 die Stammpartition, die uns interessiert.
Einfache Mathematik:
$ perl -e "print 137216*512" 70254592
Montieren Sie es:
sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp