不容易的编译内核过程

来源:互联网 发布:厘米秀刷花软件免费 编辑:程序博客网 时间:2024/05/16 01:21

 

为了编译内核,前前后后断断续续共花了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内核版本的选项号。
这样默认启动就是新内核了,在启动时可以选择新内核和旧内核启动。


以上就是我编译内核的过程,编译环境不同,过程不同。其中艰辛,可想而知,呵!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 企业被拉黑法人联系不到怎么办 支票根写错了怎么办 月结客户不付款怎么办 退市整理期过了怎么办 老板跑了财务负责人怎么办 在南京加入嘀嘀代驾怎么办 苹果盗刷支付宝怎么办 街电支付宝掉了怎么办 转转上号器没有苹果版的怎么办 安卓6不支持的应用怎么办 银行卡被存款机吞了怎么办 去银行卡存款机器故障怎么办 银行卡存款没有存进去怎么办 被黑网站黑钱了怎么办 饿了吗账户异常怎么办 单位里有人整你怎么办 乌鲁木齐信息采集结束后怎么办 头发很长时间不长怎么办啊 打嘟噜时间不长怎么办 阴茎勃起的时间不长怎么办 睡觉的时间不长怎么办 每次锻炼时间不长怎么办 微信好友不知道是谁怎么办 就一个软件闪退怎么办 葫芦侠修改闪退怎么办 戴尔游匣磁盘占用100怎么办 步步高家教机扫描笔不亮怎么办 社保卡手机号换了怎么办 香港公司进出口没有申报怎么办 智能电视右上角网络未连接怎么办 电子秤按键板不好用怎么办失灵 桑塔纳车钥匙锁车里了怎么办 舌头上有锯齿印怎么办 夏天有脚气脚臭怎么办 xp分辨率太高黑屏怎么办 农村淘宝标识类目没了怎么办 被投诉到食品监督局怎么办 被客户315投诉了怎么办 给人打不接受调解怎么办 失业证年审忘了怎么办 工商年检过期4天怎么办