这个问题,其实也是很多新手用 OpenWrt 时常遇到的困惑:下载页面里一大堆目录和固件类型,比如 64/、generic/、geode/、legacy/,到底有什么区别?
下载哪个才适合自己的软路由?网上资料也不统一,有的说用 64,有的说 generic,搞得人一脸懵。下面我用自己的话,结合实际折腾经验,帮你把这些 OpenWrt 官方固件类型的区别讲清楚,避免踩坑。
1. 总体结构是什么?
以OpenWrt 24.10.0 为例,官方 x86 固件页面结构如下:
/releases/24.10.0/targets/x86/
64/
generic/
geode/
legacy/
这四个子目录,各自代表不同的CPU 架构或者平台特性。OpenWrt x86 体系比较老了,所以支持各种古老和现代的 CPU。
2. 每个目录代表什么含义?
1)64/
含义:专门为 x86_64(也叫 AMD64,64位 PC/服务器/软路由)编译的固件。
适用:大多数现代 64 位 PC、笔记本、NAS、软路由、工业机等。
你的 CPU 只要是 2010 年以后的主流 PC(i3/i5/i7/奔腾/J系列/赛扬/至强/Atom/大部分国产 U),绝大多数都是 64 位,装这个就对了。
2)generic/
含义:适用于经典的 32 位 x86 架构(i386/i486/i586/i686)PC。
适用:比较老的 32 位 PC 或嵌入式 x86 板卡,比如 2000~2010 年间的一些老机箱、工控主板、迷你小主机等。
现在几乎没人用 32 位 x86 了,除非你有十几二十年前的古董设备。
3)geode/
含义:专门为 AMD Geode 系列嵌入式 CPU 优化的 32 位固件。
适用:极小众,比如老的瘦客户机、工控终端、极少数 x86 嵌入式设备用的 Geode CPU。
普通人基本不会用到,可以无视。
4)legacy/
含义:为更老的、不支持 PAE、部分特殊特性的 x86 设备准备的超兼容型 32 位固件。
适用:极老的 x86 设备,比如 Pentium II、III,或者不支持 PAE(物理地址扩展)的芯片。
现在除非真有古董收藏癖,否则没人会用。
3. 怎么选?怎么判断自己应该用哪个?
99% 的情况下,如果你是用软路由、小主机、工控机,直接选 64/ 下的固件,不用犹豫。
如何判断?
Windows/Linux 下右键系统属性或者用 lscpu、cat /proc/cpuinfo 看是不是 x86_64。
只要不是 2009 年以前的 PC 基本都能跑 64 位。
如果装 64 位固件提示不支持,再考虑 generic/legacy,但这种情况极少见。
4. 目录里还有什么文件类型?怎么挑?
进入 64/ 或其它目录之后,你会看到很多 img.gz 文件,名字通常类似:
openwrt-24.10.0-x86-64-combined-ext4.img.gz
openwrt-24.10.0-x86-64-generic-squashfs-combined.img.gz
openwrt-24.10.0-x86-64-vmdk.img.gz
openwrt-24.10.0-x86-64-uefi-gpt-combined-ext4.img.gz
...
这些名字含义再简单说下:
ext4.img.gz:适合实际写入 SSD/U盘/硬盘(最常用),支持读写、可扩容。
squashfs.img.gz:固态压缩的,只读分区,刷机常用,overlay 可单独扩容,体积小。
vmdk.img.gz:虚拟机专用(VMware/VirtualBox 直接挂盘用)。
uefi-gpt-*.img.gz:带 UEFI 启动分区的固件,适合新主板(近几年软路由建议选这个)。
大部分用户直接选 openwrt-xxx-x86-64-combined-ext4.img.gz,写到硬盘或 U 盘就行。
5. 实际经验和建议
软路由/工控机/迷你主机/普通 PC 一律优先选 64/ 目录下的固件。
如果安装报错“非 64 位架构”,才考虑 generic/legacy。
geode、legacy 基本用不到,纯古董爱好者收藏。
如果你的主板很新(UEFI Only),可以选带 uefi/gpt 的固件,否则用普通 combined-ext4 就行。