busybox制作的rootfs,启动脚本修改定制
对于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,启动脚本修改定制相关推荐
- busybox rootfs 启动脚本分析(一)
imx6文件系统启动脚本分析.开机运行/sbin/init,读取/etc/inittab文件,进行初始化. 参考链接 http://blog.163.com/wghbeyond@126/blog/st ...
- 使用busybox制作根文件系统(rootfs)
我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像, ...
- <linux> busybox制作rootfs
busybox制作rootf Ⅰ.下载busybox Ⅱ.修改busybox支持中文字符 Ⅲ.选择配置 基于defconfig上选择一些基本配置 1. 选择动态库编译busybox 2. 选择vi支持 ...
- Busybox 制作文件系统并用 Qemu 启动编译的内核镜像
编译内核操作: https://blog.csdn.net/assiduous_me/article/details/120938556 安装Busybox操作: https://blog.csdn. ...
- linux不启动修改rcs文件,Linux启动脚本rcS
1. 写在前面 Linux系统作为一个高级系统,其调度机理.调度链路非常复杂,仅仅是初启动阶段就非常复杂.如果要深究Linux系统的启动服务,需要理解Linux系统原理.文件管理.脚本链接等.但,如果 ...
- springboot脚本启动bat_SpringBoot修改JVM参数(内置Tomcat命令行启动和IDEA工具配置修改)...
命令行启动:(java [-options] -jar jarfile [args...]) 在 "-jar" 之前加上相应参数即可 java -Xms512m -Xmx512m ...
- Linux拉取代码启动镜像,基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法...
基于Linux源代码及Busybox源代码制作精简可启动内核镜像技术实验方法总结 熊海泉 内核源代码 下载地址 这里下载的是linux-2.6.38.tar.bz源代码 下载地址 这里下载的是busy ...
- Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...
- MATLAB安装后的DOS框出现、脚本文件图标不显示、启动路径修改等问题解决
MATLAB安装后的DOS框出现.脚本文件图标不显示.启动路径修改等问题解决 MATLAB安装方法 DOS框一闪而过问题 DOS框一闪而过问题说明 DOS框一闪而过问题解决 脚本文件图标异常问题 MA ...
- linux busybox启动脚本顺序,详解Busybox及如何安装的过程
一.Busybox简介 BusyBox 是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.Bus ...
最新文章
- 用html写消费记录页面,支付流水记录.html
- I/O:OutputStream
- kafka架构、亿级数据如何优化GC
- how is bookmark function implemented in Opportunity
- 投资基金融资理财服务企业网站源码 织梦dedecms模板
- IOS资源丰富的听书软件<白鲨听书>
- db2 springboot 整合_Spring boot Mybatis 整合(完整版)
- 【剑指offer】31、栈的压入和弹出序列
- 电脑打印软件哪个好用?
- 机器学习---黑箱原理
- 图像算法之3D人脸识别技术原理概述
- 2021年全球与中国数字频率计行业市场规模及发展前景分析
- 蓝桥杯算法题--跑步锻炼(java实现)
- I/O模型(同步、非同步、阻塞、非阻塞)总结
- 武侯计算机实验小学小升初,2018年成都小学升初中划片最新版!(含2017年对比)...
- LTE学习笔记4之物理层信道与信号
- 道高一尺魔高一丈,记强大的boost regex
- 雅思做题技巧误区一,不敢选TRUE。误区二,见到only或must等绝对词就选FALSE。误区三,找不到就选NOT GIVEN。误区四,喜欢把TRUE/FALSE/NOT GIVEN理解为
- 2023北京影视技术设备展览会
- 职场神攻略:5分钟自我介绍法 快准狠!