0-OpenWrt前菜

2023-11-18

前言:接触 op 已达四年,今年开始梳理整体所学,具体还参考了佐大的视频,对 op 缺乏系统知识的可以尝试,总体而言官方文档和源码是最好的教程

OpenWrt Study

本文是学习了解使用 OpenWrt 前的一些基本知识点

uboot下升级固件

BCM:CFE
QCA:uboot
MTK:uboot

QCA升级的固件为 kernel/rootfs 单独分开的,而MTK直接上传 bin 或者 img 就可

进入uboot

安装串口工具

dmesg查看USB使用情况,基本都是ttyUSB0

sudo apt-get install micicom
sudo micicom -s #进入设置界面,

进入uboot,cat /proc/cpuinfo

安装tftpd

sudo apt-get install tftpd-hpa

BuildRoot: 主要用于创建交叉编译工具链,并编译 kernel
BusyBox: 它包含了所有 POSIX 系统需要的基本命令,以执行常见的系统维护任务以及许多用户和管理任务,因为其仅需很小的空间,所以常常使用在嵌入式硬件中

路由器启动过程分析

软件角度

  1. 硬件上电, CPU 复位(应该会进行 POST Power On Self Test (上电自检,对硬件进行检测的过程))
    1. 选择启动的介质(SPI/NAND Flash),是通过硬件实现的,类似采用 bootstrap 电阻
  2. Bootloader 启动,选择启动位置(SPI/NAND 中的某个镜像,比如 SPI 中刷 DD-WRT,NAND 中刷梅林)
  3. 系统启动

硬件角度

  1. 上电,CPU 的简单初始化
  2. Bootloader 阶段,CPU 再次 init 初始化,外设(如串口、网口、交换机)
  3. 系统运行,CPU 再次 init,外设初始化
    • 每个阶段的外设功能可能不一样

OpenWrt文件系统目录结构分析

遵循 FileSystem Hierarchy Standard(FHS)

admin@Router:/# ls
bin      dev      init     overlay  root     tmp      vendor
cfg      etc      lib      proc     sbin     usr      www
data     ini      mnt      rom      sys      var
  • bin(binary): 主要存放程序
  • sbin(system binary): 主要存放系统程序
    • 重要性: bin > sbin > xx/bin > xx/sbin (xx例如 usr)
  • etc: 各种配置文件(例如 dhcp network)
  • mnt/opt: 挂载点
  • proc/sys: 都是由Kernel创建的,系统文件
  • usr: 用户目录
  • www: luci
  • dev: 系统创建的所有设备
  • lib: library库
  • rom: 静态文件
  • tmp: 临时文件(但是是系统级别的)
  • var: 例如某些日志产生的文件

OpenWrt ubus框架分析

进程间通信
原来使用的是信号+

OpenWrt hotplug机制分析

内核态主动通知用户态

  1. 回调
  2. 监听(netlink)

OpenWrt 常见文件系统

按照 Flash布局

  • bootleader 固件 JffS2(overlay分区,一般由 Readonly+JffS2构成)
  • 固件:头 kernel rootfs(squash fs, 压缩过但是只读的)

按照系统层面

  • squashfs根文件挂载到 /rom系统目录
  • Jffs2分区挂载到 /overlay目录
  • overlayfs让 /overlay目录成为根目录
  • tmpfs 临时文件,放在内存中,如log日志
file eva.dummy.squashfs
eva.dummy.squashfs: Squashfs filesystem, big endian, version 3.1, uncompressed, 171 bytes, 1 inodes, blocksize: 131072 bytes, created: Sat Mar 17 17:22:26 2012
❯ unsquashfs eva.dummy.squashfs
Reading a different endian SQUASHFS filesystem on eva.dummy.squashfs
Parallel unsquashfs: Using 12 processors
0 inodes (0 blocks) to write


created 0 files
created 1 directories
created 0 symlinks
created 0 devices
created 0 fifos
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

0-OpenWrt前菜 的相关文章

随机推荐