Ubuntu12.10 server装配KVM的不同之处
Ubuntu12.10 server安装KVM的不同之处
注意,现在host机器仍然不能连外网,用
发现和12.04不同的是,default规则已经有了,但是网关的IP地址错了,应该是254.所以用下面的语句删除后再添加正确的规则:
好,外网联通了。
现在gateway设置成了254,我们公司内部的正确网关IP地址。
这里proxy参数指定了我在公司内网创建的ubuntu apt-cacher 服务器,
这个是Ubuntu 12.10自带的vmbuilder的bug,原因是没有mount /proc目录,这里讨论了这个问题,并提供了临时解决方案:
再运行:
成功创建。
因为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自带的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 即可。