还是学生,自己靠网上的教程,摸索出来的。有不对的地方欢迎大家更正,勿喷勿喷。
世界和平!!啾咪~
Ubuntu版本 18.04
最开始的内核的是
然后在不实现增加系统调用的情况下,进行了第一次内核编译,选择了最新版本
在这个过程中,由于硬盘容量和内存不够,进行了一次Linux重装,又进行了第二次内核编译。所以,在开始编译之前一定要扩大足够的容量!!(我改成了60G硬盘,8G运行内存)
在开始之前请自行下载需要的Linux内核,前往https://www.kernel.org/,之后解压到桌面,复制到目录urs/src/。
sudo tar -xavf linux-5.11.19.tar.xz
sudo mv ~/Desktop/linux-5.11.19 /usr/src/
一、增加系统调用
1、添加系统调用功能代码
添加在endif前面
gedit /usr/src/linux-5.11.19/kernel/sys.c
添加代码
SYSCALL_DEFINE0(helloworld)
{
printk("My Student No. is 1813001028!");
return 0;
}
2、添加声明
cd /usr/src/linux-5.11.19/arch/x86/include/asm/
vim syscall.h
vim syscalls.h
我也没摸清楚到底上放进哪个起的作用,知道的宝贝可以跟我说一说,都放入同一个语句
3、添加一个系统调用id
cd /usr/src/linux-5.11.19/arch/x86/entry/syscalls
vim syscall_64.tbl
到此增加系统调用结束
二、编译准备
必备依赖安装
sudo apt-get install libncurses5-dev
sudo apt-get install build-essential
sudo apt-get install flex
sudo apt-get install bison
三、开始编译
在urs/src/linux-5.11.19下操作
sudo cp /boot/config-5.3.0-28-generic .config #(二选一即可)
sudo make menuconfig
直接方向键选择exit,所有都为默认选项。
sudo make -j4 #(4线程编译加快速度)
sudo make modules_install
四、安装
cd /usr/src/linux-5.11.19/
sudo make install
sudo mkinitramfs -o /boot/initrd.img-5.11.19
sudo update-initramfs -c -k 5.11.19
sudo update-grub2
五、成果检验
重启
sudo shutdown -r now
查看当前版本
uname -a
六、系统调用
编写测试文件hello.c
#define _GNU_SOURCE
#include<stdio.h>
#include<unistd.h>
#include<sys/syscall.h>
#include<sys/types.h>
#include<signal.h>
int main(){
syscall(335);
return 0;
}
vi hello.c
gcc -o hello hello.c
./hello
dmesg
感谢您的阅读!