把已经下载好的内核代码包装进 /usr/src 中解码
1. 下载编译过程中的所需的软件依赖包.
sudo apt-get install libncurses5-dev libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
2.打开/kernel/sys.c文件,加入linkage.h的头文件,在文件末尾加入要加入的系统调用函数.
代码段要用get_ds,set_fs,get_fs等函数保护比如:
//my call P orereation
asmlinkage void mycall_P(int semid, int index)
{
struct sembuf sem;
mm_segment_t old_fs=get_fs();
set_fs(get_ds());
sem.sem_num = index;
sem.sem_op = -1;
sem.sem_flg = 0;
sys_semop(semid, &sem, 1); //xitongdiaoyong
set_fs(old_fs);
return;
}
3.加入系统调用函数声明。在linux-4.9.84/arch/x86/include/asm/syscalls.h中加入asmlinkage void mycall(...) //自己的系统调用函数定义
4.加入系统调用号。在linux-4.9.84/arch/x86/entry/syscalls/syscall_64.tbl
5. 编译内核和安装内核.
返回linux-4.9.84
sudo make mrproper
sudo make clean
sudo make menuconfig
6. 根据自己处理器的最大线程数目来编译.
sudo make -j8
7. 编译后安装内核到系统中.
sudo make modules_install
sudo make install
8. 重启加载内核.