热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

在KVM虚拟机中使用debootstrap快速安装Debian系统

本文描述了一种便于自动化安装Debian的方法,适用于在已有的Debian环境中快速构建用于kvm的硬盘映像.本文中,所有的操作都需要用root来执行.1创建kvmimage,如下命令创建一个8G的硬盘影响文件,/vm/sid1.img.事实上,安装完基本系统后,文件系统的占

本文描述了一种便于自动化安装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,
这样 nbd-client即可通过本地的1024端口访问/vm/sid1.img, 就像一块普通硬盘.
然后运行nbd-client,
modprobe nbd
nbd-client localhost 1024 /dev/nbd0
3 创建分区, 执行
sfdisk /dev/nbd0 -uM < ,1024,82
;
EOF
该命令在/dev/nbd0上建立了2个分区, 第一个分区/dev/nbd0p1大小1g, 类型swap, 第二个分区为剩余的容量,类型未默认类型linux native.

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等, http://ftp.tw.debian.org/debian是打算使用的安装源, 最好和当前系统使用的源相同.

/usr/sbin/debootstrap --arch amd64 sid /mnt/root http://ftp.tw.debian.org/debian
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 < proc                 /proc    proc    defaults        0       0
sysfs                /sys     sysfs   defaults        0       0
/dev/vda1            none     swap    sw              0       0
/dev/vda2            /        ext4    defaults        0       1
EOF

cat >>/etc/network/interfaces< auto lo
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 < 127.0.0.1 localhost sid1
EOF

10 设置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的启动软盘映像.
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

推荐阅读
author-avatar
mobiledu2502889257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有