全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式Linux文件系统启动脚本及分析日期:2011-03-24 来源:Linux社区 作者:Linux 在内核初始化完成后,嵌入式linux 文件系统的启动过程主要包含以下几个步骤:1. 执行/sbin/init 文件2. 执行/etc/inittab 文件3. 执行/etc/init.d/rcS 文件4. 执行挂载文件系统脚本5. 执行内核模块脚本6. 执行网络初始化脚本7. 执行应用程序启动等脚本,如qtopia 的启动 系统启动流程图:1. 内核启动init内核启动的最后一步就是启动init 进程,init 进程是由内核启动的第一个(也是唯一一个和)用户进程(进程ID 为1 ),它根据配置文件决定启动哪些程序,比如某些脚本, 启动shell ,运行用户指定的程序等,那么init 进程又是怎么启动的呢是由内核调用/sbin/init 文件而启动的,那有人就有人想知道内核是如何找到需要执行的init 文件呢。下面看一下内核代码中init/main.c ,如下所示:static int noinline init_post(void)free_initmem(); /* 释放初始化内存*/unlock_kernel();mark_rodate_ro();system_state=SYSTEM_RUNNING;numa_default_policy();/* 打开控制设备hanle=0=stdin*/if(sys_open(const char _user*) “/dev/console”, O_RDWR,0)stout,stderr*/(void)sys_dup(0);(void)sys_dup(0);/* 尝试执行ramdisk_execute_command 指定的程序*/if(ramdisk_execute_command) run_init_process(ramdisk_execute_command);printk(KERN_WARNING “Failed to execute %sn”,ramdisk_execute_command);/* 尝试执行execute_command 指定的程序*/if(execute_command) run_init_process(execute_command);printk(KERN_WARNING “Failed to execute %sn”,execute_command);/* 依次尝试执行四个外部程序*/run_init_process(“/sbin/init”);run_init_process(“/etc/init”);run_init_process(“/bin/init”);run_init_process(“/bin/sh”);panic(“No init found . Try passing init=option to kernel.”);内核启动init 进程的过程如下:先打开控制台设备/dev/console ,并复制了两个handle, 这样stdout,stdin,stderr 都指向/dev/console, 这样就打开了标准设备输入,输出,标准错误设备,然后执行几个外部程序。这几个程序中任何一个加载成功就进入了用户态,内核启动就宣告结束。即1. 即释放掉初始化内存(_init标出的变量和函数占用的内存)2. 打开控制台设备(/dev/console)文件,并且把它设置为标出输入3. 复制标准输入为标准输出和标准错误输出4. 启动内核参数rdinit=指定的init程序5. 启动内核参数init=指定的init程序6. 启动其它地方的init程序或者sh程序7. 提示找不到init程序 其中 4 5 6 7 只要顺序找到一个 就开始跳过其他步执行了2. 执行/etc/inittab 文件当init 启动成功后,需要做的就是分析/etc/inittab 文件并执行它。其内容如下:# /etc/inittab:sysinit:/etc/init.d/rcS# 启动shell 以/dev/ttySAC0 作为控制台ttySAC0:askfirst:-/bin/sh # 按下ctrl+alt+del 之后执行的程序,不过在串口控制台中无法输入ctrl+alt+del 组合键:ctrlaltdel:/sbin/reboot# 重启关机前执行的程序:shutdown:/bin/umount -a -r3. 执行/etc/init.d/rcS 文件这是一个脚本文件,可以在里面添加想自动运行的命令。内容如下:#! /bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:runlevel=Sprevlevel=Numask 022export PATH runlevel prevlevel# 网络配置脚本. /etc/init.d/network.sh# load zlg_fsinsmod /bin/zlg_fs.koinsmod /bin/zlg_ffs.komknod /dev/zlg_fsa b 125 0mknod /dev/zlg_fsa1 b 125 1mknod /dev/zlg_fsa2 b 125 2mount -t vfat /dev/zlg_fsa /usrmount -a4. 执行/etc/fstab( 挂载文件系统脚本)在文件 /etc/init.d/rcS 中执行 mount a 时,就会按照文件 /etc/fstab 内容挂载相应的文件系统 .#device mount-point type options dump fsck ordernone /proc proc defaults 0 0none /dev/pts devpts mode=0622 0 0tmpfs /dev/shm tmpfs defaults 0 0(1)device : 要挂接的设备,如 /dev/hda2mount-point: 挂接点type: 文件系统类型,如 pro,jffs2,nfsoptions: 挂接参数,以逗号隔开dump 和 fsck order :用来决定控制 dump,fsck 程序的行为。5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人防工程建设技术规范与实施方案
- 防护设施节能设计方案
- 2025浙江绍兴市智慧城市集团有限公司下属绍兴市城发应急科技有限公司第一批人员招聘1人笔试考试参考试题附答案解析
- 硅锰渣综合利用项目实施方案(参考模板)
- 2025河南城发环保能源有限公司下属项目公司校园招聘110人笔试考试参考题库及答案解析
- 市政管网改造中环境风险控制方案
- 旧水坑发放物资通知书
- 桃园机场启用通知书
- 2025广西百色市那坡县机关后勤服务中心招聘会务、调度室工作人员3人笔试考试备考试题及答案解析
- 2025年赣州远恒佳职业学院党政管理岗招聘1人笔试考试参考题库附答案解析
- 七年级体育与健康 身体检查与体质测试教案
- 店铺(初级)营销师认证考试题库附有答案
- 俄罗斯进口冻肉合同范本
- 2024智能网联汽车自动驾驶功能仿真试验方法及要求
- 现代通信技术导论智慧树知到期末考试答案章节答案2024年北京科技大学
- 煤矿瓦斯抽放规范(AQ1027-2006)
- 安全全年培训计划
- 叙事技巧-如何运用插叙和双线叙事
- 上海野生动物园行业分析
- 血管内超声在冠心病中应用的中国专家共识(全文)
- 粮食熏蒸操作要点培训课件
评论
0/150
提交评论