本文来自依云's Blog,转载请注明。
准备
首先检查 CPU 支持。需要 CPU 支持虚拟化的。
grep -E "(vmx|svm|0xc0f)" --color=always /proc/cpuinfo
没输出就没戏了。现在的 CPU 一般都支持的。
然后是内核支持。
zgrep CONFIG_KVM /proc/config.gz zgrep 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/sh exec 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 1G \ -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
脚本启动这个虚拟机啦。
Jul 16, 2014 12:25:40 AM
为啥不用virt-manager呢……libvirt可以以daemon运行KVM的,图形界面还可以用它来走qxl/spice,支持远程操作的。而且不需要写命令。
Jul 16, 2014 12:18:07 PM
我就是不想走图形啊。
Jul 20, 2014 01:11:43 AM
kvm 在我這好慢。無論怎麼優化,安裝 Win2003 最好成績是 38 分鐘,vbox 僅要 17 分鐘。
Dec 31, 2014 12:40:55 AM
你好 怎么能用kvm啊
Dec 31, 2014 11:10:07 AM
文章第一节说的就是。
Dec 31, 2014 09:52:09 PM
就是说 arch里 用qemu的 -enable-kvm 等于 qemu-kvm了吗
Dec 31, 2014 10:28:38 PM
嗯。
Dec 31, 2014 10:37:34 PM
明白了 但是怎么进行管理呢 今天试了 可以用脚本开启 但是怎么能让虚拟机后台运行 想看的时候再打开呢 用了virt-manager 提示没有spice
Dec 31, 2014 10:43:12 PM
这个我也不知道呢。反正我有 tmux,偶尔用用的话也不缺终端。
Dec 31, 2014 10:45:26 PM
我想装win7 用终端肯定不够 不过还是谢谢了 我再查查
Feb 19, 2017 05:14:39 PM
virt-manager 图形方式安装,操作系统类型里面居然没有archlinux,是不支持么?
Feb 19, 2017 05:21:15 PM
host是archlinux,用KVM,在virt-manager图形界面安装archlinux,操作系统类型很多,就是没 有archlinux.
Feb 19, 2017 05:38:31 PM
没用过 virt-manager 呢。
Feb 19, 2017 06:17:13 PM
我努力,争取早日放弃图形界面 :)
Feb 19, 2017 08:21:46 PM
操作系统类型选择generic之后可以正常安装archlinux,但移动鼠标进入guest后,鼠标只能在guest里面移动,不能在host与guest之间平滑移动,需要用ctrl+alt组合键释放鼠标,才可以在host中移动鼠标。
继续努力解决中...
Feb 19, 2017 08:22:51 PM
另一个guest(windows7),鼠标平滑移动正常。
Feb 24, 2017 09:56:04 AM
依云:
我记得你好像提到过,用另一个发行版引导,可以做到图形化安装archlinux,但忘记在哪看到了,能再大概告诉我一下么?
谢啦!
Feb 24, 2017 10:02:45 AM
还是命令行安装,只不过是同时你还可以开着浏览器什么的。
在 ArchWiki 上,你从安装教程的所在的分类找就能找到: https://wiki.archlinux.org/index.php/Install_from_existing_Linux
Feb 24, 2017 10:04:19 AM
这么快回复, 先赞一个,我这就去找..
Mar 29, 2017 05:45:10 PM
折腾好久,发现根本用不到,因为我基本是使用KVM了,host只装一次就不用再动。
以后也不折腾图形了,真心没必要。
Mar 29, 2017 05:47:38 PM
大神,KVM guest正常使用了,想让arch host所有软件都联不了互联网,只允许kvm guest可以联互联网(我只用kvm guest上网),有什么好办法没,指点则个?
Mar 29, 2017 08:20:07 PM
不知道你的 KVM 网络是怎么配置的。要禁止访问网络的话,用 iptables 呀。可以按源 IP 限制,也可以按用户限制。
Mar 29, 2017 08:48:35 PM
很想追问,但下班了,明天再说,你休息,我先琢磨着。
Apr 05, 2017 10:34:34 AM
这几天使劲研究了一下iptables,有点复杂了,基本是按端口和ip来设定规则,无从下手的感觉。
===
我的应用环境比较简单,就一台电脑(archHost),里面kvm guest的网卡是NAT方式上网,需求主要是在Host,希望Host里面所有的软件都不能连接internet,除了kvm guest,因为我上网和下载什么的,都在guest里。当然,偶尔需要archHost滚动升级一下。
大神,指点下~
Jun 10, 2017 01:08:48 PM
收藏依云大大这篇文章,有时间就开始折腾。
忘记多久前我在找虚拟机方案的时候也看到过kvm,
看到介绍说的那么厉害的样子,也折腾了一段时间,最后因为急着用虚拟机,还是直接上的virtualbox解决问题。
现在也没重新开始学kvm,
Jun 12, 2017 11:39:22 AM
我平时也是用 vbox 的。这次是在服务器上不方便用 vbox 所以才用了 kvm。
Oct 10, 2019 03:04:18 PM
KVM和VBOX不能一起运行呀。
我用的virt-manager作为图形管理工具,设置开机自启libvirt后,当启动VBOXd的时候就报错了。
当取消自启动libvirt,启动VBOX时使用KVM就报错了
Unable to complete install: 'internal error: process exited while connecting to monitor: ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy
2019-10-10T06:44:53.219277Z qemu-system-x86_64: failed to initialize KVM: Device or resource busy'
先入手KVM玩,回头VBOX转KVM,VBOX装个Win好像有些浪费啊。如果单纯图形占优的话好像没多大帮助(不玩游戏视频啥的),顶多装个arch不支持的exe软件而已。还有就是guest VPN代理给host使用(这个应该和仙子之前写的在vbox上代理一样吧)
上手后再尝试仙子的NO GUI安装大法。KVM毕竟可以当成一门技术栈来玩。
Oct 10, 2019 04:31:12 PM
仙子我再追问下,脱离GUI的kvm可以像Vbox一样切换应用吗?
我是用平铺桌面Bspwm,仙子上面装的arch如果带图形桌面支持直接鼠标键盘控制KVM里的系统吗?还是需要借用VNC软件冲host连到guest操作?
(仙字的博客图形验证码不支持点击切换啊,要F5页面)
Oct 10, 2019 04:40:48 PM
可以的。QEMU 有窗口模式,不过菜单里的中文显示不出来所以建议先用英文 locale 熟悉一下,以免键鼠进虚拟机了出不来。
Oct 10, 2019 04:41:26 PM
vbox 现在在一些情况下也会使用 kvm 了,所以大概是冲突了吧。你可以在设置里改改看。