一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序

转载 2015年11月20日 21:56:10

     通过前几节的学习制作,我大致地制作了一个比较完整的 yaffs 根文件系统,到这时候将自己移植的uboot、内核、根文件系统移植到自己的开发板中,一个基本的嵌入式 linux 系统也算搭建完成了。但是我的问题又来了,虽然嵌入式系统搭建完成了,可是最终是用来运行自己的程序,达到自己的项目目标的,所以怎么样使自己编写的应用程序在板子上自动运行起来呢?总不能需要我登录到 console 上输入 ./hello 才能运行自己的程序吧,这家伙整得就有点忒那个了吧。想到自己对根文件系统的启动时执行的流程,我知道该在那里做手脚了。下面先总结以下,省得以后别人问我,再说不出个子鼠丑牛.......

yaffs根文件系统制作流程

   1、创建 yaffs 根文件系统主目录 rootfs (主目录名字可以随便起)

   2、使用BusyBox为 rootfs 生成 bin、sbin、usr 目录和 linuxrc 这个链接文件

   3、在 rootfs 中创建根文件系统的基本目录的其他结构:etc、dev、root、mnt、home、root、tmp等

   4、填充这些目录,主要是 etc、dev需要填充

   5、使用mkyaffs2image 将rootfs 目录制作成yaffs 镜像文件烧写到开发板。

BusyBox 启动流程简要分析

  BusyBox是目标板系统上执行的第一个应用程序,当调用 BusyBox 它会执行 BusyBox 自身的init进程。BusyBox init程序对应的代码在 init/init.c文件中,其对应的流程图如下:


etc/inittab 文件格式分析

   etc/inittab 是Busybox 的 init 进程在初始化系统的过程中会去解析的一个文件,该文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下:

  <id>:<runlevels>:<action>:<process>

id:表示这个系统要使用的控制台(即标准输入、标准输出、标准错误设备)。如果省略,则使用与 init 进程一样的控制台。

runlevels:对于 BusyBox init程序,这个字段没有意义,可以省略。

action:表示 init 程序如何控制这个子进程。

process:要执行的程序,它可以是可执行程序,也可以是脚本。   

其中,action 字段的意义如下图:


根文件系统启动自己的应用程序

   好了,我大致有思路了,修改 /etc/inittab文件内容,加上一个 respawn的动作不就行了么?于是,我就在根文件系统的/home目录下利用amr-linux-gcc交叉编译了一个Hello World 程序,如下:


  然后修改了 etc 目录下的 inittab 文件


在该文件中添加了一行:::respawn:/home/hello    表示不断重复执行 /home目录下的名字为 hello 的可执行文件。

添加前:


添加后:


然后重新制作成 yaffs镜像文件,下载到开发板上去,可见咱们的程序自动执行了。

一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序

通过前几节的学习制作,我大致地制作了一个比较完整的 yaffs 根文件系统,到这时候将自己移植的uboot、内核、根文件系统移植到自己的开发板中,一个基本的嵌入式 linux 系统也算搭建完成了。但是...

一步一步制作yaffs2根文件系统

  • 2017年10月28日 10:03
  • 2.88MB
  • 下载

一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录

开发环境:Ubuntu 12.04                      开发板:mini2440  256M NandFlash   64M SDRAM                     ...

一步一步制作yaffs/yaffs2根文件系统(四)

一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录 2013-08-17 16:06 2927人阅读 评论(6) 收藏 举报 本文章...
  • ASKLW
  • ASKLW
  • 2016年09月22日 10:51
  • 247

一步一步制作yaffs/yaffs2根文件系统(一)---储备好基础知识再打

开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3  点此可下载 BusyBox版...

一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录

版权声明:本文为博主原创文章,未经博主允许不得转载。                             开发环境:Ubuntu 12.04              ...

一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr

开发环境:Ubuntu 12.04 开发板:mini2440  256M NandFlash   64M SDRAM 交叉编译器:arm-linux-gcc 4.4.3  点此可下载,csdn上传有点...

一步一步制作yaffs/yaffs2根文件系统(三)---使用glibc库构造 /lib

开发环境:Ubuntu 12.04            开发板:mini2440  256M NandFlash   64M SDRAM            交叉编译器:arm-linux-gcc...

一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr

一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr                               开发...

yaffs2根文件系统制作教程

根文件系统制作教程 特别说明:根文件系统制作过程中所有拷贝命令均需加“-a”参数(  #cp  –a  )否则将出现难以预料的问题。美观起见,文中空格格式不统一,请勿直接复制文中命令 1、工具准备...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
举报原因:
原因补充:

(最多只允许输入30个字)