操作系统课设
1.下载一个内核
将内核文件下载到/usr/src路径下
官方下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/
为了能够下载快一点,这里我选择的是在上海交大的开源网站
下载命令:
1 | wget http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.18.16.tar.xz |
注:如果没有wget,请用这个命令下载:yum -y install wget
2.解压内核源码
tar -xvf linux-4.18.16.tar.xz
注:不要在windows上解压上传到centos中,因为windows对文件名大小写不敏感,文件会相互覆盖。而Linux则不会。
3.安装依赖软件包
安装CentOS7的依赖软件包
1 | yum -y install gcc ncurses-devel bison flex bc elfutils-libelf-devel openssl-devel |
4.添加系统调用号
vim linux-4.18.16/arch/x86/entry/syscalls/syscall_64.tbl
增加此行:
335 common mycall __x64_sys_mycall
5.添加系统调用程序的声明
vim linux-4.18.16/include/linux/syscalls.h
增加此行:
asmlinkage long sys_mycall(int number);
6.编写系统调用函数
vim linux-4.18.16/kernel/sys.c
增加以下函数:
1 | SYSCALL_DEFINE1(mycall,int,number){ |
7.开始编译内核
编译内核分为以下几个步骤:
1) 进入内核文件夹
cd linux-4.18.16/
2) 修改文件可执行权限
chmod +x ./scripts/gcc-version.sh
3) 删除以前编译产生的垃圾文件
make mrproper
make clean
注:可能有些同学会遇到如下问题:
解决方法:
安装:
yum -y install gcc automake autoconf libtool make
安装g++:
yum install gcc gcc-c++
4) 拷贝文件(.config)
cp /boot/config-* .config
5) 选择Load和Save保存再Exit退出。
make menuconfig
6) 开始编译内核(4个线程跑会快一些):
make -j 4
这里大概需要一个小时
7) 安装模块
make modules_install
8) 安装内核
make install
8.重启选择相应的系统
9. 测试:
dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题 通常非常有用。在运行dmesg时,它显示大量信息。通常通过less或grep使用管道查看dmesg的输出,这样可以更容易找到待查信息。例如,如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式:
首先创建test文件:
touch test.c
代码:
1 | #include<stdio.h> |
然后编译源文件:
1 | gcc test.c -o test |
dmesg相关指令:
dmesg相关指令: