包管理器opkg
OpenWrt自带包管理器 opkg ,可以安装各种扩展为ipk的二进制软件包,类似Debian的apt-get和CentOS的yum。
opkg常用操作:
# 更新本地软件列表 opkg update # 可以直接安装本地包 opkg install <pkg> opkg remove <pkg> # 列出已安装的包 opkg list-installed # 列出包里的文件 opkg files <pkg> # 查找包含文件的包,path必须是绝对路径 opkg search <path> # 查找软件包 opkg find <regex>
opkg的配置文件位于 /etc/opkg.conf
,例如:
src/gz base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/ src/gz luci http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/luci/ src/gz packages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages/ dest root / dest ram /tmp lists_dir ext /var/opkg-lists option overlay_root /overlay arch all 100 arch mt7620a 200
其中:
-
src/gz: 指定软件源的地址,可以有多个。OpenWrt的官方源可以在 OpenWrt Downloads 找到,选择源的时候注意使用合适的Build Target和Subtarget。小米路由器mini应该选用ramips/mt7620(a)。 1 软件源也可以是
file:///path/to/pkgs/dir
协议的本地目录。 -
dest: 指定安装位置,默认装在根目录下,可通过opkg的
-d
选项来选择其他配置里的目录。 - lists_dir: 指定软件列表的位置。
- overlay_root: 当使用overlayfs时,指定overlay分区的位置,以检查是否还有可用空间,仅当dest为root时有用。
- arch: opkg默认只支持架构无关(all)和已安装target架构的软件包,但也可以使用本命令引入其他target的包,最后的数字是安装优先级,越小优先级越高。
flash分区布局
详细内容可参考 The OpenWrt Flash Layout 。下面以新安装的PandoraBox为例,简要介绍其分区布局。
小米路由器mini自带128M内存和16M flash,OpenWrt将flash设备抽象为 MTD 。以新安装的PandoraBox为例:
cat /proc/mtd dev: size erasesize name mtd0: 00030000 00010000 "u-boot" mtd1: 00010000 00010000 "u-boot-env" mtd2: 00010000 00010000 "Factory" mtd3: 01000000 00010000 "fullflash" mtd4: 00f80000 00010000 "firmware" mtd5: 001230fb 00010000 "kernel" mtd6: 00e3cf05 00010000 "rootfs" mtd7: 00860000 00010000 "rootfs_data" mtd8: 00020000 00010000 "panic_oops" mtd9: 00010000 00010000 "culiang-crash" mtd10: 00010000 00010000 "culiang-reserved" mtd11: 00010000 00010000 "culiang-Bdata"整个flash设备被分成了12个区,通过
dmesg | egrep '0x[a-z0-9]{12}'
可以查看各个分区的始末地址:
0x000000000000-0x000001000000 : "fullflash" 0x000000000000-0x000000030000 : "u-boot" 0x000000030000-0x000000040000 : "u-boot-env" 0x000000040000-0x000000050000 : "Factory" 0x000000050000-0x000000fd0000 : "firmware" 0x000000050000-0x0000001730fb : "kernel" 0x0000001730fb-0x000000fb0000 : "rootfs" 0x000000750000-0x000000fb0000 : "rootfs_data" 0x000000fb0000-0x000000fd0000 : "panic_oops" 0x000000fd0000-0x000000fe0000 : "culiang-crash" 0x000000fe0000-0x000000ff0000 : "culiang-reserved" 0x000000ff0000-0x000001000000 : "culiang-Bdata"
整个flash的布局大致如下图所示:
|----------------------------------------------------------------------------------------------------------------------------|
| mtd3: fullflash |
|----------------------------------------------------------------------------------------------------------------------------|
|mtd0: u-boot | mtd1: u-boot-env | mtd2: Factory | mtd4: firmware | mtd9 ~ mtd11 |
|-------------|------------------|---------------|-----------------------------------------|------------------|--------------|
| | mtd5: kernel | mtd6: rootfs | mtd8: panic_oops | |
| |--------------|--------------------------|------------------| |
| | /rom | mtd7: rootfs_data | |
|----------------------------------------------------------------------------------------------------------------------------|
其中,各个分区的用处如下:
- u-boot 分区保存启动器代码。
-
u-boot-env 分区保存操作系统的一些关键环境变量,以供下次启动使用,可以使用
strings /dev/mtd1
查看。这应该是刷机之前的那个Config分区。 - Factory分区,保存了以太网卡的mac地址,另外据说还保存了无线AP的频率校准参数,很有必要备份一下。
- kernel分区保存系统内核。
- rootfs分区挂载根文件系统,起始的一部分是只读部分。
- rootfs_data分区挂载JFFS2文件系统,挂载于/overlay。
- panic_oops分区应该是mtdoops模块记录内核panic/oops信息的地方。
-
mtd9 ~ mtd11这三个
culiang-
开头的分区应该就是刷机之前的crash, reserved和Bdata分区,culiang(粗粮)是指小米来着。这里保存的应该是小米自己的配置和数据,culiang-Bdata也可以用strings /dev/mtd11
查看,包含model,CountryCode和SN等。
overlayfs文件系统
还是以新安装的PandorasBox为例,介绍下文件系统,具体内容可参考 OpenWrt Filesystems
本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt 系统分析
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。