linux内核编程环境,Linux 内核开发环境搭建

因为一直想从事安全方面的工作,所以,我也要学习和熟悉Linux内核,以及内核相关的开发。

在研究内核的开始,就必须构建一套开发环境,这个是每个程序员好像做某个特定事情之前,必须要经历的步骤。

我选用的Ubuntu18.04作为开发机,然后采用了linux-4.19.157这个版本的内核。

第一步就是下载内核,直接在 https://www.kernel.org/ 下载,选择你需要的内核下载下来就好。

解压内核文件, sudo tar -xavf linux-4.19.157.tar.xz,然后为自己开发机安装相关开发编译工具。

sudo apt-get install gcc make libncurses5-dev openssl libssl-dev

sudo apt-get install build-essential

sudo apt-get install pkg-config

sudo apt-get install libc6-dev

sudo apt-get install bison

sudo apt-get install flex

sudo apt-get install libelf-dev

然后构建一个默认的内核编译配置文件,将/boot/config-XXXXXX-generic这个文件复制你的内核源码根目录,并改为 .config 。

sudo cp /boot/config-4.15.0-20-generic ~/linux-4.19.157/.config

执行 sudo make menuconfig后,直接Exit,采用默认选项。

紧接着就开始编译,命令是:

sudo make 和 sudo make modules_install

这里根据机器的不同,需要等待编译完成。

编译完成后,你需要将编译好的内核,替换现在的内核。然后拷贝内核到系统目录,具体的操作步骤:

sudo mv ~/linux-4.19.157 ~/../../usr/src/

cd usr/src/linux-4.19.157

sudo make install

sudo mkinitramfs -o /boot/initrd.img-4.19.157

sudo update-initramfs -c -k 4.19.157

sudo update-grub2

这个时候,基本的内核编译和安装操作已经完成了。你可以重启一下,然后使用uname -a查看下当前的内核版本是否为你编译的。

接下来,就是要测试开发环境。

a4eb6fc4b7f08ab9fba205b81923d70d.png

一个Sample内核模块程序:

然后编写一个makefile文件

其中,CONFIG_MODULE_SIG=n这一句话很重要。如果你没有这一句话,在新的内核版本中,内核是无法被加载,加载后,会提示: altera_cvp:module verification failed : signature and/or required key missing – tainting kernel

然后,你就可以使用make编译刚刚的代码了。如果提示:*** /lib/modules/*/build Stop…则需要去映射一下内核源码。

具体操作为:

首先进入 lib/modules/xxxxx/ 然后查看是否有build这个目录,如果有,就删除。 sudo rm build

然后将源码映射过去,使用命令 ln -sv /usr/src/kernels/xxxx/ /lib/modules/xxxx/build

然后再次编译,理论上就会通过了。

最后,就是3个内核加载,删除,查看的命令了。内核输出的日志,用sudo dmesg查看,清楚日志则为sudo dmesg -c。

insmod: 将模块插入内核中,使用方法:#insmod XXX.ko

rmmod: 将模块从内核中删除,使用方法:#rmmod XXX.ko

lsmod: 列表显示所有的内核模块,可以和grep指令结合使用。使用方法:#lsmod | grep XXX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值