Linux 内核编程开发环境
全栈程序员阿志
编辑于 2021年01月01日 15:03

apt-get clean && apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y 

reboot

uname -r 已经升级了

apt-get install gcc

apt-get install make

apt-get install -y linux-headers-$(uname -r) 内核头文件

sudo apt-get install linux-kbuild-5.7 编译内核模块

apt-get install build-essential 建立deb包依赖

编译内核模块不要使用sudo make 

使用make即可

Makefile obj文件名一定要与源文件名一致

KaliLinuxKernelProgrammer.c

#include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> /* 入口函数 */ static int init(void) {    printk(KERN_ALERT "init\n&#​34;);        return 0; } /* 退出函数 */ static void exit(void) {    printk(KERN_ALERT "exit\n&#​34;); } /* 注册 */ module_init(init); module_exit(exit);

Makefile

KERNEL_VER = $(shell uname -r)   # the file to compile obj-m += KaliLinuxKernelProgrammer.o # specify flags for the module compilation EXTRA_CFLAGS = -g -O0 build: kernel_modules kernel_modules:        make -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) modules clean:        make -C /lib/modules/$(KERNEL_VER)/build M=$(PWD) clean

编译内核

sudo apt-get install linux-source-5.7 内核源码包 会有压缩文件

sudo apt-get install libssl-dev

sudo apt-get install gcc libncurses5-dev build-essential kernel-package libssl-dev kernel-source-** libc6-dev tk8.* fakeroot bin86

make[1]: *** No rule to make target 'debian/certs/benh@debian.org.cert.pem', needed by &#​39;certs/x509_certificate_list'

打开.config文件并注释掉这一行

#CONFIG_SYSTEM_TRUSTED_KEYS=&#​34;debian/certs/benh@debian.org.cert.pem"

sudo   make  oldconfig  

sudo  make 

sudo  make  zImage

sudo make  modules 

sudo  make  modules_install

/lib/modules/xxxx

sudo make install       该命令的作用是将.config,vmlinuz,initrd.img,System.map文件到/boot/目录、更新grub。默认启动新内核

reboot

uname -a

sudo insmod

lsmod | grep “xxx”

dmesg| tail -n 20

sudo rmmod

如何删除内核:

查看当前安装的内核

dpkg --get-selections | grep linux

列表中含image 部分是已经安装过的内核

执行apt-get remove linux-image-****-generic

或者

sudo apt-get purge linux-image-****-generic

(移除后启动选项中还会有卸载的内核选项)

update-grub  更新grub这样在系统启动的时候就不会有卸载掉的内核了这样就彻底的卸载了

问题

dpkg --get-selections|grep linux

有时候这个命令找不到刚才安装的内核

这个时候用一下方法

删除boot下面和要删除的内核版本相关的文件 rm –rf rm -f *3.19.8*

删除/usr/src/目录下的内核源码

update-grub 更新grub