前言#
在下載 OpenWrt 中文件名格式到底是什麼意思,以及我該怎麼選擇。簡單講講背後的邏輯,相信你看完了也能做出正確的選擇。
包括文件系統,版本號,格式
SquashFS#
先簡單了解一下 SquashFS 是一種只讀的壓縮文件系統,可以大大減小文件系統的大小。常見就是運用在嵌入式系統裡面,其中就包括路由器。
具體來說,SquashFS Overlay 包含兩個部分:
- LOWER
這個是基礎的只讀 SquashFS 文件系統,包含了操作系統的所有默認文件。
- UPPER
這個是一個可寫的 overlay,用來放置所有需要寫訪問的文件,比如配置文件等。
::: gallery
:::
當 OpenWrt 需要訪問某個文件時,它會先在 UPPER 中查找,如果沒有找到訪問 LOWER 中的只讀 SquashFS。如果需要寫文件就寫入到 UPPER overlay 當中。
這樣通過結合只讀的 SquashFS 和可寫的 UPPER overlay,OpenWrt 實現了一個可寫的根文件系統,同時也保持了 SquashFS 的空間效率和可靠性優勢。
這個架構讓 OpenWrt 具有了固件大小較小、系統安全可靠的優點,同時又可以進行一些運行時的配置修改。
但是缺點就是大部分的固件都會有固定的存儲空間,在一般情況下需要對存儲空間大小進行擴容操作,通過創建 EXT4 分區掛載來對存儲空間進行擴容。
用途#
我這裡準備了三款固件的名字,分別是 CatWrt,Lean's LEDE 以及 ImmoralWrt
CatWrt.v23.8.x86_64-squashfs-combined-efi.img.gz
openwrt-x64-R23.4.1-squashfs-combined-efi.img.gz
immortalwrt-23.05.1-x86-64-generic-squashfs-combined-efi.img.gz
CatWrt.v23.8.mt798x-filogic-xiaomi_redmi-router-ax6000-squashfs-sysupgrade.bin
CatWrt.v23.2.ARM-rockchip-armv8-fastrhino_r66s-squashfs-sysupgrade.img.gz
不同固件名字很容易看出來,這裡就不過多贅述;
名字#
x86_64
和 x64
是計算機 x86 架構的 64 位的鏡像,一般固件都不是 32 位;
R23.4
和 v23.8
就是版本號的意思,越對的上就越新;
generic
就是通用版本的意思;
combined
是合成版的意思包括引導系統等;
xiaomi_redmi-router-ax6000
和 fastrhino_r68s
是產品名字和型號,非 x86 機型;
mt798x-filogic
和 ramips-mt7621
指芯片架構或名字亦或者系列;
啟動 & 引導#
我們推薦所有新的機器都使用 EFI 進行啟動,後續教程基本上都是基於 EFI 來寫;
新機器默認開啟 UEFI 你裝 BIOS 版本反而會卡引導,具體可以詢問售賣機器的客服如何開啟 UEFI。
squashfs-combined
為傳統 BIOS 引導啟動;
squashfs-combined-efi
為 EFI 引導啟動;
EFI 是比 UEFI 的更老版本支持高清啟動,老硬件或者虛擬機可以考慮傳統 BIOS 引導啟動比較方便,一般的 BIOS 版本不會額外標註;
格式#
rootfs.img.gz
文件是適用於 Docker,LXC 容器的文件,可以將系統容器化部署;
img.gz
文件是壓縮文件,可以解壓成 img 文件,常見於下載時用於減少網絡負載,線上升級時搭配安裝;
img
文件是物理機單系統或者虛擬機寫盤使用的鏡像,是最常見的格式;
建議使用 IMG 寫盤工具 在 WEPE 中進行安裝或者 StarWind V2V Converter 在虛擬機中安裝;
vmdk
文件是 VMware 虛擬機的虛擬硬盤文件,其他系統也可以用 (PVE);
qcow2
文件是 PVE 或 KVM 虛擬機的虛擬硬盤文件,導入到 PVE 轉換 RAW 文件即可使用;
vhdx
文件是 hype-v 虛擬機的虛擬硬盤文件,適用於宿主機是 Windows Pro 專業版;
bin
為二進制鏡像文件
initramfs-kernel
是臨時文件系統包括了 Linux 核心完成基礎功能,用於在系統中更新 squashfs 完整版覆蓋;
squashfs
是使用 SquashFS Overlay 的文件系統
rootfs0
是根文件系統,類似於 sqfs 但是沒有內核
kernel1
是內核
分區佈局#
::: warning
僅使用於 mt798x,需要 UBOOT 支持,這裡以 Redmi AX6000 舉例。
:::
stock layout
原版 OpenWrt 分區,a&b 最小的分區,打對折大概 50-60 MB;
OpenWrt U-Boot layout
大分區版本 110MB,CatWrt 使用的這個;
custom U-Boot layout
也可以叫 ubootmod 比大分區版本還大一點 122.5MB,不包含壞塊管理 NMBM。
結合起來#
CatWrt.v23.8.x86_64-squashfs-combined-efi.img.gz
= CatWrt 發行版 Openwrt 的 v23.8 版本 (23 年 8 月發布),適用架構 x86 64 位,文件系統是 sqfs 的組合固件,使用 EFI 進行引導啟動 (高清啟動),使用 img 封裝,最終由 gz 壓縮。
CatWrt.v23.8.mt798x-filogic-xiaomi_redmi-router-ax6000-squashfs-sysupgrade.bin
= CatWrt 發行版 Openwrt 的 v23.8 版本 (23 年 8 月發布),適用芯片 mt798x 這裡的 x 是指 mt79 下的各種處理器集合,是紅米 AX6000 的 sqfs 固件,在 UBOOT 或者系統升級中升級。
此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://www.miaoer.net/posts/blog/format-openwrt