本文来自依云’s Blog,转载请注明。
准备
首先检查 CPU 支持。需要 CPU 支持虚拟化的。
grep -E "(vmx|svm|0xc0f)" --color=always /proc/cpuinfo
没输出就没戏了。现在的 CPU 一般都支持的。
然后是内核支持。
zgrep CONFIG_KVM /proc/config.gzzgrep CONFIG_VIRTIO /proc/config.gz
官方内核是支持的。
最后是用户态软件。Arch Linux 一向不怎么分包,安装 qemu 这个包就可以了。
哦对了,要安装 Arch 的话,还要准备它的安装镜像。
开始啦
一切就绪。
先创建虚拟机所用的磁盘文件。
qemu-img create -f qcow2 ArchVM.img 15G
这样就创建了一个 15G 容量的 qcow2 格式虚拟磁盘文件。之所以选用 qcow2,是因为它支持「母镜像」功能,对应于 Virtual Box 的差分存储。
然后就可以启动系统了。为了避免老是输入一长串命令,遵循 Gentoo Wiki 的建议,我们创建一个脚本:
#!/bin/shexec qemu-system-x86_64 -enable-kvm \ -cpu host \ -drive file=$HOME/ArchVM.img,if=virtio \ -netdev user,id=vmnic,hostname=archvm,hostfwd=tcp:127.0.0.1:2222-:22 \ -device virtio-net,netdev=vmnic \ -m 256M \ -curses \ -name "Arch VM" \ "$@"
注意到这里我已经加上了hostfwd
参数,将虚拟机的 22 端口映射到 host 的 2222 端口上,方便以后通过 ssh 连接。
我这里指定了-curses
参数,它将虚拟机的显示器直接使用 curses 库显示在当前终端上。当然能显示的只有显示器处于文本模式的时候,图形模式就只能知晓当前分辨率了。因为我是在服务器上使用,所以加上这个参数。当然你也可以使用 VNC 去连。
然后执行命令:
./startvm -boot once=d -cdrom path_to_file.iso
首先从光驱启动一次(once=d
),重启之后恢复到默认的从硬盘启动。
系统启动啦~然后就会发现引导器 isolinux 把显示器切换到图形模式了……
不过还好。Arch 的引导界面我们知道。按Tab,然后输入<Space>nomodeset并回车。不过待会进系统里,KMS 之后一直是图形模式就什么也看不到了。
然后进入系统安装啦。注意硬盘设备是/dev/vda
。当然也要注意安装并让 sshd 在开机时启动,虽然说有 curses 模式的「显示器」也可以用。
装好之后、重启之前还要注意一点,把/boot/grub/grub.cfg
包含gfx
和load_video
之类的地方都去掉,不然会进图形模式的。
装好后就 reboot 吧。如果一切顺利的话就能看到已经安装好的 Arch 登录提示符了。
好不容易装好了系统,当然要把它作为母镜像,所有后续的修改放子镜像上啦:
qemu-img create -f qcow2 -b ArchVM.img ArchTest.img
然后修改一下启动脚本。以后就可以用./startvm
脚本启动这个虚拟机啦。
参考文章KVM – ArchWikiKvm教程 – Ubuntu中文QEMU/Linux guest – Gentoo Wiki