简介
先确定版本
[root@imx6ull:~]# cat /proc/versionLinux version 4.9.88 (zhou@zhou) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #3 SMP PREEMPT Mon Mar 2 06:31:06 UTC 2020
Linux上电将会调用 /etc/init.d/rcS 脚本,此脚本一般来说会调用一些脚本做一些初始化。
[root@imx6ull:/etc/init.d]# cat rcS#!/bin/sh# Start all init scripts in /etc/init.d# executing them in numerical order.#for i in /etc/init.d/S??* ;do# Ignore dangling symlinks (if any).[ ! -f "$i" ] && continuecase "$i" in*.sh)# Source shell script for speed.(trap - INT QUIT TSTPset start. $i);;*)# No sh extension, so fork subprocess.$i start;;esacdone[root@imx6ull:/etc/init.d]# lsS01syslogd S09modload S30dbus S46ofono S50lighttpd S53neard rcKS02klogd S10udev S40network S48sntp S50sshd S91smb rcSS07hmi S20urandom S45connman S49ntp S50telnet autofs
实现
既然是自动调用脚本。那么就自己新建一个这个文件来实现,
# InitializeTheScript.sh# 被调用脚本enable() {# do somethingstatus=$?if [ "$status" -eq 0 ]; thenecho "enable OK"elseecho "enable FAIL"fireturn $status}case "$1" inrestart | start | init | enable | disable)"$1";;*)echo "Usage: $0 {start|init|enable|disable}"exit 1;;esac
- 修改 rcS文件
echo "$EOF/bin/bash InitializeTheScript.sh$EOF" >> /etc/init.d/rcS
TIPS
需要注意的是,这个本地脚本的调用方式需要根据板子上文件系统的 rcS 文件来设置的。因此需要首先读懂 rcS文件。明白其调用形式
参考资料
linux系统初始化——sysinit文件写法详解
Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
