一、准备工作
Linux系统版本:Ubuntu16.04
阿里云轻量应用服务器 1核-2GB内存-系统盘 40GB
预安装内核linux-4.16.1**清华源镜像下载**
二、上传压缩包并解压
利用WinSCP工具将内核传到/usr/src 文件夹中(需要进入root模式)
解压缩
sudo -i
cd /usr/src
tar -xvf linux-4.16.1.tar.xz
三、进入root模式
sudo -i
以下所有命令都需要在root模式下
四、加入系统调用号
vim /usr/src/linux-4.16.1/arch/x86/entry/syscalls/syscall_64.tbl
这里要注意,不能加到整个文件的末尾,要在中间的“序号断层”处加入。原因就是上图的蓝色英文解释。
五、加入系统调用函数声明
vim /usr/src/linux-4.16.1/include/linux/syscalls.h
(shift+g快速跳到最后一行)
六、添加系统调用函数
vim /usr/src/linux-4.16.1/kernel/sys.c
(shift+g快速跳到最后一行)
SYSCALL_DEFINE后的数字代表参数个数,这里0个参数(void)
七、安装必要的文件
以下所有make
命令都在 /usr/src/linux-4.16.1/
这个目录和root模式
下进行。
cd /usr/src/linux-4.16.1/
apt update
apt install libncurses5-dev
apt install build-essential
apt install libssl-dev
apt install libelf-dev
apt install bison
apt-get install bison -y
apt install flex
make mrproper
make clean
make menuconfig
出现选择界面后,直接save然后exit
八、编译内核
make -j4
如果报错
“Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please
install libelf-dev, libelf-devel or elfutils-libelf-devel”. Stop.
则输入
apt install libelf-dev
apt install libssl-dev
然后再make -j4
不报错后就会正常编译,我的服务器编译了三小时。
九、编译模块
make modules
十、安装模块、内核
make modules_install
make install
十一、配置配置 grub 引导程序
update-grub2
十二、重启
reboot -n
十三、查看内核版本
uname -a或者uname -r
十四、写一个test.c文件来测试
在任何目录下都行
十五、编译运行
gcc test.c -o test
./test
十六、查看信息
dmesg