|
#以后这里可以添加背景故事
参考文献:
btrfs rootfs multi device:
http://forums.gentoo.org/viewtop ... -asc-start-625.html
如何制作initramfs:
http://en.gentoo-wiki.com/wiki/Initramfs
原理:
我也不明白。貌似是如果是多device的话,所有的device要active下啥的。
所以用/bin/btrfsctl -A /dev/sdxn来弄。
所以就要写个initramfs了。
步骤:
1) 我借助genkernel生成的initramfs.修改init,在合适的地方执行/bin/btrfsctl -A xxx
我不想写死在initramfs,所以学习原脚本解析参数
1) 在for x in ${CMDLINE}添加一个选择
btrfs\=*)
USE_BTRFS_DEVICE=1
BTRFS_DEVICES=`parse_opt "${x}"`
;;
2) 在 # Determine root device后面添加
if [ "${USE_BTRFS_DEVICE}" = 1 ]
then
/bin/btrfsctl -A ${REAL_ROOT}
echo "${BTRFS_DEVICES}"|sed 's/,/\n/'|while read btrfs
do
/bin/btrfsctl -A "${btrfs}"
done
fi
2) 编译一个静态的btrfsctl
1) ebuild `equery which btrfs-progs` install
2) cd /var/tmp/portage/sys-fs/btrfs-progs-0.19/work/btrfs-progs-0.19
3) \rm btrfsctl
4) make -n btrfsctl
应该可以看到一个命令,在其中添加-static,再执行
5) gcc -static xxxxx
6) ldd btrfsctl
可以看到已经是静态的了
3) 照教程生成initramfs
重启选择即可。
grub里的写法
root (hd0,5)
kernel /boot/kernel-genkernel-x86_64-2.6.37-gentoo root=/dev/sda7 btrfs=/dev/sda1
initrd /boot/initrd
写得不好主要没时间了。如果有需要的话,我可以重新写下。其实参考资料里讲得很清楚。
这里是我的init
http://cfy.googlecode.com/files/init
欢迎来#gentoo-cn at irc.freenode.net交流
nick: cfy |
|