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
OpenWrt_icon.png

はじめに

本ツールについて

OpenWrtのカスタムビルド用キッティングツールです
イメージビルドからパッケージインストール、各種設定まで対応しています
IPv6 IPoE接続(MAP-E/DS-Lite)の自動設定機能も入っています

ライセンス

MITライセンス(商用利用可)/ GPLv2(OpenWrt部分)
詳細: LICENSE

ファームウェア(イメージファイル)について

本ツールで生成されるファームウェアは、公式ASUがコンパイルしたバイナリです
※いわゆる野良ビルドではない

初心者対応構成

掲示板

既知の問題

UCI-defaults:
 uci-defaults (setup.sh): 20KB制限
 ※ 制限対象: ASUのdefaultsフィールド

SNAPSHOTビルド:
 週末(金曜日~日曜日)はエラーが出やすい為ビルドは週頭がおススメ
 ※パッケージなど入れ替えタイミング

aios2について

現在β版試験運用中

フラッシュ&インストールシステム「焼いたらMAP-E

リポジトリ (GitHub)

site-u2023.github.io

システム構成図

ランディングページ(ポータルサイト)

site-u.pages.dev/

landingpage.png

初期設定 (ターミナル用)

プロトコルハンドラー登録
※ブラウザからターミナルのリンクを開けるようにする

  • レジストリ登録
    セレクターでWindowsを選択 > 開く > ダウンロード > インストール (ダブルクリック)

  • レジストリ削除
    delete.reg > Download raw file (ダウンロード) > インストール (ダブルクリック)


キッティングツール(カスタムイメージビルダー)

site-u.pages.dev/www/

builder.png

機能比較 公式ビルダー カスタムビルダー
基本機能
デバイス検索
バージョン選択
パッケージ追加 手動入力 プリセット + 手動入力
初回起動時設定追加 手動入力 自動生成 + 手動編集
国コード自動設定 ×
言語コード自動設定 ×
タイムゾーン自動設定 ×
ゾーンネーム自動設定 ×
ISP自動判定 ×
日本専用機能
DS-Lite自動設定 × ネットワーク自動構成API連携
MAP-E自動設定 × ネットワーク自動構成API連携
map.shパッチ適用 × ニチバン(ポート枯渇/SNATエラー)対策
高度な機能
設定インポート/エクスポート × テキスト形式
ASUサーバー生存確認 × リアルタイム表示
バグ対応
IPv4アドレス変更 × SNAPSHOT対応済み
技術仕様
uci-defaultsサイズ制限 20KB 13KB実装/20KB
APIサーバー ASU公式 ASU公式 + 独自API
ホスティング OpenWrt公式 Cloudflare Pages
オープンソース GitHub公開 GitHub公開

インストールされたパッケージ (POSTINST_SH.md)

初回起動時に実行されるスクリプト (SETUP_SH_JA.md)

コンソールツール (パッケージインストール・設定)

aios2_console.png
mainmenu.png

設定構造 (CONFIGURATION_STRUCTURE.md)

利用方法

ランディングページ利用の場合 ※要プロトコルハンドラー登録

  • ターミナル (Windows用) > セレクターでaios2を選択 > 開く

コンソール利用の場合

  • パワーシェル起動:キー入力:Win+x > a > はい

  • コンソールログイン (パワーシェル)
    ※192.168.1.1以外の場合、以下の形式で入力後にワンライナーを入力下さい

$ip="192.168.*.*"
  • コンソールログイン (192.168.1.1用)
    万能型ワンライナー
if(!$ip){$ip="192.168.1.1"}; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL -o GlobalKnownHostsFile=NUL -o HostKeyAlgorithms=+ssh-rsa -tt root@$ip
  • aios2実行
    Cloudflare Pages
mkdir -p /tmp/aios2 && wget --no-check-certificate -O /tmp/aios2/aios2.sh "https://site-u.pages.dev/www/aios2.sh" && chmod +x /tmp/aios2/aios2.sh && /tmp/aios2/aios2.sh
繋がらない場合
  • GitHub Pages (デプロイ元)
mkdir -p /tmp/aios2 && wget --no-check-certificate -O /tmp/aios2/aios2.sh "https://raw.githubusercontent.com/site-u2023/site-u2023.github.io/main/www/aios2.sh" && chmod +x /tmp/aios2/aios2.sh && /tmp/aios2/aios2.sh

永続化
cat << 'EOF' > /usr/bin/aios2
#!/bin/sh
CONFIG_DIR="/tmp/aios2"
mkdir -p "$CONFIG_DIR"
CACHE_BUSTER="?t=$(date +%s)"
wget --no-check-certificate -O "$CONFIG_DIR/aios2.sh" "https://site-u.pages.dev/www/aios2.sh${CACHE_BUSTER}"
chmod +x "$CONFIG_DIR/aios2.sh"
sh "$CONFIG_DIR/aios2.sh"
EOF
chmod +x /usr/bin/aios2
sh /usr/bin/aios2


旧版

Qiita

GitHub


ネットワーク自動構成API

auto-config.site-u.workers.dev/

auto-config.js (DB部分一部省略)

共有リソース

/www
config.js

/post-install

/uci-defaults

/tui

/langs

公式ASUサーバー

sysupgrade.openwrt.org/overview

  • オンライン:正常応答(空白画面)
  • オフライン:応答なし

サンプルコード

コンソール設定用

接続情報確認スクリプト(全JSON出力)
#!/bin/sh
cat > "/tmp/openwrt-network-auto-config.sh" << 'SCRIPT_END'
#!/bin/sh
set -eu
echo "情報を取得中..."
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 "COUNTRY=$(echo "$API_RESPONSE" | jsonfilter -e '@.country')"
echo "REGION_NAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.regionName')"
echo "REGION_CODE=$(echo "$API_RESPONSE" | jsonfilter -e '@.region')"
echo "TIMEZONE=$(echo "$API_RESPONSE" | jsonfilter -e '@.timezone')"
echo "ZONENAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.zonename')"

# --- 接続情報 ---
echo "IPV4=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv4')"
echo "IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv6')"
echo "ISP=$(echo "$API_RESPONSE" | jsonfilter -e '@.isp')"
echo "AS=$(echo "$API_RESPONSE" | jsonfilter -e '@.as')"

# --- DS-Lite (Transix/Xpass/v6コネクト) ---
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 "AFTR_PEERADDR=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.peeraddr')"
# ★追加: 最適な設定用アドレス(IP優先/FQDN)
echo "AFTR_ADDRESS=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrAddress')"

# --- MAP-E (v6プラス/OCN等) ---
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')"
# ★追加: 内部計算されたオフセット(JSON出力設定によっては表示されない場合あり)
echo "MAPE_CALC_OFFSET=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.calculatedOffset')"
# ★追加: GUAプレフィックス(MAP-E環境下でのGUA利用時)
echo "MAPE_IPV6_PREFIX_GUA=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix_gua')"
SCRIPT_END

sh "/tmp/openwrt-network-auto-config.sh"

MAP-E(v6プラス/OCN等)
#!/bin/sh
set -e

# パッケージのインストール
PKGS="map coreutils-sha1sum"
if command -v opkg >/dev/null 2>&1; then
    for pkg in $PKGS; do
        opkg list-installed | grep -q "^$pkg " || NEED_INSTALL="$NEED_INSTALL $pkg"
    done
    [ -n "$NEED_INSTALL" ] && opkg update && opkg install $NEED_INSTALL
fi
if command -v apk >/dev/null 2>&1; then
    for pkg in $PKGS; do
        apk info -e $pkg 2>/dev/null || NEED_INSTALL="$NEED_INSTALL $pkg"
    done
    [ -n "$NEED_INSTALL" ] && apk update && apk add $NEED_INSTALL
fi

# 変数の定義
WAN="$(uci -q get network.wan.device || echo wan)"
MAPE="mape"
MAPE6="mape6"

# APIからMAP-E情報を取得
API_RESPONSE=$(wget -qO- https://auto-config.site-u.workers.dev/)
mape_br=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.brIpv6Address')
mape_ipv4_prefix=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4Prefix')
mape_ipv4_prefixlen=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4PrefixLength')
mape_ipv6_prefix=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix')
mape_ipv6_prefixlen=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6PrefixLength')
mape_ealen=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.eaBitLength')
mape_psidlen=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psidlen')
mape_psid_offset=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psIdOffset')
mape_gua_prefix=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix_gua')

# Network設定
uci batch <<EOF
set network.wan.disabled='1'
set network.wan.auto='0'
set network.wan6.disabled='1'
set network.wan6.auto='0'
set network.${MAPE6}=interface
set network.${MAPE6}.proto='dhcpv6'
set network.${MAPE6}.device='${WAN}'
set network.${MAPE6}.reqaddress='try'
set network.${MAPE6}.reqprefix='auto'
set network.${MAPE}=interface
set network.${MAPE}.proto='map'
set network.${MAPE}.maptype='map-e'
set network.${MAPE}.peeraddr='${mape_br}'
set network.${MAPE}.ipaddr='${mape_ipv4_prefix}'
set network.${MAPE}.ip4prefixlen='${mape_ipv4_prefixlen}'
set network.${MAPE}.ip6prefix='${mape_ipv6_prefix}'
set network.${MAPE}.ip6prefixlen='${mape_ipv6_prefixlen}'
set network.${MAPE}.ealen='${mape_ealen}'
set network.${MAPE}.psidlen='${mape_psidlen}'
set network.${MAPE}.offset='${mape_psid_offset}'
set network.${MAPE}.mtu='1460'
set network.${MAPE}.encaplimit='ignore'
set network.${MAPE}.legacymap='1'
set network.${MAPE}.tunlink='${MAPE6}'
EOF

# GUAプレフィックスが存在する場合のみ設定
if [ -n "${mape_gua_prefix}" ]; then
    uci -q set network.${MAPE6}.ip6prefix="${mape_gua_prefix}"
fi

uci commit network

# DHCP設定
uci batch <<EOF
set dhcp.${MAPE6}=dhcp
set dhcp.${MAPE6}.interface='${MAPE6}'
set dhcp.${MAPE6}.master='1'
set dhcp.${MAPE6}.ra='relay'
set dhcp.${MAPE6}.dhcpv6='relay'
set dhcp.${MAPE6}.ndp='relay'
set dhcp.${MAPE6}.ignore='1'
set dhcp.lan.ra='relay'
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
set dhcp.lan.force='1'
commit dhcp
EOF

# Firewall設定
uci batch <<EOF
del_list firewall.@zone[1].network='wan'
del_list firewall.@zone[1].network='wan6'
add_list firewall.@zone[1].network='${MAPE}'
add_list firewall.@zone[1].network='${MAPE6}'
set firewall.@zone[1].masq='1'
set firewall.@zone[1].mtu_fix='1'
commit firewall
EOF

# map.shの修正
MAP_SH="/lib/netifd/proto/map.sh"  
EXPECTED_HASH="7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4"
ACTUAL_HASH=$(sha1sum "$MAP_SH" | awk '{print $1}')
if [ "$ACTUAL_HASH" = "$EXPECTED_HASH" ]; then
cp "$MAP_SH" "$MAP_SH.bak"
sed -i '1a # github.com/fakemanhk/openwrt-jp-ipoe\nDONT_SNAT_TO="0"' "$MAP_SH"
sed -i 's/mtu:-1280/mtu:-1460/g' "$MAP_SH"
sed -i '137,158d' "$MAP_SH"
sed -i '136a\
\t  if [ -z "$(eval "echo \\$RULE_${k}_PORTSETS")" ]; then\
\t    json_add_object ""\
\t      json_add_string type nat\
\t      json_add_string target SNAT\
\t      json_add_string family inet\
\t      json_add_string snat_ip $(eval "echo \\$RULE_${k}_IPV4ADDR")\
\t    json_close_object\
\t  else\
\t    local portcount=0\
\t    local allports=""\
\t    for portset in $(eval "echo \\$RULE_${k}_PORTSETS"); do\
\t\tlocal startport=$(echo $portset | cut -d"-" -f1)\
\t\tlocal endport=$(echo $portset | cut -d"-" -f2)\
\t\tfor x in $(seq $startport $endport); do\
\t\t\tif ! echo "$DONT_SNAT_TO" | tr " " "\\n" | grep -qw $x; then\
\t\t\t\tallports="$allports $portcount : $x , "\
\t\t\t\tportcount=`expr $portcount + 1`\
\t\t\tfi\
\t\tdone\
\t    done\
\t\tallports=${allports%??}\
\t    nft add table inet mape\
\t    nft add chain inet mape srcnat {type nat hook postrouting priority 0\\; policy accept\\; }\
\t\tlocal counter=0\
\t    for proto in icmp tcp udp; do\
\t\t\tnft add rule inet mape srcnat ip protocol $proto oifname "map-$cfg" counter packets 0 bytes 0 snat ip to $(eval "echo \\$RULE_${k}_IPV4ADDR") : numgen inc mod $portcount map { $allports }\
\t    done\
\t  fi' "$MAP_SH"
fi

echo "MAP-E及びmap.sh設定が完了しました"
echo "何かキーを押すと再起動します"
read dummy
reboot

DS-Lite(Transix/Xpass/v6コネクト等)
#!/bin/sh
set -e

# パッケージのインストール
PKGS="ds-lite"
if command -v opkg >/dev/null 2>&1; then
    for pkg in $PKGS; do
        opkg list-installed | grep -q "^$pkg " || NEED_INSTALL="$NEED_INSTALL $pkg"
    done
    [ -n "$NEED_INSTALL" ] && opkg update && opkg install $NEED_INSTALL
fi
if command -v apk >/dev/null 2>&1; then
    for pkg in $PKGS; do
        apk info -e $pkg 2>/dev/null || NEED_INSTALL="$NEED_INSTALL $pkg"
    done
    [ -n "$NEED_INSTALL" ] && apk update && apk add $NEED_INSTALL
fi

# 変数の定義
WAN="$(uci -q get network.wan.device || echo wan)"
DSL="dsl"
DSL6="dsl6"

# APIからDS-Lite AFTR情報を取得
API_RESPONSE=$(wget -qO- https://auto-config.site-u.workers.dev/)
dslite_aftr_address=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrAddress')

# Network設定
uci batch <<EOF
set network.wan.disabled='1'
set network.wan.auto='0'
set network.wan6.disabled='1'
set network.wan6.auto='0'
set network.${DSL6}=interface
set network.${DSL6}.proto='dhcpv6'
set network.${DSL6}.device='${WAN}'
set network.${DSL6}.reqaddress='try'
set network.${DSL6}.reqprefix='auto'
set network.${DSL}=interface
set network.${DSL}.proto='dslite'
set network.${DSL}.peeraddr='${dslite_aftr_address}'
set network.${DSL}.tunlink='${DSL6}'
set network.${DSL}.mtu='1460'
set network.${DSL}.encaplimit='ignore'
commit network
EOF

# DHCP設定
uci batch <<EOF
set dhcp.${DSL6}=dhcp
set dhcp.${DSL6}.interface='${DSL6}'
set dhcp.${DSL6}.master='1'
set dhcp.${DSL6}.ra='relay'
set dhcp.${DSL6}.dhcpv6='relay'
set dhcp.${DSL6}.ndp='relay'
set dhcp.${DSL6}.ignore='1'
set dhcp.lan.ra='relay'
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
set dhcp.lan.force='1'
commit dhcp
EOF

# Firewall設定
uci batch <<EOF
del_list firewall.@zone[1].network='wan'
del_list firewall.@zone[1].network='wan6'
add_list firewall.@zone[1].network='${DSL}'
add_list firewall.@zone[1].network='${DSL6}'
set firewall.@zone[1].masq='1'
set firewall.@zone[1].mtu_fix='1'
commit firewall
EOF

echo "DS-Lite設定が完了しました"
echo "何かキーを押すと再起動します"
read dummy
reboot

AdGuard Home(ネットワーク広告ブロック)

実行ファイル

設定ファイル

説明

adguardhome.sh実行

mkdir -p /tmp && wget --no-check-certificate -O /tmp/adguardhome.sh "https://site-u.pages.dev/www/custom-scripts/adguardhome.sh" && chmod +x /tmp/adguardhome.sh && sh /tmp/adguardhome.sh

事例(ペルソナ)

OpenWrt初学者の場合

焼いたらMAP-E

動機:

  • 出来るだけ簡単確実に作りたい

環境:

事前準備:

  • 不要

手順:

  • ビルダー起動:キッティングツールを開く
  • デバイス選択:デバイス名を入力、または設定ファイルをインポート
  • ビルド実行:ビルドをリクエストを実行
  • フラッシュ:生成されたFACTORYイメージをデバイスの管理画面からアップロード
  • OpenWrt化完了:自動再起動後、インターネット利用可能
    • Wi-Fi接続:SSID:OpenWrt / パスワード:password
  • 管理画面ログイン:http://openwrt.lan

豆知識:

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

SNAPSHOTでLuCIを初回起動時から利用したい場合

SNAPSHOTも「LuCi入ってる!」

動機:

  • コマンド入力は不慣れなので最初からLuCIを使いたい

環境:

  • OpenWrt化予定デバイス:Buffalo WSR-6000AX8
    ※デバイスサポートが追加されたばかりでSNAPSHOTしかない

手順

  • ビルダー起動:キッティングツールを開き、SNAPSHOTを選択
  • デバイス選択:デバイス名を入力
  • パッケージ確認:Post-Install (Package installation script)を展開
  • LuCI及び日本語化パッケージがセット済み
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-mt7915e kmod-mt7986-firmware mt7986-wo-firmware luci luci-app-ttyd openssh-sftp-server luci-mod-dashboard luci-app-attendedsysupgrade owut map coreutils-sha1sum luci-i18n-base-ja luci-i18n-package-manager-ja luci-i18n-firewall-ja luci-i18n-ttyd-ja luci-i18n-dashboard-ja luci-i18n-attendedsysupgrade-ja

豆知識:

  • SNAPSHOT版はLuCIが入っていない
  • ビルド時の post-install スクリプトは、LuCIを含む任意のパッケージを自動インストールさせることができる

公式

開発経緯

設計思想

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

OpenWrt公式ビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティング だよね
光岡風な手法だが自分で使ってて便利過ぎて嗤う
焼いたらMAP-E だわ

あとがき

今後は、ファームウェアセレクターを主流に作ろうと思う
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を統合して、同一エンジン、同一データベースで公式をフックしないで、完全独自仕様で作る予定

  • 2025年11月12日
    aios-tui.shリネーム (aios2.sh)もTUI版はほぼ完成した。
    text版がやっつけだから続けて作ろう。
    最初からwhiptailで作れば簡単だった説・・・
    ところで、このシステム全体の肝って実はネットワーク自動構成APIなんだよね
    でもこれは既存資産(internet-mape.shなど)が有ったのでAIを使って正味数十分で完成した
    つまりUI作成にほぼ全リソースを使ってる訳だけど、このAPIでmap-e設定だけで超簡単に作るならニチバン対策付きでも100行(サンプル)で作れちゃうんだよな・・・
    map.sh無しなら60行!!
    UI作るの阿呆らしくもなってくるな。。。

  • 2025年11月13日
    setup.shのmap.shパッチ適用前にmap.shをsha1sumで検証する事にした
    これで懸念だったmap.sh更新時にネットワークが不安定になる要素を排除出来た

  • 2025年11月16日
    たまに調べものの検索で、自分のスクリプトを使って頂いているのを見つけると正直嬉しいですね
    知的好奇心のまま作ってはいるが、折角の成果物、使って頂ければそれにこしたことはないです
    そういえば、このITmediaの記事もスクリプトをリニューアルするきっかけだったなー
    当時は自分が10G回線を持っていなかったし、かつスキルも無かったので対応しきれなかったですね
    結果的にも、この記事がきっかけで、このネットワーク自動構成APIが完成したようなものでしたね
    そろそろ次のお題を探そうかな

  • 2025年11月20日
    そういえば、SNAPSHOTもLuCIを標準実装してた
    LuCi自体をパッケージの項目化した方が良いのかな
    まあ削りたい人はPostinstから削れば良いだけだけどね
    逆に消極的SNAPSHOTユーザー(SNAPSHOTしか選択肢がないデバイス)には良いだろうね
    SNAPSHOTも「LuCi入ってる!」が新しいキャッチです
    aiosTUI版にカスタムフィードパッケージを実装した
    あとはカスタムスクリプトの項目を作ってAdGuardHomeとかのスクリプト群を実装する予定だけど、実装方法で考え中、、、

  • 2025年11月30日
    aios2に以下の機能を追加した

    • カスタムスクリプト:
      AdGuardHomeを追加した
    • 復元ポイント:
      パッケージ追加・設定追加変更などで自動作成するようにした
      また、一意の日付から復元ポイントを選択できるようにした
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?