上一回中讲了如何在openSUSE中安装VirtualBox,本回将讲如何安装和克隆Debian VM。

1. 环境

  1. HOST OS : openSUSE11.3

  2. Guest OS : Debian 6.0.5 netinstall

  3. VirtualBox : 4.1.16

2. 创建虚拟机

2.1 创建vm模版

$ sudo VBoxManage createvm --name "deb6-template" --register
$ sudo VBoxManage modifyvm "deb6-template" --memory 512 --acpi on --boot1 dvd --nic1 bridged --nictype1 virtio --bridgeadapter1 eth0
$ sudo VBoxManage createhd --filename /vbox.images/deb6-template/deb6-template.vdi --size 8000
$ sudo VBoxManage storagectl "deb6-template" --name "SATA Controller" --add sata --controller IntelAhci
$ sudo VBoxManage storageattach "deb6-template" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /vbox.images/deb6-template/deb6-template.vdi
$ sudo VBoxManage storageattach "deb6-template" --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium /home/software/debian-6.0.5-i386-netinst.iso

有四种硬盘接口选择:IDE、SATA、SCSI和SAS,从性能上来说,IDE最弱,SATA、SCSI和SAS相差无几,从兼容性来讲IDE最好,不过实际上现在的操作系统基本都已内置了SATA驱动,因此兼容性已经不是问题。 网卡类型有多种选择:AMD系列、intel系列和virtio,其中AMD系列对OS的兼容性最佳,而virtio的性能则最好的,不过对操作系统有一定的要求。

Starting with version 3.1, VirtualBox provides support for the industry-standard “virtio” networking drivers, which are part of the open-source KVM project. The “virtio” networking drivers are available for the following guest operating systems:

  1. Linux kernels version 2.6.25 or later can be configured to provide virtio support; some distributions also back-ported virtio to older kernels.

  2. For Windows 2000, XP and Vista, virtio drivers can be downloaded and installed from the KVM project web page.

2.2 安装vm

启动vm:

$ sudo vboxheadless --startvm "deb6-template"

然后通过RDP客户端(windows中是“远程连接”,linux中可用“rdesktop”)连接该vm,并按照正常的步骤完成Debian 6.0.5的安装。

3. 安装常用工具

$ sudo aptitude install tmux nmap tcpdump lsof htop git-core less iftop net-snmp
$ sudo aptitude purge vim-tiny && aptitude install vim

4. 升级VBoxGuestAddition

Debian6.0.5自带的VBoxGuestAddition为3.2.0版本,版本比较老,因此需要升级至4.1.16。

4.1 确保安装相关软件包

$ sudo aptitude install bzip2 dkms gcc make linux-header-2.6.32-5-686

4.2 插入VBoxGuestAddition光盘

$ sudo VBoxManage storageattach "deb6-template" --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso

在openSUSE中安装完VirtualBox之后,VBoxGuestAddition光盘以iso文件方式保存在/usr/share/virtualbox/VBoxGuestAddition.iso

4.3 升级

$ sudo mkdir /mnt/cdrom
$ sudo mount -t iso9660 /mnt/cdrom /dev/sr0
$ sudo sh ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.16 Guest Additions for Linux.........
VirtualBox Guest Additions installer
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules ...done.
Doing non-kernel setup of the Guest Additions ...done.
You should restart your guest to make sure the new modules are actually used

Installing the Window System drivers
Installing X.Org Server 1.7 modules ...done.
Setting up the Window System to use the Guest Additions ...done.
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services components ...done.

4.4 检查版本

最后重启guest并检查VBoxGuestAddition版本

$ sudo vboxmanage showvminfo "deb6-template"
-----8<-----
....
Guest:

Configured memory balloon size:      0 MB
OS type:                             Linux26
Additions run level:                 1
Additions version:                   4.1.16r78094
-----8<-----

说明VBoxGuestAddition已经升级为4.1.16了。

5. 收尾

5.1 弹出安装光盘

$ sudo VBoxManage storageattach "deb6-template" --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium emptydrive

下次启动的时候,就不会从光盘启动了。

5.2 解决eth1的问题

linux利用udev对硬件设备进行识别,当udev检测到新网卡时(新mac地址),将在/etc/udev/rules.d/70-persistent-net.rules文件中生成新的记录,为新网卡分配一个ethX这样的网卡id,X从0开始,依次是1,2…​

克隆的时候,VirtualBox会为目标vm的网卡生成新的mac地址,而70-persistent-net.rules文件中已经含有源vm网卡的记录:eth0,因此,udev为目标vm的网卡重新分配网卡id:eth1,这导致IP地址失效,网卡id怪异等问题。

解决该问题的方法是删掉源vm中的/etc/udev/rules.d/70-persistent-net.rules这个文件,目标vm启动后找不到该文件就会自行创建一个,永远都不会有eth0占用的问题。

5.3 清空IP地址配置

修改/etc/network/interfaces,注释掉eth0的配置信息,避免与目标vm的IP冲突。

5.4 调整系统时间

请参考“NTP服务

至此,完成一个Debian VM模版的安装和配置。

6. 克隆

$ sudo vboxmanage clonevm "<source vm>" --name="<destination vm>" --mode machine --register

源vm的config和vdi文件在同一个目录下,克隆后,目标vm的config和vdi文件也在同一个目录下。

6.1 更改主机名

$ sudo echo "<destination vm>" > /etc/hostname
$ sudo hostname -F /etc/hostname

6.2 更改IP地址

$ sudo vim /etc/network/interface

6.3 重启

$ sudo shutdown -r now

本回说的是Debian VM,那Windows VM呢,且听下回分解