|
|
我用的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,内容如下:
- #/bin/bash
- echo "linuxrc................."
- sleep 20
- TMP_MOUNT="/mnt"
- PATH="/bin:/sbin:/usr/bin:/usr/sbin"
- # MOUNT KERNEL FILESYSTEMS
- # Create the proc directory if it does not exist
- if [ ! -d "/proc/" ]; then
- mkdir /proc
- fi
- # Mount the proc filesystem
- mount -n proc /proc -t proc
- # If sysfs is listed as a valid filesystem type in /proc
- # then mount it (if it doesnt then udev wont work
- # and you wont have the devices you need)
- if grep -q '[[:space:]]sysfs' /proc/filesystems; then
- if [ ! -d /sys/block ]; then
- mount -n sysfs /sys -t sysfs
- fi
- fi
- # Create some things that sysfs does not, and should not export for us. Feel
- # free to add devices to this list.
- make_extra_nodes() {
- ln -s /proc/self/fd /dev/fd
- ln -s /proc/self/fd/0 /dev/stdin
- ln -s /proc/self/fd/1 /dev/stdout
- ln -s /proc/self/fd/2 /dev/stderr
- ln -s /proc/kcore /dev/core
- mkdir /dev/pts
- mkdir /dev/shm
- }
- if [ ! -x /sbin/hotplug ]; then
- echo /sbin/udev > /proc/sys/kernel/hotplug
- fi
- mount -n ramfs /dev -t ramfs
- /sbin/udevstart
- make_extra_nodes
- /sbin/vgscan
- echo "/sbin/vgscan..............status : $?"
- /sbin/vgchange -a y
- echo "/sbin/vgchange........... status : $?"
- mount -t reiserfs /dev/lvm_vg/lvm_root $TMP_MOUNT
- echo "mount reiserfs........... status : $?"
- cd $TMP_MOUNT
- pivot_root . mnt
- umount -n /mnt/proc >/dev/null 2>&1
- 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 也没有执行
- <*> RAM disk support │ │
- │ │ (16) Default number of RAM disks │ │
- │ │ (4096) Default RAM disk size (kbytes) │ │
- │ │ [*] Initial RAM disk (initrd) support
复制代码
这些已经编译进内核。但是Loopback device support 编译的是模块
用Mandrake的mkinitrd脚本制作出的initrd.img,linuxrc就可以正常执行
不知道为什么自己做出的linuxrc就无法执行。
请问制作initrd要注意什么,怎么才能让它执行呢? :ask
请大家帮帮忙 :help :help :thank |
|