在命令行中安装KVM ubuntu 10.04虚拟机

一般虚拟机都很容易安装,尤其是使用有图形界面的虚拟机软件。
但在某些场合,只能命令行安装。

现在linux流行的虚拟机软件有Xen\KVM等。ubuntu自从9.04开始,从源中去掉Xen,转为提供KVM。本文记录下命令行安装KVM虚拟机的过程。
Host主机是在Ubuntu 11.04,安装的Guest主机将使用Ubuntu 10.04

准备

sudo apt-get install kvm libvirt-bin virtinst

你还需要有一个Ubuntu 10.04 的ISO,我选用的是server 32位版。然后把iso mount起来

sudo mkdir /media/iso
sudo mount -o loop /media/1T/ISO/linux/ubuntu-10.04.2-server-i386.iso /media/iso
cd /media/iso
python -m SimpleHTTPServer

使用python命令可以以当前目录为根目录,创建一个简易HTTP Server,留作之后的步骤使用。

创建虚拟机

将以下内容写到一个bash脚本,如build.sh:

#!/bin/bash

if [ "$#" -ne 2 ]; then
        echo "Usage: $0  "
        exit 0
fi

name=$1
file=$2

virt-install -n ${name} \
-r 512 --vcpus=2 --nographic \
--os-type=linux --os-variant=ubuntuLucid \
--disk path=${file},size=5 \
-v --arch=i386 -d \
--connect qemu:///system \
--accelerate \
--location http://localhost:8000/ubuntu  \
--extra-args="text console=tty0 utf-8 console=ttyS0,115200"

使用

./build.sh datanode1 vm1.img

即可开始创建Guest OS,过程中会有一段时间黑屏,KVM进程会占用大量CPU,这是正常的,请耐心等待。

很快会进入到命令行安装Ubuntu的界面,按照向导操作即可。其中有一步让你选安装什么包,请选上OpenSSH,当然你也可以之后再安装。(其中有一步是选择源镜像,按照某文章,是可以用iso mount起来,然后建立HTTP服务器来作为源的,但我尝试失败了,如果你知道,请告诉我)

经过漫长的从网上源下载安装后,Ubuntu Guest OS就已经装好了。

配置虚拟机

使用virsh命令可以进入虚拟机管理shell,list –all命令可以列出现有的虚拟机。
使用start datanode即可启动虚拟机,使用console datanode即可把当前console连接上虚拟机。

登录进虚拟机后,查看下IP。推荐使用ssh登录虚拟机而不是console,console模式在vi编辑时会有问题,应该是shell的问题,懒得深究了。
默认KVM的虚拟机会使用NAT/DHCP配置,这里我把它改成Static IP,方便之后ssh登录。

配置静态IP

sudo vi /etc/network/interfaces

将iface eth0 inet dhcp那行注释掉,配置如下:

#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.122.101
netmask 255.255.255.0
gateway 192.168.122.1

然后执行命令

sudo ifdown eth0 && sudo ifup eth0

创建第二个虚拟机

有了第一个虚拟机,如果需要创建另一个一模一样的虚拟机,可以使用virt-clone命令。

virt-clone --connect=qemu:///system -d -f vm2.img -o datanode1 -n datanode2

复制好之后,需要修改一些地方以便与之前源虚拟机区分开来。
通过console连接上datanode2,编辑/etc/hosts和/etc/hostname,修改datanode1为datanode2
然后执行

sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo reboot

重启后即可让虚拟机生成自己的网络配置

重复上一节的配置静态IP步骤,并在Host主机内配置hosts指向Guest OS的地址。至此,多个虚拟机的配置即告完成。

参考: