注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

欢迎来到我的博客进行技术交流

 
 
 

日志

 
 

编译kernel  

2009-08-18 01:56:48|  分类: 基础知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

声明!本文属于原创翻译文章,版权所有。欢迎转载,但务必保持原文完整,保留作者名,并注明出处。

作者:星外天空

原文地址:http://vsbsd.blog.163.com

系统使用的核心实质上是存放在硬盘当中的一个文件。这个文件就是:/boot/kernel/kernel ,FreeBSD的核心都是看得见的,不像windows那么封闭,别说修改了,就算想看也看不着。重新编译核心常见的原因通常是为了1.为了系统安全   2.为了增加新功能  3.为了减少多余的功能支持,加快核心运行速度。当然还有你讲得出的种种理由。编译核心的目的不在于为编译而编译,而在于为修改而编译,要开始编译只要打上几行命令,系统就会自动完成编译了,根本不用人手操作。我们编译内核的真正原因是要修改它。要修改核心,我要实际就是修改它的配置文件,然后以配置文件的内容去编译内核。

核心的配置文是/usr/src/sys/i386/conf/GENERIC,我们编译核心99%的精力都要放在修改这个配置文件上。好了,看看以下方法吧:

 

第一种:非常简单

1.首先到/usr/src/sys/i386/conf找到GENERIC这个核心配置文件,复制一份到/root/,并改名为KERNEL,在这个目录创建一个符号连接到/root/MYKERNEL,按须要编辑它。然后在此目录执行config MYKERNEL,很快就要提示说别忘记执行 make cleandepend 和 make depend ,说明这一步成功完成。

这一步作用就是在创建/usr/src/sys/i386/compile/MYKERNEL这个目录,而目录内放着下一步要用到的东西。

 

2.cd ../compile/MYKERNEL目录中,先运行make depend 命令,执行顺利完成后,接着执行 make  又完成后,这步就完成了。执行完成后,没有任何提示说明执行成功,那怎么才叫顺利完成呢?其实没有错误提示就说明完成得很顺利。这个过程的作用就是编译核心。

 

3.仍然在第2步的目录中执行make install命令,这个命令的作用是安装核心。安装完成后,会在屏幕最尾一行会给出提示”kldxref /boot/kernel”。那么新的核心安装到哪里去呢?新核心和模块都放到/boot/kernel这个目录,而存放旧核心的目录已经改名为/boot/kernel.old了。

 

 

第二种:同样简单

对于核心配置文件的处理是跟第一种方法一样,只不过编译与安装不同而已。

方法是进入/usr/src目录,输入以下命令:

1. 编译内核

# make  buildkernel  KERNCONF=MYKERNEL

2. 安装内核

make  installkernel  KERNCONF =MYKERNEL

 

这两种方法编译出来的核心完全没区别,只不过是使用的编译和安装命令不同而已,而第二种的方法在太旧的版本不能使用。在FreeBSD 4.2-STABLE 以后,也即2001年2月以后的版本都可以使用这个方法。我想现在应该没人专门找旧的版本去使用吧,呵呵。还有就是/usr/src这个目录的源码包不完整,也是不能使用这种方法的。如果只有修改小部分内容,那么使用第一种方法即可。

  评论这张
 
阅读(534)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017