18.14 构建Linux根文件系统
18.14.1 Busybox1.7.0之init程序分析
1.读取配置文件
2.解析配置文件
3.执行用户程序(根据配置文件中指定的内容)
配置文件:
1.指定应用程序
2.何时执行
busybox ->
init.c ->init_main()
->parse_inittab()
->fopen(INITTAB, "r");//打开配置文件/etc/inittab
->new_init_action()
new_init_action(int action, const char *command, const char *cons) eg. new_init_action(ASKFIRST, bb_default_login_shell, VC_2);
1.创建一个结构体,填充
2.把init_action放入init_action_list链表
->run_actions(SYSINIT);
->waitfor(a, ); //等待应用程序运行完毕
->run(a);//创建一个子进程
->waitpid(runpid, &status, );
->delete_init_action(a); //在init_action_list列表里删除该进程
->run_actions(WAIT);
->run_actions(ONCE);
->run(a);delete_init_action(a);
while () {
run_actions(RESPAWN);
run_actions(ASKFIRST);
->if(a->pid == )
{ a->pid = run(a);}
print "Please press Enter to acticve this console"
wait Enter
wpid = wait(NULL);/*Wait for a child process to exit*/
while (wpid > ) {
a->pid = ; //退出后设置pid为0
}
在busybox-1.7.0\busybox-1.7.0\examples\inittab中:
# Format<id>:<runlevels>:<action>:<process>
# <id>: appended to "/dev/" and used as-is.
用作标注输入输出终端:sdtin stdout stderr printf err scanf
//创建以下两个文件
/dev/console
/dev/null
# <runlevels>: The runlevels field is completely ignored.
#<action>: Valid actions include:sysinit, respawn, askfirst, wait, once,restart, ctrlaltdel, and shutdown.
从默认的配置文件中反推出默认的配置文件:
::ctrlaltdel:reboot
::shutdown:umount -a -r
::restart:init
::askfirst:/bin/sh
/dev/tty2:askfirst:/bin/sh
/dev/tty3:askfirst:/bin/sh
/dev/tty4:askfirst:/bin/sh
::sysinit:/etc/init.d/rcS
最小根文件系统:
1./dev/console /dev/null
2.init ->busybox
3./etc/inittab
4.配置文件指定的应用程序
5.应用程序需要的库(C库)
18.14.2 移植自己修改的根文件系统执行ifconfig没反应
在etc/init.d/rcS内增加一行代码
#!/bin/sh
ifconfig eth0 10.3.10.233
第1行表示这是一个脚本文件,运行时使用/bin/sh解析;
第2行用来配置IP地址为10.3.10.233;
【本人学习IP如下:
Windows IP:10.3.10.230
U-Boot IP:10.3.10.231
Linux主机IP(服务器):10.3.10.232
板载Linux IP:10.3.10.233
】
18.14 构建Linux根文件系统的更多相关文章
- 构建Linux根文件系统(未完待续)
所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...
- Buildroot构建指南——根文件系统(Rootfs)【转】
本文转载自; 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Buildroot构建指南——根文件系统(Rootfs) Buildroot的Rootfs构建流程有一个大 ...
- linux根文件系统 /etc/resolv.conf 文件详解
Linux根文件系统/etc/resolv.conf文件,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析器(resolver,以恶 ...
- linux根文件系统制作之busybox编译和系统构建【转】
转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...
- linux根文件系统制作
在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...
- 基于 SquashFS 构建 Linux 可读写文件系统
转载:http://www.oschina.net/question/129540_116839 在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备 ...
- Linux根文件系统的制作
转载:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076655.html 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及 ...
- 使用BusyBox制作linux根文件系统(CramFS+mdev)
转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...
- linux根文件系统的挂载过程详解
一:前言 前段时间在编译kernel的时候发现rootfs挂载不上.相同的root选项设置旧版的image却可以.为了彻底解决这个问题.研究了一下rootfs的挂载过程.特总结如下,希望能给这部份知识 ...
随机推荐
- angular4 富文本编辑器
使用quill富文本编辑器实现,angular项目中用到了ngx-quill插件. quill的GitHub地址:https://github.com/quilljs/quill ngx-quill的 ...
- Spark笔记
Spark基础 第一节:什么是Spark?Spark的特点和结构 1.什么是Spark? Spark是一个针对大规模数据处理的快速通用引擎. 类似MapReduce,都进行数据的处理 2.Spark的 ...
- 日积月累--线程中断interrupt()方法
线程中断方法interrupt()方法的理解: interrupt()方法的源码: interrupted()方法的源码及注解: isInterrupted()方法源码及注解: 在了解这个方法之前我们 ...
- web前端页面设计小笔记
input总是在点击的时候出现蓝色边框,这是input的默认属性,就算设置了border:none:也没有用! #解决方法:outline:none; 设置input框里的placeholder值得字 ...
- MySQL5.7关于密码二三事
MySQL5.7关于密码二三事 第一个:update user set password=password('root') where user='root' and host='localhost' ...
- 解决 error: Your local changes to the following files would be overwritten by merge:XXXX
版权声明:这可是本菇凉辛辛苦苦原创的,转载请记得带上我家地址,不要忘记了哈 ... https://blog.csdn.net/u011314442/article/details/78852547 ...
- Windows守护进程简单示例
转载: https://blog.csdn.net/kikaylee/article/details/51395360 /* @描述:一个简单的Windows守护进程的例子(C++版本) @作者:ki ...
- [转载]前端 阿里p6面试题集锦含答案
1.说一下你了解CSS盒模型. 盒模型分为:IE的怪异盒模型和标注浏览器的盒模型,然后可以通过box-sizing属性控制两种盒模型的变换. 2.说一下box-sizing的应用场景. 这个也不难,简 ...
- 页面商城总结(一)——HTML部分
学习编程,与君共勉. 在做过一些页面并且参考了许多商城页面后,对代码的书写和风格也有所体会,再次将我的经验分享给大家,希望大家也能够写出整洁有效的代码.本文主要是针对排版的问题进行总结,代码量较少,希 ...
- 配置两个Hadoop集群Kerberos认证跨域互信
两个Hadoop集群开启Kerberos验证后,集群间不能够相互访问,需要实现Kerberos之间的互信,使用Hadoop集群A的客户端访问Hadoop集群B的服务(实质上是使用Kerberos Re ...