以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
一、文件简介
(1)由博文分析根文件系统中的/etc/inittab文件可知,etc/inittab文件的第一行配置项一般是“::sysinit:/etc/init.d/rcS”,这说明控制台(或者说命令行)启动前会调用etc/init.d/rcS文件。
(2)rcS文件是linux运行时最重要的配置文件,其他的一些配置都是由这个文件引出来的。
(3)rcS文件可以很复杂也可以很简单,但嵌入式一般不用像ubuntu那么复杂。
二、文件内容
一个简单的rcS文件内容如下
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S prevlevel=Numask 022export PATH runlevel prevlevelmount -a #下面这两行代码与生成/dev/目录下的设备文件有关 echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s/bin/hostname -F /etc/sysconfig/HOSTNAMEifconfig eth0 192.168.1.10
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、runlevel=
(1)runlevel也是一个shell变量,并且被导出为环境变量。
(2)runlevel这个环境变量的作用,类似于window中的启动模式识别,如安全模式、普通模式。
(3)runlevel=S表示将系统设置为单用户模式。
(4)busybox不支持runlevel这个特性。
3、umask=
(1)umask是linux的一个命令,作用是设置linux系统的umask值。
(2)umask值决定当前用户在创建文件时的默认权限。
(3)umask值和默认创建文件的权限值加起来是666。
umask是022的时候,默认touch创建一个文件的权限是644。
umask是044的时候,默认touch创建一个文件的权限是622。
umask是444的时候,默认touch创建一个文件的权限是222。
4、mount -a
(1)mount命令是用来挂载文件系统的,“mount -a”表示挂载所有应该被挂载的文件系统。
(2)在busybox中“mount -a”时,busybox会去查找一个文件/etc/fstab文件。该文件按照一定的格式列出来所有应该被挂载的文件系统(包括虚拟文件系统)。如果作为挂载点的目录不存在,应该手动创建,否则会提示挂载失败。
(3)一个简单的/etc/fstab文件内容如下。
5、mdev
(1)在rcS文件中没有mdev配置项时,启动后/dev目录是空的。在rcS文件中添加与mdev有关的2行配置项时,启动系统后/dev目录下有很多的设备驱动文件。
(2)mdev是udev的嵌入式简化版本,udev/mdev是一个应用层的软件,主要作用是配合linux驱动生成相应的/dev目录下的设备文件。
6、hostname
(1)hostname是linux中的一个shell命令。
(2)“hostname xxx”执行后可以用来设置当前系统的主机名为xxx,直接hostname不加参数可以显示当前系统的主机名。
(3)“/bin/hostname -F /etc/sysconfig/HOSTNAME”,表示指定/etc/sysconfig/HOSTNAME这个文件为主机名配置文件。因此在制作根文件系统时,要先创建这个配置文件,然后在里面输入主机名。
7、ifconfig
如果希望进入命令行后,ip地址就是一个指定的ip地址(比如192.168.1.30),需要在rcS文件中添加“ifconfig eth0 192.168.1.30”。如果没有添加,则完全启动后会没有ip地址,但可以在完全启动后用“ifconfig eth0 xxxxxxxxx”来设置。