在kvm image上用debootstrap 安装的Debian sid(v20091206)
作者:Liang Guo(bluestonechina@gmail.com)
作者:Liang Guo(bluestonechina@gmail.com)
本文描述了一种便于自动化安装Debian的方法, 适用于在已有的Debian 环境中快速构建用于kvm的硬盘映像. 本文中, 所有的操作都需要用root来执行.
1 创建kvm image, 如下命令创建一个8G的硬盘影响文件, /vm/sid1.img. 事实上, 安装完基本系统后, 文件系统的占用不到500M.
kvm-img create -f qcow2 /vm/sid1.img 8G |
2 在kvm image上建立分区及文件系统. 首先运行kvm-nbd,
kvm-nbd /vm/sid1.img |
这样 nbd-client即可通过本地的1024端口访问/vm/sid1.img, 就像一块普通硬盘.
然后运行nbd-client,
modprobe nbd nbd-client localhost 1024 /dev/nbd0 |
3 创建分区, 执行
sfdisk /dev/nbd0 -uM << EOF ,1024,82 ; EOF |
4 创建文件系统, 执行
mkswap /dev/nbd0p1 mkfs.ext4 /dev/nbd0p2 |
也可以选择其他类型的文件系统, 如ext3, btrfs, nilfs等新的文件系统.
5 挂载分区, 执行
mount /dev/nbd0p2 /mnt/root/ mkdir -p /mnt/root/var/cache/apt/archives/ mkdir -p /mnt/root/var/lib/apt/lists/ mount -o bind /var/cache/apt/archives/ /mnt/root/var/cache/apt/archives/ mount -o bind /var/lib/apt/lists/ /mnt/root/var/lib/apt/lists/ |
将本机的/var/cache/apt/archives和/var/lib/apt/lists挂载到/mnt/root下, 是为了让debootstrap使用已经缓存在这些目录下的软件包, 而不需要重新下载.
6 执行安装, 其中amd64是架构, 可以是i386, amd64等等. sid指dist, 可以是sid, testing, stable等, 是打算使用的安装源, 最好和当前系统使用的源相同.
/usr/sbin/debootstrap --arch amd64 sid /mnt/root |
7 chroot到新安装的环境中
LANG=C chroot /mnt/root /bin/bash |
8 安装kernel 和grub
mount -t proc proc /proc apt-get -y install linux-image-2.6-amd64 apt-get -y install grub-pc |
在执行安装前, 需要先挂载/proc文件系统.
9 设置/etc/fstab, /etc/network/interfaces, /etc/hostname, /etc/hosts,
cat >>/etc/fstab < sysfs /sys sysfs defaults 0 0 /dev/vda1 none swap sw 0 0 /dev/vda2 / ext4 defaults 0 1 EOF cat >>/etc/network/interfaces< iface lo inet loopback auto eth0 iface eth0 inet static address 10.10.1.11 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 10.10.2.11 netmask 255.255.255.0 EOF echo "sid1" > /etc/hostname cat >>/etc/hosts < EOF |
10 设置root密码
passwd root |
11 退出chroot环境, 卸载所有文件系统, 并中断nbd连接
exit umount /mnt/root/var/cache/apt/archives/ umount /mnt/root/var/lib/apt/lists/ umount /mnt/root/proc umount /mnt/root nbd-client -d /dev/nbd0 |
12 创建一个包含grub的启动软盘映像.
grub-mkfloppy grub.img |
13 启动kvm, 执行
kvm -m 1G -fda /root/grub.img -drive file=/vm/sid1.img,if=virtio,index=0,media=disk,boot=on -boot a |
14 使用磁盘中的grub引导硬盘中的系统, 在GRUB>提示符下输入:
root (hd0,2) linux /vmlinuz root=/dev/vda2 initrd /initrd.img boot |
15 将grub安装到硬盘, 使用步骤10中设置的密码登录系统, 然后运行
grub-install --force /dev/vda update-grub shutdown -h now |
16 现在可以使用如下命令启动虚拟机, 并正常运行了.
kvm -m 1G -drive file=/vm/sid1.img,if=virtio,index=0,media=disk,boot=on |