2009年12月14日 星期一

UML建置筆記

因為bash對env vars的處理方方式改變,必須使用2.6.32-rc2以後的kernel source才行
指令勿照抄

首先配置虛擬的root fs(以下指令大多需root權限)先用dd產生虛擬磁碟:
dd if=/dev/zero of=root_fs bs=1 count=5G
格式化成ext4(或其他格式)
mkfs.ext4 -L uml -F root_fs
掛載
mount -o loop root_fs /mnt
安裝debian squeeze基本系統
debootstrap squeeze /mnt http://ftp.tw.debian.org/debian
修改基本設定
cp /etc/hosts /mnt/etc/hosts
echo "/dev/ubd/0 / ext4 errors=remoount-ro 0 1">/mnt/etc/fstab
chroot進去做細部設定
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -t devpts none /mnt/dev/pts
chroot /mnt
配置編譯kernel所需要的環境
apt-get build-dep linux-2.6
下載新版source,解開編譯source(要記得把使用到的fs type編進kernel裡)
make defconfig ARCH=um
make menuconfig ARCH=um
make ARCH=um
make modules ARCH=um
安裝kernel modules
make modules_install ARCH=um
退出chroot環境
exit
把kernel複製出來
cp /mnt/path/to/linux .
還原chroot工作環境
umount /mnt/proc /mnt/sys /mnt/dev/pts /mnt
修改owner,避免以root執行造成破壞的可能性
chown user_id:user_id linux root_fs
備份一下root_fs之後(避免玩壞了還要重建一份),就可以開機進行更進一步的調整、測試了(不需root權限)
./linux mem=512M ubd0=root_fs