WRT54G の準備
リンクシス WRT54G V2 は、すでに USB ポートを設置していますので今回の検証に最適でした。前回 USB ポートを設置していたときには、外部から 5 ボルトの電源を供給していましたが、今回の検証では三端子レギュレータを使用して内部の 12 ボルト電源から USB 用の 5 ボルトを供給するようにしています。そして使用する USB メモリは、Linux マシン上で Ext4 フォーマットを事前に行なって USB ポートへ接続しておきます。
extroot を検証中の WRT54G のボード |
どのファームウェアを使用するか
今回の ExtRoot の検証では、WRT54G V2 で USB ポートの動作実績のある OpenWrt Attitude Adjustment 12.09 (openwrt-brcm47xx-squashfs.trx) を使用しました。外部ストレージから起動するとは言っても、一番最初はオンボード上のフラッシュメモリから起動して外部ストレージを認識するところまでは最低限必要な部分です。なお OpenWrt Barrier Breaker 14.07 は 4MB のフラッシュメモリが搭載されている WRT54G に USB 関係のカーネルモジュールがインストールすることが出来ないため、この ExtRoot を動作させることが難しいようです。USB メモリへ ExtRoot 化
実際の extroot 化に当たって次のウェブサイトを参考にしました。特に三番目の TP-Link WR703N の事例を紹介したウェブサイトを基本にして extroot の検証作業を行いました。Linksys WRT54G, WRT54GL and WRT54GS [OpenWrt Wiki]
http://wiki.openwrt.org/toh/linksys/wrt54g
Rootfs on External Storage (extroot) [OpenWrt Wiki]
http://wiki.openwrt.org/doc/howto/extroot
How to increase storage on TP-Link WR703N with ExtRoot
http://en.code-bude.net/2013/02/16/how-to-increase-storage-on-tp-link-wr703n-with-extroot/
次の順番でコンソール上からインストールのためのコマンドを実行しました。
USB 関連のモジュール類のインストール
# opkg update
# opkg install kmod-usb-ohci kmod-usb-storage kmod-usb-core
# opkg install kmod-fs-ext4 block-mount
再起動させて USB メモリを認識させます。
# reboot
起動後 USB メモリを認識しているか確認します。
# ls /dev/sda1
オンボード上のフラッシュメモリからシステムを USB メモリへコピーします。
# mkdir -p /mnt/sda1
# mount /dev/sda1 /mnt/sda1
# mkdir -p /tmp/cproot
# mount --bind / /tmp/cproot
# tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -xf -
# umount /tmp/cproot
# umount /mnt/sda1
起動時に USB メモリを自動的にマウントさせる設定をします。
/etc/config/fstab を vi エディタで "config mount" の部分を編集します。
# vi /etc/config/fstab
- 修正場所 - (enabled_fsck を追記しました)
option target /home --> /
option enabled 0 --> 1
option enabled_fsck 0 --> 1
以上でインストール終了です。再起動させて USB メモリ上にルートが存在しているか確認します。
root@WRT54G:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1968736 72588 1797524 4% /
/dev/root 2048 2048 0 100% /rom
tmpfs 14636 68 14568 0% /tmp
tmpfs 512 0 512 0% /dev
/dev/sda1 1968736 72588 1797524 4% /
設定画面の [MountPoints] です。 /dev/sda1 が / へマウントされています。 |
ソフトウェアの設定画面では、大量の空き領域があります。 |
この ExtRoot でフラッシュメモリの容量不足を解決できるようになりました。
[ 問題発生 ] 2015-08-17
何度も電源の切断と投入を繰り返していると USB メモリ内容が破壊されてしまうようです。強力なジャーナリング機能を持っている Ext4 フォーマットですが、残念ながら破壊されたデータは復活しないようです。念の為 fstab の設定のところでファイルチェックも行う設定とした方が良さそうです。なおコンソール上から halt コマンドを実行してシステム停止をした後に電源を切った場合は問題ありませんでしたが、実用的ではありません(苦笑)。 ExtRoot による動作は注意した方が良さそうです。[ 電源遮断時の対策 ] 2015-08-18
ExtRoot の /etc/config/fstab の設定でファイルシステムを検査する "option enabled_fsck 1" は有効のようです。halt コマンドを使用せず、直接電源を遮断して再起動させたところ USB メモリのエラーを修復して、正常に起動するようです。修復の様子は起動ログ(dmesg)に残っていました。
[ 21.468000] sd 0:0:0:0: [sda] Attached SCSI removable diskなお halt コマンドでシステムを停止した後、再起動した場合には USB メモリのリカバリはありませんでした。
[ 41.740000] JBD2: Clearing recovery information on journal
[ 41.916000] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
switching to external rootfs
[ 21.476000] sd 0:0:0:0: [sda] Attached SCSI removable disk
[ 41.768000] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
switching to external rootfs
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。