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根文件系统的更多相关文章

  1. 构建Linux根文件系统(未完待续)

          所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...

  2. Buildroot构建指南——根文件系统(Rootfs)【转】

    本文转载自; 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   Buildroot构建指南——根文件系统(Rootfs) Buildroot的Rootfs构建流程有一个大 ...

  3. linux根文件系统 /etc/resolv.conf 文件详解

    Linux根文件系统/etc/resolv.conf文件,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析器(resolver,以恶 ...

  4. linux根文件系统制作之busybox编译和系统构建【转】

    转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...

  5. linux根文件系统制作

    在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...

  6. 基于 SquashFS 构建 Linux 可读写文件系统

    转载:http://www.oschina.net/question/129540_116839 在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备 ...

  7. Linux根文件系统的制作

    转载:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076655.html 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及 ...

  8. 使用BusyBox制作linux根文件系统(CramFS+mdev)

    转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...

  9. linux根文件系统的挂载过程详解

    一:前言 前段时间在编译kernel的时候发现rootfs挂载不上.相同的root选项设置旧版的image却可以.为了彻底解决这个问题.研究了一下rootfs的挂载过程.特总结如下,希望能给这部份知识 ...

随机推荐

  1. 问题1:Oracle数据库监听启动失败(重启监听,提示The listener supports no services)

    编辑监听文件:/home/DB/oracle/11gR2/db/network/admin/listener.ora 在文件内添加静态监听实例,如下内容: SID_LIST_LISTENER =(SI ...

  2. Python基础学习---位运算符

    <<   左移,每移动1位,相当于乘以2      例如:32<<2    等价于:32*4 ==128 >>   右移,每移动1位,相当于除以2      例如: ...

  3. Unity存储路径

    一.在项目根目录中创建Resources文件夹来保存文件 可以使用Resources.Load("文件名字,注:不包括文件后缀名");把文件夹中的对象加载出来注:此方可实现对文件实 ...

  4. 如何使用idea给系统平台添加子应用和应用的模块

    1.添加模块smartcity-portal,由于模块是在smartcity-framework工程下的,所以按照图片所示添加 2.smartcity-portal模块添加完成后,由于portal-d ...

  5. 在Netbeans的项目中添加JDBC驱动程序

    想要使用Java连接MySQL数据库,必须在环境中加入配置JDBC驱动程序 Netbeans中添加JDBC的过程是: 1.首先需要下载JDBC 在百度中搜索“mysqljdbc驱动下载”,找到官网 或 ...

  6. 【算法导论】【排序】—— 计数排序(counting sort)

    计数排序的特点: 需要额外的数组以存储: 中间过程数据(记为数组 C),数组 C 的下标是待排序序列的元素值,下标对应的值为出现的次数: 排序后的序列(记为 B),计数排序仅获取原始待排序序列的值,对 ...

  7. openssl rsa java 大于117的长字符串加密

    package org.yood.rsa.util; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.p ...

  8. 【EMV L2】Cardholder Verification Rule(CVR) Format

    Cardholder Verification Rule(CVR)由两个字节组成: 高字节为Cardholder Verification Method (CVM) Codes,表示执行Cardhol ...

  9. Ubuntu19.04配置SS+pac非全局代理

    1.先安装shadowsocks-qt5 sudo apt install shadowsocks-qt5 2.因为ss是sock5代理,而shell不支持socks5代理,只支持http/https ...

  10. 修改hots指向

    C:\Windows\System32\drivers\etc hots文件 IP 服务器名称