VBoxHeadless - 使用VirtualBox 4.0在无头CentOS 5.6服务器上运行虚拟机

VBoxHeadless - 使用VirtualBox 4.0在无头CentOS 5.6服务器上运行虚拟机 本指南解释了如何运行虚拟机wi ...

VBoxHeadless - 在无头CentOS 5.6服务器上运行VirtualBox 4.0的虚拟机

本指南介绍如何在无头CentOS 5.6服务器上运行VirtualBox 4.0的虚拟机。 通常,您使用VirtualBox GUI来管理虚拟机,但服务器没有桌面环境。 幸运的是,VirtualBox带有一个名为VBoxHeadless的工具,允许您通过远程桌面连接连接到虚拟机,因此不需要VirtualBox GUI。

我不会保证这将为您工作!

1初步说明

我在CentOS 5.6服务器(主机系统)上测试了这个IP地址为192.168.0.100的IP地址,我以普通用户身份登录(在本例中为用户名admin ),而不是根用户登录

如果您只有root帐户,但没有正常的用户帐户,请创建如下(用户admin ,组管理员 )...

# groupadd admin
# useradd -d /home/admin -m -g admin -s /bin/bash admin

...为新用户创建密码...

# passwd admin

...并以该用户身份登录。

2安装VirtualBox

要在我们的CentOS 5.6服务器上安装VirtualBox 4.0,我们需要root权限,因此我们运行

$ su

现在,我们在CentOS系统上启用了RPMforge存储库,因为我们将要安装的dkms软件包( 动态内核模块支持框架 - 需要构建VirtualBox内核模块的软件包)在官方CentOS 5.6存储库中不可用:

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

# cd /tmp
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

(如果上述链接不再工作,可以在这里找到rpmforge-release的当前版本: http : //packages.sw.be/rpmforge-release/

然后我们安装VirtualBox 4.0的依赖项,如下所示:

# yum groupinstall 'Development Tools'

# yum groupinstall 'Development Libraries'

# yum install SDL kernel-devel kernel-headers dkms

使用最后一个命令,我们已经安装了我们当前使用的内核的内核头文件。 标头位于/ usr / src / kernels /目录中,但它的目录很可能不是命名为<kernel_version> - <architecture> ,而是具有不同的名称,以便稍后才能构建Virtualbox内核模块,因为无法找到预期的内核头目录。 我们现在要纠正:

检查你的内核版本...

# uname -r

[root@server1 kernels]# uname -r
2.6.18-238.el5
[root@server1 kernels]#

...和建筑:

# uname -m

[root@server1 2.6.18-238.el5]# uname -m
x86_64
[root@server1 2.6.18-238.el5]#

这意味着/ usr / src / kernels /目录中应该有一个名为2.6.18-238.el5-x86_64目录 。 我们现在可以检查一下:

# cd /usr/src/kernels/
# ls -l

[root@server1 kernels]# ls -l
total 4
drwxr-xr-x 19 root root 4096 May 19 14:26 2.6.18-238.9.1.el5-x86_64
[root@server1 kernels]#

如你所见,我有目录2.6.18-238.9.1.el5-x86_64 ,但不是2.6.18-238.el5-x86_64 。 因此,我们创建一个名为2.6.18-238.el5-x86_64的符号链接,指向2.6.18-238.9.1.el5-x86_64

# ln -s 2.6.18-238.9.1.el5-x86_64 `uname -r`-`uname -m`

接下来下载并注册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.0,如下所示:

# yum install VirtualBox-4.0

如果安装成功,输出结束如下:

[...]
Running Transaction
  Installing     : VirtualBox-4.0                        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.0.x86_64 0:4.0.8_71778_rhel5-1

Complete!
[root@server1 kernels]#

(如果安装失败是因为找不到正确的内核头目录,则输出结束如下:

[...]
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 headers for kernel 2.6.18-238.el5 cannot be found at
/lib/modules/2.6.18-238.el5/build or /lib/modules/2.6.18-238.el5/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.0.x86_64 0:4.0.8_71778_rhel5-1

Complete!
[root@server1 yum.repos.d]#

在这种情况下,尝试创建正确的内核符号链接(如前所示),然后运行

# /etc/init.d/vboxdrv setup

创建VirtualBox内核模块。)

现在我们必须添加将运行VirtualBox(在本例中为admin )的用户到vboxusers组:

# /usr/sbin/usermod -G vboxusers admin

VirtualBox现已安装并可以使用。

类型

# exit

离开root帐户,再次成为普通用户( admin )。

3在命令行上使用VirtualBox

3.1创建VM

要在命令行上创建一个虚拟机,我们可以使用VBoxManage命令。 看到

$ VBoxManage --help

有关可用开关的列表(强烈推荐!),请查看http://www.virtualbox.org/manual/ch08.html

我现在将创建一个具有512MB内存的Ubuntu 11.04服务器虚拟机和一个10GB硬盘驱动器从Ubuntu 11.04 Server iso映像(我存储在/home/ubuntu-11.04-server-amd64.iso )中:

$ VBoxManage createvm --name "Ubuntu 11.04 Server" --register
$ VBoxManage modifyvm "Ubuntu 11.04 Server" --memory 512 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
$ VBoxManage createhd --filename Ubuntu_11_04_Server.vdi --size 10000
$ VBoxManage storagectl "Ubuntu 11.04 Server" --name "IDE Controller" --add ide
$ VBoxManage storageattach "Ubuntu 11.04 Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Ubuntu_11_04_Server.vdi
$ VBoxManage storageattach "Ubuntu 11.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/ubuntu-11.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 11.04 Server"

(用您的虚拟机名称替换Ubuntu 11.04服务器 。)

VBoxHeadless将启动虚拟机和VRDP( VirtualBox远程桌面协议 )服务器,允许您在另一台计算机上远程查看虚拟机的输出。

要停止VM,请运行

$ VBoxManage controlvm "Ubuntu 11.04 Server" poweroff

要暂停虚拟机,请运行

$ VBoxManage controlvm "Ubuntu 11.04 Server" pause

要重置VM,请运行

$ VBoxManage controlvm "Ubuntu 11.04 Server" reset

要了解有关VBoxHeadless的更多信息,请查看

$ VBoxHeadless --help

并在http://www.virtualbox.org/manual/ch07.html#vboxheadless