第十三章 bootload、kernel、rootfs.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux系统的构建嵌入式Linux系统中的典型分区结构Boot parametersBootloadRoot filesystemKernel各个结构的分析1、从我们所学的硬件知识可以知道,在系统上电后需要一段程序来进行初始化(关闭WATCHDOG、改变系统时钟、初始化存储器控制器、将更多的代码复制到内存中)。简单的说bootload就是这么一段小程序(相当于PC机中的BIOS),初始化硬件设备、准备好软件环境,最后调用操作系统内核。从某个观点上来看Bootload可以分为两种操作模式:启动模式和下载模式。启动模式:上电后bootload从板子上的某个固态存储器上将操作系统加载到RAM中运行,整个过程并没有用户的介入下载模式:在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机下载文件,将它们直接放在内存运行或是烧入Flash类固态存储设备中。Bootload可以分为两个阶段:第一阶段实现的功能:硬件设备初始化、为加载Bootload的第二阶段代码准备RAM空间、复制Bootload的第二阶段代码到RAM空间中、设置好栈、跳转到第二阶段代码的C入口点第二阶段:初始化本阶段要使用的硬件设备、检测系统内存映射、将内核镜像和根文件映像从Flash上读到RAM空间中、为内核设置启动参数、调用内核2、内核的结构:Linux内核文件数目将近2万,除去其他构架CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。这些文件组织结构并不复杂,他们分别位于顶层目录下的17个子目录,各个目录功能独立目录名描述arch体系结构相关的代码block块设备的通用函数crypto常用加密和散列算法,还有一些压缩和CRC校验算法Drivers所有的设备驱动程序,里面的每一个子目录对应一类驱动程序fsLinux支持的文件系统的代码,每个子目录对用一种文件系统Include 内核头文件(基本头文件、驱动或功能部件头文件等)Init内核的初始化代码(不是系统的引导代码)Ipc进程间通信的代码Kernel内核管理的核心代码lib内核用到的一些库函数代码Mm内存管理代码Net网络支持代码,每个子目录对应于网络的一个方面Security安全、密钥、相关代码Sound音频设备的驱动程序Usr用来制作一个压缩的cpio归档文件:initrd的镜像,他可以作为内核启动后挂接的第一个文件系统Documentation内核文档Scripts用于配置、编译内核的脚本文件Linu内核Makefile文件分类名称描述顶层Makefile他是所有Makefile文件的核心,从总体上控制着内核的编译、连接.config配置文件,在配置内核时生成。所有Makefile文件都是根据.config来决定使用哪些文件Arch/Makefile对应体系结构的Makefile,它用来决定哪些体系结构相关的文件参与内核的生成,并提供一些规则来生成特定格式的内核镜像Scripts/MakefileMakefile公用的通用规则、脚本等KbuildMakefile各级目录下的Makefile,它们相对简单,被上一层Makefile调用编译当前目录下的文件3、根文件系统嵌入式 Linux 中都需要构建根文件系统,构建根文件系统的规则在FHS(FilesystemHierarchy Standard)文档中,下面是根文件系统顶层目录。根文件系统的制作1、进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文create_rootfs_bash,使用命令chmod +x create_rootfs_bash改变文件的可执行限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。create_rootfs_bash的内容为#!/bin/shecho ------Create rootfsdirectons start...--------mkdirrootfscdrootfsecho --------Create root,dev....----------mkdir root devetc boot tmpvar sys proc lib mnt homemkdiretc/init.detc/rc.detc/sysconfigmkdirusr/sbinusr/bin usr/lib usr/modulesecho make node in dev/console dev/nullmknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3mkdirmnt/etcmnt/jffs2 mnt/yaffsmnt/data mnt/tempmkdirvar/l

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档