`

Linux内核剪裁实验

阅读更多
实验目的:

1.      配置、编译Linux内核;

2.      了解Linux内核结构。

实验原理:

Linux内核的配置系统由三个部分组成,分别是:
l        Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则;

l        配置文件(config.in):给用户提供配置选择的功能;

l        配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig&make gconfig)。 

本实验采用的内核版本是2.6.22,配置工具采用2.6版本提供的makegconfig。内核源程序的文件按树形结构进行组织的,这样的结构有利于我们了解Linux内核结构。
实验内容:

配置、编译Linux内核
l        内核配置主要是对内核的功能模块进行选择及参数设定,首先进入内核源码根目录,使用“make gconfig”命令,屏幕上显示如下界面,

make gconfig 是the GTK+ graphical kernel configuration tool for Linux,它提供了完全的鼠标操作,图形化、列表式的显示方便了内核配置过程。

l        在上面界面中我们可以看到,内核配置主要包括五大项,分别是:

General setup, Loadable module support, Processor type and features, Power management options, Bus options, Networking, Devices drivers, File systems等等。

l        Processor type and features包括Subarchitecture Type和Processor family等选项,如下,

l        Loadable module support下可以设置模块编译选项,如下,




l        Ramdisk设置如下,



l        kernel .config support



l        上面是串口设置界面;

l        配置完成后,保存配置。退出gconfig后,执行cp .config /arch/arm/config/pxagconfig命令,再执行命令:make pxagconfig,make;生成内核映像文件zImage,对于ARM系列的CPU,此文件位于arch/arm/boot目录下。

l        内核模块在用gcc编译时,需要使用特定的参数和宏定义,在旧的内核版本中,需要在Makefile中手动设置这些设定,而在2.6版中引入了kbuild,将外部内核模块的编译与内核源码树的编译统一起来了。查看kbuild文件可以看到:

Kbuild for top-level directory of the kernel

This file takes care of the following:

1) Generate asm-offsets.h

2) Check for missing system calls



了解Linux内核结构
       Linux内核源码主目录下主要包括以下目录:     

arch

arch子目录包括所有与体系结构相关的内核代码。它的每一个子目录都代表一个支持的体系结构。例如:arm下面就是arm体系架构的处理器目录,包含我们使用的PXA处理器。

include

include子目录包括编译内核所需要的大部分头文件。与ARM相关的头文件在include/asm-arm子目录下。

init

这个目录包含内核的初始化代码,但不是系统的引导代码,包含main.c和Version.c文件。这是研究Linux内核的起点。

mm

这里包含所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等。而与体系结构相关的代码在arch/arm/mm中。

Kernel

这里包括主要的内核代码,此目录写的文件实现大多数Linux系统的内核函数,其中最重要的文件是sched.c。与Xscale体系结构相关的代码在arch/arm-pxa/kernel。

Drives

此目录用于放置系统所有的设备驱动程序,每种驱动程序个占一个子目录。

/block:

块设备驱动程序。块设备包括IDE和scsi设备。其初始化过程参加drivers/block/genhd.c中的device_setup()函数,该函数不仅初始化硬盘还初始化了网络。

/char:字符设备驱动程序。如串口、鼠标等。

/cdrom:包含Linux所有的CD-ROM代码。

/pci:PCI卡驱动程序代码,包含PCI子系统映射和初始化代码等。

scsi:包含所有的SCSI代码已经Linux所支持的所有的SCSI设备驱动程序代码。

net:网络设备驱动程序。

sound:声卡设备驱动程序。

lib目录放置内核的库代码;

net目录包含内核与网络的相关的代码;

ipc目录包含内核进程通信的代码;

fs目录是所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,如JFFS2;

scripts目录包含用于配置内核的脚本文件等。

每个目录下一般都有depend文件和一个makefile文件,它们是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件之间的相互依托关系很有帮助。有的目录下有readme文件,它是对相应的目录下的文件的一些说明,同样有利于内核的理解。

security 目录是2.6版本新增加的,它包含系统安全配置文件。

注意到2.6版去掉了rules.make文件,在2.4版的该文件中我们可以看到这样的语句:This file contains rules which are shared between multiple Makefiles。可以看出,2.6版的Makefiles文件组织较2.4版发生了变化。

实验结论:

       Linux内核的剪裁应该根据具体需求配置,不同的需求会有不同的配置,这就要求对Linux的内核结构有一个系统的了解。



















本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/WolfFlower/archive/2008/03/22/2207347.aspx
分享到:
评论

相关推荐

    剪裁内核 Linux 内核的配置方法

    ### 剪裁内核 Linux 内核的配置方法 #### 实验背景及目的 随着技术的发展,Linux作为开源操作...通过本实验的学习,你将能够熟练掌握Linux内核的获取、配置和编译流程,为进一步深入研究Linux内核打下坚实的基础。

    4 linux系统内核剪裁及编译.doc

    通过本实验,理解内核剪裁的含义,掌握在Linux系统中对新内核进行配置、编译、安装的一般方法及流程。

    RTLinux的实时性检验与内核裁减的研究

    RTLinux作为一种在Linux内核基础上增加实时补丁的系统,能够在不牺牲Linux强大的功能性和灵活性的同时,提供更好的实时任务支持。本文从基于Linux操作系统的实际应用程序开发出发,重点探讨了RTLinux在不同情况下的...

    实验一操作系统的引导.doc

    * 本实验仿照 Linux-0.11/boot 目录下的 bootsect.s 和 setup.s,以剪裁它们为主线 * 《Linux 内核 0.11 完全注释(修正版 V3.0)》的第 6 章是非常有帮助的参考 * oslab 中的汇编代码使用 as86 编译,语法和汇编课...

    基于嵌入式Linux的步进电机驱动程序设计

    驱动与内核接口层负责驱动模块在Linux内核中的注册加载与卸除工作,包括模块加载时向内核注册驱动,以及实现虚拟文件系统的设备操作接口。在中断设备的情况下,还包括中断处理函数的注册与注销。硬件设备接口层负责...

    智能手机电话短信实验模块设计与实现

    7. 操作系统的剪裁与移植 操作系统负责管理和调度外围设备与软件任务。文中采用的是开源免费的Linux操作系统,并基于嵌入式Linux 2.6版本进行移植。移植过程包括建立开发环境、下载内核源码、修改配置文件、编译内核...

    基于嵌入式的人脸识别系统设计 (2).pdf

    软件环境主要涉及轻量化操作系统的剪裁,将定制的Linux系统部署到硬件平台。 在算法优化与嵌入式平台移植方面,文章强调了针对Cortex-A9内核的优化和交叉编译的重要性。这包括在主机上配置交叉编译环境,优化代码以...

    Android入门到精通详解(完整书签)

    - **软件结构和使用的工具**:Android的软件架构分为四层:Linux内核、运行时库、应用程序框架和应用程序层。开发过程中主要使用的工具有Android Studio、Android SDK Manager等。 ##### 第2章:Android SDK的开发...

Global site tag (gtag.js) - Google Analytics