昨天终于把Linux9.0的内核升级到了2.6.18,虽然过程很漫长,并碰到了很多问题,但最终还是解决了。
由于要开发Linux2.6内核下设备驱动程序,于是在网上下载了RedHat AS4,用Virtual PC中装了,但是装完之后启动发现,这个版本的Redhat启动后占了CPU近100%,搞的根本就干不了别的事情。先前我在Virtual PC中已经装了Redhat9.0,其启动之后虚拟机只占不到10%的内存。但是Redhat9.0的内核是2.4.20的,我要的内核是2.6才能进行相应的开发,于是想到了把内核来升级到2.6。则有了接着的工作。
下载了2.6.18的内核之后,然后下载了module-init-tools-3.2.tar.bz2、mkinitrd-4.1.18-2.i386.rpm、lvm2-2.00.25-1.01.i386.rpm、device-mapper-1.00.19-2.i386.rpm,于是开始升级。3.5个小时的等待后,升级终于成功了。但是启动后发现网络不可用,在启动时提示:tulip device eth0 does not seem to be present,delaging initialization,于是想到可能是在刚才配置内核的时候把tulip这个东西忘记选中了。我又不想再编译内核,毕竟需要的时间太长了。于是想到把这个东西编成一个模块,然后加载进去。于是我来到/usr/src/Linux2.6.18/drivers/net这个目录下,发现有一个tulip的文件夹,进去后发现里面有一个Makefile文件和其他的源文件,由于要单独编译这个模块,于是我决定改写Makefile文件,用vi打开该文件,在#Declare multi-part drivers的下一行加上obj-m := tulip.o。然后编译:make -C /usr/src/Linux2.6.18 M=`pwd` modules,得到一个tulip.ko文件,用insmod tulip.ko把tulip.ko加载,然后用/etc/init.d/network start启动网络即可。
网络可以用了之后,发现该内核不支持smbfs文件系统,于是用上述的方法编译得到smbfs.ko,然后加载,于是也可用了。
启动之后,以前在非图形界面上老是出现i8253 count too high,resetting这个东西,现在竟然再也不出现了。