VBoxHeadless - 使用VirtualBox 4.1在无头CentOS 6.2服务器上运行虚拟机
本指南介绍如何在无头CentOS 6.2服务器上运行VirtualBox 4.1的虚拟机。 通常,您使用VirtualBox GUI来管理虚拟机,但服务器没有桌面环境。 幸运的是,VirtualBox带有一个名为VBoxHeadless的工具,允许您通过远程桌面连接连接到虚拟机,因此不需要VirtualBox GUI。
我不会保证这将为您工作!
1初步说明
我已经在一个CentOS 6.2服务器(主机系统)上测试了这个IP地址为192.168.0.100
,我以普通用户身份登录(在本例中为用户名admin
),而不是根用户登录
。
如果您只有root帐户,但没有正常的用户帐户,请创建如下(用户admin
,组管理员
)...
# groupadd admin
# useradd -d /home/admin -m -g admin -s /bin/bash admin
...为新用户创建密码...
# passwd admin
...并以该用户身份登录。
2安装VirtualBox
要在我们的CentOS 6.2服务器上安装VirtualBox 4.1,我们需要root权限,因此我们运行
$ su
然后我们为VirtualBox 4.1安装依赖关系,如下所示:
# yum groupinstall 'Development Tools'
# yum install SDL kernel-devel kernel-headers dkms
使用最后一个命令,我们已经安装了我们当前使用的内核的内核头文件。 标头位于/ usr / src / kernels /
目录中,但它的目录很可能不是命名为<kernel_version> - <architecture>
,而是具有不同的名称,以便稍后才能构建Virtualbox内核模块,因为无法找到预期的内核头目录。 我们现在要纠正:
检查你的内核版本...
# uname -r
[root@server1 ~]# uname -r
2.6.32-220.el6.x86_64
[root@server1 ~]#
这意味着在/ usr / src / kernels /目录
中应该有一个名为2.6.32-220.el6.x86_64
的目录
。 我们现在可以检查一下:
# cd /usr/src/kernels/
# ls -l
[root@server1 kernels]# ls -l
total 4
drwxr-xr-x 22 root root 4096 Jun 25 17:30 2.6.32-220.23.1.el6.x86_64
[root@server1 kernels]#
如你所见,我有目录2.6.32-220.23.1.el6.x86_64
,但不是2.6.32-220.el6.x86_64
。 因此,我们创建一个名为2.6.18-238.el5-x86_64
的符号链接,指向2.6.18-238.9.1.el5-x86_64
:
# ln -s 2.6.32-220.23.1.el6.x86_64 `uname -r`
接下来下载并注册VirtualBox public rpm key:
# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
# rpm --import oracle_vbox.asc
# rm -f oracle_vbox.asc
现在我们在我们的系统上启用了VirtualBox CentOS存储库:
# cd /etc/yum.repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
现在我们可以简单的安装VirtualBox 4.1,如下所示:
# yum install VirtualBox-4.1
如果安装成功,输出结束如下:
[...]
Running Transaction
Installing : VirtualBox-4.1-4.1.18_78361_rhel6-1.x86_64 1/1
Creating group 'vboxusers'. VM users must be member of that group!
No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to /var/log/vbox-install.log.
Stopping VirtualBox kernel modules [ OK ]
Uninstalling old VirtualBox DKMS kernel modules [ OK ]
Trying to register the VirtualBox kernel modules using DKMS [ OK ]
Starting VirtualBox kernel modules [ OK ]
Installed:
VirtualBox-4.1.x86_64 0:4.1.18_78361_rhel6-1
Complete!
[root@server1 kernels]#
(如果安装失败是因为找不到正确的内核头目录,则输出结束如下:
[...]
Running Transaction
Installing : VirtualBox-4.1-4.1.18_78361_rhel6-1.x86_64 1/1
Creating group 'vboxusers'. VM users must be member of that group!
No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to /var/log/vbox-install.log.
Stopping VirtualBox kernel modules [ OK ]
Uninstalling old VirtualBox DKMS kernel modules [ OK ]
Trying to register the VirtualBox kernel modules using DKMS
Error! Your kernel source for kernel 2.6.32-220.el6.x86_64 cannot be found at
/lib/modules/2.6.32-220.el6.x86_64/build or /lib/modules/2.6.32-220.el6.x86_64/source.
[FAILED]
(Failed, trying without DKMS)
Recompiling VirtualBox kernel modules [FAILED]
(Look at /var/log/vbox-install.log to find out what went wrong)
Installed:
VirtualBox-4.1.x86_64 0:4.1.18_78361_rhel6-1
Complete!
[root@server1 kernels]#
在这种情况下,尝试创建正确的内核符号链接(如前所示),然后运行
# /etc/init.d/vboxdrv setup
创建VirtualBox内核模块。)
现在我们必须添加将运行VirtualBox(在本例中为admin
)的用户到vboxusers
组:
# /usr/sbin/usermod -G vboxusers admin
VirtualBox现已安装并可以使用。
从版本4.0开始,VirtualBox引入了所谓的“扩展包”,并将一些功能(如V4.4之前的VirtualBox包的一部分的远程桌面连接支持(VRDP))外包给这些扩展包。 因为我们需要远程桌面连接来控制我们的虚拟机,所以我们需要安装相应的扩展包。 转到http://www.virtualbox.org/wiki/Downloads ,您将找到以下扩展程序包的链接:
VirtualBox 4.1.18 Oracle VM VirtualBox Extension Pack
Support for USB 2.0 devices, VirtualBox RDP and PXE boot for Intel cards.
下载并安装扩展包如下:
# cd /tmp
# wget http://download.virtualbox.org/virtualbox/4.1.18/Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361.vbox-extpack
(确保您从VirtualBox网站获取最新版本。)
类型
# exit
离开root帐户,再次成为普通用户( admin
)。
3在命令行上使用VirtualBox
3.1创建VM
要在命令行上创建一个虚拟机,我们可以使用VBoxManage
命令。 看到
$ VBoxManage --help
有关可用开关的列表(强烈推荐!),请查看http://www.virtualbox.org/manual/ch08.html 。
我现在将创建一个具有1024MB内存的Ubuntu 12.04服务器虚拟机和Ubuntu 12.04 Server iso映像的10GB硬盘驱动器(我存储在/home/ubuntu-12.04-server-amd64.iso中
):
$ VBoxManage createvm --name "Ubuntu 12.04 Server" --register
$ VBoxManage modifyvm "Ubuntu 12.04 Server" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
$ VBoxManage createhd --filename Ubuntu_12_04_Server.vdi --size 10000
$ VBoxManage storagectl "Ubuntu 12.04 Server" --name "IDE Controller" --add ide
$ VBoxManage storageattach "Ubuntu 12.04 Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Ubuntu_12_04_Server.vdi
$ VBoxManage storageattach "Ubuntu 12.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/ubuntu-12.04-server-amd64.iso
3.2导入现有的虚拟机
假设你有一个叫做examplevm
的虚拟机,你想在这个主机上重用。 在旧主机上,您应该在VirtualBox 目录
中有一个目录Machines /
examplevm; Machines / examplevm
应包含examplevm.xml
文件。 将examplevm
目录(包括examplevm.xml
文件)复制到新的机器
目录(如果您的用户名为admin
,则为/home/admin/.VirtualBox/Machines
- 结果应为/home/admin/.VirtualBox/Machines /examplevm/examplevm.xml
)。
除了将examplevm.vdi
文件从旧VDI
目录复制到新VDI
目录(例如/home/admin/.VirtualBox/VDI/examplevm.vdi
)之外。
之后,您必须注册导入的VM:
$ VBoxManage registervm Machines/examplevm/examplevm.xml
3.3使用VBoxHeadless启动虚拟机
无论创建新VM还是导入旧虚拟机,都可以使用以下命令启动它:
$ VBoxHeadless --startvm "Ubuntu 12.04 Server"
(用您的虚拟机名称替换Ubuntu 12.04服务器
。)
VBoxHeadless
将启动虚拟机和VRDP( VirtualBox远程桌面协议
)服务器,允许您在另一台计算机上远程查看虚拟机的输出。
要停止VM,请运行
$ VBoxManage controlvm "Ubuntu 12.04 Server" poweroff
要暂停虚拟机,请运行
$ VBoxManage controlvm "Ubuntu 12.04 Server" pause
要重置VM,请运行
$ VBoxManage controlvm "Ubuntu 12.04 Server" reset
要了解有关VBoxHeadless的
更多信息,请查看
$ VBoxHeadless --help