1、典型操作系统内核分析与设计 院 系: 计算机学院实验课程:Linux内核分析与实现实验项目:典型操作系统内核分析与设计指导老师:尹传勇开课时间:20112012年度第 2 学期专 业:计算机科学与技术(师范)班 级:09本1班学 生:黄光宇学 号:20092100001 华南师范大学教务处 Linux 内核编译一 实验目的操作系统是计算机系统的核心,它负责控制和管理整个计算机系统的硬软件资源,使之协调工作。Linux 更是近代计算机领域,让人们青睐的操作系统。它开源的系统内核,让许多学者对此爱不释手,也因此引来了更多的人来学习 Linux 系统,同时也增强了开源队伍。我们在学习系统内核分析这门
2、课程的时候,Linux 是我们主要学习和研究的范畴。所以,通过本实验编译 Linux 系统内核来提高我们对 Linux系统的了解,让我们更好的掌握系统内核知识,把编写系统、编译内核等知识应用到实践中去。二 实验内容:实验准备:查看系统是否已安装源码?#rpm q kernel-source如果没有安装从安装盘(一般在 2 号盘)或从网上下载kernel-source-2.4.x-xx.i386.rpm 并安装#rpm Uhv kernel-source-2.4.x-xx.i386.rpm 1、配置系统调用 2、编译内核 3、用新的内核启动系统 4、使用系统调用三 实验的主要步骤:1、配置系统调
3、用(1)在/usr/src/linux-2.4.20-8/kernel/sys.c 中的最后一行加入系统调用代码:asmlinkage int sys_ycycall(int number)return number;(2)修改文件 /usr/src/linux-2.4/include/asm i386/unistd.h增加:#define _NR_ycycall 259(3)修改文件/usr/src/inlux/arch/i386/kernel/entry.s 增加:.long SYMBOL_NAME(sys_ycycall)2、编译内核(1)、进入 /usr/src/linux 2.4.2
4、0-8 目录#cd /usr/src/linux 2.4.20-8(2)、#make mrproper(3)、配置内核#make xconfig在“Processfamily”选项,选择“386”类型在 File System 选项,选择“Ext3 journalling file system support” 和“JDB (ext3) debugging support”在 SCSI Support 选项, “SCSI low-level drivers”在选择“BusLogicSCSI support”(默认为 m)。在 Block devices 选项,选择“RAM disk supp
5、ort”.(4)、将源代码于硬件设备连接起来#make dep5)清理编译环境,删除一些不必要的文件#make clean(6)、生成 bzImage 文件#make bzImage(7)、#make modules(8)、#make modules_install3、用新的内核系统启动系统(1)、#cp /usr/src/linux-2.4.20-8/arch/i386/boot/bzImage /boot/bzImage-1 (2)#cp /usr/src/linux-2.4/System.map /boot/System.map-1 (3)#ln -sf /boot/System.map
6、-1 /boot/System.map(4)、#make install(3)、打开 grub.conf 文件,我们可以看到系统启动多了(2.4.208custom)选项:2.4.20-8custom 为新生成的内核#gedit grup.conf(4)、重新启动系统(5)、查看版本#uname a4、使用系统调用include#include(#include)#include#define _NR_ycycall 259/int ycycall(int number)_syscall1(int,yaycall,int,number)main()int a=ycycall(100);printf(“%dn”,a);输出结果为:100四 实验总结 本次实验主要是通过对相关指令的执行,在RedHat 9.0的环境下进行一次Linux 内核编译。实验过程中,按照老师给的实验操作手册进行Linux 内核的配置,在Linux kermel configuration 目录下根据编译内核的需要对各个相关文件进行配置。在配置完成后用新内核启动系统,但是在第一次配置内核的时候我没有成功,问题应该是在配置过程中由于粗心忽略了某些配置,再一次的细心操作后成功完成了内核的变异。 通过本次试验,我对Linux内核的编译以及执行有了更深一步的了解,但有些问题以及指令不大明白,仍待提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1