之前就一直想好好玩玩gentoo,前面比较忙而且编译内核总是太费时间,所以一拖再拖了。。。。
正巧有台服务器刚刚装了libvirt,就拿它建虚拟机玩gentoo咯~~~
kvm用的virt-manager远程管理,先上几个图
【virt管理界面】
【gentoo安装完成后的grub界面】
【系统加载完毕,登录进系统后】
安装过程,开始比较顺利,后面virtio驱动麻烦点
首先下载了gentoo的mini-livecd:install-amd64-minimal-20120209.iso
然后建立虚拟机,挂载光盘,硬盘是virtio的20G硬盘,进入livecd比较顺利,gentoo识别了virtio的硬件(磁盘,网卡)
下面就按照gentoo官方指引,安装系统了(记录主要部分)
1、网络
进入livecd后默认的网卡并没有开启,运行dhcpcd通过dhcp获取IP地址
2、磁盘分区
/dev/vda 共20G,分为3块:
/dev/vda1 boot分区,128MB,EXT2格式,并添加boot标识位
/dev/vda2 swap分区,1G
/dev/vda3 根目录,剩余容量
3、安装文件
下载stage3(stage3-amd64-20120209.tar.bz2),挂载/dev/vda3(根分区)到/mnt/gentoo,解压stage3到里面
下载portage快照,解压到/mnt/gentoo/usr,
mirrorselect选择镜像时程序出错。。。bug?
无奈只有手动修改 /mnt/gentoo/etc/make.conf,添加一个国内的镜像
# mount -t proc none /mnt/gentoo/proc
# mount -B /dev /mnt/gentoo/dev
# mount /dev/vda1 /mnt/gentoo/boot
# chroot /mnt/gentoo
# source /etc/profile
更新portage树
# emerge --sync --quiet
# eselect profile list (第二个是gnome)
# eselect profile set 2
编辑/etc/local.gen选择编码
# locale-gen
# cp /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
安装内核
# emerge gentoo-sources
# emerge genkernel
# zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config
# genkernel all
再根据磁盘具体情况编辑/etc/fstab
4、安装grub
按照指引安装。。
grub-install的时候死活认不出vda,只有手动在/boot/grub/device.map里面添加
(hd0) /dev/vda
5、重启
重启看到grub。。。系统加载一半出错。。。
说是找不到/dev/vda3,shell进入一看,vda没有被识别,lsmod|grep virtio也没有任何信息
看来是initramfs里面缺virtio的驱动了
再次进入livecd,挂载磁盘,chroot
搜了半天实在找不到怎么更新配置让他加载virtio
后来解压initramfs后,看了init这个shell脚本,里面有加载驱动的代码,发现会加载MY_HWOPTS这个变量里面的内容
搜了下。。。未果
# grep MY_HWOPTS initramfs/etc/*
发现了两个文件:initrd.defaults和initrd.scripts
后来在initrd.defaults里面的MY_HWOPTS变量里面加了virtio
然后新建文件 initramfs/etc/modules/virtio
里面写上virtio的驱动:
virtio
virtio_pci
virtio_ring
virtio_balloon
virtio_blk
(或许直接virtio_blk就可以了,未测)
然后重新打包initramfs,重启。。。顺利进入系统