根文件系统几个重要文件busybox、rcs、profile、inittab

原创:https://www.cnblogs.com/huilixieqi/p/6494268.html

inittab文件

  • inittab为linux初始化文件系统时init初始化程序用到的配置文件。
  • inittab的工作原理就是被/linuxrc(也就是busybox)执行时所调用起作用。
  • inittab在/etc目录下,所以属于一个运行时配置文件,是文本格式的(内容是由一系列的遵照一个格式组织的字符组成的),实际工作的时候busybox会(按照一定的格式)解析这个inittab文本文件,然后根据解析的内容来决定要怎么工作。

busybox究竟如何完成解析并且解析结果如何去工作(busybox中实现/etc/inittab的原理)并不是我们的目标,我们的重点是inittab的格式究竟怎样的?我们看到一个inittab后怎么去分析这个inittab对启动的影响。inittab的格式在busybox中定义的,网上可以搜索到详细的格式说明,具体去参考即可:
< id>:< runlevels>:< action>:< process>

根文件系统几个重要文件busybox、rcs、profile、inittab_第1张图片

  • #开始的行是注释
  • 冒号在里面是分隔符,分隔开各个部分。
  • inittab内容是以行为单位的,行与行之间没有关联,每行都是一个独立的配置项,每一个 配置项表示一个具体的含义。
  • 每一行的配置项都是由3个冒号分隔开的4个配置值共同确定的。这四个配置值就是id:runlevels:action:process 值得注意得是有些配置值可以空缺,空缺后冒号不能空缺,所以有时候会看到连续2个冒号。
  • 每一行的配置项中4个配置值中最重要的是action和process,action是一个条件/状态,process是一个可被执行的程序的pathname。合起来的意思就是:当满足action的条件时就会执行process这个程序。

根文件系统几个重要文件busybox、rcs、profile、inittab_第2张图片

注意:理解inittab的关键就是明白“当满足action的条件时就会执行process这个程序

rcs文件
/etc/init.d/rcS文件是linux的运行时配置文件中最重要的一个,其他的一些配置都是由这个文件引出来的。这个文件可以很复杂也可以很简单,里面可以有很多的配置项。
根文件系统几个重要文件busybox、rcs、profile、inittab_第3张图片
PATH=xxx

(1)首先从shell脚本的语法角度分析,这一行定义了一个变量PATH,值等于后面的字符串
(2)后面用export导出了这个PATH,那么PATH就变成了一个环境变量。
(3)PATH这个环境变量是linux系统内部定义的一个环境变量,含义是操作系统去执行程序时会默认到PATH指定的各个目录下去寻找。如果找不到就认定这个程序不存在,如果找到了就去执行它。将一个可执行程序的目录导出到PATH,可以让我们不带路径来执行这个程序。
(4)rcS中为什么要先导出PATH?就是因为我们希望一旦进入命令行下时,PATH环境变量中就有默认的/bin /sbin /usr/bin /usr/sbin 这几个常见的可执行程序的路径,这样我们进入命令行后就可以ls、cd等直接使用了。
(5)为什么我们的rcS文件还没添加,系统启动就有了PATH中的值?原因在于busybox自己用代码硬编码为我们导出了一些环境变量,其中就有PATH。

runlevel=
(1)runlevel也是一个shell变量,并且被导出为环境变量。
(2)runlevel这个环境变量到底有什么用?
(3)runlevel=S表示将系统设置为单用户模式

umask=
(1)umask是linux的一个命令,作用是设置linux系统的umask值。
(2)umask值决定当前用户在创建文件时的默认权限。
mount -a
(1)mount命令是用来挂载文件系统的
(2)mount -a是挂载所有的应该被挂载的文件系统,在busybox中mount -a时busybox会去查找一个文件/etc/fstab文件,这个文件按照一定的格式列出来所有应该被挂载的文件系统(包括了虚拟文件系统)

通过rcS 可 以调用 dhcp 程序配置网络。rcS 执行完了以后,init 就会在一个 console 上,按照 ini ttab的指示开一个 shell,或者是开 getty + login,这样用户就会看到提示输入用户名的 提示符。 /usr/etc/rc.local 这是被init.d/rcS 文件调用执行的特殊文件,与Linux 系统硬件平台相关, 如安装核心模块、进行网络配置、运行应用程序、启动图形界面等。 /usr/etc/profile rc.local 首先执行该文件配置应用程序需要的环境变量等。
http://www.cnblogs.com/king-77024128/articles/2275545.html

profile文件
根文件系统几个重要文件busybox、rcs、profile、inittab_第4张图片
(1)之前添加了/bin/hostname在/etc/sysconfig/HOSTNAME文件中定义了一个hostname(aff),实际效果是:命令行下hostname命令查到的host名字确实是aff。但是问题就是命令行的提示符是没有显示的。
(2)这个问题的解决就要靠profile文件。将提供的profile文件放入/etc/目录下即可。
(3)添加了之后的实验现象:命令行提示符前面显示:[@aff ]#
结论是:第一,profile文件起了作用,hostname显示出来了。第二,还有个问题,登录用户名没显示出来。原因就是我们直接进入了命令行而没有做登录。等我们添加了用户登录功能,并且成功登陆后这个问题就能解决。
(4)profile文件工作原理是:profile文件也是被busybox(init进程)自动调用的,所以是认名字的。

传统的嵌入式系统都是uboot+kernel+rootfs。其中最简单的rootfs就是ramfs+busybox+/dev + /etc> +/lib。至于etc目录中的inittab和init.d/rcS这两个都是busybox中init程序分析的内容。如果本身没有busybox,其实也无所谓这两个脚本。https://blog.csdn.net/feixiaoxing/article/details/80345233

你可能感兴趣的:(嵌入式Linux)