第七章 linux内核配置与文件系统制作_第1页
第七章 linux内核配置与文件系统制作_第2页
第七章 linux内核配置与文件系统制作_第3页
第七章 linux内核配置与文件系统制作_第4页
第七章 linux内核配置与文件系统制作_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1Linux简介7.2Linux内核配置7.3根文件系统2024/3/122桌面版本:面向PC用户的桌面发行版本,常见的如redhat、fedora、debian、Ubuntu、SUSE、红旗等。Linux内核内核是所有linux系统的中心软件组件。嵌入式领域所说的linux,一般是指linux内核。移植也是指的是移植linux内核到目标平台。Linux介绍内核:是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux内核由5个主要的子系统组成:进程调度(SCHED)内存管理(MM)虚拟文件系统(VFS)网络接口(NET)进程间通信(IPC)

进程调度:

控制着进程对CPU的访问。Linux使用比较简单的基于优先级的进程调度算法选择新的进程。内存管理:内存管理允许多个进程安全地共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保存在内存中,其余的程序块则保留在磁盘上。必要时,操作系统负责在磁盘与内存之间交换程序块。虚拟文件系统:

它可以隐藏各种硬件的具体细节,为所有设备提供统一的接口,VFS还支持多达数十种不同的文件系统,这也是Linux较有特色的一部分。网络接口:提供对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络设备驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议;网络设备驱动程序负责与硬件设备进行通信;进程间通信:它的作用是支持进程间各种通信机制。Linux内核的版本号2.6.24其中,2是主版本号,6是次版本号,24是修订版本号。如果次版本号是偶数,说明是稳定版本。如果次版本号是奇数,则是开发版本。我们一般使用稳定版本。Linux操作系统的发展Linux之父:李纳斯·托沃兹(LinusTorvalds)Linux基本体系结构7.1Linux简介7.2Linux内核配置7.3根文件系统为什么重新编译内核linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。为什么要重新定制自己的内核?

一般主要有下面四个考虑:

(1)尺寸小自己定制编译的内核具有更少的代码,运行会更快

(2)节省内存由于内核部分永远占用物理内存,定制内核可使系统拥有更多的物理内存

(3)减少漏洞不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

(4)动态加载模块根据需要动态地加载或者卸载模块,可以节省系统内存1.4内核编译模式

要增加对某部分功能的支持,比如:网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中:优点:

在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点:

会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在;建议经常使用的部分直接编译到内核中,比如网卡。Linux内核的配置(1/6).config文件这是对linux编译时所依赖的文件。我们在配置内核时所做的任何修改,最终都会在这个文件中体现出来。它是Makefile对内核进行处理的重要依据。一般来说,内核提供了芯片公司demo板的.config文件,可找一个近似的进行修改。Linux内核的配置(2/6)三种配置方式●makeconfig基于文本对话的配置方式,比较细致,但是浪费时间。对专业的内核开发人员比较合适。●makexconfig基于图形界面的配置方式。非常直观,但是需要特殊的软件支持,一般不推荐。●makemenuconfig推荐的内核配置方式,采用目录的方式,直观,容易使用。

基于图形界面的menuconfig配置菜单Linux内核的配置(3/6)Kconfig在进行makemenuconfig时,目录的生成依赖于Kconfig文件。一般来说,每个源代码目录下都有一个Kconfig文件。configDM9000tristate"DM9000support"dependsonARM||BLACKFIN||MIPSselectCRC32selectMII---help---SupportforDM9000chipset.Tocompilethisdriverasamodule,chooseMhere.Themodulewillbecalleddm9000.Linux内核的配置(4/6)Kconfig对.config文件的影响:……………CONFIG_DM9000=y……………makemenuconfig对内核配置所做的修改最终反映在.config文件中。如上所示,在.config文件中CONFIG_DM9000=y被定义为y。Linux内核的配置(5/6)Kconfig对Makefile的影响:………………..obj-$(CONFIG_DM9000)+=dm9000.o………………CONFIG_DM9000是tristate类型,有三个可能取值:y:编译进内核m:编译成模块n:不进行编译若是bool类型,则只有两种可能,y或者n。Linux内核的配置(6/6)MakefileLinux内核源码的每个目录下都有一个Makefile,由该Makefile对源代码的编译、链接等操作进行控制。编译完成后,每个源代码目录下都会生成一个名叫built-in.o的文件。这个文件由源代码目录下的所以源文件编译后的目标文件链接而成;而不同的built-in.o又被上层目录中的Makefile链接成更大的builtin.o,直到最后链接成为一个内核vmlinux.o。Linux内核移植——交叉编译关于交叉编译由于我们的目标平台是ARM,而在x86平台上进行开发,故必须进行交叉编译。修改内核的顶层Makefile:…………………..ARCH?=armCROSS_COMPILE?=arm-linux-……………………表示我们的目标平台是ARM构架的,而使用的交叉编译器的前缀是arm-linux例:在内核配置中添加对USB输入设备的支持1.Makemenuconfig进入配置菜单2.添加Inputcoresupport具体的每个内核配置选项的含义需要逐个研究网络上下载视频学习这里不再赘述2024/3/12247.1Linux简介7.2Linux内核配置7.3根文件系统

1.根文件系统的结构根文件系统是Linux内核启动后第一个挂载的文件系统。在根文件系统中存放着内核镜像、各种系统配置文件以及一些其他的重要文件(例如设备文件、命令程序等)。为了保证通用性,根文件系统的目录结构需要遵守FHS(文件系统层次标准)标准(FilesystemHierarchyStandard)。FHS标准定义了根文件系统中每个目录名称及其作用的规则规范。任何一个分区都必须挂载到某个目录上。目录是逻辑上的区分。分区是物理上的区分。

磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。根本目的:把不同资料,分别放入不同分区中管理

2024/3/1229目录与分区基于FLASH的RomfsCramfsJffs/jffs2Yaffs基于RAM的RamdiskTmpfs用户可以根据可靠性、健壮性和/或增强的功能的需求来选择文件系统的类型。2024/3/12302.嵌入式linux系统中常用的文件系统要求文件系统在频繁的文件操作(例如,新建,删除,截断)下能够保持较高的读写性能,要求低碎片化。Linux下的日志文件系统(XFS,ReiserFS,Ext3等)能保持数据的完整性,但消耗过多系统资源,的弱点使之不能成为嵌入式系统中的主流应用。并且这些都是专门为硬盘这类的存储设备优化,对于flash这类的存储介质并不适用。因为现有的嵌入式文件系统的碎片化的问题,大部分的嵌入式设备只给用户提供了只读文件系统,给用户带来不便。嵌入式文件系统的载体是以Flash为主的存储介质,所以为了延长Flash的使用寿命,应该尽量减少对Flash的写入操作。文件系统采用DirectI/O的话,使I/O效率明显降低,增加了写入次数;但采用延时写的话,虽然能够降低碎片问题,如果加入日志系统的话,有不能保证数据的安全性。这是一个矛盾。Linux对文件系统的要求:Ramdisk文件系统Ramdisk是通过将RAM用作设备来创建和挂装文件系统的一种机制,它通常用于无盘系统(当然包括微型嵌入式设备,它只包含作为永久存储媒质的闪存芯片)。

RomFS文件系统uClinux系统多采用Romfs文件系统,Romfs是一种相对简单、占用空间较少的文件系统。首先内核支持Romfs文件系统比支持ext2文件系统需要更少的代码;其次romfs文件系统相对简单,在建立文件系统超级块(Superblock)需要更少的存储空间。Romfs是只读的文件系统,禁止写操作,因此系统同时需要虚拟盘(RAMDISK)支持临时文件和数据文件的存储。

只读文件系统,可以放在ROM空间,也可以在系统的RAM中CRAMFS文件系统CRAMFS中的数据已被压缩,属于只读性文件系统,不能在闪存中修改。用户想获取数据时,CRAMFS先把数据送到RAM中,用户从RAM中读取。一般CRAMFS的上层为RAMFS文件系统,经修改过的文件都保存在RAM中。RAMFS和CRAMFS结合的缺陷在于,一旦出现掉电等特殊情况,保存在RAMFS中的修改数据将全部丢失。JFFS2文件系统JFFS2是比较常用的嵌入式日志文件系统。JFFS2因为有以下这些优点而在无盘嵌入式设备中越来越受欢迎:

JFFS2在扇区级别上执行闪存擦除/写/读操作要比Ext2文件系统好。

JFFS2提供了比Ext2fs更好的崩溃/掉电安全保护。当需要更改少量数据时,Ext2文件系统将整个扇区复制到内存(DRAM)中,在内存中合并新数据,并写回整个扇区。这意味着为了更改单个字,必须对整个扇区(64KB)执行读/擦除/写例程―这样做的效率非常低。要是运气差,当正在DRAM中合并数据时,发生了电源故障或其它事故,那么将丢失整个数据集合,因为在将数据读入DRAM后就擦除了闪存扇区。JFFS2附加文件而是重写整个扇区,并且具有崩溃/掉电安全保护这一功能。3、创建根文件系统step1创建目录。

step2创建必要的设备文件。

step3安装所需的共享库。

step4安装init文件、Shell和各种基本命令(可由busybox提供)。

step5创建和编辑配置文件。Step1创建目录

首先创建一个新的目录rootfs,作为整个根文件系统的根目录,如:

接着根据FHS标准依次创建各个子目录,如下所示:Step2创建根文件系统中的命令文件、设备文件

在创建根文件系统中的命令文件、设备文件时,最简单的办法就是直接复制桌面Linux系统中的文件。

(1)bin。bin目录下存放的是命令程序文件。在桌面Linux系统中包含了文件管理、系统管理和设置、磁盘管理等数百个命令文件。具体操作如下所示:上述命令的意思是指,将Linux系统中bin目录中的ls和date命令文件复制到rootfs/bin目录下。(2)dev。dev目录下存放的是各种设备文件。

1)控制台设备。控制台终端用于显示各种信息,显示器是一种最常见的控制台终端。在linux系统中,控制台的设备文件是console。控制台在其他设备驱动初始化前就可以使用,因此常用来显示内核的启动信息。

2)虚拟控制终端。为了满足多用户多任务的需要,可以通过虚拟控制终端来使用控制台终端。例如tty1、tty2、tty3文件等。

3)串口终端。串口终端是使用串行端口连接的终端设备。在Linux系统中常用的串口终端设备文件有ttyS0、ttyS1等。在Linux2.6内核中ttyS0文件称为ttySAC0。

这里-a参数用来保留文件的所有属性,否则cp命令将试图从设备文件中读取内容并写入新文件。在嵌入式系统中,出于某种需要可能不希望动态创建设备文件,这时,所需的设备文件就要用mknod命令预先在根文件系统内创建,或者将创建设备文件的命令写入系统的初始化脚本中。有关mknod命令的介绍:mknod:创建特殊文件语法mknod[必要参数][选择参数][主设备号][次设备号]功能建立一个目录项和一个特殊文件的对应索引节点建立的文件有三种b:块设备c:字符设备p:管道文件执行权限:超级用户命令属性:系统设置Step3安装共享库

lib。lib目录下存放的是函数库文件。在嵌入式linux系统中可以根据实际的需要选择各种库文件。对于使用动态编译方式编译的C应用程序来说,以下两个库文件是必须的。libc:该库是C应用程序必须使用的基本C函数库。ld-linux:该库是动态链接器,提供动态链接函数库的功能。直接从交叉编译器的lib目录下把以上库文件复制到文件系统的lib目录下,如下所示:除以上基本库之外,还有以下一些其他的常用共享库:libd1.so.2libpthread.so.0libutil.so.1如果要运行C++源码编译得到的应用程序,则还需要以下共享库:libstdc++.so.5libgcc_s.so.1

busybox是嵌入式系统中常用的一个软件包,它把许多常用的Linux命令都集成到一个单一的可执行程序中,几乎只需要这一个可执行程序加上Linux内核就可以构建一个基本的Linux系统。busybox忽略了许多不常用的功能,因此非常小巧,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论