Linux 内核编程开发环境
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");
return 0;
}
/* 退出函数 */
static void exit(void)
{
printk(KERN_ALERT "exit\n");
}
/* 注册 */
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 'certs/x509_certificate_list'
打开.config文件并注释掉这一行
#CONFIG_SYSTEM_TRUSTED_KEYS="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



