LinuxSir.cn,穿越时空的Linuxsir!

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

全硬盘lvm + genkernel + grub2安装gentoo成功

[复制链接]
发表于 2012-1-5 04:52:30 | 显示全部楼层 |阅读模式
新买了一台电脑,主要配置是i5-2500K,8G内存,1TB硬盘。
看了网上的介绍和例子,将整个硬盘作为一个vg,使用grub-1.99,目前暂用genkernel,安装成功。

分区结构比较简单:
/dev/sda                                物理硬盘
/dev/sda1                        物理分区
/dev/vg0                                将/dev/sda1作为lvm卷组(vg0)
/dev/vg0/root                        lvm逻辑卷(root),系统盘,100G,mount到“/”,/boot也在里面。
/dev/vg0/data                        lvm逻辑卷(data),数据盘,100G,剩余空间以后慢慢分。

创建vg和lv不再详述了。
genkernel按照说明注意要加--lvm参数。

gentoo缺省安装grub-0.97,修改/portage/package.keywords以安装grub-1.99-rc2,grub-1.99还依赖os-prober:
# We need Grub2
<=sys-boot/os-prober-1.47 **
<sys-boot/grub-3.00 **

grub-1.99就是grub2了,grub2的配置方法和grub不同,用两条命令进行配置:
grub2-mkconfig              这条命令会自动识别/boot下的kernel image和initrd image,生成相应的启动项
                                      我的/boot里只有一套kernel和initrd,所以生成了2个启动项,一个是正常启动,另一个是安全模式
grub2-install --no-floppy /dev/sda     安装grub到mbr

这一套搞定后,启动失败。进行定位:
1. grub菜单成功显示了
2. 已经显示了initrd的启动信息(加载驱动的信息)
3. 最后的提示是找不到root分区。
4. 按照选项进入initrd的shell,我的内核参数是root=/dev/mapper/vg0-root,查看/dev目录,没有这个设备文件
5. 在shell中执行initrd提供的lvm vgchange -ay命令,设备文件就出现了

按启动流程,grub2已经找到了lvm分区,加载了kernel和initrd,完成了任务
initrd应负责加载lv,再让内核切换过去,问题现象说明initrd加载lv失败,initrd没配好

找了半天,最后解开initrd走读其中的脚本:
1. 脚本/etc/init.script中,存在:
       if [ "${USE_LVM_NORMAL}" = '1' ]
       then
           ...
2. 找给这个变量赋值的地方,是在/init脚本中:
       CMDLINE='cat /proc/cmdline'
       ...
       for x in ${CMDLINE}
       do
             case "${x}" in
                     ...
                     # Start Volume manager options
                     dolvm)
                             USE_LVM_NORMAL=1
                     dolvm2)
                             bad_msg 'Using dolvm2 is deprecated, use dolvm ..."
                             USE_LVM_NORMAL=1
       ...
3. initrd的/proc/cmdline就是内核参数,看样子是因为少设了dolvm这个内核参数所以导致initrd.scripts脚本没有执行lvm初始化操作
4. 试验手工修改grub2-mkconfig自动生成的/boot/grub/grub.cfg,(该文件的注释要求禁止修改),启动成功。


最后总结和几个没想明白的地方:
1. 能够做全硬盘lvm完全得益于grub2对lvm分区的支持。
2. 完成后我去/usr/src/linux/Documentation/kernel-parameters.txt中查找dolvm,没找到,难道dolvm只是给initrd用的?
3. 后来我再google,网上已经有对dolvm参数的说明:http://www.gentoo-wiki.info/HOWT ... LVM2_root_partition
   也就是说dolvm是gentoo专用的内核参数?那为什么不在执行genkernel --lvm生成initrd时就直接把USE_LVM_NORMAL设为1?
发表于 2012-1-6 12:57:52 | 显示全部楼层
可以试一下btrfs,
回复 支持 反对

使用道具 举报

发表于 2012-1-6 13:23:04 | 显示全部楼层
Post by kxmd;2158311
可以试一下btrfs,

最好不要试,等fsck出来再说。
回复 支持 反对

使用道具 举报

发表于 2012-1-6 15:41:02 | 显示全部楼层
My gentoo laptop.
  1. > uname -a
  2. Linux PC-M 3.0.6-gentoo #18 SMP Thu Jan 5 22:32:42 CST 2012 x86_64 Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz GenuineIntel GNU/Linux
  3. > df -h
  4. Filesystem            Size  Used Avail Use% Mounted on
  5. rootfs               1008M   98M  860M  11% /
  6. /dev/root            1008M   98M  860M  11% /
  7. rc-svcdir             1.0M   64K  960K   7% /lib64/rc/init.d
  8. udev                   10M  292K  9.8M   3% /dev
  9. shm                   968M  156K  968M   1% /dev/shm
  10. /dev/sda5              40G  5.2G   33G  14% /usr
  11. /dev/sda6              20G  304M   19G   2% /var
  12. /dev/sda7             4.0G  137M  3.7G   4% /tmp
  13. /dev/sda8             391G   26G  346G   7% /home
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-6 17:10:45 | 显示全部楼层
看了一下btrfs的介绍,有一个不明白,btrfs如何支持多硬盘?两个硬盘有2个设备文件,将2硬盘作为一个fs去mount怎么操作?是否和lvm一样也需要device-mapper,initrd配合?
回复 支持 反对

使用道具 举报

发表于 2012-1-8 16:08:36 | 显示全部楼层
Post by zhou3345;2158312
最好不要试,等chfs出来再说。

最近遇到io性能问题,看了下主流的文件系统,感觉 sun的zfs 给力些。

要不是sun嫁给了oracle,说不定mac osx lion 会用zfs的。

chfs的官网果断被成都电信墙。

最近添了个硬盘,果断btrfs,心理感觉要快些了。呵呵。

tips:发现这个编辑筐是emacs键绑定的。很好啊。
回复 支持 反对

使用道具 举报

发表于 2012-1-8 17:45:26 | 显示全部楼层
Post by 2603301009;2158384
最近遇到io性能问题,看了下主流的文件系统,感觉 sun的zfs 给力些。

要不是sun嫁给了oracle,说不定mac osx lion 会用zfs的。

chfs的官网果断被成都电信墙。

最近添了个硬盘,果断btrfs,心理感觉要快些了。呵呵。

tips:发现这个编辑筐是emacs键绑定的。很好啊。

不好意思写得有歧义。其实应该是fsck修复工具。
btrfs最讨厌的就是一旦有问题,比如强行关机或断电引起了文件系统损坏,就所有数据全完了。而别的文件系统都可以用ckfs来检测修复。
我还是更喜欢xfs一些。不但速度挺好,而且对ssd有优化。
回复 支持 反对

使用道具 举报

发表于 2012-1-8 18:47:14 | 显示全部楼层
Post by zhou3345;2158387
不好意思写得有歧义。其实应该是fsck修复工具。
btrfs最讨厌的就是一旦有问题,比如强行关机或断电引起了文件系统损坏,就所有数据全完了。而别的文件系统都可以用ckfs来检测修复。
我还是更喜欢xfs一些。不但速度挺好,而且对ssd有优化。


sodesne.
回复 支持 反对

使用道具 举报

发表于 2012-1-8 23:44:10 | 显示全部楼层
btrfs加上compress=lzo选项还是比不上reiser4省空间吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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