为了编译内核,前前后后断断续续共花了4,5天。总算老天开眼,昨天让我编译成功了。
我的linux版本是FC4-i386的,在vmware虚拟机环境下编译,原内核是:2.6.11-1,升级后内核为2.6.15.4
因为版本的不同,编译内核的过程也不同,特别是从内核2.4到2.6。有很大不同。
照着下面的步骤依样花葫芦,我把自己遇到的问题写下来了。
一、备份重要文件
备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。
1、备份内核和启动文件
# cd /
# tar cvzf boot.tar.gz boot
2、备份系统函数头文件
# cd /usr/include
# tar cvzf linux.tar.gz linux
# tar cvzf scsi.tar.gz scsi
# tar cvzf asm.tar.gz asm
3、备份模块中的库文件
# cd /lib/modules
# tar cvzf 2.6.11-1.1369_FC4.tar.gz 2.6.11-1.1369_FC4
5、备份重要配置目录
# cd /
# tar cvzf etc.tar.gz etc
-------------
(说明:这些步骤如果你很有把握的话,就不需要做了。不过对我来说,幸亏我照着做了,否则因为下面的步骤,我差点编译没成功。)
二,下载和解压缩内核源代码
1.内核源代码下载网站:http://www.kernel.org/ 到该网站找最新的内核文件,点“F”(F=full source)即可下载全部源代码的压缩包。
2.用tar命令释放内核源代码
如果你是用vmware虚拟机来玩linux的话,可以通过设定共享文件夹来访问windows下的下载的源代码压缩包。(如果不成功,方法见以前的bolg。)
将压缩包拷贝至 /usr/src 中,然后解压缩
# cd /usr/src
# tar zxvf linux-2.6.15.4.tar.gz
文件释放成功后,在/usr/src目录下会生成一个linux-2.6.15.4子目录。其中包括了源代码。
(原文章中,还要有一步“将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。”的过程,但是,我照着做之后,出现错误“/usr/include/asm/errno.h:4:31:error:asm-generic/errno.h:没有这个文件或目录”,之后,上网求救,终于有幸斑竹指点,不需要做这一步。)
三.配置内核
1、删除源代码目录中残留的.o文件和其它从属文件。(如果以前没有编译过内核,这一步可以省略。)
# cd /usr/src/linux-2.6.15.4
#make mrproper
2. 启动内核配置程序 (如果上面都没有问题的话)
# cd /usr/src/linux-2.6.15.4
# make xconfig (这一步,我出了问题,一直提示
“HOSTCC scripts/basic/split-include
In file included from /usr/include/linux/errno.h:4,
from /usr/include/bits/errno.h:25,
from /usr/include/errno.h:36,
from scripts/basic/split-include.c:26:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: No such file or directory
make[1]: *** [scripts/basic/split-include] Error 1
make: *** [scripts_basic] Error 2
”
后来,又是斑竹告诉我,用#make menuconfig。终于进入我梦寐以求的配置界面,虽然有点丑陋。^_^)
3. 配置内核
Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。不合理的配置可能造成内核编译失败。
关于配置内核参数的文章比比皆是。如:http://www.linuxmine.com/1132.html,搜索一下即可找到。
五. 编译内核(下面两步花的时间比较多,建议你倒杯茶慢慢浏览网页吧。我就是用了差不多2个小时的时间才编译好。)
2.6 的编译内核只需要#make install 就可以了,省事多了。
它包括了如下几个步骤:
1、建立编译时所需的从属文件
# cd /usr/src/linux-2.4
# make dep
2、清除内核编译的目标文件
# make clean
3、编译内核
# make bzImage (注意大小写)
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译。
六、编译可加载模块
如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。
# make modules
# make modules_install
编译成功后,系统会在/lib/modules目录下生成一个2.6.15.4子目录,里面存放着新内核的所有可加载模块。
七、启动新内核
FC4是用grub启动的。修改grub的配置无须自己手动修改,刚才的过程中已经修改好。
#vi /boot/grub/grub.conf 你会看到多了一个选项:title Fedoro Core(2.6.15.4),说明你内核升级成功了。
这时默认启动还是旧内核,可将hiddenmenu注释,即#hiddenmenu ,然后将default=1改成default=0,即2.6.15.4内核版本的选项号。
这样默认启动就是新内核了,在启动时可以选择新内核和旧内核启动。
以上就是我编译内核的过程,编译环境不同,过程不同。其中艰辛,可想而知,呵!
分享到:
相关推荐
### Linux编译内核详解 #### 一、内核的重要性及功能 内核作为操作系统的中心,承担着管理系统的进程、内存、设备驱动程序、文件和网络系统等关键任务,直接关系到系统的性能和稳定性。在Linux环境下,由于源代码...
6. **配置管理器**:在编译内核之前,需要对编译器进行设置,进入“配置管理器”界面选择适合的配置方案,比如TE2440CE6ARMV4IRelease,以避免编译生成包含调试信息的镜像。 7. **编译操作**:在完成必要的设置后,...
- 确保系统已安装了GCC编译器,这是编译内核的必要工具。 2. **内核配置** - 获取root权限,因为编译内核需要超级用户权限。 - 进入内核源代码目录,例如:`cd /usr/src/linux-2.6.14` - 清理以前的编译残留,...
这种配置方式适合那些喜欢通过命令行逐一设置选项的用户,但整个过程相当繁琐且容易出错。 3. `make xconfig` 这个命令会启动一个基于QT的图形界面配置工具,它与`make menuconfig`类似,但是界面更为现代和友好,...
在Linux系统中,有时我们需要添加或更新特定的内核模块以支持特定的硬件或文件系统。...总的来说,这种方法简化了编译特定内核模块的过程,使得即使对内核编译不太熟悉的用户也能相对容易地添加新的功能支持。
这对于那些希望自定义编译内核的用户来说是一个非常有用的工具。我们将重点介绍一些重要的配置项及其功能,帮助读者更好地理解如何根据自己的需求定制内核。 #### 二、重要配置选项详解 ##### 1. **General setup*...
Linux内核模块编程是深入Linux操作系统核心的一种编程实践,它允许开发者动态地向内核添加代码(模块),而无需重新编译整个内核。这种机制极大地提高了系统的可扩展性和灵活性,使得增加、更新或删除特定功能成为...
接下来,我们通过具体的例子来说明如何正确地配置并编译内核模块。根据给定的部分内容,可以看到一个典型的Makefile示例: ```make ifneq ($(KERNELRELEASE),) obj-m := helloworld.o else KERNELDIR ?= /home/...
易语言支持多种编程模式,包括但不限于过程式编程、面向对象编程等,同时内置了大量的API函数库,极大地方便了开发者进行软件开发工作。 #### 三、静态链接错误概述 静态链接错误是指在使用易语言进行软件开发时,...
JAVACOMPILE 这款工具就不一样了,javacompile 它是修改了虚拟机内核, 用户目录里没有需要的JAVA字节码,而是当JAVA需要调用函数的时候才通过网络下载相对应的已经二次编译的字节码,就算用户通过 CLASS.getClass ...
### 在虚拟机中将Centos 5.5的内核由2.6.18-194.el5升级到3.2.13 ...虽然整个过程比较复杂且容易出现问题,但通过以上步骤可以有效地解决大多数遇到的问题。希望本文能帮助有需求的读者顺利完成内核升级工作。
有了这样的注解,初学者可以更容易地理解代码的意图和上下文,从而快速掌握内核的工作原理。 最后,linux-0.11可能是实际的源代码文件夹,包含了所有0.11版本的源代码文件。通过直接浏览这些源代码文件,我们可以...
在深入研究过程中,你还可以探索如何调试内核、如何修改和编译内核,进一步提升自己的技能。 总之,Linux 0.01版内核源码的学习是一个对操作系统原理深入理解和实践的过程,对于立志于成为Linux系统开发者或者希望...
include目录包含了所有头文件,而lib目录则可能包含了编译内核所需的库文件。所有这些文件和目录协同工作,构成了一个完整的Linux 0.11内核开发环境。 这一环境的构建和使用,不仅有助于开发者对Linux内核的学习,...
在本文中,我们将深入探讨如何利用VSCode在Linux环境中编译内核并进行调试。 首先,我们需要在Visual Studio Code官网下载适用于x64系统的DEB安装包,安装完成后,我们进入Linux-5.4.34内核源码目录。为了使...
TI-RTOS内核是一种实时操作系统内核,全称为TI实时操作系统内核(TI-RTOS Kernel),也被称为SYS/BIOS。SYS/BIOS由德州仪器(Texas Instruments,简称TI)开发,是一套专为TI的DSP(数字信号处理器)和微控制器(MCU...