因为Ubuntu12.10 刚发布,立刻试一下。这次安装KVM的时候,有点不同。就是安装Ubuntu server的时候,选中了virtual server。
这样会导致ubuntu-virt-server和kvm-ipxe已经被在系统安装时装好。
因此,进入系统后,只需要安装:
apt-get install python-vm-builder
之后并不需要退出重新登录。这个对自动化部署很有帮助,因此还是推荐在安装Ubuntu系统的时候选中virtual server。
bridge-utils 也已经安装好了。同样不需要安装。
顺便说一下,现在使用新的命令重启网络:
service networking restart
注意,现在host机器仍然不能连外网,用
dhclient br0 命令也不行,而且报错:RTNETLINK answers: File exists
检查route表:
ip route list
default via 10.112.18.1 dev br0
10.112.18.0/24 dev br0 proto kernel scope link src 10.112.18.161
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
发现和12.04不同的是,default规则已经有了,但是网关的IP地址错了,应该是254.所以用下面的语句删除后再添加正确的规则:
route del default
route add default gw 10.112.18.254 br0
好,外网联通了。
继续思考,为什么gateway设置成了10.112.18.1, 是不是因为从网上复制的网卡设置的信息不加修改的弄过来造成的。
果然不假,修改/etc/network/interfaces文件中br的配置:
auto br0
iface br0 inet static
address 10.112.18.161
network 10.112.18.0
netmask 255.255.255.0
broadcast 10.112.18.255
gateway 10.112.18.254
dns-nameservers 8.8.8.8 8.8.4.4
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
现在gateway设置成了254,我们公司内部的正确网关IP地址。
不需要什么route del/add操作了。
复制有害,:)
vmbuilder的详细选项只能看源代码了。通过man或者这个链接可以看到一部分参数介绍:
http://manpages.ubuntu.com/manpages/precise/man1/vmbuilder.1.html
然后可以安装了,为了简化起见,我写了一个自动化创建vm的脚本,
创建时需要传递vm_name和ip作为参数:
#!/bin/bash
source ../common/tool.sh
# check input parameters
if [ -z $1 ]
then
echo "command usage: ./install.sh vm_name ip_address"
exit 0
fi
if [ $1 = "--help" ]
then
echo "command usage: ./create_vm.sh vm_name ip_address"
exit 0
fi
if [ -z $2 ]
then
echo "command usage: ./create_vm.sh vm_name ip_address"
echo "the 2nd parameter is required"
exit 0
fi
removeFolder "/var/lib/libvirt/images/$1/"
removeFile "/etc/libvirt/qemu/$1"
mkdir -p "/var/lib/libvirt/images/$1/mytemplates/libvirt"
cp /etc/vmbuilder/libvirt/* /var/lib/libvirt/images/$1/mytemplates/libvirt/
cp vmbuilder.partition /var/lib/libvirt/images/$1/
cd /var/lib/libvirt/images/$1/
echo `vmbuilder kvm ubuntu --suite=quantal --flavour=virtual --arch=amd64 --proxy=http://10.112.18.178:3142 -o --libvirt=qemu:///system --ip=$2 --gw=10.112.18.254 --part=vmbuil\
der.partition --templates=mytemplates --user=carrier --name=carrier --pass=123456 --addpkg=openssh-server --mem=2048 --hostname=$1 --bridge=br0 --debug --verbose`
echo `virsh define /etc/libvirt/qemu/$1.xml`
echo `virsh start $1`
这里proxy参数指定了我在公司内网创建的ubuntu apt-cacher 服务器,
内存默认指定2G.
运行方法就是
create_vm.sh vm1 10.112.18.191
但是会收到错误:
Selecting previously unselected package linux-image-virtual.
Unpacking linux-image-virtual (from .../linux-image-virtual_3.5.0.17.19_amd64.deb) ...
, stderr: grep: /proc/cpuinfo: No such file or directory
这个是Ubuntu 12.10/13.10自带的vmbuilder的bug,原因是没有mount /proc目录,这里讨论了这个问题,并提供了临时解决方案:
https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/1037607
下面通过我的命令打上临时的补丁:
wget https://launchpadlibrarian.net/120169451/usr_share_pyshared_VMBuilder_plugins_ubuntu_dapper.py.diff
cp /usr/share/pyshared/VMBuilder/plugins/ubuntu/dapper.py ./dapper.py_bk
patch /usr/share/pyshared/VMBuilder/plugins/ubuntu/dapper.py ./usr_share_pyshared_VMBuilder_plugins_ubuntu_dapper.py.diff
再运行:
create_vm.sh vm1 10.112.18.191
成功创建。
进入虚拟机后,需要调整时区:
dpkg-reconfigure tzdata
然后选择Asia/Harbin 即可。
注意,创建好的虚拟机的/etc/apt/sources.list文件需要修改,否则安装GC4.8会报错.