- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CF卡上的linux啟动过程分析
CF卡上的Linux启动过程分析
一个嵌入式linux操作系统可以简单的抽象为,引导程序bootloader、内核vmlinuz、文件系统filesystem。
Bootloader是系统加电后运行的第一段代码,一般它只在启动系统时非常短的时间按内运行。对于linux系统来说,这是至关重要的一步。在系统中,整个bootloader由系统中的bios和u盘中MBR(主引导扇区)的一段代码来共同完成引导任务。这里我们采用grub引导方式。系统先将BIOS检测到的MBR内容读取到RAM中,然后将系统控制权交给grub,最后由grub负责把要引导的操作系统的内核镜像读取到系统RAM中,然后跳转到内核的入口点。
vmlinuz是Linux 内核的镜像文件,可以被引导程序加载,从而启动Linux系统。
initrd的全称是boot loader initialized RAM disk,它是系统启动时所使用的根文件系统映像文件,这个文件系统中包含几个驱动模块,都是系统启动时所必须加载的,另外当我们需要加载其它的模块时,也可以放在其中。
一、引导程序Grub
机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查软驱或者光驱,然后再尝试从硬盘引导。如果在这些可移动的设备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区,寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader。
linux里面的bootloader通常是lilo或者grub,从Red Hat Linux 7.2起,GRUB取代LILO成为了默认的启动装载程序。那么启动的时候grub是如何被载入的呢?
grub有几个重要的文件,stage1,stage2,有时候还需要stage1.5。这些文件一般都在/boot/grub文件夹下面。grub被载入通常包括以下几个步骤:
1、装载基本的引导装载程序(stage1) stage1很小,只有512字节,stage1通常位于主引导扇区里面,它的主要功能就是装载第二引导程序(stage2)。这主要是因为在主引导扇区中没有足够的空间用于其它东西, grub中stage2文件的大小是103.9K。
2. 装载第二引导装载程序(stage2) 这第二引导装载程序实际上是引出更高级的功能,以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。
上面还提到了stage1.5这个文件,它的作用是什么呢?在/boot/grub目录下可以看到有fat_stage_1.5 e2fs_stage_1.5 xfs_stage_1.5等等,很容易猜想stage1.5和文件系统有关系,有时候基本引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这时候就需要stage1.5来连接stage1和stage2了.因此对于不同的文件系统就会有不同的stage1.5。但是对于我们做的grub好像stage1.5并不是很重要,因为我试过了,在没有stage1.5的情况下, 我把stage1安装在格式化为ext3的CF卡中,能够正常引导,并不需要e2fs_stage_1.5或者fat_stage_1.5。
我们的具体做法是把整个CF卡格式化为一个分区,文件系统为ext3格式,然后把stage1、stage2、grub.conf这几个启动的时候必须的文件拷贝到CF卡的指定目录下,然后进入grub使用一些命令将其安装到CF卡上。
二、内核配置
Linux内核所控制的东西非常广,从文件系统格式、程序开放、电源管理到用户的安全性等一大堆的项目,甚至连网络带宽的分配都在其中,由此可知内核的重要性。但是针对我们现在做的系统,在内核配置中我们主要对下面这些选项感兴趣
1、?Loadable?module?support 对模块的支持,这里面有三项: Enable?loadable?module?support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。 Set?version?information?on?all?module?symbols:表示该模块不跟内核一起发布,通常不选。 Kernel?module?loader:该选项表示内核可以实现模块加载的功能。Kernel程序可以在需要的时候自动调用模块,而在不用该功能的时候自动卸载该模块
2、Processor?type?and?features 在它的下面,同样有很多的选项,但我们只关心Processor?family:根据我们自己的情况选择CPU类型。在我们的故障诊断仪上,经过试
文档评论(0)