Linux服务器上命令行安装Virtualbox虚拟机
1.安装Virtualbox
这个很简单,可以去 Virtualbox的主页上找,有对应的deb包和rpm包等。安装过程略去。
2.新建和配置虚拟机
Virtualbox的命令行工具是vboxmanage,实现了所有的功能,比如新建虚拟机,修改虚拟机参数,添加硬盘,网络等。具体的命令可以参考其英文的 帮助文档。下面会分步骤介绍过程
2.1)建立并注册虚拟机
vboxmanage createvm --name debian_test --ostype Debian_64 --register
虚拟机名字是 debian_test,作为唯一标识,OS为Debian 64位,Virtualbox所支持的os,可以用vboxmanage list ostypes 查看。
2.2)配置虚拟机CPU、内存和使用Host上的VT技术
vboxmanage modifyvm debian_test --memory 2048 #配置实用2GB内存
vboxmanage modifyvm debian_test --cpus 4 #使用4颗CPU
vboxmanage modifyvm debian_test --ioapic on #启用此项,才能在VM中看到多个CPU,否则就是1颗。
vboxmanage modifyvm debian_test --hwvirtex on #启用Host上的硬件虚拟化 (可选)
vboxmanage modifyvm debian_test --nestedpaging on #启用Host上的硬件虚拟化中的nested page特性。(可选)
vboxmanage modifyvm debian_test --hwvirtexexcl on #VirtualBox是否是在Host上唯一使用的虚拟化软件,如果是,开启。(可选)
vboxmanage modifyvm debian_test --rtcuseutc on #设置使用utc时间 (可选)
2.3)配置网络(NAT),增加端口转发
vboxmanage modifyvm debian_test --nic1 nat #将第一个网卡设置成 NAT
vboxmanage modifyvm debian_test --nictype1 virtio #将第一个网卡的硬件,设置成 virtio
vboxmanage modifyvm debian_test --natpf1 "guestssh,tcp,127.0.0.1,8822,,22" #增加端口转发。在VM安装系统和ssh server后,在host上可以通过ssh访问VM,例如 ssh -p 8822 127.0.0.1
2.4) 配置串口
我们需要配置串口,这样在无图形化安装VM上的Linux系统时,可以让安装shell重定向输出到VM的串口上
vboxmanage modifyvm debian_test --uart1 0x3F8 4 #启用串口1
vboxmanage modifyvm debian_test --uartmode1 server /tmp/debian_test_uart1 #将串口,以管道的方式,定向到 Host上的/tmp/debian_test_uart1,此文件可以在host端,用minicom 软件打开,具体见后面的安装VM的系统叙述。
2.5) 配置硬盘
vboxmanage createhd --filename ./debian_test.vdi --size 20480 #新建虚拟硬盘文件,debian_test.vdi,容量为20GB
vboxmanage storagectl debian_test --name debian_test_storage_controller_1 --add sata --bootable on #为VM增加存储控制器,这样才能把虚拟硬盘挂上。
VBoxManage storageattach debian_test --storagectl debian_test_storage_controller_1 --type hdd --port 0 --medium /your/path/to/debian_test.vdi #将硬盘挂在到控制器的0端口上,注意虚拟硬盘文件需要 绝对路径
3. 安装VM上的Linux系统
3.1)准备工作
下载安装的iso光盘文件,比如,我下载的是 Debian 的debian-6.0.2.1-amd64-netinst.iso
VBoxManage storageattach debian_test --storagectl debian_test_storage_controller_1 --type dvddrive --port 1 --medium /your/path/to/debian-6.0.2.1-amd64-netinst.iso #挂载光盘
3.2) 启动虚拟机
VBoxHeadless --startvm debian_test
3.3)控制安装debian installer,将输出定向到串口
这里是比较tricky的地方,核心思想是让安装过程的引导Linux内核参数,增加上
console=ttyS0,115200n8,这样就可以将安装过程中的输出定向到VM上的串口了。通过
vboxmanage controlvm 命令的
keyboardputscancode ,可以给虚拟机发送键盘的scancode,这样就可以直接模拟键盘输入,而不需要在vm上启用vrde(远程桌面)扩展了。
通用的方法是,使用 virtualbox的vrde扩展,使用远程桌面连接到VM上,之后,就像平常那样安装系统就好了。
以下步骤只适用于Debian的安装,其他的发行版,要有不同的键盘输入。
#选择 debian installer的help选项,按键为 3个下箭头,1个回车
vboxmanage controlvm debian_test keyboardputscancode 50 50 50 1c
#选择 debian installer中的special boot parameters for special machines.按键为F6
vboxmanage controlvm debian_test keyboardputscancode 40
#此时,需要输入 install console=
ttyS0,115200n8
vboxmanage controlvm debian_test keyboardputscancode 17 31 1f 14 1e 26 26 39 2e 18 31 1f 18 26 12 #此为键盘输入 install consolevboxmanage controlvm debian_test keyboardputscancode 0d 14 14 15 2a 1f aa 0b 33 02 02 06 03 0b 0b 31 09 #此为键盘输入 =ttyS0,115200n8 vboxmanage controlvm debian_test keyboardputscancode 1c #输入1个回车
3.4)配置minicom,访问VM的串口
minicom -s
之后,选择Serial port setup,将Serial Device修改成 unix#/tmp/debian_test_uart1 与之前设置串口定向的管道对应上。
minicom -s
之后,选择Serial port setup,将Serial Device修改成 unix#/tmp/debian_test_uart1 与之前设置串口定向的管道对应上。
此时,就应该能看到输出了,如果没有,可以按上下键,刷新一下。
3.5)安装VM的系统的ssh服务
在安装过程中,重要的步骤是安装 ssh服务,这样,就可以通过host端ssh访问了。
3.6)安装完毕后,卸载光驱文件。
VBoxManage storageattach debian_test --storagectl debian_test_storage_controller_1 --type dvddrive --port 1 --medium none
4.安装后从Host ssh访问VM
假设此时虚拟机没有运行。
VBoxHeadless --startvm debian_test --vrde=off #启动虚拟机,禁止vrde远程桌面
#从host端,ssh 到vm上,virtualbox已经配置了端口转发
ssh -p 8822 127.0.0.1
之后,就和普通的ssh上服务器一样了。
5.一些常用Virtualbox控制命令
# 重启虚拟机