searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

TeleNOS内核源码获取教程

2024-12-11 08:57:57
3
0

  接上次发表的文章《适配TeleNOSko模块制作教程》中,提到需要预先准备好内核源码包,此步骤的目的是为了保证在虚拟机中制作ko模块时,依赖的内核源码是与设备运行的内核源码保持强一致,避免ko模块安装失败。

  那么,这篇文章就简单介绍一下如何在编译过程中获取TeleNOS的内核源码。

  首先,我们需要简单了解SONiC的编译过程,在sonic-buildimage目录下执行对应make动作,会触发对应的slave容器(bullseyebuster)依赖slave.mk文件来进行编译,而slave.mk则会根据上层的make动作走不同的流程,例如本次走内核编译的流程,会依赖sonic-buildimage/src/sonic-linux-kernel下的Makefile文件。若想要具体了解SONiC的编译过程,可以去看之前发布的一篇文章《开源NOS——SONIC编译过程介绍》。

 

 

有了以上背景知识,接下来就具体剖析具体执行流程:

首先,需要先删除旧的linux-headers-5.10.0-12-2-common_5.10.103-1_all.deb包,然后再sonic-buildimage下执行以下命令:

make KERNEL_PROCURE_METHOD=build target/debs/bullseye/linux-headers-5.10.0-12-2-common_5.10.103-1_all.deb KEEP_SLAVE_ON=yes SONIC_BUILD_JOBS=66

否则会提示该deb包已存在。

 

简单介绍一下其中的关键参数:

·KERNEL_PROCURE_METHOD=build,在编译时,走重新拉取内核源码,编译内核的流程

·KEEP_SLAVE_ON=yes,在编译时,停留在编译容器中

·SONIC_BUILD_JOBS=66,多线程编译,加快编译速度

 

一开始会先进入buster容器并停留,此时,需要执行exit就可以进入bullseye容器。或者还有另外一种方法是直接在make命令加上NOBUSTER=1 ,将会直接跳过buster容器,直接进入bullseye编译容器。

 

这里不就具体sonic-buildimage下的Makefileslave.mk中的内容,直接来看sonic-buildimage/src/sonic-linux-kernel下的Makefile文件:

 

 

可以看到如果不设置KERNEL_PROCURE_METHOD=build,在编译时,直接拉取之前制作好相关deb包使用;

简单阅读60-117行,可以发现其流程:

·下载在制品库上的公用包,.dsc  .debian.tar.xz   .orig.tar.xz文件

 

·先是拉取一系列补丁修复任何可能影响后续配置生成的内容,再依赖kernel-wedge重新生成debian/rules.gen,接着为amd64_none_amd64 生成 linux 编译文件;最后,公共源码打补丁和更改公共config的配置。

 

 

综上所述,再执行make命令时,需要注释或删除以下代码:

 

 

然后等编译停留在bullseye容器下,在src/sonic-linux-kernel下能找到linux-5.10.103目录:

使用tar命令对整个目录进行压缩,就可以得到TeleNOS的内核源码压缩包了。

压缩命令如下:

tar -czvf linux-5.10.103-build_by_hou.tar.gz linux-5.10.103

 

0条评论
0 / 1000
h****n
5文章数
1粉丝数
h****n
5 文章 | 1 粉丝
原创

TeleNOS内核源码获取教程

2024-12-11 08:57:57
3
0

  接上次发表的文章《适配TeleNOSko模块制作教程》中,提到需要预先准备好内核源码包,此步骤的目的是为了保证在虚拟机中制作ko模块时,依赖的内核源码是与设备运行的内核源码保持强一致,避免ko模块安装失败。

  那么,这篇文章就简单介绍一下如何在编译过程中获取TeleNOS的内核源码。

  首先,我们需要简单了解SONiC的编译过程,在sonic-buildimage目录下执行对应make动作,会触发对应的slave容器(bullseyebuster)依赖slave.mk文件来进行编译,而slave.mk则会根据上层的make动作走不同的流程,例如本次走内核编译的流程,会依赖sonic-buildimage/src/sonic-linux-kernel下的Makefile文件。若想要具体了解SONiC的编译过程,可以去看之前发布的一篇文章《开源NOS——SONIC编译过程介绍》。

 

 

有了以上背景知识,接下来就具体剖析具体执行流程:

首先,需要先删除旧的linux-headers-5.10.0-12-2-common_5.10.103-1_all.deb包,然后再sonic-buildimage下执行以下命令:

make KERNEL_PROCURE_METHOD=build target/debs/bullseye/linux-headers-5.10.0-12-2-common_5.10.103-1_all.deb KEEP_SLAVE_ON=yes SONIC_BUILD_JOBS=66

否则会提示该deb包已存在。

 

简单介绍一下其中的关键参数:

·KERNEL_PROCURE_METHOD=build,在编译时,走重新拉取内核源码,编译内核的流程

·KEEP_SLAVE_ON=yes,在编译时,停留在编译容器中

·SONIC_BUILD_JOBS=66,多线程编译,加快编译速度

 

一开始会先进入buster容器并停留,此时,需要执行exit就可以进入bullseye容器。或者还有另外一种方法是直接在make命令加上NOBUSTER=1 ,将会直接跳过buster容器,直接进入bullseye编译容器。

 

这里不就具体sonic-buildimage下的Makefileslave.mk中的内容,直接来看sonic-buildimage/src/sonic-linux-kernel下的Makefile文件:

 

 

可以看到如果不设置KERNEL_PROCURE_METHOD=build,在编译时,直接拉取之前制作好相关deb包使用;

简单阅读60-117行,可以发现其流程:

·下载在制品库上的公用包,.dsc  .debian.tar.xz   .orig.tar.xz文件

 

·先是拉取一系列补丁修复任何可能影响后续配置生成的内容,再依赖kernel-wedge重新生成debian/rules.gen,接着为amd64_none_amd64 生成 linux 编译文件;最后,公共源码打补丁和更改公共config的配置。

 

 

综上所述,再执行make命令时,需要注释或删除以下代码:

 

 

然后等编译停留在bullseye容器下,在src/sonic-linux-kernel下能找到linux-5.10.103目录:

使用tar命令对整个目录进行压缩,就可以得到TeleNOS的内核源码压缩包了。

压缩命令如下:

tar -czvf linux-5.10.103-build_by_hou.tar.gz linux-5.10.103

 

文章来自个人专栏
TeleNOS
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0