0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenWrt キッティング ファームウェア ビルド

Last updated at Posted at 2025-08-12

:flag_jp:Japanese article

はじめに

初心者対応構成

開発経緯

何も知らないド素人がひたすら検索&&モノマネ乞食を初めて早二年が過ぎた
正直スキルはたいして向上していないがAIの使い方は多少なり学んだ
OpenWrt専用の初期設定ツールも、nodeで自動化から始まり、パッケージ化なども試した
オールパッケージ化しても良いけど、メンテなんてとても手が回らないのも目に見えている
ところでそもそも、どれもしっくりこない
初期設定とは最初に一度しか使わないのだから、わざわざパッケージをインストールする必要性が無い
そしてパッケージだろうが、ダウンロードだろうが、先にネットワークに接続しないとならない
しかし、AAAAがー、RAがー、となり接続出来ない
つまり、鶏卵なわけだ

OpenWrt公式ファームウェアビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティングだよね
自分で使ってて便利過ぎて嗤う

2025年10月13日実運用開始

機能追加予定:ビルドエラー詳細内容

既知の問題

ファームウェアセレクター:
 uci-defaults (setup.sh): 20KB制限
 ※ 制限対象: ASUのdefaultsフィールド

ペルソナ

OpenWrt初学者の場合

環境:

事前準備:
なし

手順:

  • カスタムファームウェアセレクターを開く
    • デバイス名入力欄にELECOM WRC-X3200GST3と入力
      または、
    • elecom_wrc-x3200gst3_ja.txt📥インポートにアップロード
  • ビルドをリクエストをクリック
    • ビルド成功
  • FACTORYイメージをダウンロード
  • WRC-X3200GST3の管理画面からFACTORYイメージをフラッシュ
    • フラッシュ後自動再起動
  • OpenWrt化完了 ※インターネット利用可(MAP-E接続設定完了済み)
    • Wi-Fi接続
      SSID:OpenWrt / パスワード:password
      OpenWrt管理画面ログイン:http://openwrt.lan

豆知識:FACTORYイメージが利用出来るデバイスの場合、ストックファームウェアの「ファームウェア更新」などから直接フラッシュ可能
※デバイスを文鎮化させるリスクを低減させます

フラッシュ&インストールシステム

Install_system.jpg

ランディングページ

ランディングページ

キッティングツール

デバイス用のOpenWrtカスタムファームウェアをダウンロード

サンプル
#!/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

site-u2023.github.io
site-u2023.github.io/www

公式

あとがき

今後は、ファームウェアセレクターを主流に作ろうと思う
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の部分のソースを別ファイル化してグローバル化させるか
    要件等だなあ
    現在オフラインですね、、、
    ASU.jpg

  • 2025年10月13日
    大きなバグは無さそうなので、これで一応は開発完了かな
    今後、ASUサーバーのエラーを見つけ次第、そのエラーの詳細表示するように修正する予定

次に既存システムの集大成で、ファームウェアビルダーとaiosを統合して、同一エンジン、同一データベースで公式をフックしないで、完全独自仕様で作る予定

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?