千家信息网

Linux内核编译的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Linux内核编译的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 下载源代码Linux内核总是
千家信息网最后更新 2026年11月02日Linux内核编译的示例分析

小编给大家分享一下Linux内核编译的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  下载源代码

Linux内核总是不断发展的,***的内核Kernel2.6.0对USB2.0予以正式的支持,以及内核模块文件后缀最显著的一个变化由*.o到*.ko等等,我们可以从www.kernel.org下载到tarball的源代码包。

前期准备

大家都知道的要先升级"module-init-tools"软件包,否则的话,等你安装内核模块文件的时候,系统会提示你:Warning: you may need to install module-init-tools See http://www.codemonkey.org.uk/post-h...4.21-23.src.rpm。

进入下载目录下并安装:

 #rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包)#rpm -ivh modutils-2.4.21-23.src.rpm (把源代码  包安装到了    /usr/src/redhat目录下)  #cd /usr/src/redhat/SPECS (进入规范文件目录下)  #rpmbuild --bb modutils.spec (生成二进制的RPM包)  #cd ../RPMS/i386 (转入刚生成的二进制的RPM包所在位置)  #rpm -ivh modutils*.rpm (刚生成两个[modutils-2.4.21-  23.i386.rpm    与modutils-debuginfo-  2.4.21.23.i386.rpm]二进制的RPM包,一起安装吧!)

因为是在RedHat9.0的平台,RedHat的用户可能还会遇到一些麻烦,我会慢慢说的,除了要以上的升级之外,还有个文件(/etc/rc.d/rc.sysinit)可能有缺陷,因为/proc/ksyms文件在新内核(Kernel2.6.0)中已经没有了,打开文件命令如下:

 #vi /etc/rc.d/rc.sysinit找到:if ! LC_ALL=C   grep -iq nomodules /proc/cmdline 2>/dev/null    && [ -  f /proc/ksyms ]; thenUSEMODULES=yfi替换  成:if ! LC_ALL=C grep -iq nomodules /proc/cmdline   2>/dev/null; thenUSEMODULES=yfi

也就是把"&& [ -f /proc/ksyms ]"去掉,保存文件(操作之前***做备份以免删错,这个文件是系统初始脚本,重要的很),这样子内核才能加载模块,当然能启动iptable防火墙了,否则防火墙在新内核中启动时红色的"failed"非常醒目。(请在新内核中核查/proc/sys/kernel/modprobe中的内容是不是: /sbin/modprobe,也可手工注入指令:#echo "/sbin/modprobe" > /proc/sys/kernel/modprobe)。下面开始构造新内核。

一、准备源代码

1、下载到tarball包之后,将内核tarball包复制到/usr/src目录下,假定包在当前目录中,运行以下命令:

#cp linux-2.6.0.tar.gz /usr/src

2、转到/usr/src目录并解开tarball包。

 #cd /usr/src#tar xvzf linux-2.6.0.tar.gz

3、如果你还下载了补丁包,则打上补丁,你也可以运行scripts/patch-kernel脚本文件自动打上补丁(准备好补丁包)或 #zcat patch-2.6.0.gz|patch -p1。

二、定制内核

定制内核是门很大的学问,需要大量的硬件知识,特别是2.6.0的内核,如果你从 2.4.N配置文件装载进去的,的确,很多人遇到过麻烦。我是重新配置文件(X窗口服务器进行),配制内核之前请清理源代码树,如果还没有进入 /usr/src/linux-2.6.0目录,请进入此目录,命令如下:

#make mrproper (刚解开的tarball包不需此步骤)#make   gconfig (需要Gtk开发库的支持)或make config或make   xconfig(需要Qt开发库的支持)

注意:如果你是ext3文件系统,则在定制内核配置文件时把对Ext3、Ext2文件的支持直接编译进内核,否则,等你启用新内核时机器就会当掉,出错信息如下:kernel panic : no init found ,try passing init = option to kernel......或者是:kernel panic:VFS:Unable to mount root fs on unknown-block(0,0),我一开始不知道,编译了好几次,系统总给我冷板凳坐,***把对Ext3、Ext2文件系统的支持直接编译进内核,才解决此问题,还有把对"Module unloading"选项也选上,否则的话,你在新内核环境下无法卸载内核模块(rmmod命令不能用)。

三、编译内核及模块

定制好的内核配置文件(/usr/src/linux- 2.6.0/.config)之后,激动的时刻到来了,编译内核及模块,#make (此命令已完成make bzImage及make modules的工作),bzImage内核文件在arch/i386/boot目录中,你的CPU不同内核文件存放位置也不同,我是Intel的 CPU。

注意:我在RedHat7.2平台时曾出现无法编译的出错信息,出错信息如下:

/tmp/cc2Hu7sH.s:3: Error: Unknown pseudo-op:   `.incbin'make[1]: *** [usr/initramfs_data.o]   Error 1make: *** [usr] Error 2,

重新装了个9.0的才解决此问题。说明:make命令在我的1.6GHz,128MB的机器上跑了足足27分钟。

四、安装模块及内核文件

#make modules_install install

以上这个命令可以分解成make modules_install与make install,make modules_install安装内核模块到/lib/modules/2.6.0下。make install完成mkinitrd命令及内核(bzImage)和System.map的拷贝,请查看/boot目录,文件名是有区别的,如是GRUB 引导器,make install命令已帮你自动修改了引导选项,对于LILO则要手工修改,重写引导记录。

说明:make modules_install install这个命令在我的1.6GHz,128M的机器上只跑了三十几秒,很快的哦。

五、后记

***的工作就是重启系统(#shutdown -r now),检验一下你的劳动成果吧。差点忘了还有一点,可能对你很重要,进入新内核之后我发现rpm命令不能用了,原来这是RPM的一个Bug,特别是对于RH9的用户,请打开/etc/profile文件,命令如下:

 #vi /etc/profile (在文件的末尾加上几句如下)if   [`uname -r`="2.6.0" ];thenexport   LD_ASSUME_KERNEL=2.2.5 fi

也就是给系统加上一个全局的环境变量,也可直接键入#export LD_ASSUME_KERNEL=2.2.5。

使用新内核可能出现的问题及对策:

1、新内核根本起不来,解决方法:重新配置内核(学问挺大),也许还根引导记录有关(很少了)。

2、新内核模块无法加载,会导致很多问题,比如了防火墙没法工作了,mount不上光盘和vfat及ntfs文件系统,其解决方法:升级module- init-tools软件包(我是modutils-2.4.21- 23.src.rpm包),RedHat的用户可能还要修改/etc/rc.d/rc.sysinit文件。

3、RedHat用户rpm命令不能使用,解决办法:请把变量在全局配置文件中声明。

以上是"Linux内核编译的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内核 文件 命令 目录 模块 编译 系统 配置 源代码 支持 用户 补丁 问题 二进制 信息 内容 篇文章 防火墙 准备 升级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网科技公司起名 互联网金融 科技金融 鑫亿盛互联网科技 互联网科技论文 互联网高科技股票 四个字互联网科技公司取名 佩信高科技互联网 云创客互联网科技公司 深圳国际航运科技和互联网 广州慧亚互联网科技怎么样 随着互联网科技发展 互联网公司黑科技创始人 东莞新华互联网科技学校 互联网企业科技类企业如何做账 广州有谷有贝互联网科技有限公司 南京一网一红互联网科技有限公司 西安有哪些互联网高科技企业 版纳互联网科技选哪家 华人运通互联网科技公司 北京互联网络科技有限公司 科技伦理 互联网公司 银川新华互联网科技职业技术培训学校图片 互联网时代科技改变生活 互联网经济与金融科技 彤创互联网科技有限公司 无锡工业互联网科技有限公司 皮皮虾互联网科技有限公司 35岁以上互联网科技行业 互联网科技大佬云集
0