openwrt启动过程

openwrt启动过程

ID:37239772

大小:26.00 KB

页数:7页

时间:2019-05-20

openwrt启动过程_第1页
openwrt启动过程_第2页
openwrt启动过程_第3页
openwrt启动过程_第4页
openwrt启动过程_第5页
资源描述:

《openwrt启动过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、OpenWrt启动过程分析总结一下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、RedHat、之类的linux发行版本,它也有一套自己的启动流程。下面,我就以我的Linksys的WRT54G为平台介绍一下OpenWrt的启动流程。首先,CFE(commo

2、nfirmwareenvironment)--它就是一个bootloader,类似u-boot,redboot之类,有点broadcom公司御用之嫌--最先启动。它的任务只是创造一个简单的环境,让系统先运行起来。除了能够跳转到特定地址上启动操作系统(如Linux)外,它还能让你download东西到上面,比如download一个linux,然后启动它。另外,值得一提的是,CFE在启动之后会有1,2秒的时间等待由tftp上传的内核并烧写到flash上,这就给一些操作系统损坏但CFE还能工作的"砖头"板一个起死回生的机会。请注

3、意一旦linux启动之后,将由linux全部接管系统,这时候就没CFE什么事情了。唯一的瓜葛是CFE传递给内核一个命令行的参数,这个可以在linux启动起来之后用下面的命令查看: root@OpenWrt:/#cat/proc/cmdlineconsole=ttyS0,115200mtdparts=spi_flash:1m(u-boot)ro,3m(kernel),-(rootfs) 之后,linux系统启动起来了。它使用类似如下的脚本命令来解析cmdline:forxin$(cat/proc/cmdline);docas

4、e$xininit=*)init=${x#init=};;root=*)ROOT=${x#root=}case$ROOTinLABEL=*)ROOT="/dev/disk/by-label/${ROOT#LABEL=}";;UUID=*)ROOT="/dev/disk/by-uuid/${ROOT#UUID=}";;esac;;rootflags=*)ROOTFLAGS="-o${x#rootflags=}";;cryptopts=*)cryptopts="${x#cryptopts=}";;nfsroot=*)NFSRO

5、OT="${x#nfsroot=}";;nfsopts=*)NFSOPTS="-o${x#nfsopts=}";;boot=*)BOOT=${x#boot=};;resume=*)RESUME=${x#resume=};;noresume)NORESUME=y;;quiet)quiet=y;;ro)readonly=y;;rw)readonly=n;;debug)debug=yexec>/tmp/initramfs.debug2>&1set-x;;break=*)break=${x#break=};;break)break

6、=premount;;esacdone对于OpenWrt这个cmdline的意思就是:root=/dev/mtdblock2文件系统在第三个flash分区上(mtdblock0,1,2);rootfstype=squashfs,jffs2文件系统类型是squashfs和jffs2(为什么两种类型,目前还不清楚,不过可以确定OpenWrt使用了较为复杂的文件系统,实现了squashfs的压缩和jffs2的可写); init=/etc/preinit执行该初始化,noinitrdconsole=ttyS0,115200没有in

7、itrd和console口设定。 init=/etc/preinit是linux会执行的初始化,具体内容如下:root@OpenWrt:/#cat/etc/preinit#!/bin/sh#Copyright(C)2006OpenWrt.orgexportPATH=/bin:/sbin:/usr/bin:/usr/sbin./etc/diag.sh failsafe_ip(){ifconfig$ifname192.168.1.1netmask255.255.255.0broadcast192.168.1.255up} fa

8、ilsafe(){[-n"$ifname"]&&grep"$ifname"/proc/net/dev>/dev/null&&{failsafe_ipnetmsg192.168.1.255"EnteringFailsafe!"telnetd-l/bin/login<>/dev/null2>&1}lock/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。