rcS文件的分析

记录一下 rcS 文件的分析。

前言

Linux操作系统下的 /etc/init.d/rcS 文件在 inittab 文件中本解析调用,用于配置Linux系统。

但是,在新的 Ubuntu 操作系统中是已经找不到这个文件了,因为是 Ubuntu 使用 systemd 取代了 init 作为系统初始化程序。

systemd 是一个系统和服务管理器,它使用单元文件(通常位于 /lib/systemd/system//etc/systemd/system/ 目录中)来配置和管理系统服务。

systemd 中,启动过程和服务管理是通过目标(targets)来控制的,这些目标可以看作是运行水平(runlevels)的替代品。例如,default.target 通常是图形界面或多用户环境的启动目标,而 rescue.targetemergency.target 分别对应于救援模式和紧急模式。

分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

#! /bin/sh #指定系统使用的shell

#初始化环境变量PATH,操作系统执行程序默认到PATH指定的目录下寻找该程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:

runlevel=S #设置系统运行级别为S,即单用户模式,只有一个控制台终端,供“root”帐号做系统维护。
prevlevel=N

umask 022 #指定当前用户在创建文件时的默认权限
export PATH runlevel prevlevel #导出环境变量

trap ":" INT QUIT TSTP #捕捉INT、QUIT、TSTP信号
/bin/hostname bname #设置机器名字为bname

#挂载文件系统,-t指明文件系统的类型,-n只是单纯的mount,而不会去写/etc/mtab文件。
#否则,如果/etc在一个只读文件系统上写的话将引发错误。
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t usbfs none /proc/bus/usb
/bin/mount -t ramfs none /dev

#调用mdev管理程序动态的创建插拔设备。kernel在每次设备出现变动时调用/sbin/mdev来处理对应的信息,
#进而mdev操作/dev目录下的设备,进行添加或删除。
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s #开启mdev,之后可调用mdev创建设备文件
/bin/hotplug #设置内核的hotplug handler为mdev,由mdev接受来自内核的消息并作出相应的回应,比如挂载U盘等。

# 挂载/etc/fstab文件中指定的文件系统
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none /dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount -n -t ramfs none /tmp
/bin/mount -n -t ramfs none /var

mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp

/sbin/hwclock -s -f /dev/rtc #从硬件RTC取得时间
syslogd #记录系统或应用程序产生的各种信息,并把信息写到日志中

/etc/rc.d/init.d/netd start
echo " " > /dev/tty1
echo "Starting networking..." > /dev/tty1
mkdir /mnt/disk
mount -t yaffs2 /dev/mtdblock3 /mnt/disk #挂载存储设备
echo V >/dev/watchdog #关闭看门狗
/sbin/ifconfig lo 127.0.0.1 #设置IP地址
insmod /lib/modules/s3c2416_gpio.ko #加载驱动程序
/bin/sleep 2 dmesg -n 1 #显示开机信息
exec /usr/etc/rc.local #转去执行rc.local文件中内容

**上面的文件中 > 表示 >

参考资料


rcS文件的分析
https://ysc2.github.io/ysc2.github.io/2024/05/28/rcS文件的分析/
作者
Ysc
发布于
2024年5月28日
许可协议