预计阅读时间: 2 分钟
由于开发环境的需要,我在日常使用的Windows笔记本上使用VirtualBox安装了许多台Linux虚拟机(真的是许多台),由于VirtualBox本身没有开机自启,对其中的虚拟机更是没有开机自启的选项,因此需要使用的时候往往需要点击很多个按钮才能把全部需要使用的虚拟机打开。作为一个常年和CLI打交道并将自动化深刻融入生活的人,这显然难以接受。于是就萌生了使用脚本的想法。
当我上网一查,VirtualBox还真提供了相当完善的CLI支持,几乎所有的功能都可以在CLI里面完成,于是就写了几行脚本以帮助我一键开启所需的虚拟机甚至开机自动启动。
下面是一个例子,启动我的router虚拟机,这个虚拟机负责其它所有虚拟机流量的路由,将流量路由到宿主机上的代理软件。
cd C:\"Program Files"\Oracle\VirtualBox\
VBoxManage.exe startvm "Router" -type headless
当然,VirtualBox CLI还支持相当多的命令,比如列出所有的虚拟机和UUID
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list vms
"Ubuntu-Dev" {c8d949ad-f7ba-4b7b-b61e-127ff6f579b8}
"Router" {e6f7b3f8-cec0-48c3-a91c-ec2f565c7742}
"Debian-Dev" {562b4987-9f2b-4731-b86c-e225b08f87b0}
"Debian-Dev2" {e63f78b9-ac01-4d75-bff6-ff4b81083348}
"Security" {db6b8ec4-2578-4818-988e-b978d079ac48}
全部的命令可以在VirtualBox Manual里面找到。
开机自启
最简单的方式是把写好的bat脚本直接放进“启动”文件夹,但是这种方法会在开机时有CMD的窗口弹出,如果想要用一个看起来不那么像病毒的方式开机自启,可以使用vbs脚本无窗口运行bat,例如
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c <path to bat>",0,true
然后再将vbs脚本放进“启动”文件夹或者使用别的自启方式运行就可以了。
我也有类似需求,我发现最方便的法子是Hyper-V,再复杂一点就加一个Vagrant。