编译内核遇到VFS:Unable to mount root fs no unkown-block(已解决)

为当前最终发行版之前的所有版本提供支持
回复
头像
kldoo
帖子: 131
注册时间: 2006-08-15 9:29
来自: 现居红尘
送出感谢: 0
接收感谢: 0
联系:

编译内核遇到VFS:Unable to mount root fs no unkown-block(已解决)

#1

帖子 kldoo » 2007-04-20 12:37

今天编译内核(2.6.20.7+reiser4补丁)
步骤是: 安装编译环境(终端环境{make menuconfig}和QT环境{make xconfig}) GTK环境不稳定
sudo apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget libncurses5 libncurses5-dev

tar -jxvf linux-2.6.20.7.tar.bz2 -C ~/
解压到家目录没有权限限制

cd linux-2.6.20.7
bzip2 -dc ../reiser4-for-2.6.20.patch.bz2 | patch -p1
打resier4的补丁,还有我发现磁盘分区格成另一种格式后UUID会改变,所以记得改menu.lst

make mrproper
确保源代码目录下没有不正确的.o 文件以及文件的互相依赖

make xconfig
配置内核,我以config-2.6.20-15-generic为蓝本,加了reiser4和ext4及一些常用的模块
去掉了一些不用的东东,比如SELinux(搞不懂它的用法,在FC时就一头雾水)
源码目录下的README还提到了其他的工具

make bzImage && make modules
编译内核,模块

sudo make modules_install && sudo make install
安装模块和内核

这时如果重启的话,会提示:kernel panic - not syncing: VFS: Unable to mount root fs no unkown-block
百度一下(Google也试了一下,不如百度匹配,中文搜索还是百度),
原来时我的SATA硬盘的原因,没有initrd文件
(一般情况下initrd这个文件在台式机上不是必须的,但是在有SCSI设备的服务器上却是必须的。) 不知具体原因为何??
SATA也算SCSI设备呀!!以前用sudo make-kpkg -initrd --revision=386 kernel_image kernel_headers modules_image 命令生成DEB包没注意;
不过还是这样把命令分开来看的明白;

cd /lib/modules/2.6.20.7-kldoo-6/
sudo mkinitramfs -o /boot/initrd.img-2.6.20.7-kldoo-6 2.6.20.7-kldoo-6
生成initrd文件,在menu.lst文件中加 initrd /boot/initrd.img-2.6.20.7-kldoo-6

重启后一切OK! 编译NVIDIA驱动和ALSA驱动(我的HD声卡只有在1.0.14rc2后才完全支持,之前都有杂音)
开Beryl后感觉好多了(心里作用);

这是我在新机器(Nvidia的C61芯片组)上第6次编译内核
(前5次都是32位的,前几天换到64位,感觉程序响应快了
如果要在64位系统下运行32位程序 : sudo apt-get install ia32-libs ia32-libs-gtk ia32-libs-sdl linux32
借着新内核,把/改成EXT4的挂载(ext4的文档在内核目录/Documentation/filesystems下)
没多大变化,个人感觉还没Reiserfs好用,文件系统结构没变,只是改了内核的驱动罢了
准备5.1试试Gentoo(这就是我把reiser4加进内核的原因,在Ubuntu上编译Gentoo,呵呵)
回复

回到 “老旧版本支持”