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

适配TeleNOS的ko模块制作教程

2024-09-26 09:25:57
9
0

一、环境准备

事先在VMware上安装一台debian 11.8的虚拟机,在本示例中,配置该虚拟机为4核,3GB内存;

·注:网络适配器选择默认的NAT

·关于如何安装debian11.8的虚拟机,参考网上教程即可

·默认情况下,Debian系统是不开启SSH远程登录的但是,虚拟机需要与宿主机进行传输文件,为了解决这个问题,通过以下命令去安装ssh软件包:

命令:apt-get install ssh

但是期间会遇到另外一个问题:

更换介质:请把标有  “Debian GNU/Linux 11.8.0 _Bullseye_ - Official amd64 DVD Binary-1 20231007-14:05” 的盘片插入驱动器“/media/cdrom/”再按「回车」键

解决方法:vi /etc/apt/sources.list把那出现的那行注释掉<CD盘的一行>

这样就可以通过Xshell通过ssh来远程登录,并使用Xftp来进行文件传输。

 

·拉取安装编译kpatch组件以及编译内核所依赖的环境:

命令:apt-get install make gcc libelf-dev git flex bison libssl-dev

 

·安装kpatch-build命令运行所需要的环境:

命令:apt-get install dpkg-dev gawk

 

·安装加速补丁编译组件ccache

命令:

apt-get install ccache

ccache --max-size=5G

(可选项,但高度推荐安装,可以加快补丁编译)

 

·拉取安装kpatch组件:

命令:

git clone https://hub.yzuu.cf/dynup/kpatch.git  

(暂用同步站的源码,github以及北极星仓库拉取不了)

make

make install

 

·准备好以下两个deb包以及内核源码包:

linux-image-5.10.0-12-2-amd64-unsigned_5.10.103-1_amd64.deb

linux-image-5.10.0-12-2-amd64-dbg_5.10.103-1_amd64.deb

 

·安装这两个deb包:

sudo dpkg -i linux-image-5.10.0-12-2-amd64-unsigned_5.10.103-1_amd64.deb

sudo dpkg -i linux-image-5.10.0-12-2-amd64-dbg_5.10.103-1_amd64.deb

 

成功安装之后,直接重启虚拟机,然后选择对应内核进行启动;

到此为止,环境已经准备完毕。

二、ko模块制作

2.1 预处理

预先准备好内核源码包:linux-5.10.103_5.10.0-12-2.tar.gz,将其解压

命令:tar -xvf linux-5.10.103_5.10.0-12-2.tar.gz

 

为了避免编译过程的非必要错误,首先进入内核目录,执行以下两个命令:

git config --global --add safe.directory /home/hxn/linux-5.10.103(此处为你的内核源码目录名)

make prepare

 

2.2 patch生成

拷贝两份源码,例如将源码分别存放在linux.srclinux.kpatch(待修改源码)

命令:

cp -r linux-5.10.103 linux.src

cp -r linux-5.10.103 linux.kpatch

例如修改linux.kpatch/fs/proc/meminfo.c修改后为:

使用diff命令生成patch文件:

命令:diff -u linux.src/fs/proc/meminfo.c linux.kpatch/fs/proc/meminfo.c > mem.patch

2.3 编译ko模块

使用kpatch-build命令进行编译

命令:

kpatch-build mem.patch --skip-compiler-check -s linux-5.10.103 -R -c /boot/config-5.10.0-12-2-amd64 -v /usr/lib/debug/vmlinux-5.10.0-12-2-amd64 -j4

成功生成livepatch-mem.ko文件,首次编译过程时间较长大约1h,当前目录下生成liveXXX.ko

 

查看livepatch-mem.ko的版本信息,需要提前添加环境变量,如图所示:

export PATH=$PATH:/usr/sbin

modinfo livepatch-mem.ko

 

 

 

 

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

适配TeleNOS的ko模块制作教程

2024-09-26 09:25:57
9
0

一、环境准备

事先在VMware上安装一台debian 11.8的虚拟机,在本示例中,配置该虚拟机为4核,3GB内存;

·注:网络适配器选择默认的NAT

·关于如何安装debian11.8的虚拟机,参考网上教程即可

·默认情况下,Debian系统是不开启SSH远程登录的但是,虚拟机需要与宿主机进行传输文件,为了解决这个问题,通过以下命令去安装ssh软件包:

命令:apt-get install ssh

但是期间会遇到另外一个问题:

更换介质:请把标有  “Debian GNU/Linux 11.8.0 _Bullseye_ - Official amd64 DVD Binary-1 20231007-14:05” 的盘片插入驱动器“/media/cdrom/”再按「回车」键

解决方法:vi /etc/apt/sources.list把那出现的那行注释掉<CD盘的一行>

这样就可以通过Xshell通过ssh来远程登录,并使用Xftp来进行文件传输。

 

·拉取安装编译kpatch组件以及编译内核所依赖的环境:

命令:apt-get install make gcc libelf-dev git flex bison libssl-dev

 

·安装kpatch-build命令运行所需要的环境:

命令:apt-get install dpkg-dev gawk

 

·安装加速补丁编译组件ccache

命令:

apt-get install ccache

ccache --max-size=5G

(可选项,但高度推荐安装,可以加快补丁编译)

 

·拉取安装kpatch组件:

命令:

git clone https://hub.yzuu.cf/dynup/kpatch.git  

(暂用同步站的源码,github以及北极星仓库拉取不了)

make

make install

 

·准备好以下两个deb包以及内核源码包:

linux-image-5.10.0-12-2-amd64-unsigned_5.10.103-1_amd64.deb

linux-image-5.10.0-12-2-amd64-dbg_5.10.103-1_amd64.deb

 

·安装这两个deb包:

sudo dpkg -i linux-image-5.10.0-12-2-amd64-unsigned_5.10.103-1_amd64.deb

sudo dpkg -i linux-image-5.10.0-12-2-amd64-dbg_5.10.103-1_amd64.deb

 

成功安装之后,直接重启虚拟机,然后选择对应内核进行启动;

到此为止,环境已经准备完毕。

二、ko模块制作

2.1 预处理

预先准备好内核源码包:linux-5.10.103_5.10.0-12-2.tar.gz,将其解压

命令:tar -xvf linux-5.10.103_5.10.0-12-2.tar.gz

 

为了避免编译过程的非必要错误,首先进入内核目录,执行以下两个命令:

git config --global --add safe.directory /home/hxn/linux-5.10.103(此处为你的内核源码目录名)

make prepare

 

2.2 patch生成

拷贝两份源码,例如将源码分别存放在linux.srclinux.kpatch(待修改源码)

命令:

cp -r linux-5.10.103 linux.src

cp -r linux-5.10.103 linux.kpatch

例如修改linux.kpatch/fs/proc/meminfo.c修改后为:

使用diff命令生成patch文件:

命令:diff -u linux.src/fs/proc/meminfo.c linux.kpatch/fs/proc/meminfo.c > mem.patch

2.3 编译ko模块

使用kpatch-build命令进行编译

命令:

kpatch-build mem.patch --skip-compiler-check -s linux-5.10.103 -R -c /boot/config-5.10.0-12-2-amd64 -v /usr/lib/debug/vmlinux-5.10.0-12-2-amd64 -j4

成功生成livepatch-mem.ko文件,首次编译过程时间较长大约1h,当前目录下生成liveXXX.ko

 

查看livepatch-mem.ko的版本信息,需要提前添加环境变量,如图所示:

export PATH=$PATH:/usr/sbin

modinfo livepatch-mem.ko

 

 

 

 

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