linux自定义初始化脚本

时间:2022-06-07 20:35:11

添加初始化脚本之前,先要弄清两个问题?

什么是INIT?

init是Linux系统操作中不可缺少的程序之一。

所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,

就通过启动一个用户级程序init的方式,完成引导进程。

所以,init始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init
如果内核找不到init,它就会试着运行 /bin/sh,
如果运行失败,系统的启动也会失败。

 

到底什么是运行级呢?

简单的说,运行级就是操作系统当前正在运行的功能级别。

这个级别从1到6 ,具有不同的功能。
不同的运行级定义如下:

# 0 - 停机(千万不能把initdefault 设置为0 )
# 1 - 单用户模式       # s   init s = init 1
# 2 - 多用户,没有
NFS
# 3 - 完全多用户模式(标准的运行级
)
# 4 - 没有用到

# 5 - X11 多用户图形模式(xwindow)
# 6 - 重新启动 (千万不要把initdefault 设置为6 )

 

相关启动文件:

/etc/inittab 确定系统运行级别 如:5

/etc/rc5.d

 

具体实现步骤如下:

1、linux启动初始化脚本的制作

step1: 先把 my.sh放到 /etc/init.d目录下

step2: 查看当前系统的启动级别

$ sudo runlevel 
N 5

step3: 设定启动级别 
$ update-rc.d my.sh start 98 5 . 
    98 为启动序号,
    5是系统的运行级别,可自己调整,
    注意不要忘了结尾的句点。
step4: 然后启动系统,测试一下设置是否有效。

 

2、移除符号链接
当你需要移除这个符号连接时,方法有三种:

1)直接到 /etc/rc5.d 下删掉相应的链接,当然不是最好的方法

2)$ update-rc.d -f s10 remove //推荐做法,但是经验证该命令无效

3)如果 update-rc.d 命令你不熟悉,还可以试试看 rcconf 这个命令,也很方便。

 

3、脚本参数

注意脚本编程语法:

定义变量

ROOT_HOME="/opt/dvsdk/sensor"

变量调用

$ROOT_HOME

逻辑判断

if [ $E2V = "ON" ]; then

    …..

fi

 

成功启动

Starting syslogd/klogd: done

Starting thttpd.

gpio initialized

SPI     initialized

vpif    initialized

 

 _____                    _____           _         _

|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_

|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|

|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|

              |___|                    |___|

 

Arago Project http://arago-project.org dm6467t-evm ttyS0

 

Arago 2009.11 dm6467t-evm ttyS0