背景音乐

                    联系我: 869727(点击Q我)  

2008年7月29日星期二

关于Linux内核升级编译问题

今天无事,把Debian 4.0r3 Etch上原带的2.6.18 kernel升级成2.6.26。

出现两个问题:

1.新内核编译完,重启,提示:
/bin/cat: /sys/block/sda/dev: No such file or directory

查了下文档,文档指出:

Next make sure you enable the Fusion MPT device drivers under Device Drivers --> Fusion MPT device support. I don't know if this is necessary on all platforms; at least it is on mine (Debian Sarge on a VMware Server) because otherwise you'll get this error message when you boot your new kernel:

正如作者所说,他也不是很清楚,其实最后测试后,发现问题不在这,真正问题应该是:

因为采用了ata_piix的模块来管理硬盘,但是在2.6.25之后,默认的硬盘是IDE的,其默认的设备名称是/dev/hda之类的。现在只需在Grub的配置文件中增加

ro hda=noprobe




就好,这样linux就会用ata_piix模块来管理硬盘(直接支持DMA等),不过这样做要有个前提,就是ide和ata_piix都要作为module来加载,而不是将其编译到内核中。



2. 提示:mount: unknown filesystem type 'devfs'

此问题解决方法,老外已经搞定,下面是网上资料:

Now we must create a ramdisk for our new kernel. Normally we do this with mkinitrd, but our new kernel uses udev instead of devfs, and you'll most likely get this error message with an mkinitrd generated ramdisk during boot-up:
现在我们必须为新的内核创建一个初始化内存盘。通常,我们用mkinitrd来做这个,但是我们的新内核用了udev而不是devfs,因此如果你在boot-up的过程中用mkinitrd来产生初始化内存盘的话,那将会产生如下的错误信息:
mount: unknown filesystem type 'devfs'

which might lead to a kernel panic.
这个错误将会导致内核panic
The new way of creating ramdisks is with mkinitrd.yaird. Backports.org has a yaird package for Debian Sarge. Before we can install it, we must install two prerequisites:
创建初始化内存盘的新方法是用mkinitrd.yaird。Backports.org 有一个Debian Sarge系统用的yaird包。在安装它之前,我们必须先安装两个先决包:
apt-get install libhtml-template-perl libparse-recdescent-perl

yaird包地址:http://downloads.howtoforge.com/files/yaird_0.0.12-8bpo1_i386.deb




把/boot/config-2.6.26中 带有CONFIG_DEFCONFIG_LIST 注释掉。

然后:mkinitrd.yaird -o /boot/initrd.img-2.6.26 2.6.26 (如果以前已经生成过一个,可以删除)

修改menu.list,如上图所示。

重启,uname -a 显示 Linux debian 2.6.26 #2 SMP Tue Jul 29 16:25:59 CST 2008 i686 GNU/Linux

没有评论: