在通用设备上安装原生openwrt

写在前面

咱前阵子从海鲜市场淘了块收银机的主板来当软路由,打算上openwrt,但是突然发现,以前安装openwrt总是一些路由器或者其他嵌入式平台,x86上还真不知道怎么给这镜像装进去

所谓原生openwrt指的是直接从openwrt.org上获取的原始镜像

如何选择镜像

选择版本

如果汝不想自己编译的话,咱建议无论如何选择稳定版构建!!!
这在之后安装额外的内核模块时(例如各种驱动)非常重要
因为虽然可以通过安装额外的内核ipk来兼容其他编译版本的软件包,但是内核模块不能这么干,无论如何内核模块都不能跨编译版本运行


在下载站点(downloads.openwrt.org) 选择需要的版本

选择目标平台

openwrt的最终镜像文件是分类为各个平台的:

File Name	File Size	Date
apm821xx/	-	Wed Nov 15 02:18:11 2023
armsr/	-	Wed Nov 15 01:30:35 2023
at91/	-	Wed Nov 15 03:10:28 2023
ath79/	-	Wed Nov 15 02:46:31 2023
bcm27xx/	-	Wed Nov 15 03:23:35 2023
bcm47xx/	-	Wed Nov 15 03:14:38 2023
bcm4908/	-	Wed Nov 15 02:23:36 2023
bcm53xx/	-	Wed Nov 15 01:33:44 2023
bcm63xx/	-	Wed Nov 15 03:03:27 2023
bmips/	-	Wed Nov 15 03:10:00 2023
gemini/	-	Wed Nov 15 00:53:01 2023
imx/	-	Wed Nov 15 04:58:33 2023
ipq40xx/	-	Wed Nov 15 03:06:47 2023
ipq806x/	-	Wed Nov 15 01:39:29 2023
ipq807x/	-	Wed Nov 15 01:43:37 2023
kirkwood/	-	Wed Nov 15 00:50:33 2023
lantiq/	-	Wed Nov 15 02:10:12 2023
layerscape/	-	Wed Nov 15 02:52:41 2023
malta/	-	Wed Nov 15 01:37:37 2023
mediatek/	-	Wed Nov 15 03:00:12 2023
mpc85xx/	-	Wed Nov 15 03:43:40 2023
mvebu/	-	Wed Nov 15 02:51:17 2023
mxs/	-	Wed Nov 15 02:32:16 2023
octeon/	-	Wed Nov 15 03:51:20 2023
octeontx/	-	Wed Nov 15 02:21:05 2023
oxnas/	-	Wed Nov 15 02:48:35 2023
pistachio/	-	Wed Nov 15 00:50:27 2023
ramips/	-	Wed Nov 15 03:11:32 2023
realtek/	-	Wed Nov 15 02:08:09 2023
rockchip/	-	Wed Nov 15 01:34:40 2023
sifiveu/	-	Wed Nov 15 04:01:12 2023
sunxi/	-	Wed Nov 15 02:52:02 2023
tegra/	-	Wed Nov 15 00:56:39 2023
x86/	-	Wed Nov 15 02:47:34 2023
zynq/	-	Wed Nov 15 00:54:14 2023

选择汝的设备型号/处理器型号/架构,每种不同的分类的镜像格式或内容都是不一样的,很多平台有独立的刷写机制,会生成特定格式的文件以便操作。这里咱们仅关注x86架构,显然,通用x86目标直接位于顶级目录,没有区分处理器或厂商

这个目录下还区分了几个子项:

File Name	File Size	Date
64/	-	Wed Nov 15 02:13:04 2023
generic/	-	Wed Nov 15 02:47:31 2023
geode/	-	Wed Nov 15 02:10:06 2023
legacy/	-	Wed Nov 15 01:34:48 2023

咱用的是x64(都4202年了!)

选择镜像格式

Image for your Device	sha256sum	File Size	Date
generic-ext4-combined-efi.img.gz	090187a632f80c90093417830701d9a7f391b7729b4942d7e620a8c8f4dedb30	11236.6 KB	Wed Nov 15 02:10:23 2023
generic-ext4-combined.img.gz	f8588a9937bd77010f88545ccd21bb59cf8b47462793d80ef7d49ad92ce8ab11	11052.6 KB	Wed Nov 15 02:10:22 2023
generic-ext4-rootfs.img.gz	b48df205150a4465b48a21f9449b3cb79d2dd3181feda0cb0ebd6693e1dc3596	5163.4 KB	Wed Nov 15 02:10:21 2023
generic-kernel.bin	19ea5d644317bb77931a4f94030b8c2bbd1312c554ec1bf276e80cf4a02f36c6	5497.1 KB	Wed Nov 15 02:10:03 2023
generic-squashfs-combined-efi.img.gz	3445abde9fb8371ae441dc947699cb397dda0cddc943e95bd4db5a89841fe5e7	10390.8 KB	Wed Nov 15 02:10:22 2023
generic-squashfs-combined.img.gz	2fdaf53bf8ff264137a7950acec017a0f9f38664cee0b3c95357fdd05dc24c5f	10208.1 KB	Wed Nov 15 02:10:22 2023
generic-squashfs-rootfs.img.gz	7d558743d6a8e8a85615242e14c92b5384839ecca55205a415f547702bf32039	4321.3 KB	Wed Nov 15 02:10:20 2023
rootfs.tar.gz	dc5379af73ebd6845da419ccf034987dc0c8b26e503cefd5231b05a1ff8cc26c	4207.5 KB	Wed Nov 15 02:10:07 2023

这几个文件,先刨去rootfs.tar.gz仅根文件系统和generic-kernel.bin仅内核,它们可以用于更定制化的安装,流程也更为复杂(咱也没有用过qwq)
剩下四个文件显然分为两组,ext4squashfs
这是镜像的文件系统格式,对,这种安装镜像其实是一种硬盘镜像,自带分区表的那种
ext4,最常用的linux文件系统之一,不再赘述,倒是这里可以讲一下squashfs

squashfs
这种文件系统本身是只读的,所有对于它的写入和更改都将被存储至一个额外的分区
这意味着,如果汝把系统淦烂了,只要删除/清空这个额外的分区,系统将直接恢复到干净的状态,
openwrt本身的web界面中就提供这个恢复初始状态的功能


每个文件系统的镜像又分为ufi版本和非ufi版本,这没有任何系统功能上的区别,只要汝的设备支持ufi引导就用ufi版本,否则使用没有ufi的版本(废话)
咱这里选择的是generic-ext4-combined-efi.img

解压镜像

openwrt官网的.img.gz文件不是标准的gz格式,在文件结尾会包含文件的签名
所以部分软件无法解压这个文件,例如7zip和physdiskwrite
咱的解决方案是直接扔进linux用gunzip解压,虽然扔会抛出错误,但是解压出的文件是可用的

刷写镜像

openwrt的发布文件(.img)是一个磁盘的完整镜像,而不是像windows或其他linux那样的安装镜像
所以我们不需要刻录安装盘,而是将这个镜像直接刷写到目标设备的启动磁盘上


有很多软件可以进行这个操作(如果汝想,linux使用dd直接刷也行),这里,咱在windows下使用physdiskwrite官网

.\physdiskwrite.exe -u openwrt-22.03.5-x86-64-generic-ext4-combined-efi.img

-u参数的意义是解除安全覆盖限制*(默认情况下,该软件将拒绝对2G以上的磁盘进行写入)*

注意

完成

如果没有差错,直接引导这个设备,那么一切都应就位!