操作步骤:
-
下载准备编译的内核源代码(),本文使用的是linux-2.6.18.tar.bz2;
-
把linux-2.6.18.tar.bz2复制到虚拟机的/usr/src目录下,本文安装的是RHEL5.3;
-
解压linux-2.6.18.tar.bz2: tar jxvf linux-2.6.18.tar.bz2,并建立软件连接ln linux-2.6.18 linux;
-
cd linux;
-
make mrproper-Delete the current configuration, and all generated files,这是linux源码根目录下Makefile中的解释,由此可见其与一般的make clean的区别。基本上所有make操作,如果有不明白的都可以查看原始Makefile中的说明,权威而精辟,避免走弯路;
-
编译前配置内核:make config或make menuconfig—前者是命令行文本交互,后者是图形化菜单; 说明:如果是初次练习编译内核,大可不必修改配置,全部使用默认即可;如是编写针对特别设备的程序,则需要根据实际使用 情况进行配置;三种配置选项需要说明:Y—编译进内核;N—不编译进内核;M—编译成使用时可动态加载进内核形式;
-
make clean—清理之前编译产生的历史文件;
-
编译内核。编译内核有两种方式,一种是编译成zImage,一种是编译成bzImage;区别在于前者用于内核较小的情形,后者用于内核较大的情形,b即"big",两者都是vmlinux内核文件。本文操作时使用的是make bzImage,在interP8600 2.4G, 2G内存,32bit Win7下采用默认内核配置,编译完成耗时约16分钟。编译完成生成的bzImage位于/usr/src/linux/arch/i386/boot下;
-
编译内核模块:make modules—编译之前配置选择的模块;
-
安装编译好的模块:make modules_install—转移编译好的模块到系统的标准位置;注意:最好在安装前备份原内核模块文件—/lib/modules,备份内核启动文件/boot,备份系统头文件/usr/include/linux,备份重要的配置目录/etc;
-
安装新内核:make install——该操作将把镜像文件bImage拷贝到/boot目录,并创建相应的System.map符号连接;然后,修改bootloader配置文件,调用mkinitrd程序创建内核的initrd镜像;通常会在GRUB配置文件中增加相应的镜像启动配置行;
-
检查/boot/grub/grub.conf中的内容(示例如下),确保无误后,重启机器,进行新内核测试;
-
# grub.conf generated by anaconda
-
#
-
# Note that you do not have to rerun grub after making changes to this file
-
# NOTICE: You have a /boot partition. This means that
-
# all kernel and initrd paths are relative to /boot/, eg.
-
# root (hd0,0)
-
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
-
# initrd /initrd-version.img
-
#boot=/dev/hda
-
default=0
-
timeout=5
-
splashimage=(hd0,0)/grub/splash.xpm.gz
-
hiddenmenu
-
title Red Hat Enterprise Linux Server (2.6.18-128.el5)
-
root (hd0,0)
-
kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
-
initrd /initrd-2.6.18-128.el5.img
阅读(2191) | 评论(0) | 转发(0) |