文件分析——分析/etc/init.d/rcS文件(运行时最重要的配置文件)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

一、文件简介

由博文分析/etc/inittab文件可知,etc/inittab文件的第一行配置项是“::sysinit:/etc/init.d/rcS”,这表示系统初始化阶段(进入命令行前),会调用/etc/init.d/rcS文件。该文件是linux运行时最重要的配置文件,其他的一些配置都是由这个文件引出来的。

二、文件内容

rcS文件可以很复杂也可以很简单,但嵌入式一般不用像ubuntu那么复杂。

一个简单的rcS文件内容如下:

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S
prevlevel=N

umask 022

export PATH runlevel prevlevel

mount -a
#下面这两行代码与生成/dev/目录下的设备文件有关
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

#-F选项表示指定/etc/sysconfig/HOSTNAME这个文件为主机名配置文件
#/bin/hostname -F /etc/sysconfig/HOSTNAME
 
# hostname xxx ,表示设置当前系统的主机名为xxx
/bin/hostname ZHUJI

ifconfig eth0 192.168.1.10

2.1 PATH=xxx

(1)从shell脚本的语法角度分析,该行定义了一个shell变量PATH,值等于后面的字符串。

(2)用export导出这个PATH变量,那么PATH变量就变成一个环境变量。PATH这个环境变量是linux系统内部定义的一个环境变量。操作系统执行程序时会默认到PATH指定的各个目录去寻找,如果找不到就认定这个程序不存在,如果找到了就去执行它。另外,将一个可执行程序的目录导出到PATH,可以不带路径地执行这个程序。

(3)rcS文件中为什么要导出PATH?因为我们希望进入命令行后,PATH环境变量中就有默认的/bin、/sbin、/usr/bin、/usr /sbin这几个常见的可执行程序的路径,从而可以直接使用ls、cd等命令。

(4)为什么还没添加rcS文件,系统启动就有PATH的值?因为busybox用代码硬编码导出了一些环境变量,其中就有PATH。

2.2 runlevel=

(1)runlevel也是一个shell变量,并且被导出为环境变量。

(2)runlevel这个环境变量的作用,类似于window中的启动模式识别,如安全模式、普通模式。

(3)runlevel=S表示将系统设置为单用户模式。

(4)busybox不支持runlevel这个特性。

2.3 umask=

(1)umask是linux的一个命令,作用是设置linux系统的umask值。

(2)umask值决定当前用户在创建文件时的默认权限。

(3)umask值和默认创建文件的权限值加起来是666。

比如umask是022的时候,默认touch创建一个文件的权限是644。

比如umask是044的时候,默认touch创建一个文件的权限是622。

比如umask是444的时候,默认touch创建一个文件的权限是222。

2.4 mount -a

(1)mount命令是用来挂载文件系统的,“mount -a”表示挂载所有应该被挂载的文件系统。

(2)在busybox中“mount -a”时,busybox会去查找一个文件/etc/fstab文件。该文件按照一定的格式列出来所有应该被挂载的文件系统(包括虚拟文件系统)。如果作为挂载点的目录不存在,应该手动创建,否则会提示挂载失败。

(3)一个简单的/etc/fstab文件内容如下:

2.5 mdev

(1)如果在rcS文件中没有mdev这个配置项,则启动后/dev目录是空的。在rcS文件中添加与mdev有关的2行配置项时,启动系统后/dev目录下有很多的设备驱动文件。

(2)mdev是udev的嵌入式简化版本,udev/mdev是一个应用层的软件,主要作用是配合linux驱动生成相应的/dev目录下的设备文件。

2.6 hostname

(1)hostname是linux中的一个shell命令。

(2)“hostname xxx”执行后可以用来设置当前系统的主机名为xxx,直接hostname不加参数可以显示当前系统的主机名。

(3)“/bin/hostname -F /etc/sysconfig/HOSTNAME”,表示指定/etc/sysconfig/HOSTNAME这个文件为主机名配置文件。因此在制作根文件系统时,要先创建这个配置文件,然后在里面输入主机名。

2.7 ifconfig

如果希望进入命令行后,ip地址就是一个指定的ip地址(比如192.168.1.30),需要在rcS文件中添加“ifconfig eth0 192.168.1.30”。如果没有添加,则完全启动后会没有ip地址,但可以在完全启动后用“ifconfig eth0 xxxxxxxxx”来设置。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天糊土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值