Linux文件系统——/etc配置文件

  之前ramdisk制作传送门Linux文件系统——ramdisk根文件系统制作
  今天来讲一下/etc目录下文件系统配置文件

/etc/inittab

  inittab是init进程初始化时需要读取的配置文件。
/etc/inittab文件中每个登记项的结构都是一样的,共分为以冒号“:”分隔的4个字段.具体如下:
identifier : run_level : action : process

identifier登记项标识符,最多为4个字符.用于惟一地标识/etc/inittab文件中的每一个登记项

run_level系统运行级,即执行登记项的init级别.用于指定相应的登记项适用于哪一个运行级,即在哪一个运行级中被处理.如果该字段为空,那么相应的登记项将适用于所有的运行级.在该字段中,可以同时指定一个或多个运行级,其中各运行级分别以数字0.1.2.3.4.5.6或字母a、b、c表示,且无需对其进行分隔.

action动作关键字.用于指定init(M)命令或进程对相应进程(在“process”字段定义)所实施的动作.
sysinit:只有在启动或重新启动系统并首先进入单用户时,init才执行这些登记项.而在系统从运行级1-6进入单用户方式时,init并不执行这些登记项."action”字段为“sysinit”的登记项在“run_level”字段不指定任何运行级.

process所要执行的shell命令.任何合法的shell语法均适用于该字段.

示例demo:

# 系统启动时
::sysinit:/etc/init.d/rcS							(1)

# 系统启动按下Enter键时
::askfirst:-/bin/login								(2)
//::askfirst:-/bin/sh	#设置成login需要登录,设置成sh可以直接进入命令行

# 按下Ctrl+Alt+Del键时
::ctrlaltdel:/sbin/reboot

# 系统关机时
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

# 系统重启时
::restart:/sbin/init

以上内容定义了系统启动时,关机时,重启时,按下Ctrl+Alt+Del键时执行的进程
(1)系统启动时会调用init.d/rcS脚本进行初始化
(2)这里我设置的是login,即需要用户登录才能进入命令行,设置成sh则直接进入命令行

/etc/init.d/rcS

  rcS是inittab中配置的系统启动时会执行的脚本。
示例demo:

#!/bin/sh

# 挂载 /etc/fstab 中定义的所有文件系统
/bin/mount -a

# 挂载虚拟的devpts文件系统用于用于伪终端设备
/bin/mkdir -p /dev/pts
/bin/mount -t devpts devpts /dev/pts

# 使用mdev动态管理u盘和鼠标等热插拔设备
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug

# 扫描并创建节点
/sbin/mdev -s

# 根据HOSTNAME文件中的名字创建主机名
/bin/hostname -F /etc/sysconfig/HOSTNAME

  以上内容定义了系统初始化脚本中的内容,各个步骤注释中写的很明白了。也可以自行添加别的步骤,当成shell脚本写就可以了。

/etc/fstab

  fstab文件在执行/bin/mount -a时会挂载fstab中所有节点。
/etc/fstab文件中每个登记项的结构都是一样的
示例:

# <file system>		<mount point>	<type>	<options>	<dump>	<pass>     
proc				/proc			proc	defaults    0		0		(1)
sysfs				/sys			sysfs	defaults	0		0		(2)
ramfs				/home/ramfs		ramfs	defaults	0		0		(3)
tmpfs				/tmp			tmpfs	defaults	0		0		
/dev/mmcblk4p2		/boot			ext4	defaults	0		0		(4)
/dev/mmcblk4p3		/home/config	ext4	defaults	0		0

(1)挂载proc文件系统到/proc目录下
(2)挂载sysfs文件系统到/sys目录下
(3)挂载ramfs和tmpfs,这两个都是基于ram的文件系统类型,掉电不保存。区别是ramfs会一直增长直到内存用尽,tmpfs可在挂载时限定大小。ramfs不会用swap,tmpfs会使用swap。可根据实际需求挂载,或者不挂载。
(4)mmcblk节点是我flash mmc的设备节点,虽然用的是ramdisk,但是也是需要flash来存储固件等的。这里可根据实际flash内容挂载即可。

/etc/profile

  /etc/profile文件作用是设置环境变量,每个用户登录时都会运行它。
示例:

echo
echo -n "Processing /etc/profile... "

# 主机名
export HOSTNAME=linux

# 用户名
export USER=root

# 终端默认提示符,这里设置了颜色
export PS1="[\033[32m$USER\033[33m@$HOSTNAME:\033[0m\$PWD]\# "

# 环境变量
export PATH=/bin:/sbin:/usr/bin:/usr/sbin

# 动态库路径
export LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

# no-op
echo "Done"
echo

  以上内容定义了用户登录时的一些设置,设置主机名,用户名,设置命令行前缀,设置环境变量,动态库路径等。

/etc/passwd和/etc/shadow

  linux系统中用来描述用户名和密码的文件是passwd和shadow文件,这两个文件都在etc目录下。passwd文件中存储的是用户的密码设置,shadow文件中存储的是加密后的密码。如果不需要账户密码登录,则不需要设置这两个文件。
passwd文件示例:

root:x:0:0:root:/root:/bin/sh

  如果做的是ramdisk文件系统,则需要事先在打包资源中设置好密码,不然用户登录的时候设置密码也会提示错误,因为没法把用户设置的密码保存到flash中。而因为shadow文件是加密的,也不能在配置资源时直接明文设置密码。
  这里我推荐的做法是,如在linux虚拟机上设置好root密码,拷贝虚拟机中的/etc/shadow文件到ramdisk资源中,然后打包成ramdisk。这样ramdisk根文件系统起来,需要登录时的密码就和虚拟机设置的密码一样了。

实际整合效果

登录界面:
登录界面
登录后打印:
在这里插入图片描述
查看挂载点:
在这里插入图片描述

发布了9 篇原创文章 · 获赞 0 · 访问量 389

猜你喜欢

转载自blog.csdn.net/weixin_42262944/article/details/103500350