标签: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=
pi_ip=192.168.1.1
pi_broadcast=192.168.1.255
pi_netmask=255.255.255.0
fs_failsafe_ifname=
fs_failsafe_ip=192.168.1.1
fs_failsafe_broadcast=192.168.1.255
fs_failsafe_netmask=255.255.255.0
fs_failsafe_wait_timeout=2
pi_suppress_stderr="y"
pi_init_suppress_stderr="y"
pi_init_path="/bin:/sbin:/usr/bin:/usr/sbin"
pi_init_cmd="/sbin/init"
. /lib/functions.sh
. /lib/functions/preinit.sh
. /lib/functions/system.sh
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
boot_run_hook preinit_essential
pi_mount_skip_next=false
pi_jffs2_mount_success=false
pi_failsafe_net_message=false
boot_run_hook preinit_main
从该脚本中可以看到,
/lib/functions.sh
/lib/functions/preinit.sh
/lib/functions/system.sh
这三个脚本为preinit叫执行提供了功能函数。
preinit脚本将执行初始化的一系列shell脚本的
目录下/lib/preinit/目录下
[root@PandoraBox:/lib/preinit]#ls
01_reset_esw_port.sh 40_run_failsafe_hook
02_default_set_state 50_indicate_regular_preinit
03_preinit_do_ralink.sh 70_initramfs_test
10_indicate_failsafe 80_mount_root
10_indicate_preinit 99_10_failsafe_login
10_sysinfo 99_10_run_init
30_failsafe_wait
[root@PandoraBox:/lib/preinit]#
这些脚本可以根据需求进行修改
Openwrt将这些脚本五种hook分类:
preinit_essential
preinit_main
failsafe
initramfs
preinit_mount_root
根据名称执行这些脚本
标签:openwrt
原文地址:http://blog.csdn.net/viewsky11/article/details/45898053