如果这个过程出现错误,就说明配置文件中存在语法错误,config程序将会提示出错的行,以便使用者进行修改 。但是config不会发现配置文件中存在的逻辑错误,这些逻辑错误只能在编译内核时才能发现 。
下一步就是进入生成的目录中进行编译和安装 。
# cd ../../compile/mykernel# make depend# make编译过程需要一些时间以进行编译,这时候就可以作些其他任务等待编译结束 。但如果配置文件存在逻辑错误,在编译时会形成错误 。因为内核配置选项不是相互无关的,而是存在相关依赖关系,有些设置项会依赖于另外的设置项 。当发生这些逻辑错误的时候,当所有需要的源文件都存在时,就说明配置文件中缺少一些基本参数定义的代码,需要重新加入 。例如所有的EISA设备依赖于controller eisa0定义的EISA控制器,那么删除controller eisa0设置项就会造成编译EISA设备时,缺少controller eisa0对应的源程序中定义的函数和变量,就会造成编译失败 。确定没有EISA设备的时候,就要删除所有的EISA相关选项,以避免逻辑错误 。
内核编译成功之后,就可以进行安装了:
# make install这将原有内核更改为/kernel.old,然后将编译后产生的新内核移到根目录下,命名为/kernel 。此后可以重起系统,检查新内核是否正确 。
# reboot如果新内核的配置不正确,造成某些硬件不能正确检测造成不能正常启动 。此时就需要重新用老内核进入系统,以重新进行编译纠正错误 。选择不同内核必须通过Boot Loader的交互界面进行,需要在启动时进入Boot Loader,然后可以输入loadkernel.old命令,使用老内核启动系统,或者使用kernel.GENERIC通用内核启动系统 。
为了避免第二次编译内核时,将错误的内核保存为kernel.old,覆盖原有的正确设置,也可以先将正确的内核拷贝为根文件系统中的另一个文件,进行备份保存,只有放置在根分区上的内核才能正常启动系统,因此备份到其他文件系统中内核意义不大 。
【59 FreeBSD连载:编译安装新内核】未完,待续 。。。
推荐阅读
- FreeBSD Grep的介绍
- FreeBSD Apinger 介绍
- FreeBSD 系统进程
- 58 FreeBSD连载:为编译内核准备源代码
- FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.
- 利用 FreeBSD 组建安全的网关
- BSD家族大观 --1. FreeBSD
- FreeBSD 中 Samba Server安装设定
- FreeBSD WEB服务器架设笔记
- 在FREEBSD 5.2中使用Pureftpd + MySQL + Pureftpd_ph
