Linux驱动和应用程序的开机自启动

时间:2022-03-08 02:59:54

 相信大家都在shell命令行里通过敲指令加载过驱动和应用程序,但是如果每次开机都要重新敲一遍这些加载

指令的话那太麻烦了,肯定有方法使其可以开机自动启动的。既然shell可以解析命令行,那我们把这些命令行

放到一个文件里,开机启动的时候让shell去解析这个文件,然后去执行不就行了。

   你一定有印象在uboot中的bootargs中一般会有init=/linuxrc,这个参数传递给内核后,内核启动后第一个要

执行的文件就是根目录下的linuxrc。linuxrc是一个指向busybox的链接,也就是实际执行的是busybox,

busybox会做什么呢?busybox会去解析/etc/inittab来获取配置信息,然后去执行。

  inittablinux初始化文件系统时init初始化程序用到的配置文件这个文件负责设置init初始化程序初始化

脚本在哪里;每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登陆时所运行的命令。

基本格式:

id:runlevels:action:process

2440 inittab内容:

# /etc/inittab

::sysinit:/etc/init.d/rcS

s3c2410_serial0::askfirst:-/bin/sh

tty1::askfirst:-/bin/sh 

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount-a –r

 

::sysinit:/etc/init.d/rcS 表示系统初始化文件为rcS。如果你的文件中不是这样的,不要奇怪,不同的文件系统

对应的脚本名称是不同的,但思想是一样的。

  /etc/init.d/rcS 

  rcS就是一个脚本文件,我们把需要加载的驱动和应用程序的指令放进这个文件里即可,shell可以像解析

我们输入的命令行那样去解析这个脚本文件里的命令。

如加载驱动根目录下的驱动mydrive.ko

insmod  /mydrive.ko

在命令行这样输入,在脚本文件里也相同。

加载应用程序my_app,my_app路径如果在/bin  /usr/bin   /sbin  /usr/sbin  里的话可以直接执行

 my_app

如果在其它目录的话前面加上路径即可,如在根目录下

/my_app

rcS内容:

#!/bin/sh

ifconfig eth0192.168.1.17

mount -a

mkdir /dev/pts

mount -t devptsdevpts /dev/pts

echo /sbin/mdev> /proc/sys/kernel/hotplug

mdev -s

blankset 0

/display_time


blankset是我放在/usr/bin目录下的程序,0是参数,通过echo $PATH 可以知道哪些目录下的程序可以直接执行,

不需要加路径。

默认的是/bin  /usr/bin   /sbin  /usr/sbin  。

display_time是我放在根目录下的应用程序。


  如果觉得驱动程序和应用程序都加在rcS中有点乱,我们可以在/etc/inittab中加上一个类似rcS的脚本文件,

然后把这一类程序都放在这个脚本文件中。

仿照    ::sysinit:/etc/init.d/rcS

加入我们把所有的驱动程序都放在一个根目录下的install脚本文件中,那么在/etc/inittab里加上一句:

::wait:/install

wait表示执行install脚本文件,并等待它执行完成

所有驱动类的加载就可以放在install脚本文件里,如果要加载的内容很多时,这样会有条理一点。

应用程序也是类似的,也可以新建一个脚本文件来完成应用程序的加载。