在Linux系统下有很多种添加开机自启动脚本的方法,因系统差异每种方法可能有所差异,这里介绍一种简单的方法
Linux终端输入 cd /etc/init.d/,进入该目录下:
root@test_proj:~# cd /etc/init.d/
输入ls会发现目录下有个rcS文件,如下:
root@test_proj:/etc/init.d# ls
alignment.sh haveged psplash.sh single
banner.sh hostname.sh qtGUI.sh smartd
bootlogd hwclock.sh rc stop-bootlogd
bootmisc.sh inetd.busybox rcS sysfs.sh
checkroot.sh modutils.sh read-only-rootfs-hook.sh syslog
dbus-1 mountall.sh reboot tcf-agent
devpts.sh mountnfs.sh resizefs.sh udev
dmesg.sh networking rmnologin.sh umountfs
dnsmasq nfscommon rpcbind umountnfs.sh
dropbear nfsserver run-postinsts urandom
functions populate-volatile.sh save-rtc.sh wm8960.sh
halt print_zynq.sh sendsigs
我们sudo vi rcS (注意Linux开发板不用加sudo)打开编辑该文件,例如我想再开机的时候打印一个hello 那么可以在下面位置加入 echo hello,(有的人可能会问,如果我想启动一个程序呢怎么做,一样,在这里加入要执行的程序就可以了。注意:开机自启动的程序依赖环境变量,一定保证,在程序启动之前环境变量准备好,要不启动会失败)然后保存退出:
#!/bin/sh
#
# rcS Call all S??* scripts in /etc/rcS.d in
# numerical/alphabetical order.
#
# Version: @(#)/etc/init.d/rcS 2.76 19-Apr-1999 miquels@cistron.nl
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
# Make sure proc is mounted
#
[ -d "/proc/1" ] || mount /proc
#
# Source defaults.
#
. /etc/default/rcS
echo hello
#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
#
# Call all parts in order.
#
exec /etc/init.d/rc S
重启开发板,终端输入reboot,可以看到启动日志中第十行出现了如下的代码,(hello):
cfg80211: failed to load regulatory.db
mmcblk1: p1
No soundcards found.
EXT4-fs (mmcblk1p1): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:9.
devtmpfs: mounted
Freeing unused kernel memory: 1024K
Run /sbin/init as init process
INIT: version 2.88 booting
hello
Starting udev
udevd[125]: starting version 3.2.8
random: udevd: uninitialized urandom read (16 bytes read)
random: udevd: uninitialized urandom read (16 bytes read)
random: udevd: uninitialized urandom read (16 bytes read)
udevd[126]: starting eudev-3.2.8
FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
大家可以自行验证哦!!