对于busybox做的rootfs,
linuxrc 是一个link,指向busybox
/sbin/init是一个link,指向busybox。
追根溯源,流程大致如下: init程序(linuxrc) -> busybox -> /etc/inittab -> /etc/init.d/rcS
直接在/etc/init.d/rcS脚本文件末尾添加需要的脚本代码。
我们可以修改/etc/init.d/rcS脚本,来添加我们所需要执行的命令。
在挂载完所有分区后,我们可以在/etc/init.d/rcS文件中添加我们自己的命令。
如:/sbin/ifconfig eth0 192.168.0.1
/sbin/ifconfig lo 127.0.0.1

对于启动初始化而言,/etc是最重要的目录。
/linuxrc文件中我们看到它最后运行了/sbin/init,而init又会根据/etc/inittab来运行。/etc/inittab是初始化列表,根据列表的内容,创建需要的进程。
(1)文件/etc/inittab
是init进程需要解析的文件,它的每个条目都是一个脚本或可执行程序
这是zed上的inittab的内容。
::sysinit:/etc/init.d/rcS
它运行了/etc/init.d/rcS脚本。

(2)文件/etc/fstab和 /etc/mtab
在文件/etc/init.d/rcS中执行mount –a时,就会按照文件/etc/fstab内容挂载相应的文件系统.
文件/etc/fstab就是使用mount将设备载入到系统的某个载入点所需执行的命令内容,将这些内容都写到/etc/fstab里,使得系统一启动就主动载入.
/etc/mtab同/etc/fstab的格式一样,它用于记录已经挂载的分区信息。

(3)文件/etc/passwd
当用户以telnet或ssh登录主机时,系统会出现一login画面来输入账号,此时输入账号和密码后,Linux会执行以下动作:
<1>先找/etc/passwd内是否有该账号,如果有,则将该账号与对应的UID(user ID)和GID(Group ID)读出,并将该账号的家目录与shell设置也一起读出.
<2>核对密码表,此时Linux会进入/etc/shadow中查找对应的账号与UID,然后核对已输入的密码与里面的密码是否一致.
<3>若一切相符,就进入shell控制阶段.

例如:
root❌0:0:root:/root:/bin/sh
该文件的构造如上所示,每一行都表示一个账号,有几行就表示系统中有几个账号.注意,里面的很多账号都是系统必须使用的,称作系统账号.在每个Linux系统中都会有第一行,就是root系统管理员行,每行有7个部分,用":"隔开.
1、账号名称:root表示默认的系统管理员的账号名称.
2、密码:x表示密码已经移动到shadow这个加密后的文件中了.
3、UID:当UID=0时,表示root
4、GID:与/etc/group有关,用于规范用户组.
5、用户信息说明栏:用于解释该账号的意义.
6、家目录:用户的家目录.root用户的家目录就是/root.
7、Shell:默认使用/bin/bash来执行命令.

(4)/etc/shadow
root:111HNeU8jpc$RyzTN856sZiO.LCN2BZuZ0:14880:0:99999:7:::
该文件属于加密文件,每个账号的密码均在该文件中,这里不再赘述.

(5)/etc/profile
主要用来定义全局环境变量。
例如:
export PS1=“zynq-huskar>”
export LD_LIBRARY_PATH=/lib:/usr/lib

(6)文件/etc/init.d/rcS
该文件的功能主要有两个,
一是新建kernel所需的目录,这些目录都是kernel运行过程中所必须的.
二是将不同的文件系统挂载到根文件系统下的某个目录内;

为了方便查看提示信息,脚本中在合适的位置,随手放置echo 命令,用来打印提示信息。
例如:
echo “Starting rcS…”
echo “++ Mounting filesystem”
echo “++ Setting up mdev”
echo “++ Configure static IP 192.168.1.10”

下面来分析rcS的常规写法。

I)首先是各种mount命令。
mount -a
从配置列表中依次挂载

mount -t proc none /proc(或者mount -n -t proc none /proc)
mount -t sysfs none /sys(或者mount -n -t sysfs none /sys)
挂载"虚拟"文件系统"/proc"和"/sys"

mount -t ramfs none /dev
在/dev目录下挂载一个ramfs

mount -t tmpfs none /tmp
mount -n -t usbfs none /proc/bus/usb
mount -t devpts devpts /dev/pts
注意:
-t指明文件系统的类型,
-n只是单纯的mount,而不会去写/etc/mtab文件。否则,如果/etc在一个只读的文件系统上,写的话将引发错误。

echo /sbin/mdev >/proc/sys/kernel/hotplug
调用mdev管理程序动态的创建插拔设备。kernel在每次设备出现变动时调用上面一句传递进去的用户空间应用程序/sbin/mdev来处理对应的信息,进而mdev操作/dev目录下的设备,进行添加或删除。
mdev -s
有了这一句,内核就可以在/dev目录下自动创建设备节点。
/bin/hotplug
设置内核的hotplug handler为mdev,由mdev接受来自内核的消息并作出相应的回应,比如挂载U盘等。

II)然后是各种mkdir 命令。
mkdir -p /dev/pts
mkdir -p /dev/i2c

III)然后是各种inmod命令。
load_oled
insmod /lib/modules/`uname -r`/pmodoled-gpio.ko;

IV)然后是各种start service命令。
telnetd -l /bin/sh
httpd -h /var/www
tcpsvd 0:21 ftpd ftpd -w /&
dropbear

ifconfig eth0 down
ifconfig eth0 192.168.1.10 up

V)然后是各种exec命令。

for i in 0 1 2 3 4 5 6 7;
do
sw=$(($i+69));
led=$(($i+61));
echo $sw > /sys/class/gpio/export;
echo $led > /sys/class/gpio/export;
echo out > /sys/class/gpio/gpio$led/direction;
done;

VI)然后是各种export命令。
export PATH=$PATH:/usr/local/bin

busybox制作的rootfs,启动脚本修改定制相关推荐

  1. busybox rootfs 启动脚本分析(一)

    imx6文件系统启动脚本分析.开机运行/sbin/init,读取/etc/inittab文件,进行初始化. 参考链接 http://blog.163.com/wghbeyond@126/blog/st ...

  2. 使用busybox制作根文件系统(rootfs)

    我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像, ...

  3. <linux> busybox制作rootfs

    busybox制作rootf Ⅰ.下载busybox Ⅱ.修改busybox支持中文字符 Ⅲ.选择配置 基于defconfig上选择一些基本配置 1. 选择动态库编译busybox 2. 选择vi支持 ...

  4. Busybox 制作文件系统并用 Qemu 启动编译的内核镜像

    编译内核操作: https://blog.csdn.net/assiduous_me/article/details/120938556 安装Busybox操作: https://blog.csdn. ...

  5. linux不启动修改rcs文件,Linux启动脚本rcS

    1. 写在前面 Linux系统作为一个高级系统,其调度机理.调度链路非常复杂,仅仅是初启动阶段就非常复杂.如果要深究Linux系统的启动服务,需要理解Linux系统原理.文件管理.脚本链接等.但,如果 ...

  6. springboot脚本启动bat_SpringBoot修改JVM参数(内置Tomcat命令行启动和IDEA工具配置修改)...

    命令行启动:(java [-options] -jar jarfile [args...]) 在 "-jar" 之前加上相应参数即可 java -Xms512m -Xmx512m ...

  7. Linux拉取代码启动镜像,基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法...

    基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法总结 熊海泉 内核源代码 下载地址 这里下载的是linux-2.6.38.tar.bz源代码 下载地址 这里下载的是busy ...

  8. Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...

    Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...

  9. MATLAB安装后的DOS框出现、脚本文件图标不显示、启动路径修改等问题解决

    MATLAB安装后的DOS框出现.脚本文件图标不显示.启动路径修改等问题解决 MATLAB安装方法 DOS框一闪而过问题 DOS框一闪而过问题说明 DOS框一闪而过问题解决 脚本文件图标异常问题 MA ...

  10. linux busybox启动脚本顺序,详解Busybox及如何安装的过程

    一.Busybox简介 BusyBox 是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.Bus ...

最新文章

  1. 用html写消费记录页面,支付流水记录.html
  2. I/O:OutputStream
  3. kafka架构、亿级数据如何优化GC
  4. how is bookmark function implemented in Opportunity
  5. 投资基金融资理财服务企业网站源码 织梦dedecms模板
  6. IOS资源丰富的听书软件<白鲨听书>
  7. db2 springboot 整合_Spring boot Mybatis 整合(完整版)
  8. 【剑指offer】31、栈的压入和弹出序列
  9. 电脑打印软件哪个好用?
  10. 机器学习---黑箱原理
  11. 图像算法之3D人脸识别技术原理概述
  12. 2021年全球与中国数字频率计行业市场规模及发展前景分析
  13. 蓝桥杯算法题--跑步锻炼(java实现)
  14. I/O模型(同步、非同步、阻塞、非阻塞)总结
  15. 武侯计算机实验小学小升初,2018年成都小学升初中划片最新版!(含2017年对比)...
  16. LTE学习笔记4之物理层信道与信号
  17. 道高一尺魔高一丈,记强大的boost regex
  18. 雅思做题技巧误区一,不敢选TRUE。误区二,见到only或must等绝对词就选FALSE。误区三,找不到就选NOT GIVEN。误区四,喜欢把TRUE/FALSE/NOT GIVEN理解为
  19. 2023北京影视技术设备展览会
  20. 职场神攻略:5分钟自我介绍法 快准狠!

热门文章

  1. HTTP协议 (五) ---代理
  2. 树莓派--【vim配置】
  3. 渔乡朱朱的三农短视频账号运作和变现方法
  4. 机动目标跟踪—当前统计模型(CS模型)扩展卡尔曼滤波/无迹卡尔曼滤波 matlab实现
  5. 4200万元新年大单!广西公安厅2个大数据智能化建设项目公开招标
  6. java星星闪烁代码_jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
  7. 我的疫情时代——记在家的那个学期
  8. python unpack_python struct中pack和unpack
  9. 纳什均衡定义、举例、分类
  10. 教你微信怎么投票快之微信投票快速投票方法