嵌入式系统开发——文件系统中inittab文件rcS文件fstab文件profile文件详解

Posted 代二毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式系统开发——文件系统中inittab文件rcS文件fstab文件profile文件详解相关的知识,希望对你有一定的参考价值。

1.几个文件之间的关系:

1.各个文件的路径:/etc/inittab、/etc/fstab、/etc/profile、/etc/init.d/rcS;
2.文件之间的关系:/etc/fstab、/etc/inittab、/etc/profile是被busybox(init进程)调用,/etc/init.d/rcS被inittab调用;

2. inittab文件:

2.1 文件介绍:

/etc/inittab文件是运行时配置文件,Linuxrc(嵌入式中就是busybox)会去按行为单位读取并解析/etc/inittab文件。(busybox是在parse_inittab()函数解析/etc/inittab的)。inittab文件的解读是按行为单位读取的,字段之间以冒号分隔,字段的内容可以省略,但是冒号不可以省略。

2.2文件内容

#first:run the system script file
#<id>:<runlevels>:<action>:<process>
::sysinit:/etc/init.d/rcS #在系统初始化时解析rcS文件
::askfirst:-/bin/sh
::ctrlaltdel:-/sbin/reboot
#umount all filesystem
::shutdown:/bin/umount -a -r
#restart init process
::restart:/sbin/init

2.3文件内容解析

1.id:
id是指入口标识符,它是一个字符串,对于getty或mingetty等其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作;
2.runlevels:
runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s(S等同于运行级别1),当系统的运行级别达到runlevels时才会进行后面的action判断和执行process。在嵌入式开发中,busybox只支持单用户模式,一般这个值可以不写。Runlevel=0 是让init关闭所有进程并终止系统。 Runlevel=1 是用来将系统转到单用户模式,单用户模式只能有系统管理员进入,在该模式下处理那些在有登录用户的情况下不能进行更改的文件,改runlevel的编号1也可以用S代替。 Runlevel=2 是允许系统进入多用户的模式,但并不支持文件共享,这种模式很少应用。 Runlevel=3 是最常用的运行模式,主要用来提供真正的多用户模式,也是多数服务器的缺省模式。 Runlevel=4 一般不被系统使用,用户可以设计自己的系统状态并将其应用到runlevel 4阶段,尽管很少使用,但使用该系统可以实现一些特定的登录请求。 Runlevel=5 是将系统初始化为专用的X Window终端。对功能强大的Linux系统来说,这并不是好的选择,但用户如果需要这样,也可以通过在runlevel启动来实现该方案。
Runlevel=6 是关闭所有运行的进程并重新启动系统
3.action:
可以理解成运行process程序的条件;其中常见的运行条件:
(1)sysinit:系统引导期间执行此进程;
(2)respawn:如果相应的进程还不存在,那么init就启动该进程,有点像守护进程;
(3)wait:必须等待process进程执行结束才能往下执行;
(4)once:只启用一次process,后续process结束也不会再去启用process进程;(注意和respawn对比);
(5)askfirst:执行process前要先询问;
(6)restart:重启;
(7)shutdown:关机;
(8)ctrlaltdel:同时按ctr+lat+del则关机;
4.process:
要执行的程序;

3.rcS文件

3.1文件介绍

/etc/init.d/rcS文件是linux的运行时配置文件中最重要的一个,其他的一些配置都是由这个文件引出来的。这个文件可以很复杂也可以很简单,里面可以有很多的配置项。

3.2 文件内容

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

runlevel=S
prevlevel=N

umask 022

export PATH runlevel prevlevel

mount -a

echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

/bin/hostname -F /etc/sysconfig/HOSTNAME

ifconfig eth0 192.168.1.10

3.3 文件内容解析:

(1)runlevel也是一个shell变量,并且被导出为环境变量,runlevel=S表示将系统设置为单用户模式。
(2)umask 是创建文件时候的默认权限;
(3)mdev是udev的嵌入式简化版本,udev/mdev是用来配合linux驱动工作的一个应用层的软件,udev/mdev的工作就是配合linux驱动生成相应的/dev目录下的设备文件。
(4)mount -a:会解析/etc/fstab文件并挂载分区;
(5)/bin/hostname -F :指定主机名保存在/etc/sysconfig/HOSTNAME文件中;
(6)ifconfig :设置eth0的ip为192.168.1.10;

4. fstab文件

4.1文件介绍

系统在启动过程中,busybox会去读取并解析fstab文件,其作用就是实现开机自动挂载文件系统;执行mount -a,busybox就会去读取并解析/etc/fstab文件。

4.2 文件内容

<fie sysytem>			<mount point>		<type>		<options>			<dump>	<pass>
rootfs               	/                    auto       defaults              1 	1
proc                 	/proc                proc       defaults              0 	0
devpts               	/dev/pts             devpts     mode=0620,gid=5       0 	0
usbdevfs             	/proc/bus/usb        usbdevfs   noauto                0 	0
tmpfs                	/dev/shm             tmpfs      defaults              0 	0
/dev/sda1			 	/mnt/				 ext4	     defaults              0    0
/192.168.1.56:/home/	/home				 ext4	     defaults              0    0
UUID=622a9aef-5d6b-4905-b388-101daa322751	/mnt/				  ext4	     defaults              0    0

4.3文件内容解析:

(1)fie sysytem:要挂载的文件系统
用来指定要挂载的文件系统的设备名称或者远程文件系统;上面写的rootfs、proc等都是虚拟文件系统,在fstab里挂载的文件系统一般都是通用的、必须挂载的。
要挂载的文件系统可以是分区,比如/dev/sda1,也可以通过UUID指定,UUID是存储设备的全局唯一标识符;还可以是远程的文件系统,嵌入式常见的调试手段
就包括远程挂载文件系统进行调试,比如:mount 192.168.1.56:/home/ /home -o nolock。将主机或者服务器的/home挂载到设备的/home目录。
(2)mount point:挂载点
就是把fie sysytem挂载到这个目录,然后就可以通过这个目录去访问挂载的文件系统。这个目录必须是已经存在的,可以自己找一个也可以自己创建。对于swap分区,这个域应该填写:none,表示没有挂载点。
(3)type:指定文件系统的类型
比如:ext4、ext3、ext2、vfat等,挂载的文件系统是什么类型就填什么;
(4)options:属性设置,设置读写权限、是否写缓冲等
不熟悉,一般都是填defaults。
(5)dump:是否备份
1:整个file system里的内容备份;
0:不备份;
(6)pass:是否使用fsck来检查硬盘
0:不检查
1:用fsckk来检查硬盘;
补充:挂载点为/(根分区)则必须填1,其他的不能填1。

5. profile文件

5.1文件介绍

profile中的设置对所有用户都是有效的,并且修改了profile文件要重启才能生效,因为profile只有启动的时候才会去解析。

5.2 文件内容

# Ash profile
# vim: syntax=sh

# 不产生core文件,并且标准输出和错误输出都不在屏幕上显示
ulimit -S -c 0 > /dev/null 2>&1

#这是在终端显示用户名格式的设置
USER="`id -un`"
LOGNAME=$USER
PS1='[\\u@\\h \\W]\\# '

PATH=$PATH

#指定保存主机名的文件
HOSTNAME=`/bin/hostname`

#导出环境变量
export USER LOGNAME PS1 PATH

以上是关于嵌入式系统开发——文件系统中inittab文件rcS文件fstab文件profile文件详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统启动过程总结

Linux系统启动过程总结

转:嵌入式linux启动时运行的inittab文件

[svc]linux启动过程及级别

linux-/etc/inittab,rc.sysinit,rc服务类脚本,chkconfig

如何定制小型的linux系统,具体的步骤,谢谢了