FreeBSD编译安装新内核
http://tech.ddvip.com 2006年08月20日 社区交流
本文详细介绍FreeBSD编译安装新内核
如果这个过程出现错误,就说明配置文件中存在语法错误,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,然后可以输入load kernel.old命令,使用老内核启动系统,或者使用kernel.GENERIC 通用内核启动系统。
为了避免第二次编译内核时,将错误的内核保存为kernel.old,覆盖原有的正确设置,也可以先将正确的内核拷贝为根文件系统中的另一个文件,进行备份保存,只有放置在根分区上的内核才能正常启动系统,因此备份到其他文件系统中内核意义不大。
责编:豆豆技术应用