OpenWrt搭載デバイスに外部USBメモリで記憶容量を増やす

かつて携帯電話で使われていたであろうmicro SDカードをUSB 2.0アダプタを介してしつこく利用

かつて携帯電話で使われていたであろうmicro SDカードをUSB 2.0アダプタを介してしつこく利用

OpenWrt搭載デバイスに外部USBメモリで記憶容量を増やす方法。もちろん “Rootfs on External Storage (extroot) [OpenWrt Wiki]” を見れば必要な情報は全て得られるのだが、OpenWrtのWikiではコマンドラインでやるように指示があるところがWeb管理インタフェースLuCIで簡単に済ませられるようになっているところがある。ここでは極力LuCIでの操作で済ませ、コマンドラインでの操作は最低限にする手順を示す。OpenWrtのバージョンは15、すなわちChaos Calmerが前提。

USB micro SDカードアダプタを挿してもさほどでっぱりのないNexx WT3020F

USB micro SDカードアダプタを挿してもさほどでっぱりのないNexx WT3020F。テプラが大活躍。

一旦操作不能状態に陥っていながらなんとか復活させたポータブル無線LANルータNexx WT3020Fで実際に自分がやった手順だが、同じくOpenWrt化したバッファロー無線LANルーターWZR-HP-AG300Hでもつつがなく再現できるように記録しておくのがこの記事の最大の目的だったりする。WT3020Fについては、記憶容量追加はついでにやるのに過ぎない。以前携帯電話で使っていたのであろう128MBのmicro SDカードがあったので、2015年初頭に97¢で購入した(現在78¢)USB 2.0 micro SDカードアダプタを使って有効利用したいだけ。このような用途でもなければもはや容量わずか128MBのmicro SDカードなど利用しようがない。WZR-HP-AG300Hについては先日85¢で購入した(現在$1.04)同様のmicro SDカードアダプタ(ただしこちらはSDXCカードにも対応)を別の128MBのmicro SDカードと併用するつもり。現在特に計画はないが、WT3020Fに比較してよりパワフルなWZR-HP-AG300Hでは何か面白いことができるかもしれない。

前置きが長くなったが具体的手順は以下の通り。

  1. Extroot導入前の空き容量

    Extroot導入前の空き容量

    USBメモリはLinux機でext4などでフォーマット。今回はしなかったが、スワップを別途用意するならパーティションを切る。パーティションを切った場合以下の話のデバイスファイル名が変わってくるので注意。

  2. 後で容量が増えたことが簡単に確認できるよう、OpenWrt機のLuCIで System -> Software で空き容量を見ておく(図)。
  3. そのUSBメモリを挿した上で再起動したOpenWrt機にSSHでログインしコマンド・プロンプトで以下を実行(パーティションを切った場合は/dev/sdaではなく/dev/sda1などとなるので適宜読み替えること):
    # opkg update; opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras
    # mount /dev/sda /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt
  4. 再起動。
  5. LuCIにて System -> Mount Points のMount Pointsの項を見ると “UUID:….” という項目ができているはずなので、それの Edit ボタンを押して図にあるような変更をし、Save & Apply ボタンを押す。念のため再起動。

    Mount Entryの設定

    Mount Entryの設定

  6. LuCIで System -> Mount Points のページで /dev/sda が /overlay にマウントされていることを確認(図)。さらに、 System -> Software で空き容量が増えていることを確認(図)。
    マウントが意図したようにされていることを確認

    マウントが意図したようにされていることを確認

    Extroot導入後ストレージ容量が増えていることを確認

    Extroot導入後ストレージ容量が増えていることを確認

  7. 超大容量化に成功したこの自分の偉業にしばし感激に浸る。

以上。以前同様のことをしてそこそこ苦労した記憶があるが、LuCIで大半の作業ができるようになったこともあり、楽ちんになった。

スワップについては、今回WT3020では設定しなかった。WZR-HP-AG300Hについてはやっておく価値があるかも。

また、今回はパーティションを切らなかったが、後々考えてみると切って別途データ領域を用意するのは賢明なことだったかもしれない。OpenWrtはシステムのアップグレードをする際、何もしないと管理者による設定等は保存されない。それでも一応その方法はあるにはある。しかしopkgパッケージ・マネジャーを使用せずに、完全に自力でインストールしたアプリケーションについては、管理者にバックアップとリストアが全て委ねられる。ならば、そういったものはUSBメモリ上の専用領域にインストールするようにしておけば、OpenWrtのシステムアップグレード後、必要があればリンクを張り直すだけで回復できるはず。そのアプリケーションがOpenWrtの更新に耐えられることが条件。もっとも、今回のようにたかだか128MBしか容量がなければあまり意味がなかろう。もう少し大きな容量のものを使う際には意味を持ってくるであろう考慮点。

ちなみに、OpenWrt上のテキストエディタとしてEmacsクローンのzileを使っているが、ターミナル情報が不足して動作しない場合はterminfoパッケージをインストールすると使えるようになる。

先日購入したUSB 2.0 Micro SD/SDXCカードリーダ。85¢。以前のものよりさらに小型化されてる。なくしそう…。

先日購入したUSB 2.0 Micro SD/SDXCカードリーダ。85¢。以前のものよりさらに小型化されてる。なくしそう…。

追記: 上記の先日85¢で購入した(現在$1.04)同様のmicro SDカードアダプタ(ただしこちらはSDXCカードにも対応)が到着した。上のアダプタより更に小型化している。

広告