Japanese article
はじめに
初心者対応構成
- Windowsからの導入手順
- スクリプトでの自動設定
-
UCI (ttyd)、Webコンソール (LuCi)、ファイラー (SFTP)にて比較作業がおススメ
開発経緯
何も知らないド素人がひたすら検索&&モノマネ乞食を初めて早二年が過ぎた
正直スキルはたいして向上していないがAIの使い方は多少なり学んだ
OpenWrt専用の初期設定ツールも、nodeで自動化から始まり、パッケージ化なども試した
オールパッケージ化しても良いけど、メンテなんてとても手が回らないのも目に見えている
ところでそもそも、どれもしっくりこない
初期設定とは最初に一度しか使わないのだから、わざわざパッケージをインストールする必要性が無い
そしてパッケージだろうが、ダウンロードだろうが、先にネットワークに接続しないとならない
しかし、AAAAがー、RAがー、となり接続出来ない
つまり、鶏卵なわけだ
OpenWrt公式ファームウェアビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティングだよね
自分で使ってて便利過ぎて嗤う
2025年10月13日実運用開始
機能追加予定:ビルドエラー詳細内容
ペルソナ
OpenWrt初学者の場合
環境:
- インターネット回線契約:NTT フレッツ 光クロス
- OpenWrt化予定デバイス:ELECOM WRC-X3200GST3
※他ネットワーク環境無し
事前準備:
なし
手順:
-
カスタムファームウェアセレクターを開く
- デバイス名入力欄に
ELECOM WRC-X3200GST3と入力
または、 -
elecom_wrc-x3200gst3_ja.txtを📥インポートにアップロード
- デバイス名入力欄に
-
ビルドをリクエストをクリック- ビルド成功
-
FACTORYイメージをダウンロード - WRC-X3200GST3の管理画面からFACTORYイメージをフラッシュ
- フラッシュ後自動再起動
- OpenWrt化完了 ※インターネット利用可(MAP-E接続設定完了済み)
- Wi-Fi接続
SSID:OpenWrt/ パスワード:password
OpenWrt管理画面ログイン:http://openwrt.lan
- Wi-Fi接続
豆知識:FACTORYイメージが利用出来るデバイスの場合、ストックファームウェアの「ファームウェア更新」などから直接フラッシュ可能
※デバイスを文鎮化させるリスクを低減させます
フラッシュ&インストールシステム
ランディングページ
キッティングツール
デバイス用のOpenWrtカスタムファームウェアをダウンロード
-
ASUサーバー
オンライン:正常応答
オフライン:応答なし
サンプル
#!/bin/sh
cat > "/tmp/openwrt-network-auto-config.sh" << 'SCRIPT_END'
#!/bin/sh
set -eu
API_RESPONSE="$(wget -qO- https://auto-config.site-u.workers.dev/)"
echo "NOTICE=$(echo "$API_RESPONSE" | jsonfilter -e '@.notice')"
echo "LANGUAGE=$(echo "$API_RESPONSE" | jsonfilter -e '@.language')"
echo "IPV4=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv4')"
echo "IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv6')"
echo "COUNTRY=$(echo "$API_RESPONSE" | jsonfilter -e '@.country')"
echo "TIMEZONE=$(echo "$API_RESPONSE" | jsonfilter -e '@.timezone')"
echo "ZONENAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.zonename')"
echo "ISP=$(echo "$API_RESPONSE" | jsonfilter -e '@.isp')"
echo "AS=$(echo "$API_RESPONSE" | jsonfilter -e '@.as')"
echo "REGION_NAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.regionName')"
echo "REGION_CODE=$(echo "$API_RESPONSE" | jsonfilter -e '@.region')"
echo "AFTR_TYPE=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrType')"
echo "AFTR_JURISDICTION=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.jurisdiction')"
echo "AFTR_IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrIpv6Address')"
echo "MAPE_BR_IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.brIpv6Address')"
echo "MAPE_EA_BITS=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.eaBitLength')"
echo "MAPE_IPV4_PREFIX=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4Prefix')"
echo "MAPE_IPV4_PLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4PrefixLength')"
echo "MAPE_IPV6_PREFIX=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix')"
echo "MAPE_IPV6_PLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6PrefixLength')"
echo "MAPE_PSID_OFFSET=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psIdOffset')"
echo "MAPE_PSIDLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psidlen')"
echo "MAPE_IPV6_PREFIX_GUA=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix_gua')"
SCRIPT_END
sh "/tmp/openwrt-network-auto-config.sh"
コンソールツール
- aios-tui (whiptail): αバージョン
mkdir -p /tmp/aios && wget -O /tmp/aios/aios-tui.sh "https://raw.githubusercontent.com/site-u2023/site-u2023.github.io/refs/heads/main/www/aios-tui.sh" && chmod +x /tmp/aios/aios-tui.sh && /tmp/aios/aios-tui.sh
GitHub
公式
firmware-selector-openwrt-org
https://github.com/openwrt/firmware-selector-openwrt-org
Attendedsysupgrade Server (GSoC 2017)
https://github.com/openwrt/asu
API
あとがき
今後は、ファームウェアセレクターを主流に作ろうと思う
HTMLなので、機能追加やレイアウトは容易だしね
ふぅぅ、一応ほぼほぼ出来た
「焼いたらMAP-E」がキャッチだな(笑)
細かいデザイン (CSS)は調整が必要だが、大枠は動くね
-
2025年8月17日
あと、設定用スクリプトファイルを階層構造でも用意して入れたら良いかな
最後にINIでインプットアウトプット機能を付与しておしまいかな -
2025年8月24日
ASUサーバーの20KB制限は何気にキツイー
せめて200KBくらいあれば、usteerスクリプトとか組めるのにな
全部で17KBで収まりました -
2025年10月4日
良くも悪くも全く変わらないmap.sh
おかげでmap.shを全文書き出しから差分適用仕様に修正出来たので12.9KBにシェイプ出来た
sha1sum map-21.02.sh map-22.03.sh map-23.05.sh map-24.10.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4 map-21.02.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4 map-22.03.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4 map-23.05.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4 map-24.10.sh
-
2025年10月6日
ペルソナで事例を書いてみたが、OpenWrt化作業時間は正味数分だ、、、 -
2025年10月10日
SNAPSHOTでIPv4アドレスを変更させて焼くと、v4が死んでいた
SNAPSHOTはv4アドレスがCIDR表記(Classless Inter-Domain Routing)形式になった
つまり192.168.1.1/24のように記述する必要があったのにサブネットマスクの部分の/24を入れてなかったので、255.255.255.0が無い状態だったわけですね
ちなみに、公式ビルダーも修正されてないけど、、、 -
2025年10月12日
ASUサーバーの生存確認を追加してみた。
いくつかエラーパターンを仕込んどこうかな
aiosを作り始めてから5カ月経ったが、やっと完成の目途が立った!
というか、エラーパターン作ったら終わりかな
あとは、ISPの部分のソースを別ファイル化してグローバル化させるか
要件等だなあ
現在オフラインですね、、、

-
2025年10月13日
大きなバグは無さそうなので、これで一応は開発完了かな
今後、ASUサーバーのエラーを見つけ次第、そのエラーの詳細表示するように修正する予定
次に既存システムの集大成で、ファームウェアビルダーとaiosを統合して、同一エンジン、同一データベースで公式をフックしないで、完全独自仕様で作る予定
