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 化した Buffalo WSR-3200AX4S で、追加パッケージのインストールに使える容量を拡張する

Last updated at Posted at 2025-06-15

この記事の目的

この記事は 以前の記事 の続編です。

この記事では CLI コマンドで WSR-3200AX4S の Flash メモリの使用可能領域を拡張する方法を説明します。

イメージを作成して Flash メモリの使用可能領域を拡張する方法は別記事を参照してください。

この記事では 5ch の 【無線 LAN】OpenWrt【強化ファーム】#25#26 の内容を参照し、OpenWrt 化すると追加パッケージに使用できる Flash メモリが 7MB 程度 😵 になってしまう WSR-3200AX4S で、 Tailscale がインストールできる程度に Flash メモリの使用可能領域を拡張する方法 🧙 を説明します。

この記事は、 情報の整理と集約 により可読性を向上させる 🧐 ことを目的としており、スクリプト作成者 をはじめとする多くの方々の知見・貢献を横取りする意図はありません。😉

実行するスクリプト

WSR-3200AX4S に SSH で接続し、以下のスクリプトを実行します。

実行が完了したら mount_vacant_space を有効化するために reboot します。

opkg update
opkg install kmod-mtd-rw

wget -O /etc/init.d/mount_vacant_space https://pastebin.com/raw/XDja96GT
sed -i 's/\r//' /etc/init.d/mount_vacant_space
chmod 755 /etc/init.d/mount_vacant_space
/etc/init.d/mount_vacant_space enable

参考: スクリプト作成者による mount_vacant_space 導入手順説明

Storage はどのように変わるのか

以下はスクリプトの実行前後のスクリーンショットです。

画面の下の方の Storageubi1:dpi という項目が増えています。🧐

  • 領域拡張前
    /overlay 拡張前

  • 領域拡張後
    /overlay 拡張後

ubi1:dpi が空ではなく、1.7MB ほどが使用済みになっているのは ここ の説明通りです。

追加領域を活用するには --force-space オプションが必要

例えば Tailscale をインストールする場合、opkg install tailscale ではなく opkg --force-space install tailscale を実行します。

普通に opkg install tailscale を実行してしまうと、以下のように領域不足のエラーが表示され、インストールに失敗します。😵

root@OpenWrt:~# opkg install tailscale
Installing tailscale (1.80.3-r1) to root...
Collected errors:
 * verify_pkg_installable: Only have 6788kb available on filesystem /overlay, pkg tailscale needs 22730
 * opkg_install_cmd: Cannot install package tailscale.

📌 Tailscale に関する補足

ただし、Admonstrator が提供している Small binary の Tailscale でも問題なく動作することを確認しているため、Tailscale を使用するのであれば最初から Small binary を使用するのがお勧めです。

40MB を超える /overlay 容量が使えるようになったと言っても tailscale update を実行すれば no space left on device が表示され、泣きながら 以下のコマンドで掃除をすることになるので、最初から Small binary を使用することをお勧めします。

rm /root/.cache/tailscale-update/tailscale*.tgz*
rm /usr/sbin/tailscale*.new*

ファームウェア更新時の注意事項

憶えておくべきことは以下の一点。

  • ファームウェアを更新しても /mnt/vacant_space/usr_sbin/ 内のデータは消去されない

そのため、ファームウェア更新時は以下の手順で進む。

  1. 設定のバックアップ (System > Backup / Flash Firmware > Backup)
  2. ファームウェアの更新
  3. mount_vacant_space の再導入
    (/usr/sbin/ コピー時に /mnt/vacant_space/usr_sbin/ の同名ファイルは上書きされるはず。🤔)
  4. 追加パッケージの再インストール

もしファームウェア更新時に拡張用のパーティション(mtd11)を更地にしたければ、上記 2. と 3. の間に以下のコードを実行。

opkg update
opkg install kmod-mtd-rw

MTD_NUM=11
UBI_DEV="ubi1"
UBI_VOLUME="dpi"

insmod mtd-rw i_want_a_brick=1
mtd unlock /dev/mtd${MTD_NUM}

ubiformat /dev/mtd${MTD_NUM}
ubiattach /dev/ubi_ctrl -m $MTD_NUM
ubimkvol /dev/${UBI_DEV} -N $UBI_VOLUME -m

補足

補足 1: Attended Sysupgrade を使えば、ファームウェア更新後も mount_vacant_space の機能を維持できるか 🤔

結論から言えば、mount_vacant_space を使っている環境で Attended Sysupgrade で OpenWrt をアップグレードするべきではない。

理由 1: /etc/init.d/mount_vacant_spaceAttended Sysupgrade 時に消去される

(同じ /etc/init.d/ 内の /etc/init.d/tailscale は消去されないので、なぜ /etc/init.d/mount_vacant_space が消去されるのか原因不明。😵)

理由 2: OpenWrt イメージサイズが大きくなるため、もともと少ない Flash メモリがさらに圧迫される

Tailscale をインストールした WSR-3200AX4S で Attended Sysupgrade を実行したところ、Flash メモリの残容量が 1MB になった。 😵 オールモスト ノースペース レフト オンデバイス. ダ*イット.

補足 2: /usr/sbin 内のデータ削除のために mtd erase WTB で WTB パーティションを初期化したら mount_vacant_space が使えなくなった 😲

この ページ546 を読んで、パーティションのデータを丸ごと消そうと思って mtd erase WTB で WTB パーティション(= mtd11)を初期化したら、 mount_vacant_space が実行できなくなった。 😵

OpenWrt イメージを書き込み直しても状況は変わらず。

いろいろと試してみたところ、以下の手順で回復できることが分かったため報告します。 🫡

👉 以下のコードはパーティションのフォーマットを含んでいます。
フォーマットが不要であれば、ubiformat /dev/mtd${MTD_NUM} の実行は(多分)省略できます。

  1. mount_vacant_space を無効化して再起動

    /etc/init.d/mount_vacant_space disable
    reboot
    
  2. mount_vacant_space が実行できるよう、ubi1 を作成し、ボリュームも作成

    MTD_NUM=11
    UBI_DEV="ubi1"
    UBI_VOLUME="dpi"
    
    insmod mtd-rw i_want_a_brick=1
    mtd unlock /dev/mtd${MTD_NUM}
    
    # umount /mnt/vacant_space
    # ubidetach -p /dev/mtd${MTD_NUM}
    
    ubiformat /dev/mtd${MTD_NUM}
    ubiattach /dev/ubi_ctrl -m $MTD_NUM
    ubimkvol /dev/${UBI_DEV} -N $UBI_VOLUME -m
    
  3. mount_vacant_space を有効化して再起動

    /etc/init.d/mount_vacant_space enable
    reboot
    
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?