LinuxSir.cn,穿越时空的Linuxsir!

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

help:LVM2做为根分区,initrd应该如何做?

[复制链接]
发表于 2005-2-13 13:29:46 | 显示全部楼层 |阅读模式
我用的LFS系统,想用LVM2做为根分区,制作initrd出现问题。

以下是我的制作过程,不知道有什么错误,制作好的initrd无法执行。
请大侠帮帮忙。 :help
dd if=/dev/zero of=initrd bs=1024 count=6144
mke2fs -m 0 -i 1024 -F initrd
mount -o loop initrd tmp/
然后编辑linuxrc,内容如下:


  1. #/bin/bash

  2. echo "linuxrc................."
  3. sleep 20
  4. TMP_MOUNT="/mnt"

  5. PATH="/bin:/sbin:/usr/bin:/usr/sbin"


  6. # MOUNT KERNEL FILESYSTEMS

  7. # Create the proc directory if it does not exist

  8. if [ ! -d "/proc/" ]; then
  9.   mkdir /proc
  10. fi

  11. # Mount the proc filesystem

  12. mount -n proc /proc -t proc

  13. # If sysfs is listed as a valid filesystem type in /proc
  14. # then mount it (if it doesnt then udev wont work
  15. # and you wont have the devices you need)

  16. if grep -q '[[:space:]]sysfs' /proc/filesystems; then
  17.     if [ ! -d /sys/block ]; then
  18.     mount -n sysfs /sys -t sysfs
  19.     fi
  20. fi

  21. # Create some things that sysfs does not, and should not export for us.  Feel
  22. # free to add devices to this list.

  23. make_extra_nodes() {
  24.         ln -s /proc/self/fd /dev/fd
  25.         ln -s /proc/self/fd/0 /dev/stdin
  26.         ln -s /proc/self/fd/1 /dev/stdout
  27.         ln -s /proc/self/fd/2 /dev/stderr
  28.         ln -s /proc/kcore /dev/core
  29.         mkdir /dev/pts
  30.         mkdir /dev/shm
  31. }

  32. if [ ! -x /sbin/hotplug ]; then
  33.     echo /sbin/udev > /proc/sys/kernel/hotplug
  34. fi

  35. mount -n ramfs /dev -t ramfs

  36. /sbin/udevstart

  37. make_extra_nodes

  38. /sbin/vgscan
  39. echo "/sbin/vgscan..............status : $?"
  40. /sbin/vgchange -a y
  41. echo "/sbin/vgchange........... status : $?"
  42.   mount -t reiserfs /dev/lvm_vg/lvm_root $TMP_MOUNT
  43. echo "mount reiserfs........... status : $?"
  44.   cd $TMP_MOUNT
  45.   pivot_root . mnt
  46.   umount -n /mnt/proc >/dev/null 2>&1
  47.   exec chroot . sh -c 'umount -n /mnt >/dev/null 2>&1; exec -a init.new /sbin/init 3' <dev/console >dev/console 2>&1

复制代码


在dev下创建了这些设备:
[root@NEWLFS dev]#ls
console  initrd  null  ram0  ram1  ram2
[root@NEWLFS dev]#
脚本中的命令及库文件都已经放置好。
用gzip initrd压缩.
kernel (hd0,7)/vmlinuz root=/dev/lvm_vg/lvm_root
initrd (hd0,7)/initrd.gz
结果仍然认不出lvm_root
似乎linuxrc根本没有执行。
上面的echo "...."都没在屏幕上输出。
sleep 20 也没有执行



  1. <*> RAM disk support                                                                      │ │
  2.   │ │                      (16)  Default number of RAM disks                                                         │ │
  3.   │ │                      (4096) Default RAM disk size (kbytes)                                                     │ │
  4.   │ │                      [*]   Initial RAM disk (initrd) support                        

复制代码

这些已经编译进内核。但是Loopback device support 编译的是模块
用Mandrake的mkinitrd脚本制作出的initrd.img,linuxrc就可以正常执行

不知道为什么自己做出的linuxrc就无法执行。

请问制作initrd要注意什么,怎么才能让它执行呢? :ask
请大家帮帮忙 :help :help :thank
发表于 2005-2-18 10:45:09 | 显示全部楼层
我觉得好像可以不使用initrd把你的LVM编译进入kernel就可以了。

没有试验过。

个人觉得根分区使用LVM没有必要。数据存放的地方使用LVM到还是不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-18 10:52:37 | 显示全部楼层
做为根分区时必须要用initrd的,raid可以直接编译进核心就可以识别了。
LVM不行,使用udev管理,需要先激活

发现RHEL4默认分区就是LVM管理的,正在下载准备看看它的initrd是怎么写的。

谢谢回复
回复 支持 反对

使用道具 举报

发表于 2005-2-18 11:02:56 | 显示全部楼层
好运!等待结果。

昨天的cpu烧坏了(由于风扇坏了),唉.......
回复 支持 反对

使用道具 举报

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

本版积分规则

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