Windows下安装QEMU并在qemu上安装ubuntu和debian
安装qemu:
下载qemu-w64-setup-20201124.exe,安装后设置好环境变量。
安装Debian:
下载:
建立磁盘:
DOS> cd F:\QEMU_DATA\Debian9.13\
DOS> F:
DOS> qemu-img.exe create F:\QEMU_DATA\Debian9.13\arm64.img 20G
启动qemu来安装debian:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -kernel linux -initrd initrd.gz -hda arm64.img -m 2048 -append “root=/dev/vda1”
从QEMU窗口的View菜单选择serial0作为输出tty。
然后就像正常安装debian一样一步一步选择安装即可(选镜像时选择国内镜像)。
安装完成按提示重启,又会进入安装状态选择语言的界面,这个时候不要再安装了,直接DOS窗口里面ctrl+c退出qemu,然后参考后面的“正常启动”步骤。
通过VNC连接来安装:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -vnc 0.0.0.0:1 -monitor stdio -kernel linux -initrd initrd.gz -hda arm64.img -m 2048 -append “root=/dev/vda1”
之后使用vnc连接到主机的59001端口,一样可以安装。
正常启动(windows没有免费好用的解压img文件的工具,需要挪到linux下操作把initrd.img和vmlinuz取出来):
把刚才安装完后生成的arm64.img拷贝到Linux机器上。
# parted arm64.img
(parted) unit
Unit? [compact]? B
(parted) print
Model: (file)
Disk /extended/disk6/android16/arm64.img: 21474836480B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1048576B 255852543B 254803968B ext2
2 255852544B 19425918975B 19170066432B ext4
3 19425918976B 21473787903B 2047868928B linux-swap(v1)
(parted) quit
# mkdir bbb
# mount -o loop,offset=1048576 arm64.img bbb
然后把bbb目录下的initrd.img-4.9.0-14-arm64和vmlinuz-4.9.0-14-arm64拷贝回windows机器和arm64.img相同目录下,再执行:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -kernel vmlinuz-4.9.0-14-arm64 -initrd initrd.img-4.9.0-14-arm64 -hda arm64.img -m 2048 -append “root=/dev/vda2“
同样可以通过VNC连接来正常启动:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -vnc 0.0.0.0:1 -monitor stdio -kernel vmlinuz-4.9.0-14-arm64 -initrd initrd.img-4.9.0-14-arm64 -hda arm64.img -m 2048 -append “root=/dev/vda2“
之后使用vnc连接到主机的59001端口,一样可以正常启动。
Debian网络配置:
首先在windows上安装openvpn的TAP网卡驱动,安装完之后有一个tap0的网卡生成。
把tap0和连接到外网的“以太网”做个桥接,会生成一个网桥,网桥会自动从dhcp服务器拿到地址,tap0和“以太网”不再有地址。
在启动的debian里面配置好ip、gateway、dns、netmask,ip地址和子网和windows网桥的地址在同一个子网,不要冲突。
再加上网络参数重启qemu:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -kernel vmlinuz-4.9.0-14-arm64 -initrd initrd.img-4.9.0-14-arm64 -hda arm64.img -m 2048 -append “root=/dev/vda2” -net nic -net tap,ifname=tap0
或者VNC启动:
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -vnc 0.0.0.0:1 -monitor stdio -kernel vmlinuz-4.9.0-14-arm64 -initrd initrd.img-4.9.0-14-arm64 -hda arm64.img -m 2048 -append “root=/dev/vda2” -net nic -net tap,ifname=tap0
安装resolv,解决/etc/resolv.conf丢失问题:
# apt-get install sudo
# apt-get install resolvconf
# service resolvconf start
# mkdir -p etc/resolvconf/resolv.conf.d/
# vi etc/resolvconf/resolv.conf.d/head
nameserver 114.114.114.114
# resolvconf -u
# service networking restart
# cat /etc/resolv.conf
安装clang编译器和lldb调试器:
用ssh或shell进入debian里面执行:
# apt-get install make
# vi /etc/apt/sources.list
deb http://llvm.org/apt/unstable/ llvm-toolchain-3.9 main
deb-src http://llvm.org/apt/unstable/ llvm-toolchain-3.9 main
# apt-get update
# wget -O – http://llvm.org/apt/llvm-snapshot.gpg.key| apt-key add –
# apt-get install clang-3.9 lldb-3.9
做成可选版本,优先级为1,后面可以增加更高版本,优先级设置为2/3等更高级别即可:
# update-alternatives –install /usr/bin/clang clang /usr/bin/clang-3.9 1 –slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.9
# update-alternatives –install /usr/bin/clang clang /usr/bin/clang-5.0 2 –slave /usr/bin/clang++ clang++ /usr/bin/clang++-5.0
# update-alternatives –install /usr/bin/lldb lldb /usr/bin/lldb-3.9 1 –slave /usr/bin/lldb-server lldb-server /usr/bin/lldb-server-3.9
安装Ubuntu(不能像Debian一样网络安装,只能直接运行cloud img):
先在linux下执行:
$ sudo apt-get install qemu-system-arm qemu-efi cloud-image-utils
$ dd if=/dev/zero of=flash0.img bs=1M count=64
$ dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=flash0.img conv=notrunc
$ dd if=/dev/zero of=flash1.img bs=1M count=64
$ cat >user-data <<EOF
#cloud-config
password: 123456
chpasswd: { expire: False }
ssh_pwauth: True
EOF
$ cloud-localds user-data.img user-data //做成image文件
$ sudo qemu-img resize bionic-server-cloudimg-arm64.img +20G //扩充根分区大小20GB
转移到windows下:
把flash0.img、flash1.img、user-data.img、bionic-server-cloudimg-arm64.img全部拷贝到windows下。
win下启动(网络还是象Debian一样做桥接):
DOS> qemu-system-aarch64.exe -machine virt-5.2 -cpu cortex-a72 -m 2048 -smp 2 -net nic -net tap,ifname=tap0 -pflash flash0.img -pflash flash1.img -drive file=user-data.img -drive if=none,file=bionic-server-cloudimg-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0