Ubuntu 上的 ARM 虛擬機

Ubuntu 上的 ARM 虛擬機

我正在跟進本指南在Ubuntu上安裝虛擬ARM環境。

  • 我安裝了 linaro 和 qemu 軟體包:

sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get install linaro-image-tools qemu-user-static qemu-system

  • 交叉編譯器:

sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi

  • 下載 Linaro 版本和硬體套件:

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

  • 建立虛擬機器磁碟鏡像:

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

我失敗了提取內核和 initrd。說明說要運行:

sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } /partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp

但我收到錯誤:

安裝:無法解析安裝選項

指南中有一條註釋說:

文件的實際名稱在您的建置中可能略有不同。

那麼有人知道如何修改最後一行以適應 Ubuntu 嗎?

答案1

sudo mount -o loop,offset="$(file vexpress.img | awk 'BEGIN { RS=";"; } \
/partition 2/ { print $7*512; }')" \
-t auto vexpress.img /mnt/tmp

上面的命令做的事情其實很簡單:它找到鏡像的分區2的起始扇區vexpress.img,將其乘以512,並將結果作為偏移量掛載為循環設備。

mount命令接受偏移值位元組。每個磁區有 512 位元組,因此將起始磁區偏移量乘以 512 將得出起始偏移量(以位元組為單位)。

這是執行此操作的另一種方法:(我以原始 raspbian 映像為例)

  1. 求偏移量:

    $ 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
    

分區二的起始偏移量是137216。與您的一樣vexpress.img,分區 2 是我們感興趣的根分區。

  1. 簡單的數學:

    $ perl -e "print 137216*512"
    70254592
    
  2. 安裝它:

    sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp
    

相關內容