在 Debian 网关上运行 Windows 10 ㈠:制作系统镜像

@zen
2017年4月13日

最近数次听 @ajc 唠叨说要把他的 Hyper-V Server 升级至最新的 2016 版本,让我颇为羡慕——毕竟有些事情还是 Windows 擅长,比如迅雷,你们也懂的!但我个人又一直是 Debian 的忠实粉丝,家里的网关就是用 Intel Braswell N3150 架构跑 Debian 实现的。怎么办呢?

1.1 qemu-kvm#

经过一番寻觅之后,很惭愧地发现,其实 Hyper-V 这样的技术在 Linux 的世界中早已不是什么新鲜事——我该说一句「やっぱり」么…

这种技术就是 QEMU,据大家说不算最快、但泛用性毫无疑问最广的虚拟化工具。

而且在此基础上,RedHat 贡献了 KVM(Kernel-based Virtual Machine,基于内核的虚拟机),充分利用了 CPU 和 Linux 系统内核的特性,以提高 QEMU 的效率。

那么,当 CPU 具备虚拟化特性(vmxsvm)时,就可以很高效地使用 qemu-kvm 来制作虚拟机了。

egrep -q '(vmx|svm)' /proc/cpuinfo && echo bingo!

在终端中执行上述指令,如果能看到 bingo! 字样,就说明条件满足。然后就可以执行下面的指令进行安装了。

apt-get install qemu-kvm -y

1.2 通过 VNC 与虚拟机 GUI 交互#

以前之所以从来没有玩过这一块的技术,主要是很弱智地没有想明白——没有 GUI 的终端如何去满足虚拟机的 GUI 要求——我个人一直很抗拒在服务器上给 Debian 安装 GUI,从来都是以终端模式在跑…

不用去管 VNC 是如何去模拟显示设备的——吃肉的人无需一定得是农民或者屠夫——总之我知道了 VNC 可以为 QEMU 提供 GUI 显示和交互支持。这就够了!

而且!现在 QEMU 自身就提供了 VNC 支持,无需额外再去安装和配置其它的 VNC 工具或服务器!(在这个地方被一些陈旧的中文教程坑了一脸血…)

1.3 安装 Windows 10#

假定我们已从微软官网下载好了 Windows 10 镜像 Win10_1703_China_GGK_Chinese(Simplified)_x64.iso(其实任意版本都可以),那么现在就可以来安装系统了。

必须要吐槽地是,官网里 Windows 10 镜像还分成了 Creators UpdateAnniversary Update 两大类!完全弄不懂这是什么鬼…

另外值得一提地是,我现在非常亲睐基础版本的 Windows ——有家庭版就不要专业版,有基础版就不要高级版——因为那些高级的、专业的功能除了浪费我的磁盘空间和内存,对我产生不了任何价值。而唯一的例外 RDP(Remote Desktop Protocol,远程桌面) 如今有了一套非常棒的第三方工具 RDPWrap,完全不用为了这个功能而忍受太多 8-p

不过比较尴尬地是,我下载的这个版本“太新”,以至于 RDPWrap 还没来得及支持…短时间内用不了 RDP 功能 :-(

为虚拟机创建第一块硬盘做系统盘,

qemu-img create win10.qcow2 30G

然后创建临时虚拟机来安装系统,

kvm \
  -machine accel=kvm \
  -cpu host -smp 2 \
  -m 2048 -soundhw es1370 \
  -usb -usbdevice tablet \
  -vnc :1 \
  -net nic,model=e1000 -net user \
  -drive file=win10.qcow2 \
  -cdrom Win10_1703_China_GGK_Chinese\(Simplified\)_x64.iso

此时,主机的 5901 端口应该已启用为 VNC 服务,通过下述指令可以确认:

netstat -anltp | grep 5901

随便选用什么 VNC 客户端,比如我用的 RealVNC 家的,连接至主机 5901 端口,开始正常操作即可。

如果,Windows 10 在安装过程中很不幸地出现下面列举地情况,可以尝试将上文中 KVM 指令的 -cpu host 参数临时调整为 -cpu core2duo,+nx。安装完成之后仍然可以改回来,不影响启动,也不影响激活!

  • 五分钟内仍然假死在纯蓝色 LOGO 的引导界面,看不到安装程序窗口;
  • 一定时间之后直接蓝屏报错。

1.4 制作基础镜像#

完成各种基础自定义操作之后,我们可以将虚拟机系统盘制作成基础镜像,以备后用。

先关闭虚拟机。

然后对虚拟机系统盘进行磁盘整理,

qemu-img convert -c -O qcow2 win10.qcow2 win10.img

并删除原本的虚拟机系统盘,

rm -f win10.qcow2

我自己做出来的激活过的 Windows 10 家庭中文版基础镜像文件大小是 6.7G,你的呢?

1.5 创建真实虚拟机#

假定你和我一样,也想来一个迅雷专用虚拟机,命名为 thunder

我们先为这个 thunder 虚拟机创建系统盘,

qemu-img create -f qcow2 -b win10.img thunder.qcow2

别担心,这个 thunder.qcow2 文件初始才 193K

然后创建虚拟机实例即可,

kvm \
  -machine accel=kvm \
  -cpu host -smp 2 \
  -m 2048 -soundhw es1370 \
  -usb -usbdevice tablet \
  -vnc :1 \
  -net nic,model=e1000 -net user \
  -drive file=thunder.qcow2

完工!