新手,首先写写自己最近Linux内核编译的心得好了

来源:互联网 发布:html怎么写php代码 编辑:程序博客网 时间:2024/05/29 14:20

本文针对RedHat5 的对于2.6.15.5的内核编译成功

1.       首先从www.kernel.org/pub/linux/utils/kernel链接下下载Linux内核源码,(最好是与你所用的Linux内核版本相差不要太远的,比如不要用2.4内核版本去跑2.6的内核,会出很多问题)放入/usr/src目录下,解压好

2.       安装好module工具

www.kernel.org/pub/linux/utils/kernel/module-init-tools/ 下载module-init-tools-3.2.2.tar

www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/ 下载modutils-2.4.5-1.i386.rpm modutils-2.4.5-1.src.rpm modutils-2.4.5-1.sparc.rpm 这三个包

注意 版本不是问题,在下载modutils-2.4.5-1.src.rpm 时一定要把三个包都下载下来才可以

#rpm –e –nodeps modutils (强行卸载原有的modutils RPM包)

#rpm –ivh modutils-2.4.5-1.src.rpm

#rpm –ivh modutils-2.4.5.1.i386.rpm

#rpm –ivh modutils-2.4.5-1.sparc.rpm

3.       安装module-init-tools

#tar –jxvf  module-init-tools-3.2.2.tar

cd module-init-tools-3.2.2

,/configure –prefix=/sbin

make

make install

./generate-modprobe.conf  /etc/modprobe.conf

4.       建立软链接

cd  /usr/src

ln  –s  linux-2.6.15.5  linux

cd linux

5.       make mrproper 检查依赖关系

6.       开始进行内核的配置

执行命令 make menuconfig

特别注意:

对于第一项 Code maturity level options (代码成熟等级)中进入后有一项

Prompt for development and/or incomplete code/dircers”一定不能编译,不然在后面编译时会出错

至于如何把SCSI,EXT3直接编译进去我还没试过

设置完成后下一步

7.       开始编译内核 (生成使用gzip压缩的内核,生成的文件位于/usr/src/linux/arch/i386/boot目录)

对于大内核(比如需要SCSI支持),make bzImage
对于小内核,make zImage

8.       make modules modules_install (编译内核模块并安装到/lib/module./2.6.15.5目录)

9.       使用新内核

/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录

mv arch/i386/boot/bzImage /boot/bzImage2.6.15.5

10.   接下来是要修改启动项

加入如下几句:

title Red Hat Linux (2.6.15.5)

      root (hd0,0)

    kernel /boot/bzImage2.6.15.5 ro root=/dev/sda1 hdc=ide-scsi

    initrd /boot/initrd-2.6.15.5.img

 

11.   当我们编译了一个新的内核,也不要忘了为我们的scsi设备做一个新的initrd映像,因为我们没有把SCSI直接编进内核,而是把他们编成了模块模式,所以我们需要设置initrd,否则将无法进入系统,提示为“VFS: unable to mounting root fs
语法:
mkinitrd
路径名 内核的目录名

示例:
  
mkinitrd initrd-2.5.19.img 2.5.19   

initrd-2.5.19.img文件是自己任意取的,但最佳对应自己的内核版本号。
2.5.19
是在/lib/modules中的目录名,对应内核的版本。)

12.   为了使用以上mkinitrd命令我们必须安装mkinitrd device-mapperlvm2这三个软件包(注意安装顺序:先是lvm2,再是device-mapper,最后是mkinitrd

安装成功后,就可以使用了

# mkinitrd  /boot/initrd-2.6.15.5.img  2.6.15.5

如果没有成功,就用如下命令:

# mkinitrd  /boot/initrd-2.6.15.5.img  2.6.15.5  --without-dmraid

13.   # cp /usr/src/linux-2.6.15.5/System.map  /boot/System.map-2.6.15.5 (复制内核符号表)

14.   保存,重启 ,选择新的内核就可以了

原创粉丝点击