1. 查看系统内核版本(ubuntu 12.04)
uname –a 或者 cat /proc/version
2. 从https://www.kernel.org/pub/linux/kernel/v4.x/下载了4.2.6内核源码
将压缩包linux-4.2.6.tar.gz 放至 /usr/src中后解压:
sudo cp linux-4.2.6.tar.gz /usr/src
tar -zxvf linux-4.2.6.tar.gz
并确认系统自带基本的编译器套件(gcc g++ gdb make),安装ncurses库(apt-get即可)。
3. 开始配置内核
由于配置内核时需要根据系统选择配置,我们可以选择复制/boot目录下的配置文件到内核根目录
进入内核根目录后输入命令make menuconfig配置内核
看到该界面后选择<Load>,输入刚刚复制的配置文件,选择<OK>回到上一界面,再选择<Save>,输入另存为文件名.config保存文件。退出后输入命令ls –a 查看如果有.config 文件则配置成功
4. 编译内核
输入sudo make命令编译内核
输入sudo make modules_install编译内核模块
5. 载入内核模块
sudo make install
该命令会自动把linux内核的镜像文件还有System.map考入到/boot下,然后会自动生成引导菜单。
重启即可切换到新内核。
6. 添加系统调用
实现系统调用函数
sudo gedit kernel/sys.c
增加系统调用号
sudo geditarch/x86/entry/syscalls/syscall_32.tbl
声明系统调用函数
sudo gedit include/linux/syscalls.h
重新编译(详见前面的步骤)
测试程序:
测试结果:
输入dmesg命令查看printk结果