kvmtool是一款精简的虚拟化工具,堪称精简版的qemu只不过只能起跟host架构一致的虚拟机,本文介绍怎么从用kvmtool起虚拟机。
1首先从github上下载kvmtool的源码,
git clone https://github.com/kvmtool/kvmtool.git
cd kvmtool && make
这样就会得到lkvm这个kvmtool的用户态工具。
2用lkvm起虚拟机:
要起虚拟机首先要有kernel,initrd 和rootfs,前两个很容易得到,只要到你的/boot下面把可用的vmlinuz-xx和initrd-xx拿过来就好了,rootfs就要自己做了。
2.1制作rootfs:
2.1.1首先下载对应你机器架构的roofs tar包,对于amd64 可以:
wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-root.tar.xz ,这是一个xz压缩的包
xz -d xenial-server-cloudimg-amd64-root.tar.xz && mkdir rootfs && tar -xvf xenial-server-cloudimg-amd64-root.tar -C rootfs
得到的rootfs只是rootfs文件树还不用来起虚拟机,但是要作为制作真正的rootfs的基础,在制作之前我们要改一下root用户的密码,不然即使虚拟机启动成功也不能登陆进去。改密码很容易,只要将你本机上/etc/shadow文件中的root哈希值替换rootfs的shadow文件中的哈希值即可,这样你就可以用跟你本机一样的登陆密码了。
2.1.2 制作rootfs镜像
(1)新建一个用于挂在的文件这里是ext2_rootfs
dd if=/dev/zero of=rootfs.ext2 bs=100M count=50
losetup /dev/loop1 rootfs.ext2
mke2fs -m 0 /dev/loop1 5120000
mount -t ext2 /dev/loop1 ./ext2_rootfs/
(2)向ext2_rootfs中复制刚才的rootfs文件树中的东西
(3)卸载
umount /dev/loop1
losetup -d /dev/loop1
这样我们就得到了可用的rootfs镜像--rootfs.ext2
起虚拟机:
./lkvm -k vmlinuz--xx \
-i initrd--xx \
-d rootfs.ext2 \
-m 2048
enjoy!