真的很久沒有在01上面發文章了

還記得上次發文章應該有快要10年了吧
舊的帳號也找不到了......(題外話)
最近稍微玩了一下QNAP這台Router,夠用的AX WIFI與雙口的10G自動協商(1G/2.5G/5G/10G)口等,都讓這台Router有很大的潛力
但是原廠韌體在網路上有遇到許多問題,也有很多是原廠遲遲未解決的
我自己最初是玩J4125軟路由,從Openwrt到RouterOS
但不管是何種系統,終究是軟路由,只要WAN的流量一大,CPU的佔用就往上飆(J4125大概30-50%間飄動),所以最後購入Q301W這台Router來嘗試看看硬路由的魅力

一買來就刷入了對岸的Openwrt系統,不過遇到許多問題,像是WIFI更改Channal重開卡死, Log裡頭一狗票ERROR紀錄等
都讓我對這些已經編譯好的韌體感到絕望

後來轉念一想,我也可以自己編譯韌體,以最小化與不失功能性等作為取向增減系統的功能
於是就出現了這篇文章

Openwrt官方系統在我最初嘗試時是沒有NSS Offload的功能的,換言之就是刷完等於軟路由,WAN的流量還是會透過CPU進行轉發,而不是硬體上的Chip來做這件事情
這樣其實就失去購買這台301W的理由了,而且性能搞不好還比x86差...6000買了個性能低下電腦的概念

一直到看到Openwrt官方論壇的這篇文章中qosmio對IPQ807X系列晶片提供了NSS Offload的支援,與sppmaster對301W的一系列測試,還有AgustinLorenzo提供了基本編譯環境與各項系統基本架構的支援,讓我可以很好的踩在這些巨人的肩膀上,成功編譯我們可以順利穩定使用的系統

至於如何Flash我的這版系統可以參考這個連結的內容,步驟一路走到第5步就好了,10G的韌體我的版本裡頭有附帶~
至於kernel與rootfs這兩個檔案可以透過用WinRAR打開系統更新檔(.bin)來獲得:

所以刷機時的指令會像是這樣:
sudo dd if=/tmp/kernel of=/dev/mmcblk0p1
sudo dd if=/tmp/root of=/dev/mmcblk0p4
sudo fw_setenv current_entry 0 #切換啟動分區到分區0 (不要複製#後面的內容)
sudo fw_setenv boot_0 good #Allow分區0為可啟動 (不要複製#後面的內容)
sudo reboot
這樣一來就會自動重啟,進入到Openwrt的系統了

QNAP這台Router很有趣,這樣刷完分區1還是原廠系統,分區0就是我們所使用的自定義系統(就是雙系統架構拉~),可以使用以下指令切換(在Openwrt中就是利用SSH命令切換)
切換到原廠系統:
sudo fw_setenv current_entry 1 #切換啟動分區到分區1 (不要複製#後面的內容)
sudo fw_setenv boot_1 good #Allow分區1為可啟動 (不要複製#後面的內容)
sudo reboot
切換到自定義系統:
sudo fw_setenv current_entry 0 #切換啟動分區到分區0 (不要複製#後面的內容)
sudo fw_setenv boot_0 good #Allow分區0為可啟動 (不要複製#後面的內容)
sudo reboot
刷完之後需要先拿一台電腦有線連接到Router上,並指定IP位置如下:

然後再進到管理介面中~
管理介面的IP是192.168.50.1(被ASUS系的Router訓練出的習慣


選擇更新韌體,然後選擇剛剛的系統更新檔(.bin結尾)進行更新,等待重啟後再回到管理介面,在終端中(帳號root,無密碼)輸入df -h查看overlayfs是不是掛在/上,而不是/tmp(如果掛在/tmp的話,重啟就會恢復設定,也就是設定無法儲存)

隨後我們還需要進入中輸入以下指令:
uci set dhcp.lan.ignore=0 && uci commit && service dnsmasq restart

這樣一來DHCP伺服器才可以正確啟動(這是AgustinLorenzo Repo中的一個原生Bug,看起來他目前沒有要解決的意思

再來如果是PPPoE連線的話,在設定完PPPoE連線後需要到介面--裝置中,將pppoe-wan的MTU設定成1480(也是一個Bug,比較不會瞬斷,但我也沒有測試沒改會發生甚麼事情



如以一來就大功告成拉,IP位置也可以改回自動取得了~希望大家玩開心

再附上一些系統的截圖:







如果有任何問題,或是有功能需求,都可以在下面討論,有趣的我都可以加入到韌體當中~
2024/7/28更新
後來想到這系列韌體其實是通用IPQ807X系列的處理器
只是針對不同RAM的機型會需要額外的設定
支援列表如下:
Asus RT-AX89X
Buffalo WXR-5950AX12
CMCC RM2-6
Compex WPQ873
Dynalink DL-WRX36
Edgecore EAP102
Linksys MX4200 v1&v2
Linksys MX5300
Linksys MX8500
Netgear RAX120v2
Netgear SXR80
Netgear SXS80
Netgear WAX218
Netgear WAX620
Netgear WAX630
prpl Foundation Haze(?這啥

QNAP 301w (本文使用的)
Redmi AX6(好像也不錯用的樣子)
Spectrum SAX1V1K
Xiaomi AX3600
Xiaomi AX9000(這兩款用戶也多)
Zbtlink ZBT-Z800AX
ZTE MF269
ZYXEL NBG7815
如果有需要上述機型韌體可以在留言提出需求(包括機型本身的Ram大小)
我可以在編譯中加入這些機型的支援~
關於SQM QoS的使用/設定/效果,我放在#17~
P.S. ChangeLog我會放在#1,版本下載點會放在#2
Chris.