我正在跟进本指南在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 图像为例)
求偏移量:
$ 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 是我们感兴趣的根分区。
简单的数学:
$ perl -e "print 137216*512" 70254592
安装它:
sudo mount -o loop,offset=70254592 vexpress.img /mnt/tmp