构建根文件系统

 对应《韦东山Linux视频第1期》第11课。
1.构建根文件系统之启动第1个程序
 u-boot----->启动内核----->启动应用程序
应用程序位于---根文件系统。
问1:内核怎么启动应用程序?
答:1.1打开设备文件 
sys_open("/dev/console")    //第0个文件
sys_dup(0);       // 复制第0个文件,所以是第1个文件
sys_dup(0);       // 也是复制第0个文件,所以是第2个文件
 我们写程序时,经常用到以下几个函数:
标准输出:printf()
标准输入:scanf()
标准错误:err()
以上3个文件就分别代表标准输入、标准输出、标准错误。"/dev/console"---是终端,这里是串口0.
1.2   执行run_init_process(xxx)
xxx 是命令行输入的 init=xxx  ;或者 /sbin/inti
2.构建根文件系统之init进程分析
在根文件系统下有很多命令,如cp,ls等。
      这些命令都对应一个程序,因为有很多的命令,如果一个个找到它的源码再编译,显然是件很费劲的事件。但是已经有牛人编出一个软件----busybox,它包含了很多命令。当我们执行ls、cp时都会链接到这个程序。验证一下:#ls  -l   /bin/ls   (查看/bin/ls 程序链接到哪里) 可以看到最终链接到了busybox
     执行命令:#ls  /sbin/init   -l  可以看到第一个程序 /sbin/init 也是链接到busybox.所以要分析init进程,就要分析 这个busybox源码。
init程序要做的事情:
1. 读取配置文件:/etc/inittab
      配置文件做哪些设置呢?
      1.1  指定执行哪个程序
      1.2  何时执行 由<action>指定
2. 解析配置文件
3. 执行 用户程序
inittab格式:
<id>:<reunlevels>:<action>:<process>
id => /dev/id,用作终端:stdin,stdout,stderr:printf,scanf,err
runlevels:忽略
action: 执行时机:sysinit,respawn,askfirst,wait,once,restart,ctrlaltdel,and shutdown
process:应用程序脚本
最小根文件系统的必需元素:
① /dev/console    ;  /dev/null (对应没指定id的init_action)
② init进程   ---> busybox
③ /etc/inittab 配置文件
④ 配置文件中指定的程序
⑤ C库
BusyBox init的启动过程,也可查看这篇文章: BusyBox init的启动过程
3. 构建根文件系统之busybox
这部分讲配置、编译busybox。可以查看这篇文章:BusyBox的交叉编译
4.构建根文件系统之构建根文件系统
可以查看这篇文章:基于BusyBox的默认配置来构建文件系统
yaffs2 根文件系统制作,可想看这篇文章:Yaffs2根文件系统制作

yaffs1是给小页512字节的nand flash用的。
yaffs2是给大页2k的nand flash用的。

挂载NFS根文件系统:
①服务器“允许”那个目录可被挂接
    nfs服务,设备文件/etc/exports
② 单板去挂接

挂载NFS根文件系统,可以查看这篇文章:ARM开发板挂接NFS网络文件系统  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值