安装ubuntu domU
一、创建虚拟机硬盘
# lvcreate -L 4096M -n lucid-srv domU
二 、安装全虚拟的操作系统
通过virt-manager安装一个full-virt的ubuntu 10.04。
说明:gitco的xen 3.4.3跟原生的virt-manager不兼容,导致virt-manager不能利用iso来安装hvm。有三种解决办法:
- 使用centos自带的xen,版本是3.1.2,virt-manager可以正常使用;
使用gitco 的xen 3.4.3,但是自行编译virt-manager0.8.5和virt 0.500-4,参考:http://pjwelsh.blogspot.com/2011/01/linux-centos-55-xen-34x-and-virt.html
直接使用qemu/qemu-x86_64安装
这三种方式中,第三种最简单,最方便。下面简单说说如何使用qemu安装domU:
**安装
# qemu-x86_64 -hda /dev/domU/lucid-amd64-srv -hdb /dev/domU/lucid-amd64-srv-swap -cdrom /path/to/your/ubuntu-10.04.3-amd64-srv.iso -boot d
这时将弹出一个窗口,接下来安装步骤跟在普通计算机上安装ubuntu是一样的。那安装完了之后如何启动呢?
启动
# qemu-x86_64 -hda /dev/domU/lucid-amd64-srv -hdb /dev/domU/lucid-amd64-srv-swap -boot
三、更新源
ubuntu推荐日本的源jaist,实在是太快了。
$ sudo apt-get update
四、安装linux-image-ec2
ubuntu中有两个内核支持xen pv
- linux-image-ec2
- linux-virtual
任选一个安装即可。
$ sudo apt-get install linux-image-ec2
ubuntu 10.04默认内核就支持xen pv,因此不需要额外安装linux-virtual这个软件包(感谢JulyClyde@newsmth)
{: class=“info” }
五、安装grub
$ sudo apt-get purge grub2 grub-pc
$ sudo update-grub
$ sudo apt-get install grub
$ sudo apt-get grub
六、添加/etc/init/hvc0.conf
创建/etc/init/hvc0.conf
,内容如下:
# hvc0 - getty
#
# This service maintains a getty on hvc0 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 38400 hvc0
七、生成menu.lst
$ sudo update-grub
八、修改/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/dev/xvda1 / ext3 errors=remount-ro 0 1
/dev/xvdb none swap sw 0 0
在这里很多人会搞混,这里为什么用/dev/xvda1而不是/dev/xvda呢,因为在安装ubuntu的时候,ubuntu会对硬盘进行分区才能使用,前面提到的qemu
qemu -hda /dev/domU/lucid-srv -hdb /dev/domU/lucid-srv-swap就有两块硬盘,其中第一块硬盘就有一个分区,也是“/”挂载点,而第二块硬盘单独作为swap分区使用(swap分区有些特别)。以下是在ubuntu中执行fdisk -l的结果。
admin@lucid-srv:/proc$ sudo fdisk -l
[sudo] password for admin:
Disk /dev/xvda: 4294 MB, 4294967296 bytes
10 heads, 63 sectors/track, 13315 cylinders
Units = cylinders of 630 * 512 = 322560 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a81f1
Device Boot Start End Blocks Id System
/dev/xvda1 * 4 13312 4192256 83 Linux
Disk /dev/xvdb: 536 MB, 536870912 bytes
255 heads, 63 sectors/track, 65 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvdb doesn't contain a valid partition table
当然,用户也可以在lucid-hvm安装完毕后,将分区1中的文件全部拷到一个不包含分区表的镜像或块设备中,这样就不需要理会到底是/dev/xvda1还是/dev/xvda了。
这又该怎么操作呢?
# lvcreate -L 4096M -n lucid-amd64 domU
# mkfs.ext3 /dev/domU/lucid-amd64
# mount /dev/domU/lucid-amd64 /tmp/lucid-amd64
# kpartx -p "" -av /dev/domU/lucid-srv
# mount /dev/mapper/lucid-srv1 /tmp/lucid-srv
# cp -rpf /tmp/lucid-srv/* /tmp/lucid-amd64
# umount /tmp/lucid-amd && umount /tmp/lucid-srv
# kpartx -d /dev/domU/lucid-srv
通过该操作,/etc/fstab中的/dev/xvda1就可以改成/dev/xvda了。
九、将kernel拷到dom0中
# kpartx -p "" -av /dev/domU/lucid-srv
# mount /dev/mapper/lucid-srv1 /tmp/lucid-srv
# cp /tmp/lucid-srv/boot/* /boot/domU/lucid/amd64/
# umount /tmp/lucid-srv
# kpartx -d /dev/domU/lucid-srv
十、创建配置文件lucid-srv-pv.cfg
/etc/xen/domU/U1004-64.cfg
name = "U1004-64"
uuid = "a54ebcb6-bb68-4b30-8253-5e1ec1acdd4a"
maxmem = 1024
memory = 1024
vcpus = 1
#bootloader = "/usr/bin/pygrub"
kernel = "/boot/domU/lucid/amd64/vmlinuz-2.6.32-21-server"
ramdisk = "/boot/domU/lucid/amd64/initrd.img-2.6.32-21-server"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "phy:/dev/domU/lucid-srv,xvda,w",
"phy:/dev/domU/lucid-srv-swap,xvdb,w"
]
root="/dev/xvda1 ro"
vif = [ "mac=00:16:3e:79:72:aa,bridge=eth0" ]
这时执行xm create U1004-64.cfg
命令后,就可以通过dom0中的内核启动domU了,假如需要通过pygrub来启动domU,只需要简单的将配置文件中的kernel和ramdisk注释掉,同时启用bootloader一行就可以实现pygrub了。