目录
初始准备:
实验使用的linux版本:Fedora
VMware使用方法:
VMware虚拟机安装Linux教程(超详细)_虚拟机安装linux系统_七维大脑的博客-CSDN博客
VMware虚拟机Player:https://pan.baidu.com/s/1qYpf7DM
Fedora 7虚拟机镜像:https://pan.baidu.com/s/1pLTdkKF
相关文章学习:
linux下修改文件内容_linux修改文件_一丽�的博客-CSDN博客
Linux【命令】修改文件内容_linux修改文件内容的命令_Jason_Lee155的博客-CSDN博客
切换Linux系统启动时的内核_KenBG的博客-CSDN博客
在Linux系统中运行C语言程序_linux运行c语言程序_I小时候可帅了I的博客-CSDN博客
实验1:Linux内核代码分析
实验目的:通过实验,基本具备对操作系统内核的分析与扩展能力;掌握内核调试基本技术,为基于Linux的内核级系统开发奠定基础。
实验内容:
- 安装Linux操作系统;
- 阅读Linux源码以了解Linux内核代码的组织方式、进程管理内部数据结构和进程调度过程、系统调用内部数据结构以及执行过程;
- 熟悉Linux下的编辑、编译和调试工具的使用;
- 实现Linux内核的编译、安装和调试。
实验2:新增系统调用
实验目的:让学生熟悉Linux系统调用,深入了解Linux操作系统中系统调用的实现机制和执行过程。
实验内容:
- 阅读并分析Linux内核源码,深入了解Linux内核中系统调用内部数据结构;
- 编写一个新系统调用的响应函数,函数的名称和功能由实验者自行定义;
- 将新的系统调用函数嵌入到Linux内核中;
- 编写应用程序以测试新的系统调用并输出测试结果(体现学号)。
Fedora下编译内核
1.下载内核
把配置文件复制到解压好的文件中
2.生成内核配置文件.config
问题:工作目录不对,所以命令无法响应
解决:
到此结束
3.编译和安装新内核
make all #生成期望的内核映像及模块
make modules_install #安装模块到“默认目录/lib/modules/<内核版本号>”下面
make install #将内核映像等几个文件复制到“/boot”目录,并修改引导程序的配置以启用该新内核
su root cd 需要查看的文件的位置 more menu.lst
cat menu.lst #查看文件内容,得先查看再修改 vim menu.lst #vim 文件名,进入要编辑的文件
Linux【命令】修改文件内容_linux修改文件内容的命令_Jason_Lee155的博客-CSDN博客
点击i进入编辑模式,在hiddenmenu前面加上#
点击Esc退出编辑模式
此时我们再查看发现已经修改成功
reboot #重启系统
添加myID系统调用
1.在文件
arch/i386/kernel/syscall_table.S
的尾部加上要新增的系统调用函数的名称,如下图中添加了psta系统调用,注释中的320表示它的系统调用号
2.在include/linux目录下添加头文件myID.h:
3. 在kernel目录下新建文件myID.c,在该文件中实现sys_myID函数
宏asmlinkage定义在linux/linkage.h中,表示函数的参数通过栈传递,而不是寄存器,所有的系统调用都遵循这种参数传递方式。
4.修改文件kernel/Makefile,使得myID.c在编译时可见:
5.在
include/asm-i386/unistd.h
里加上系统调用号的宏定义:6.修改
include/linux/syscalls.h
,加上函数sys_myID的声明。
先在头上加入结构体申明struct pinfo; 在该文件的头文件引用列表的末尾添加:
7.重新编译内核
在清理上次编译生成的中间文件之前,最好将配置好的.config文件备份至别的目录下以防删除,否则必须再执行实验1中的第2步配置.config文件。make mrproper
测试内核调用
在Linux系统中运行C语言程序_linux运行c语言程序_I小时候可帅了I的博客-CSDN博客
测试内核调用
实验中遇到的问题:
问题1:
打开虚拟机失败:Error while powering on:Internal error
解决方法重装VMware
(不知道原理,但是成功了)
2.工作目录不对,所以命令无法响应
解决:
到此结束
3.VMware与Windows引起的兼容性蓝屏 PAGE_FAULT_IN_NONPAGED_AREA
【日常分享】Windows10操作系统下虚拟机VMware打开后蓝屏的问题的一种解决方案(PAGE_FAULT_IN_NONPAGED_AREA)_一饭名厨姚鲲鲲的博客-CSDN博客
尝试了,但均失败
最终解决办法,下载了最新版的VMware