固件选择与烧录
本文介绍 ImmortalWrt 镜像选择、SD 卡写入和首次启动验证。
验收结果:树莓派启动 2–5 分钟后,电脑可以打开
http://192.168.1.1。
烧录前检查
- 设备确实是 Raspberry Pi 4B、400 或 CM4。
- 固件目标为
bcm27xx / bcm2711。 - SD 卡上的原有数据已经备份。
向 SD 卡写入 .img 或 .img.gz 会覆盖卡上的分区。开始写入前必须根据设备名称和容量核对目标磁盘。
下载正确的镜像
从 ImmortalWrt Firmware Selector 搜索设备,或从本项目 Release 下载明确标注适配 Raspberry Pi 4B / 400 / CM4 的镜像。
第一次安装通常下载磁盘镜像,文件名以 .img.gz 结尾。不要下载只用于包管理器的 .apk、.ipk,也不要把校验文件当成固件。
EXT4 与 SQUASHFS
| 文件系统 | 特点 | 建议 |
|---|---|---|
| SQUASHFS | 只读系统层 + 可写 overlay;支持恢复出厂;行为更接近普通 OpenWrt 路由器 | 第一次安装优先 |
| EXT4 | 根文件系统直接可写;从电脑离线扩展分区更直观 | 明确需要 EXT4 时再选 |
写入新的磁盘镜像时,两者都会覆盖目标 SD 卡。配置能否保留由备份与升级流程决定,SQUASHFS 不会在写入新镜像后自动保留旧设置。
推荐方法:balenaEtcher
balenaEtcher 支持 Windows、macOS 和 Linux,并且通常可以直接读取 .img.gz,不需要先解压。
- 从 balenaEtcher 官网 下载并安装。
- 点击 Flash from file,选择下载的
.img.gz。 - 点击 Select target,选择 SD 卡。
- 根据容量和设备名称再次核对目标。
- 点击 Flash,等待写入与校验都完成。
- 安全弹出 SD 卡。
如果 Etcher 不能识别压缩文件,可将
.gz解压为.img后重试。镜像必须与设备型号匹配。
Windows 注意事项
写入后,Windows 可能提示需要格式化磁盘或无法访问驱动器。请选择取消,不要格式化。Windows 默认无法读取镜像中的 Linux 分区,这是正常现象。
旧版 Win32 Disk Imager 的界面如下:

如果继续使用这个工具:
- 选择
.img文件,不是.gz - 确认目标盘符属于 SD 卡
- 点击 Write,不要点击 Read
误点 Read 会把 SD 卡内容反向写入镜像文件。重新解压一份干净的镜像,再执行 Write。

macOS 推荐与命令行方法
优先使用 balenaEtcher。只有明确理解磁盘设备名时才使用 dd。
1. 找到 SD 卡
插卡前后各运行一次:
diskutil list
根据新增磁盘的容量确认设备,例如 /dev/disk6。不要照抄示例编号。 每台电脑的编号都可能不同。
2. 卸载而不是弹出
diskutil unmountDisk /dev/disk6
3. 写入已解压的镜像
sudo dd if=/完整路径/immortalwrt.img of=/dev/rdisk6 bs=4m
sync
if是镜像文件of是整块 SD 卡设备,不是某个分区- 使用
/dev/rdiskN通常比/dev/diskN更快 - 写入期间 macOS 可能长时间不显示进度,可按
Control + T查看状态

4. 弹出
diskutil eject /dev/disk6
首次启动
- 断电状态下把 SD 卡插入树莓派。
- 连接网线;首次排查优先使用有线。
- 接通电源,等待 2–5 分钟。
- 电脑打开
http://192.168.1.1。
不同镜像的默认 Wi-Fi 状态可能不同。如果看不到无线网络,不要立刻判定烧录失败,先用网线测试管理地址。
烧录后的验证
满足以下条件即可进入下一步:
- 烧录工具完成写入和校验
- 没有接受 Windows 的格式化提示
- 树莓派通电后指示灯有读卡活动
- 等待后能打开 LuCI,或电脑能收到来自树莓派的网络地址
接下来返回快速上手,完成密码与网络角色设置。
常见失败
| 现象 | 先检查 |
|---|---|
| 烧录工具找不到镜像 | 是否下载了 .img.gz;必要时先解压为 .img |
| 写入后 SD 卡看起来是空的 | Windows 不识别 Linux 分区很正常;不要重新格式化 |
| 树莓派完全没有读卡活动 | 电源、SD 卡接触、镜像是否对应设备 |
192.168.1.1 打不开 | 等待首次启动;电脑只保留一条网络连接;检查地址冲突 |
macOS dd 报权限或设备忙 | 是否先 unmountDisk;目标是不是整块磁盘 |