FREEBSD内核编译

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:48   1396   0

FreeBSD默认内核是较为稳定的版本,基础内核可以保证系统正常的运行,但是却不一定适用于所使用的硬件环境或者要部署的软件环境,因此根据不同的硬件架构及所要部署的软件环境,我们需要定制一个自己所需的系统内核,具体过程如下:
1、首先使用uname -a查看本机的内核详细版本;
2、使用dmesg查看本机所有的硬件信息,并进行相应的记录,后续编辑时要用;
3、cd /usr/share/examples/cvsup进入该目录;
4、目录中:ports-supfile与stable-supfile两个文件是主要文件,其中stable-supfile控制你从哪个站点来镜像站点下载源代码,并且控制要下载哪些源代码(通常是默认下载所有);
5、ee stable-supfile,修改下两项
*default host的站点为中国站点“cvsup.cn.FreeBSD.org”
src-all
6、csup -g -L 2 stable-supfile #从stable-supfile指定的镜像站点,下列指定的源代码;
7、cd /usr/src/sys/amd64(或i386---32位与64位,分别选择相应的)/conf/
8、cp GENERIC /root/MYKERNEL 复制并改名一份原内核文件到新位置,推荐这种方式进行编辑;
9、ln -s /root/MYKERNEL; 对于上步复制并改名的内核文件,做一个连接到该目录;
###修改新的配置文件,把不存在的硬件设备可以去除,添加一个如PF等功能,让这些功能加到内核中进行运算,这样可以提高处理能力
10、ee MYKERNEL;;
11、cd /usr/src进入源码目录;
12、make buildkernel KERNCONF=MYKERNEL -jCPU+1 开始编辑内核;
13、make installkernel KERNCONF=MYKERNEL 安装编辑好的内核;
14、reboot重启系统用uname -a查看编辑后的内核是否是自己定制的内核;



因为ipfw日志功能,需要重新编译内核
编译freebsd内核遇到的问题
1、没有sys目录
cd /usr/src/sys/amd64(或i386---32位与64位,分别选择相应的)/conf/
则svn一份
cd /usr/src
svnlite checkout https://svn0.us-west.freebsd.org/base/releng/9.2
先看看 有没有svnlite命令
如果没有 需要先装subversion
whereis subversion
make install clean
然后安装subversion
然后 cd /usr/src
#svn checkout https://svn0.us-west.freebsd.org/base/releng/9.2

svnlite checkout svn://svn.freebsd.org/base/release/10.1.0 /usr/src


2、cd /usr/src/sys/amd64(或i386---32位与64位,分别选择相应的)/conf/
3、cp GENERIC /root/MYKERNEL 复制并改名一份原内核文件到新位置,推荐这种方式进行编辑;
4、ln -s /root/MYKERNEL; 对于上步复制并改名的内核文件,做一个连接到该目录;
###修改新的配置文件,把不存在的硬件设备可以去除,添加一个如PF等功能,让这些功能加到内核中进行运算,这样可以提高处理能力
5、ee MYKERNEL;;
在文件未尾加入以下个行:
options IPFIREWALL //将包过滤部分代码编译进内核。


options IPFIREWALL_VERBOSE
//启用通过Syslogd记录日志;如果没有指定这个选项,即使你在过滤规则中指定了记录包,也不会真的记录它们。
options IPFIREWALL_VERBOSE_LIMIT=10
//限制通过Syslogd记录的每项包规则的记录条数。如果你受到了大量的攻击,想记录防火墙的活动,但又不想由于Syslog洪水一般的记录将你淹没,那么这个选项将会很有用。当使用了这条规则,当规则链中的某一项达到限制数值时,它所对应的日志将不再记录下来。
options IPFIREWALL_DEFAULT_TO_ACCEPT
//注意,关键地方了,本句把默认的规则动作从“deny”改成“allow”了,作用是在默认状态下IPFW将会接受任何的数据。
options IPDIVERT
这一选项启用 NAT 功能。


6、cd /usr/src进入源码目录;
7、make buildkernel KERNCONF=MYKERNEL -jCPU+1 开始编辑内核;
8、make installkernel KERNCONF=MYKERNEL 安装编辑好的内核;
9、reboot重启系统用uname -a查看编辑后的内核是否是自己定制的内核;



其中编译内核有两种方法
代码:
第一种是
# /usr/sbin/config MYKERNEL
# cd ../compile/MYKERNEL
# make depend
# make
# make install

第二种是
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
我的是第二种,因为不支持第一种
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP