近日因为公司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了。
至此,配置完成。