前言
Linux虚拟化中我们两个非常强大的虚拟化平台,这两大平台是免费的
- VirtualBox:配置操作简单,轻量级,友好的GUI界面,丰富的技术文档支持。
- KVM:配置复杂,技术文档资源较VirtualBox少。
本文VirtualBox用于生产环境和开发测试,一直受到笔者的青睐,其实Vbox更复杂的应用都隐藏在其强大vboxmanage命令行工具中。我自己管理的十多个中小型的虚拟应用都部署在一台性能较为强大的IBM服务器上。操作系统是CentOS 7,我们经常需要对操作系统更新完后,都需要手动地将每台虚拟机启动一篇,对于懒人来说是一个非常痛苦的事情,最大化地追求自动化管理方式,我们本文会用到Vbox的虚拟机系统引导自启动服务
在本指南中,我们将学习如何在Linux上的系统启动时自动启动VirtualBox VM。 本演示使用CentOS 7作为承载多个VirtualBox 6.0虚拟机的Linux计算机。
VirtualBox带有一项名为vboxautostart-service的服务,可让您轻松地在系统重新引导期间自动启动虚拟机。
为了将VirtualBox VM配置为在Linux上的系统引导时启动,您需要激活自动启动服务。 可以通过在/ etc / default / virtualbox中设置两个变量来激活自动启动服务。
- VBOXAUTOSTART_DB:定义自动启动数据库目录的绝对路径,通常是/etc/vbox。
- VBOXAUTOSTART_CONFIG:定义虚拟机自动启动配置的路径。
这些变量可以定义为:
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostartvm.cfg
要将这些变量放在/etc/default/virtualbox中,请运行以下命令;
echo -e "VBOXAUTOSTART_DB=/etc/vboxnVBOXAUTOSTART_CONFIG=/etc/vbox/autostartvm.cfg" |
sudo tee /etc/default/virtualbox
定义虚拟机自动启动配置设置。 自动启动配置文件包含用于控制如何自动启动虚拟机的选项。
vim /etc/vbox/autostartvm.cfg
配置文件
default_policy = deny
itdog = {
allow = true
startup_delay = 10
}
- default_policy :定义默认情况下是允许还是拒绝虚拟机自动启动。 在上面的示例中,我们拒绝任何人自动启动VM,并明确允许一个用户itdog。
- 用户名(itdog):使用默认的拒绝策略,您可以定义允许自动启动虚拟机的特定用户(allow = true)。 您还可以定义延迟VM启动的时间。 本演示中使用10秒。
设置数据库目录的所有权
数据库目录/etc/vbox应该是用户可写的,用于自动启动VM。为了简化操作,您可以简单地将用户添加到vboxusers组,并将数据库目录的组所有权设置为vboxusers组。 之后设置组的写权限。 在这种情况下,将使用itdog用户自动启动虚拟机。
sudo usermod -aG vboxusers itdog
sudo chgrp vboxusers /etc/vbox
在自动启动数据库目录上分配组写权限。
sudo chmod g+w /etc/vbox
为了防止目录被所有者或root用户以外的其他用户修改或删除,请设置sticky位。
sudo chmod +t /etc/vbox
启用虚拟机自动启动
作为用户,您可以为单个计算机启用自动启动。 这要求您首先定义数据库目录的路径。
VBoxManage setproperty autostartdbpath /etc/vbox/
完成后,您现在可以将虚拟机设置为在系统引导时自动启动。在此之前,我们需要知道要自动启动的虚拟机的名称。在虚拟机图形界面的设定界面可以查看得到,如下图所示
本示例的虚拟机名称是windows7,然后使用下面命令
vboxmanage modifyvm {43d98d04-370f-4fbe-94e8-cd42368da135} --autostart-enabled on
其中windows7是UUID或您的虚拟机名称。
重新启动vboxautostart-service
现在完成配置。 要生效设置,您需要重新启动vboxautostart-service。
sudo systemctl restart vboxautostart-service
测试虚拟机自动启动
要测试您的虚拟机是否可以在系统启动时自动启动,请重新启动系统并进行检查。 系统启动时,您的VM现在应该正在运行。我们可以使用top命令查看到系统引动完成后会加载一个VBoxHeadless的进程。这个是Vbox虚拟机的无GUI的轻量级虚拟机进程。
VirtualBox的一个非常值得赞赏的功能是可以在没有GUI的无头环境中使用。如果在Linux服务器中用命令行管理Vbox虚拟机,需要认识如下vbox的命令行。
1.创建虚拟机
此命令将当前目录/fs设定为虚拟机文件的物理存放位置:
vboxmanage createvm --name "Win10" --ostype "Windows 10 (64-bit)" --register --basefolder /fs
查看ostyles
vboxmanage list ostypes
如果需要比较精确地查找需要虚拟机的操作系统类型,可以结合管道和grep指令,例如:
vboxmanage list ostypes | grep Windows
删除虚拟机
vboxmanage unregistervm --delete "Win10"
2.设置内存和网络
在此示例中:4Gb RAM和1个位于NAT后的网卡。
vboxmanage modifyvm "Win10" --ioapic on
vboxmanage modifyvm "Win10" --memory 4096 --vram 128
vboxmanage modifyvm "Win10" --nic1 nat
3.创建磁盘并连接CD ISO
创建虚拟硬盘
vboxmanage createhd --filename "./Win10/win10_disk.vdi"
--size 80000
--format VDI
创建硬盘控制器
vboxmanage storagectl Win10
--name "SATA Controller"
--add sata
--controller IntelAhci
硬盘控制器附加虚拟硬盘
vboxmanage storageattach Win10
--storagectl "SATA Controller"
--port 0 --device 0 --type hdd
--medium fs/Win10/win10_disk.vdi
创建IDE控制器
vboxmanage storagectl Win10
--name "IDE Controller"
--add ide
--controller PIIX4
将安装镜像附加到光驱控制器
vboxmanage storageattach Win10
--storagectl "IDE Controller"
--port 1
--device 0
--type dvddrive
--medium /kvm/iso/Win10_1909_English_x64.iso
设置启动顺序
vboxmanage modifyvm Win10
--boot1 dvd
--boot2 disk
--boot3 none
--boot4 none
4.设置RDP访问权限并启动VM
在端口10001上启用了远程桌面(用于在无头环境中进行管理)。
VBoxManage modifyvm Win10 --vrde on
VBoxManage modifyvm Win10 --vrdemulticon on --vrdeport 10001
5.关闭虚拟机
vboxmanage controlvm Ubuntu poweroff soft
6.查看已注册的VM实例
vboxmanage list vms