mount 发表于 2003-2-16 17:02:26

rh8.0下编译内核心得!

经过几天的摸索和试验,终于搞定了rh8.0下2.4.20内核的编译。其间遇到了许多问题,通过查找资料和
参阅网上的文章,均一一得到解决。写出来希望对你编译内核能有所帮助!
编译过程如下:
1。下载2.4.20内核,解压。tar zxvf linux-2.4.20.tar.gz
   这个过程中要注意,如果下载的源代码放在家目录中,只需拷贝linux-2.4.20 到/usr/src/下。
   然后建立符号连接:ln -s /usr/src/linux-2.4.20 /usr/src/linux
   如果源代码直接下载到/usr/src/下,执行 tar zxvf linux-2.4.20.tar.gz 解压过程会自动建立
   /usr/src/linux->/usr/src/linux-2.4.20 符号连接,这样会覆盖rh8.0自带的源代码  linux-2.4.18-14
   如果你要保存2.4.18-14内核的源代码,要先做一个拷贝。
2。在/usr/src/linux下执行
    make mrproper#一定要做,不然极易出错,特别是多次编译内核以后。
    make xconfig   #配置内核,也可执行make config 或 make menuconfig 。配置内核过程中几个关键的地方要注意:ext2一定要编译进内核,选y. ext3可编译成模块,不然启动时内核无法读取/分区。
网络配置选项中,一定要打开 unix domain sockets (XWindow要用它,否则无法启动xwindow).
block devices (块设备):loopback devices support 要打开,不仅仅是光盘刻录,查看镜象文件时要
用,如果没有编译进内核,当用新内核引导系统后,执行 /sbin/mkinitrd 时会出问题:all loopback devices are in use。System V IPC也要打开。
    make dep#建立编译需要的连接
  make clean #最好做一次,清除以前编译留下的东西。
  make bzImage # 注意I一定要大写。
  make modules #编译模块
  make modules_install #安装模块
  make install #安装新内核。这个命令会保留老内核,并安装新内核,推荐使用。我用grub 引导系统,执行make install 后 在/boot下自动改变了连接:/boot/vmlinuz->/boot/vmlinuz-2.4.18-14 改变为 /boot/vmlinuz->/boot/vmlinuz-2.4.20 , /boot/System.map->/boot/System.map-2.4.18-14 改为:/boot/System.map->/boot/System.map-2.4.20 ,此时旧内核仍然可以引导系统--(我一直没想明白为什么!)。这时新内核还不能引导系统,当引导时无法读取/分区,问题在于grub,当执行make install 后,grub的menu.lst文件也相应改变,其中有一行:
   kernel /vmlinuz-2.4.20 ro root=LABEL=/ hdc=ide-scis 在引导时内核不能识别LABEL,网上的文章说在配置内核时把某个选项打开就可以了,可是我没找到那个选项,谁找到了请告诉我!解决方法是把root=LABEL=/ 改为 root=/dev/hda13 hdc=ide-scis (我的/分区是 /dev/hda13)。
  重起系统,用新内核引导,一个字--爽!

cnhnln 发表于 2003-3-20 21:31:38

我觉得不用make install ,自己改grub.conf好一些。纯属个人意见
页: [1]
查看完整版本: rh8.0下编译内核心得!