欢迎来到天天文库
浏览记录
ID:9394883
大小:127.00 KB
页数:8页
时间:2018-04-30
《linux内核裁剪课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:Linux原理与设计设计题目:Linux裁剪内核专业:计算机科学与技术专业姓名:学号:1.引言当Linux操作系统发布以后,一般是不需要编译内核的。但是在实际应用中,当需要增加操作系统对新的硬件设备的支持或者增加内核新的功能、对内核代码或者内核配置进行优化时,就需要去重新编译Linux内核,然后重新发布自己的Linux内核版本。本次实验是对下载的内核源码进行配置并编译,用编译出的内核重新引导系统。2.实验原理2.1Linux内核的配置系统由三个部分组成,Makefile、配置文件盒配置工具。2.1.1Make
2、file:分布在Linux内核源代码中,定义Linux内核的编译规则。2.1.2配置文件(config.in/Kconfig):给用户提供配置选择的功能,在linux2.4版本以前文件名是config.in,在Linux3.3版以后文件名改为Kconfig。2.1.3配置工具:包括配置命令解释器和配置用户界面。其中配置命令解释器负责对配置脚本中使用的配置命令进行解释;配置用户界面为用户提供配置内核选项的用户界面,它有三种:Makeconfig提供基于字符界面;Makemenuconfig提供基于Ncurses图形界面。3.运行工作
3、环境和配置说明本实验采用的内核版本是3.3.3,配置工具采用3.3版本提供的makegconfig。首先去官网下载最新的3.3.3版本的Linux,将下载的内核源代码放到Linux系统目录文件/usr/src/中,然后下载补丁。要想顺利完成内核编译,首先需要检查或者安装必要的工具。1.安装gcc,make等编译工具:apt-getinstallbuild-essential2.安装makemenuconfig时必须的库文件:NCurses(libncurses5-dev或ncurses-devel),这是当makemenuconf
4、ig时用作生成菜单窗口的程序库:apt-getinstalllibncurses-devapt-getinstallkernel-package3.安装Linux系统生成kernel-image的一些配置文件和工具apt-getinstallfakerootapt-getinstallinitramfs-tools,module-init-tools4.一般在编译Linux内核时,一般还需要以下工具(这些工具一般是可选的):GNUC++Compiler(g++或gcc-c++)-编译makexconfig使用的Qt窗口时需要Qt3
5、(qt-devel或qt3-devel)-makexconfig时用作Qt窗口的程序库GTK+(gtk+-devel)-makegconfig时用作GTK+窗口的程序库Glade(libglade2-devel)-要编译makegconfig时的GTK+窗口时需要在Ubuntu系统中,我们可以使用下面的命令来获得相关的软件包:apt-getupdateapt-getinstalllibncurses5-devwgetbzip21.文件系统中设计的文件夹及其中文件的清单Linux内核源码主目录下主要包括以下目录:archarch子目
6、录包括所有与体系结构相关的内核代码。它的每一个子目录都代表一个支持的体系结构。例如:arm下面就是arm体系架构的处理器目录,包含我们使用的PXA处理器。includeinclude子目录包括编译内核所需要的大部分头文件。与ARM相关的头文件在include/asm-arm子目录下。init这个目录包含内核的初始化代码,但不是系统的引导代码,包含main.c和Version.c文件。这是研究Linux内核的起点。mm这里包含所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等。而与体系结构相关的代码在arch/
7、arm/mm中。Kernel这里包括主要的内核代码,此目录写的文件实现大多数Linux系统的内核函数,其中最重要的文件是sched.c。与Xscale体系结构相关的代码在arch/arm-pxa/kernel。Drives此目录用于放置系统所有的设备驱动程序,每种驱动程序个占一个子目录。/block:块设备驱动程序。块设备包括IDE和scsi设备。其初始化过程参加drivers/block/genhd.c中的device_setup()函数,该函数不仅初始化硬盘还初始化了网络。/char:字符设备驱动程序。如串口、鼠标等。/cdr
8、om:包含Linux所有的CD-ROM代码。/pci:PCI卡驱动程序代码,包含PCI子系统映射和初始化代码等。scsi:包含所有的SCSI代码已经Linux所支持的所有的SCSI设备驱动程序代码。net:网络设备驱动程序。sound:声卡设备驱动
此文档下载收益归作者所有