Requirement:
x86 架构的Ubuntu系统
本次安装选用Debian ARM
需要的文件:
kernel
initrd
Debian-ARM iso
0x0000
安装 QEMU 虚拟机
sudo apt-get install qemu-system-arm
1. 创建一个directory来存放相关文件
mkdir qemu_debian && cd qemu_debian
2. 获取kernel 和 initrd (7.9 Wheezy 版本)
wget http://ftp.debian.org/debian/dists/Debian7.9/main/installer-armel/20130430/images/versatile/netboot/initrd.gz
wget http://ftp.debian.org/debian/dists/Debian7.9/main/installer-armel/20130430/images/versatile/netboot/vmlinuz-3.2.0-4-versatile
3. 获取iso文件
wget http://get.debian.org/cdimage/archive/7.9.0/armel/iso-cd/debian-7.9.0-armel-netinst.iso
0x0001
1. 创建虚拟硬盘 (大小随意)
qemu-img create debian.img 20G
2. 载入 ARM kernel, initrd 以及ISO
qemu-system-arm -M versatileab -kernel ./vmlinuz-3.2.0-4-versatile -initrd ./initrd.gz -cdrom ./debian-7.9.0-armel-netinst.iso -hda debian.img
这个时候, qemu已经成功启动, 可以按需安装debian arm系统
0x0002
系统安装完成后, 需要抽出kernel和initrd并复制到我们的虚拟硬盘里, 这个有一个地方要稍微注意一下. 因为/root 的分区有偏移量, 所以直接挂载是挂载不上的.
sudo fdisk -l -u debian.img
运行上面的命令可以看到有2048个unit的偏移量, 一个unit是512个bytes
所以正确的挂载应该加上这2048的偏移量.
sudo mount -o loop,offset=$((2048 * 512)) debian.img /mnt
抽出的步骤就简单多了
mkdir boot
cp /mnt/boot/* boot/ -rv
至此, 基于QEMU搭建ARM架构的虚拟机已经完成
0x0003
启动虚拟机并将端口转发到2222以便ssh登陆
qemu-system-arm -M versatileab -kernel ./boot/vmlinuz-3.2.0-4-versatile -initrd ./boot/initrd.img-3.2.0-4-versatile -hda debian.img -m 1024 -append "root=/dev/sda1" -redir tcp:2222::22
这样启动虚拟机之后, 就可以ssh到localhost的2222端口登陆了.