LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 722|回复: 0

使用btrfs作为rootfs,btrfs是multi device

[复制链接]
发表于 2011-1-10 20:04:42 | 显示全部楼层 |阅读模式
#以后这里可以添加背景故事
   参考文献:
   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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表