之前写过一篇东西:Ubuntu上Xen的快速部署(),以及近期的一篇Ubuntu上KVM虚拟化的部署()。前一篇东西写的比较早了,Xen已经被KVM所取代,后一篇主要是通过图形化界面来操作,通用性虽强,但效率较低,无法实现批量化。
这次就通过Ubuntu自带的一个工具,实现快速的批量化定制基于KVM的Ubuntu的虚拟机。
首先,安装定制包apt-get install ubuntu-vm-builder
cd /data/virtual; ubuntu-vm-builder kvm lucid --debug --addpkg=openssh-server --hostname=Webserver --bridge=br0 -m 512 --ip=192.168.1.55 --gw=192.168.1.254 --dns=8.8.8.8 -a i386 --user=litrin --password=litrin --libvirt qemu:///system整个系统会自己下载安装镜像,自己静默安装整个系统,剩下的就是慢慢等它结束了,真的很方便!看到中文的资料真的很少,大部分的文档都是贴的,这里我就先讲解几个重要参数吧。
所有的参数除了开头的”Kvm lucid”之外其实都可以省略而采用系统默认值
kvm lucid 安装的版本类型,有个常理:客户版本不能超过宿主版本。即lucid (1004)不可以装natty(1104),但natty上可以装lucid
–hostname=Webserver 虚拟主机名称,唯一标示
–debug 输出调试,第一次还是开启吧,至少知道在哪边出错
–bridge=br0 参见这里,绑定的网卡名称
-a i386 | –arch=i386 平台的类型,默认与宿主平台一致
–cpus=2 虚拟机cpu个数,默认是1
-m512 | –mem=512 分配的内存大小,默认是128,单位统统是M
–ip=192.168.1.55 –gw=192.168.1.254 配置虚拟机的IP和网关,默认是DHCP的,对应的–mac (mac地址)–mask(掩码)–net(网络) –bcast(广播)–dns(自己猜!)
–user=litrin | –password=litrin 默认添加的帐户和密码,说到这里,我第一次没有使用这两个参数,而是用默认值,等到都安装好了才发觉根本进不了系统,抱着试试看的心理用ubuntu用户和ubuntu作为密码竟然通过了,看来我的运气好到家了,一下子猜到了默认配置。如果是直接放公网上,为了防止有人跟我一样好运,还是安装的时候就设置好吧。还有一个类似的–rootpass,不推荐。
–ssh-key=~/.ssh/authorized_keys 自动添加一个root的ssh的验证公钥。
–libvirt qemu:///system 把虚拟机直接加到本地的virt-manager中,需要注意的是本机不是Localhost,而是system,有点有悖常理。支持ssh方式远程主机。
–addpkg=openssh-server 安装软件包,可以配置多个。对应的逆向操作:–removepkg=openssh-server
–install-mirror 选用Ubuntu的镜像站,如
–iso=~/ubuntu.iso 直接使用本地的ISO安装,以现在的网络带宽下强力推荐
–lang=zh_CN.utf-8 默认字符,默认为en_US.UTF-8
–timezone=CST 默认时区,默认UTC
–firstboot=PATH 首次启动时的脚本,由于通过上面的–addpkg=openssh-server 方式只会增加ssh的服务端而不会设置为启动项,可以通过这种方式设定。类似的–firstlogin=PATH,第一次登录脚本。
–rootsize=SIZE |–optsize=SIZE |–swapsize=SIZE 分别是/ , /opt 和swap的分区大小,默认只有一个3.8G的swap和1G的SWAP需要更详细的配置,则通过–part=配置文件来操作,配置文件的格式:
root 2000 /boot 512 swap 1000 --- /var 8000 /var/log 2000用—表示使用新的虚拟磁盘
–raw=PATH 使用一个裸设备来作为第一个虚拟磁盘,我没有测试过,有兴趣可以试一下。
默认加入virt-manager之后需要手工启动,并默认绑定了本地的5900端口监听vnc服务器,远程主机可以通过ssh通道,映射成本地5900再连接。不过像我这样用MAC自带的VNC工具就比较悲剧了,它不支持连接本地5900,只能找台中转机了。
PS:
本文由于Wordpress的显示问题,所有的 双线(- -)都被替换成了单线(-),在这里,包括本站所有的文档请遵循Linux的一贯原则:单线后面是单字母配置,空格后面配置参数;双线后面是全配置,单词间用单线,后面用=跟配置。