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

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

1. 几个文件之间的关系

在这里插入图片描述

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

2. inittab文件介绍

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

2.1 inittab文件内容

#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.2 inittab文件解析

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:同时按ctrl+alt+del则关机;
4.process:
要执行的程序;

3. rcS文件介绍

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

3.1 rcS文件内容

#!/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.2 rcS文件解析

(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文件介绍

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

4.1 文件内容

<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.2 文件内容解析

(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文件

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

5.1 文件内容

# 不产生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

id -un`" #获得当前登陆的用户名称
LOGNAME=$USER
PS1='[\u@\h \W]# ’

PATH=$PATH

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

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


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值