VirtualBox 4.3 可以配置为自动启动虚拟机。下面步骤是在 CentOS 6.5 x86 64位系统上的实施,用的是 minimal 版本,使主机成为 Headless PC (无头主机,即没有显示器,没有键盘鼠标等),在此主机系统上接上网线,安装 VitrualBox,并创建几个虚拟机。经过配置后,实现主机上电启动后,同时自动启动几个虚拟机系统(虚拟的 Windows 2003,Ubuntu 等系统)
首先在硬件主机上安装 CentOS 6.5 minimal x86_64。从官网下载 ISO 文件,完成系统安装。作为 VirtualBox 的宿主,不运行其它服务,选择 Minimal 版本,装完只有几百 M 大小,比其它版本或系统动辄几个 G 的系统,真是轻巧多了。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"NM_CONTROLLED="yes"ONBOOT=no HWADDR=A4:BA:DB:37:F1:04 TYPE=Ethernet BOOTPROTO=dhcp
将 ONBOOT=no 改为 ONBOOT=yes
DEVICE="eth0" NM_CONTROLLED="yes" ONBOOT=yes HWADDR=A4:BA:DB:37:F1:04 TYPE=Ethernet BOOTPROTO=static NAME="System eth0" UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 IPADDR=192.168.1.44 NETMASK=255.255.255.0
使用静态地址,还需要继续配置网关及 DNS# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=centos6 GATEWAY=192.168.1.1
重新启动网络接口,使上面的配置修改生效# service network restart
继续配置 DNS# vi /etc/resolv.conf nameserver 8.8.8.8 # Replace with your nameserver ip nameserver 192.168.1.1 # Replace with your nameserver ip
(注:不同的网卡设备,在系统中的名称会有不同,如上面的是 eth0,有的则是 p3p1, p3p2 等,后者可能是千兆网卡)
# vi /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
上面的示例中,我们增加了一行,打开了 VRDP 默认的端口 3389# service iptables restart
1.3 挂载 CDROM
比如要安装 Windows2003 的虚拟机,需要有 Windows2003 的安装光盘,如果你是使用物理光盘,就要挂载到 CentOS 中。# mkdir /mnt/cdrom
挂载 CDROM# mount /dev/cdrom /mnt/cdrom
查看 cdrom# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 14G 1.6G 12G 13% / tmpfs 246M 0 246M 0% /dev/shm /dev/sda1 485M 54M 407M 12% /boot /dev/sr0 626M 626M 0 100% /mnt/cdrom
(注:参数 -h 表示 human,以 M,G 为单位显示。其中 /dev/cdrom 实际指向的是 /dev/sr0,与光驱插在哪个接口上有关)
# cd /tmp # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -Uvh epel-release-6*.rpm # ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Media.repo epel.repo CentOS-Debuginfo.repo CentOS-Vault.repo epel-testing.repo
可以看到,除了 CentOS,多了两个 epel 的 repo,第三方软件仓库就已经可以用了,如果要尝试测试版软件,打开 epel-testing.repo,将里面的 enabled = 0 改为 enabled = 1
# yum install ntfs-3g
用上面简单的命令即完成 ntfs-3g 的安装
# fdisk -l
在列出来的清单中,可以看到 USB 盘的设备名称,如:/dev/sdc1 等。用 mount 来进行挂载:# mkdir /mnt/usb # mount -t ntfs-3g /dev/sdc1 /mnt/usb # ls /mnt/usb/
要移除硬盘:# umount /mnt/usb
2. 准备 VirtualBox 用户
我们使用普通用户来管理及创建虚拟机,而不是 root 用户。如果你没有普通用户,通过下面命令来创建,这里我们创建一个 vmuser 的普通用户,组也为 vmuser# groupadd vmuser# useradd -d /home/vmuser -m -g vmuser -s /bin/bash vmuser
为新用户创建登录密码# passwd vmuser
然后用这个用户登录# su
更新你的 linux 内核# yum install kernel
更新完成后,必须重启电脑# reboot
用普通用户登录后,再转为 root$ su
接下来安装 VirtualBox 4.3 的依赖包# yum groupinstall 'Development Tools' # yum install SDL kernel-devel kernel-headers dkms
安装下载工具 wget# yum install wget
下一步下载并注册 VirtualBox 的 rpm 公钥# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc # rpm --import oracle_vbox.asc # rm -f oracle_vbox.asc
现在我们开启 VirtualBox 的 RHEL 软件仓库(CentOS 是从 RedHat 衍生出来的 Linux 版本)# cd /etc/yum.repos.d/ # wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
(注:如果是 Fedora 系统,将上面下载地址中的 rhel 改为 fedora,你也可以取地址前面部分,直接在网站上浏览,找找看有哪些系统被支持软件仓库)# yum search virtualbox VirtualBox-3.2.x86_64 : Oracle VM VirtualBox VirtualBox-4.0.x86_64 : Oracle VM VirtualBox VirtualBox-4.1.x86_64 : Oracle VM VirtualBox VirtualBox-4.2.x86_64 : Oracle VM VirtualBox VirtualBox-4.3.x86_64 : Oracle VM VirtualBox
用下面这条简单的命令来安装# yum install VirtualBox-4.3.x86_64
VirtualBox 4.3 核心包有 72M,如果在安装时,下载失败,可以重复执行安装命令,yum install 会断点续传,不用担心下载失败问题# cd /tmp # wget http://download.virtualbox.org/virtualbox/4.3.6/Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack # VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack
(注:请确认下载最新版本)# /usr/sbin/usermod -G vboxusers vmuser
好了,现在已经完成安装了。# exit
退出 root 用户,返回到普通用户
$ VBoxManage --help
$ VBoxManage createvm --name "Windows2003" --register --ostype Windows2003
接下来设置内存为 1024M,打开 acpi,设置启动项,以及桥接到主机的 p3p1 物理网卡上$ VBoxManage modifyvm "Windows2003" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 p3p1
下一步是创建一个虚拟机硬盘,分配 10G 空间,默认动态增长文件大小$ cd /home/vmuser/Virtual\ VMs/Windows2003/ $ VBoxManage createhd --filename Windows2003_CN.vdi --size 10000
添加一个 IDE 控制器,然后将虚拟硬盘添加到 IDE 的第一个接口,并作为主设备$ VBoxManage storagectl “Windows2003" --name "IDE Controller" --add ide $ VBoxManage storageattach "Windows2003" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Windows2003_CN.vdi
添加一个 IDE 光驱,并指定光盘映像$ VBoxManage storageattach "Windows2003" --storagectl "IDE Controller" --port1 --device 0 --type dvddrive --medium /mnt/usb/windows2003.iso
$ VBoxManage registervm /home/Virtual\ VMs/myvm/myvm.vbox
这里,vbox文件是一个 xml 格式的配置文件,复制时,保持文件相对位置不变。$ VBoxManage showvminfo Windows2003
$ VBoxHeadless --startvm Windows2003
默认,会打开 VRDP,端口为 3389,这时,就可以用标准的 VRDP 客户端来连接虚拟机进行系统安装及管理了。$ jobs
可以看到挂起的任务,我们用 bg + 任务号,将它转为后台运行$ bg 1
这时,你输入下面命令,可以查看当前在运行的虚拟机$ VBoxManage list runningvms "Windows2003" {7eee7d4b-ef1b-4dc7-8d08-dab2b6531646}
显示了运行中的虚拟机名称及 UUID 列表$ VBoxManage controlvm Windows2003 --acpipowerbutton
或$ VBoxManage controlvm Windows2003 --poweroff
前者相当于按一下电源按钮,系统开始关闭处理,后者相当于直接拨电源线$ VBoxManage modifyvm Windows2003 --usb on --usbehci on
接入 USB 设备,查看 USB 列表$ VBoxManage list usbhost Host USB Devices: UUID: 1af60eb8-0cad-4bf9-89b1-edae0c38e97b VendorId: 0x05ac (05AC) ProductId: 0x8510 (8510) Revision: 128.37 (12837) Port: 0 USB version/speed: 2/2 Manufacturer: Apple Inc. Product: FaceTime HD Camera (Built-in) SerialNumber: CCGCBM05XJDWC8C0 Address: sysfs:/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1//device:/dev/vboxusb/001/002 Current State: Busy
接下来,用 usbfilter 命令来添加$ VBoxManage usbfilter add 0 --target "Windows2003" --name "myusbdevice" --action ignore --serialnumber CCGCBM05XJDWC8C0
这里用的是 USB 设备序列号来添加,有些 USB 设备没有序列号,那还可以用 productid, product 等来进行选择设备$ su # vi /etc/default/virtualbox
添加下面两行:VBOXAUTOSTART_DB=/etc/vbox VBOXAUTOSTART_CONFIG=/etc/vbox/vboxauto.conf
# vi /etc/vbox/vboxauto.conf
添加下面内容:default_policy = deny vmuser= { allow = true }
(注:将 vmuser 替换成你实际的用户,这个用户加入了vboxusers组,用来操作 VBoxManage 的用户)
# chgrp vboxusers /etc/vbox # chmod 1775 /etc/vbox # exit
完成以上操作后,退出 root,返回普通用户$ VBoxManage setproperty autostartdbpath /etc/vbox $ VBoxManage list systemproperties ... Autostart database path: /etc/vbox
5.5 指定虚拟机自动启动
$ VBoxManage modifyvm Windows2003 --autostart-enabled on --autostop-type acpishutdown $ ls /etc/vbox
可以看到生成了以用户名开始的两个文件vmuser.start vmuser.stop
5.6 重启 vboxauto 服务
$su # service vboxautostart-service stop # service vboxautostart-service start
$ VBoxManage storageattach "Windows2003" --storagectl "IDE Control" --port 1 --device 0 --type dvddrive --medium emptydrive $ VBoxManage storageattach "Windows2003" --storagectl "IDE Control" --port 1 --device 0 --type dvddrive --medium additions
这样在虚拟机里就可以看到增强工具光盘了。$ VBoxManage modifyvm "Windows2003" --vrde on --vrdeport 3389 $ VBoxManage showvminfo "Windows2003"
设置后,你可以检查虚拟机的设置状态。$ top
系统占用还是非常低的。