在远程FreeBSD服务器上命令行安装运行虚拟Windows

/ns/wz/sys/data/20100215042851.htm

作者:NetDemon
email:netdemon@20cn.net
http://www.20cn.net/
本文版权属20CN网络安全小组所有,允许转载,但需保持文章的完整性并注明出处

在过去的几年中 FreeBSD 并没有任何可用的并被官方支持的虚拟化解决方案。只有使用利用 Linux 二进制兼容层运行的 VMware3 这个老得牙齿已经掉关开始牙龈的版本。在 FreeBSD 7.2 发布不久, Sun 的开源版本 (Open Source Edition OSE) 的 VirtualBox 作为一个 FreeBSD 原生的程序出现在了 Ports Collection 中。VirtualBox 是一个开发非常活跃的开源虚拟化软件, 并且可在大部份的操作系统上使用, 包括 Windows, Mac OS, Linux 和 FreeBSD。同样也能把 Windows 或 UNIX 作为客户系统运行。
下面我们就来安装VirtualBox并在它下面运行一个Windows2003.而这些操作,是在一个远程的没有X图形界面的FreeBSD系统上进行的。

首先升级Ports中的VirtualBox到3.1.2版本(本文发表的时候VirtualBox官方已有3.1.4版,你update到的可能已经是3.1.4)

# portsnap fetch update

编译VirtualBox,
# cd /usr/ports/emulators/virtualbox-ose-kmod && make
# cd ../virtualbox-ose && make

如果编译成功,那么卸除原先安装的VirtualBox(如果有的话)
# pkg_delete virtualbox-\*

安装VirtualBox
# cd ../virtualbox-ose-kmod && make install clean
# cd ../virtualbox-ose && make install clean

配置VirtualBox
在/boot/loader.conf里添加
vboxdrv_load="YES"
在/etc/rc.conf里添加
vboxnet_enable="YES"

重启系统
#shutdown -r now

(!!!如果vboxdrv加载失败,说明FreeBSD内核需要升级到8.0或以上)

创建Windows的虚拟机
$ VBoxManage createvm --name Win2003 --register

创建虚拟机所需的磁盘空间
$ VBoxManage createhd --filename Win2003.vdi --size 10000 --variant Standard

创建虚拟机所需的存储控制器以及虚拟CD/DVD 设备
$ VBoxManage storagectl Win2003 --name "IDE Controller" --add ide --controller PIIX4

添加磁盘设备到虚拟机
$ VBoxManage storageattach Win2003 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Win2003.vdi

挂载需要安装系统的ISO 文件
$ VBoxManage storageattach Win2003 --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /home/netdemon/test/win2003setupdics.iso

配置虚拟机网卡(桥接模式):
$ VBoxManage modifyvm Win2003 --nic1 bridged --cableconnected1 on --bridgeadapter1 fxp0(这是你实际的物理网卡在ifconfig的名称)

好了,所有的配置已经完成,可以启动虚拟机了
$ VBoxManage startvm Win2003 --type headless

那么,启动了吗?显然我们不可能指望在一个SSH的客户端上看到图形界面。
$ ps -aux
如果你看到有VBox*的进程在运行,那么恭喜你,这说明你的配置是没有问题的,如果没有,那么
$ cat /你的用户目录/.VirtualBox/Machines/Win2003/Logs/VBox.log
看看配置上哪里错了。根据你的实际情况做出修改,直到可以看到VBox*的进程。

但就算虚拟机正确运行了,虚拟机上的Win2003现在肯定也还没发正常运行,为什么呢?不还没有安装么,那来的Win2003系统?在当前的条件下,win2003setupdics.iso这个安装光盘成了成败的关键,这必须是一个事先做好的无人守护并根据你的实际条件配置好网络环境的安装光盘才行。如果这样,在你启动虚拟机之后,它将自动的安装Win2003.之后你就可以通过远程桌面访问这个Win2003了,这也就是为什么选择2003的原因,因为它默认开放了3389。如何做一个这样的光盘不是本文的讨论范围,网上有很多这方面的相关资料。作为变通,我们也可以在本地机器比如WinXP上安装VirtualBox,并在图形界面下安装并配置好虚拟的Win2003,然后把这个装好的win2003.vdi虚拟硬盘文件上传覆盖FreeBSD上的那个。

到此,虚拟的Windows2003已经完全可以正常工作了,通过3389连接,你绝对感觉不到你操作的竟然是虚拟机。这文章,就是在这虚拟的Win2003下重新编辑的。在此之前,我在这上装了个QQ,并在一个群里勾引了一个小女孩,罪过啊罪过....

PS:
如果你没有留意到创建虚拟机之前的命令提示符是#而创建虚拟机之后的都是$。那说明你真的不够聪明。 :) 没错,这虚拟机是不需要root权限就能运行的,这就意味着就算有比你聪明的黑客把你这Win2003黑了,把你硬盘格式化了,接着再把你BIOS都毁了,你还是完好无损的,所有比你聪明的行为都变成了愚蠢行为。