====== 固件基础 ====== 了解固件结构是救砖和刷机的关键。 ===== 固件结构 ===== 路由器固件通常包含以下几个部分。 == Flash 分区 == ^ 分区名称 ^ 大小(典型) ^ 内容 ^ | u-boot | 256KB-512KB | 引导程序 | | kernel | 3MB-5MB | Linux 内核 | | rootfs | 剩余空间 | 根文件系统 | | nvram | 64KB-128KB | 配置存储 | | art | 64KB | 无线参数 | == 文件系统类型 == - SquashFS:只读压缩文件系统,常见于原厂固件 - JFFS2:可读写,常见于 OpenWRT - UBIFS:大容量 NAND Flash 使用 - YAFFS2:早期嵌入式设备使用 ===== 固件格式 ===== == 常见扩展名 == - **.bin**:通用二进制格式 - **.trx**:Linksys/华硕固件格式 - **.chk**:Netgear 专用格式 - **.img**:通用镜像格式 == 固件头部 == 大多数固件以固定头部开头: 00 00 00 00 4D 49 50 53 # MIPS 标识 FF FF FF FF # TP-Link 常见 ===== 启动流程 ===== == 完整启动序列 == - **上电** → CPU 初始化 - **U-Boot** → 读取环境变量 - **内核加载** → 从 Flash 读取内核 - **文件系统** → 挂载根文件系统 - **网络初始化** → 启动网络服务 - **Web 服务** → HTTP 服务就绪 == U-Boot 启动参数 == bootcmd=bootm 9f020000 bootargs=console=ttyS0,115200 root=/dev/mtdblock2 == 中断启动 == 在启动过程中按特定键可进入: - **回车键**:进入命令模式 - **tftp**:网络启动 - **firmware**:指定固件位置 ===== Bootloader 介绍 ===== == U-Boot == 最通用的开源引导程序。 - 支持多种 CPU 架构(MIPS/ARM/x86) - 支持网络启动(TFTP) - 可修改启动参数 - 常见于小米、华为部分机型 setenv ipaddr 192.168.1.1 setenv serverip 192.168.1.100 tftpboot 0x81000000 firmware.bin erase 0x9f000000 +0x300000 cp.b 0x81000000 0x9f000000 0x300000 == Breed == 国内路由器常见的闭源引导程序。 - 界面友好(Web 控制台) - 支持多固件备份 - 内置 TFTP 恢复 - 常见于 PandoraBox、Padavan 固件 == CFE == Broadcom 芯片专用引导程序。 - 适用于 Netgear、华硕部分机型 - 串口控制台操作 - 支持 NFS 网络启动 == 原厂 Boot == - 功能简单 - 只能刷官方固件 - 部分可解锁刷第三方 ===== 固件修改 ===== == 提取固件 == # 使用 binwalk 提取 binwalk -e firmware.bin # 或手动解压 tar -xvf openwrt.bin == 修改工具 == - **firmware-mod-kit**:固件修改工具包 - **binwalk**:固件分析工具 - **squashfs-tools**:SquashFS 文件系统工具 == 刷入固件 == - 通过 Web 界面上传 - 通过 TFTP 刷入 - 通过 U-Boot 命令行 - 通过 TTL 串口直接写入 Flash ===== 安全检查 ===== == 固件签名 == 现代路由器对固件有签名验证: - **安全启动**:仅允许官方固件 - **Bootloader 锁**:禁止刷写 - **闪存锁**:防止读取 == 绕过方法 == - 使用 TTL 串口直接刷写 - 短接 Flash 芯片特定引脚 - 利用漏洞降级到低版本 ===== 相关链接 ===== - [[guide:hardware|硬件基础]] - [[guide:prerequisites|准备工作]] - [[bootloader:breed|Breed 专题]] - [[bootloader:uboot|U-Boot 专题]]