Openwrt启动后的脚本运行(二)

Openwrt启动脚本的运行分为两个阶段,

preinit完成系统的初始化,

rcS依次启动了各个应用程序模块。

执行/etc/preinit脚本之后

boot_hook_init preinit_essential
boot_hook_init preinit_main
boot_hook_init failsafe
boot_hook_init initramfs
boot_hook_init preinit_mount_root

for pi_source_file in /lib/preinit/*; do
        . $pi_source_file
done

preinit执行的最后一个脚本为99_10_run_init

exec env - PATH=piinitpathpi_init_env $pi_init_cmd

pi_init_cmd为

pi_init_cmd=”/sbin/init”

因此开始运行busybox的init命令

busybox的init名执行inittab脚本,该脚本在/etc/inittab

[root@PandoraBox:/lib/functions]#cat /etc/inittab
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
ttyS0::askfirst:/bin/login
ttyS1::askfirst:/bin/login
[root@PandoraBox:/lib/functions]#

可以看到sysinit尾系统初始化运行的/etc/init.d/rcS S boot脚本

shutdown为系统重启或者关机运行的脚本

tty*是用户通过串口或者telnet登录是,运行/bin/login登录系统

运行前的提示为:

“Please press Enter to activate this console.”

启动时运行的/etc/init.d/rcS S boot,执行后将会运行一系列的启动脚本,这些脚本在/etc/rc.d/目录下:

[root@PandoraBox:/etc/rc.d]#ls
K10mjpg-streamer        S12rpcd                 S60dnsmasq
K50dropbear             S19firewall             S60samba
K85odhcpd               S20network              S61avahi-daemon
K89log                  S30set_kernel_timezone  S70usb_printer
K90network              S35odhcpd               S90mjpg-streamer
K90xCloud               S40fstab                S90qos
K98boot                 S41sysntpd              S90xCloud
K99umount               S50cron                 S94shairport
S00sysfixtime           S50dropbear             S95done
S10boot                 S50qos_gargoyle         S96led
S10system               S50telnet               S99xunlei
S11sysctl               S50uhttpd
S12log                  S60dbus
[root@PandoraBox:/etc/rc.d]#

这些启动脚本来自/etc/init.d/中的脚本,通过/etc/rc.common脚本,将init.d中的脚本链接到/etc/rc.d目录下,并根据这些脚本中的START和STOP的关键字,添加KSTOP和S{START}的前缀,这样就决定了脚本运行的先后次序。

时间: 2024-10-13 02:49:59

Openwrt启动后的脚本运行(二)的相关文章

Openwrt启动后的脚本运行

Openwrt系统启动后,首先运行/etc/preinit脚本 以newifi y1s为例,刷入Pandorabox固件 #!/bin/sh # Copyright (C) 2006 OpenWrt.org # Copyright (C) 2010 Vertical Communications [ -z "$PREINIT" ] && exec /sbin/init export PATH=/bin:/sbin:/usr/bin:/usr/sbin pi_ifname

OpenWrt启动过程分析+添加自启动脚本【转】

一.OpenWrt启动过程分析 转自: http://www.eehello.com/?post=107 总结一下OpenWrt的启动流程:1.CFE->2.linux->3./etc/preinit->4./sbin/init ->5./etc/inittab ->6./etc/init.d/rcS->7./etc/rc.d/S* ->8. OpenWrt是一个开放的linux平台,主要用于带wifi的无线路由上. 类似于Ubuntu.Red Hat.之类的li

linux启动后自动登录并运行自定义图形界面程序

在<Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法>一文中提到linux启动在以后运行一个独占显示器的图形程序的两种办法. 1.不启动xserver,使用fb或者directfb图形模式: 2.启动xserver不启动桌面系统. 第一种方法性能并不一定高,因为支持fb的显卡驱动可能找不到,就是用上显卡驱动了也需要CPU大量参与.另外如果用这种方式可供选择的图形程序开发技术就受限了.所以这种方法通常用在嵌入式环境下. 第二种方法只要显卡驱动了,CPU就能得到解

Raft详解-启动后运行期间代码

Raft启动后运行期间主要执行两个函数:1.状态监测和转化 func (rf *Raft) Loop() { // Set out as a follower TimeOutConst := 0 for { TimeOutConst = ElectionTimeoutConst() if rf.state == "follower" { // DO FOLLOWER STUFF select { case <-rf.heartbeatCH: case <-time.Afte

linux后端运行(二)

在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台.导致无法退出root的. 输入命令:exit终端显示:There are stopped jobs. 解决方法:方法一.输入命令:jobs终端显示:[1]+ Stopped vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /) KILL %1 方法二.输入命令:jobs -l终端显示:[1]+ 4664 停止 vim /etc/network/interfaces

共享一个防止脚本重复启动的shell脚本

项目的一个需求:为防止脚本重复调度,导致同时运行时相互冲突,需要在脚本运行开始前创建一个文件,结束时删除. 脚本启动时判断一下文件是否存在,如果存在则退出. 最开始这样做没发现问题,但跑一段时间后,发现如果进程中间退出没删除文件就会出现问题. 而且有时希望等待一段时间后不管有没有已启动同名脚本,都往下走. 基于以上考虑,最近将这个防止重复启动的逻辑抽离出来成为独立脚本,并增加了一些控制逻辑,这样以后需要类似功能直接调用这个脚本就好. 流程图: 代码: #! /bin/sh # singleton

让windows 2003启动后直接进入桌面

windows 2003启动后进入桌面需要解决的几个问题 1.如何去除掉 ctrl+alt+del的提示界面 2.如何设置自动登录的用户名密码 3.在异常启动时会出现关闭事件跟踪程序 也会导致不能直接进入桌面 往往直接进入桌面是卡在了这个环节 一.去掉ctrl+alt+del的提示界面 1.“开始-->运行”在弹出的窗口中输入gpedit.msc, 2.点击确定即打开了组策略编辑器. 3.在组策略编辑器的左框内依次序展开(点前面的“+”号)-->计算机配置-->Windows设置--&g

转 Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

今早刚上班.客户打电话过来说系统访问不了,输入用户名.用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因.查看服务的时候,发现相关的服务都是启动的状态.第二想法就是查看的程序配置文件是否被修改过.也没有异常:第三个就是用PL/SQL连接Oracle数据库,输入登录名和密码后,提示如下错误:ora-01033:oracle initialization or shutdown in progress: 在网上搜索了一圈,终于发现几个比

Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

一.错误描述 登陆PL/SQL Developer登陆本地数据库时先报没有监听程序,查看服务发现Oracle监听服务没有启动.右击启动监听程序,报错: 错误描述:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的,例如 "性能日志和警报 "服务. 二.原因分析 你安装oracle的时候是连网的,那么listener.ora文件里的HOST=网络给你分配的IP地址,而在你断网的时候就会出现这样的情况.