|
发表于 2005-1-31 16:28:48
|
显示全部楼层
Post by 黑夜编码人
应该是LVM无关,我测试了一下,用的从www.kernel.org上下载的 linux-2.4.29.tar.gz 的内核,重新编译后,直接在/boot/grub/grub.conf中使用新内核加上 root=LABEL=/ 的确不能引导,因为grub似乎不认这种格式,后来在initrd中找到了答案。
根据redhat自带的initrd中的linuxrc,修改了一个这样的版本:
#!/bin/nash
echo Mounting proc filesystem
mount -t proc /proc /proc
echo Creating block devices
mkdevices /dev
echo Creating root dev
mkrootdev /dev/root
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount -o defaults --ro -t ext3 /dev/root /sysroot
pivot_root /sysroot /sysroot/initrd
umount /initrd/proc
同时,需要一个initrd.img的目录结构:
bin dev etc linuxrc loopfs proc sbin sysroot
(其中sbin是bin的symlink)
复制/sbin/nash到initrd.img的bin目录下
在initrd.img的dev目录下复制以下设备文件:
console null ram systty tty1 tty2 tty3 tty4
现在重新打包initrd.img,并将它加到grub.conf中,例如:
title RedHat Enterprise Linux AS (2.4.29)
root (hd0,0)
kernel /bzImage-2.4.29 ro root=LABEL=/
initrd /initrd.img
这样就可以使用了。
跟grub无关,grub不处理内核的root=*命令行,把它直接传递给了kernel |
|