OpenWrt に必要なパッケージをインストールしているとディスク容量が不足してきたので、Extroot 機能を使ってディスク容量を拡張しました。もともとルーターは利用できるスペースが少ないので、サーバーをインストールする予定であれば早めに Extroot を適用しておくとよいと思います。
パッケージや設定ファイルが置かれているドライブ /overlay を USB メモリーにコピーして、以後 USB メモリーを /overlay としてマウントして使用します。
コンテンツ
実行環境
- ルーター
- Linksys WRT1900ACS
- OS
- OpenWrt 19.07.3
USB メモリーをストレージとして追加
パッケージをインストール
必要なパッケージをインストールします。root で作業します。
# opkg update
# opkg install kmod-usb-storage kmod-usb-storage-uas usbutils block-mount
USB メモリーを接続し以下のコマンドでデバイスが認識されていることを確認します。
# lsusb -t
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=orion-ehci/1p, 480M
“Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M” が接続された USB メモリーを示しています。
以下のコマンドで USB メモリーが /dev/sd* として接続されていることを確認します。
# ls -l /dev/sd*
brw------- 1 root root 8, 0 Jun 20 16:37 /dev/sda
brw------- 1 root root 8, 1 Jun 20 16:37 /dev/sda1
さらに block コマンドで詳細な情報を確認します。
# block info | grep "/dev/sd"
/dev/sda1: UUID="34E8-19B0" LABEL="USB128GB" VERSION="FAT32" TYPE="vfat"
USB メモリーをフォーマット
USB メモリーを OpenWrt で使用するのに適したファイルシステムでフォーマットします。
ドライブの種類によって異なるパッケージをインストールし、適したファイルシステムでフォーマットします。
USB メモリーや SSD 等のフラッシュドライブの場合 (F2FS)
# opkg install f2fs-tools kmod-fs-f2fs
# mkfs.f2fs /dev/sda1
ハードドライブの場合 (EXT4)
# opkg install e2fsprogs kmod-fs-ext4
# mkfs.ext4 /dev/sda1
マウント設定を変更
現在の /overlay を別の場所 (/rwm) にマウントするように設定を変更します。以後、古いデータを参照したい場合に利用します。
# uci -q delete fstab.rwm
uci set fstab.rwm="mount"
uci set fstab.rwm.device="`sed -n -e "/\s\/overlay\s.*$/s///p" /etc/mtab`"
uci set fstab.rwm.target="/rwm"
uci set fstab.rwm.enabled=1
uci commit fstab
USB メモリーを /overlay としてマウントします。
# DEVICE="/dev/sda1"
eval `block info "${DEVICE}" | grep -o -e "UUID=\S*"`
uci -q delete fstab.overlay
uci set fstab.overlay="mount"
uci set fstab.overlay.uuid="${UUID}"
uci set fstab.overlay.target="/overlay"
uci set fstab.overlay.enabled=1
uci commit fstab
(任意) マウント時にファイルシステムのチェックを行う場合は以下のコマンドを実行します。
# uci set fstab.@global[0].check_fs='1'
uci commit fstab
以下のコマンドで fstab サービスを有効化します。
# service fstab boot
データを USB メモリーにコピー
すでにインストールされているパッケージ等のデータを Extroot で使用する USB メモリーにコピーします。新しい fstab の設定をコピーするため最後に行います。
USB メモリーをマウントしデータをコピーします。
# mount /dev/sda1 /mnt/sda1
# cp -a -f /overlay/. /mnt/sda1
# umount /mnt/sda1
再起動
ルーターを再起動します。
# reboot
テスト
df コマンドでマウントされているドライブと容量を確認します。
# df
/overlay の容量が USB メモリーの容量になっているのが確認できます。
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 2560 2560 0 100% /rom
tmpfs 255976 120 255856 0% /tmp
/dev/sda1 121304064 533672 119353176 0% /overlay
overlayfs:/overlay 121304064 533672 119353176 0% /
ubi1:syscfg 30276 312 28380 1% /tmp/syscfg
tmpfs 512 0 512 0% /dev
/dev/ubi0_1 24312 19696 3340 86% /rwm