先存进/usr/src
再解压:(解压过程)
由于曾经扩展过虚拟机存储,因此有接近100G,足够用
sudo gedit /usr/src/linux-6.5.8/kernel/sys.c
修改文件sudo gedit /usr/src/linux-6.5.8/include/linux/syscalls.h添加函数声明
在/usr/src/linux-6.5.8/arch/x86/entry/syscalls下的syscall_64.tbl内添加系统调用号。
首先得确保已经安装了以下这些包,否则总是回报错,需要你安装的包如下:
①先清除内核的目标文件
②sudo make clean 清除内核中的目标文件,并不删除设置文件
③Oldconfig完成
④sudo make bzImage 编译内核
出错,发现是makefile函数有问题,于是进行修改:sudo gedit .config
查找并删除debian/canonical-certs.pem
修改后再次sudo make bzImage,内核编译成功:
⑤sudo make modules (sudo make modules –j4) 编译模块
⑥sudo make modules_install安装模块
安装完成效果:
⑦sudo make install(sudo make install –j4)安装,安装完成即成功:
安装完成效果:
修改文件sudo gedit /etc/default/grub,将GRUB_TIMEOUT=0注释掉
重启后进入Advanced options for Ubuntu 就可以看到编译好的版本
重启后,进入grub界面,选择高级选项就可以看到各种编译好的内核版本。
先编写调用函数
Gcc编译后运行:
使用dmesg命令调出系统函数printk输出值
完成。