近日因为公司IT提供的接口返回的数据只能用windows环境去解析, 可我处所有服务器已经完成了全linux进化,所以只好找了台空闲的ubuntu server去Virtualbox一个windows 2008.
根据Oracle Virtualbox官方的统一叫法,ubuntu系统是host,而要安装的windows 2008是guest.
其中host的信息为:

Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-25-generic x86_64)

而guest的镜像信息为:

cn_windows_server_2008_r2_X64_standard_enterprise

可以看到,这两个系统都是64位的。
首先在host中为virtualbox的apt-secure配置公钥信息:

wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

然后在/etc/apt/sources.list添加下列行:

deb http://download.virtualbox.org/virtualbox/debian vivid contrib

该处需要根据你系统的发行版本, 将 ‘vivid’ 替换为 ‘utopic’, ‘trusty’, ‘raring’, ‘quantal’, ‘precise’, ‘lucid’, ‘jessie’, ‘wheezy’, 或 ‘squeeze’.我的是trusty,所以添加完变为:

deb http://download.virtualbox.org/virtualbox/debian trusty contrib

然后安装virtualbox-5.0:

sudo apt-get update
sudo apt-get install virtualbox-5.0

安装完成会自动在dkms中注册virtualbox的核心模块,以保证各模块随系统自动更新。如果没有dkms,需要安装:
sudo apt-get install dkms
如果出现签名认证错误“The following signatures were invalid: BADSIG …”,需要执行下列操作:

# sudo -s -H
# apt-get clean
# rm /var/lib/apt/lists/*
# rm /var/lib/apt/lists/partial/*
# apt-get clean
# apt-get update

安装成功后,因为是server版本的ubuntu,我们需要灵活使用vboxmanage这个工具进行虚拟机创建、安装、删除等一系列操作。
切换到root用户下,保证权限足够大:
sudo su
然后在virtualboxHD目录下创建一个虚拟机所需要的硬盘,50G足够:

vboxmanage createhd --filename virtualboxHD/win2008server --size 50000

然后创建一个名字为win2008x64的guest虚拟机,这个ostype很重要,一定要选择对了,查看支持的系统类型:

VBoxManage list ostypes

创建过程:

vboxmanage createvm --name='win2008x64' --ostype='Windows2008_64' --register

然后指定guest使用的内存为1个G:

vboxmanage modifyvm "win2008x64" --memory 1024

创建硬盘控制器,并将刚创建的硬盘和镜像挂载上:

vboxmanage storagectl "win2008x64" --name "IDE Controller" --add ide --bootable on
vboxmanage storageattach "win2008x64" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium virtualboxHD/win2008server.vdi
vboxmanage storageattach "win2008x64" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium Win2008_R2_x64fre_server_eval_zh-cn-GRMSXEVAL_CN_DVD.iso

接下来指定网络类型为桥接,并指定控制guest的端口:

vboxmanage modifyvm "win2008x64" --nic1 bridged
vboxmanage modifyvm "win2008x64" --bridgeadapter1 eth0
vboxmanage modifyvm "win2008x64" --vrde on
vboxmanage modifyvm "win2008x64" --vrdeport 6000
vboxmanage modifyvm "win2008x64" --vrdeaddress 10.103.236.182

该处的vrdeaddress就是Host的ip地址。
控制guest的权限认证为自定义:

vboxmanage modifyvm "win2008x64" --vrdeauthtype external
vboxmanage modifyvm "win2008x64" --vrdeauthlibrary VBoxAuthSimple

然后生成一个密码:

vboxmanage internalcommands passwordhash "密码"

将密码配置到用户名上:

vboxmanage setextradata "win2008x64" "VBoxAuthSimple/users/用户名" "生成的密码"

然后就可以启动guest了:

vboxmanage startvm "win2008x64" --type headless

用自己PC电脑打开远程桌面(mstsc),使用刚生成用户名和密码,就可以连接到10.103.236.182:6000, 观察guest的系统安装情况。此时发现guest无法正常安装系统,错误提示:
…cpu is not compatible with 64-bit mod
回到host命令行,关闭guest:

vboxmanage controlvm "win2008server" poweroff

然后修改CPU,让它支持64位系统:

vboxmanage setextradata "win2008x64" VBoxInternal/CPUM/CMPXCHG16B 1

再启动guest,发现还是有同样的错误,查看/proc/cpuinfo的flags,发现有vmx标识,说明host的cpu是支持的虚拟化技术的,于是
到virtualbox官网查半天,发现需要将Host的bios中的虚拟化配置选项vt-x打开,没办法,去机房实体操作BIOS,打开intel virtual technology选项后,重新启动guest,系统安装成功。

接下来是配置guest的网络环境,需要关机。因为没有多余的ip,所以不能选择桥接类型了,只好改为nat。
桥接所用命令:

VBoxManage modifyvm "win2008x64" --nic1 bridged --cableconnected1 on --nictype1 82540EM --bridgeadapter1 eth0 --intnet1 brigh1 --macaddress1 auto

修改为NAT所用命令:

VBoxManage modifyvm "win2008x64" --nic1 nat

然后把3389端口映射到host

VBoxManage modifyvm "win2008x64" --natpf1 "guestrdp,tcp,,3389,,3389"

如此,就可以使用自己的PC的远程桌面,直接通过host的ip连接guest了。

至此,配置完成。

Categories: 感悟 Tags: