USBデバイスを使用してLEDE/OpenWRTシステムストレージを拡張する方法
LEDE/OpenWRTは、さまざまなルーターの独自ファームウェアの代替として使用できるLinuxベースのオペレーティングシステムです。
それをインストールすることでセキュリティが向上し、ルーターを調整し、システムリポジトリからインストールできる幅広いソフトウェアパッケージを提供します。
パッケージのインストールは非常に簡単です。これはopkgパッケージマネージャのおかげですが、一般的なルーターで利用可能なスペースはかなり限られています。このチュートリアルでは、USBデバイスを使用して利用可能なシステムスペースを拡張する方法を見ていきます。
このチュートリアルでは、あなたは学びます:
- USBデバイスを使用してLEDE/OpenWRTシステムストレージを拡張する方法
- 標準設定に戻す方法
USBでLEDE/OpenWRTシステムストレージを拡張する
ソフトウェアの要件と使用される規約
パッケージのインストール
ルーターのストレージスペースを拡張するためには、まずいくつかのパッケージをインストールする必要があります。この作業を達成するために、opkgを使用します。LEDEのネイティブで軽量なパッケージマネージャーであり、そのために最初に行うべきことは、sshを介してシステムに接続することです。本記事のために、ルーターのIPアドレスを192.168.0.1と仮定します。我々はrootユーザーとしてログインします:
ssh root@192.168.0.1
root@192.168.0.1's password:
ルートユーザーパスワードを入力すると(ルーターを初めて設定したときに設定したもの - ルーターのウェブインターフェースにログインするのに使用するものと同じ)、以下のメッセージが表示されるはずです:
BusyBox v1.25.1 () built-in shell (ash)
_________
/ /\ _ ___ ___ ___
/ LE / \ | | | __| \| __|
/ DE / \ | |__| _|| |) | _|
/________/ LE \ |____|___|___/|___| lede-project.org
\ \ DE /
\ LE \ / -----------------------------------------------------------
\ DE \ / Reboot (17.01.4, r3560-79f57e422d)
\________\/ -----------------------------------------------------------
root@earendil:~#
ログインしたら、利用可能なパッケージのリストを更新する必要があります:
opkg update
リストが更新されたら、必要なパッケージをインストールできます:
opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk
USBデバイスを使用してシステムストレージの拡張を行う目的でパーティションを分ける場合にのみ、fdiskパッケージが必要であることに注意してください。この操作は次のステップで実行します。
USBデバイスの準備
私たちは、fdiskを使用して、別のマシンで使用する予定のUSBデバイスを操作するか、直接LEDEシステム上で操作することができます。このチュートリアルの目的のために、私たちは第二のオプションを選択し、USBデバイスの利用可能なすべてのスペースを使用する単一のパーティションを作成します。
まず、USBをデバイスに接続します。それがカーネルによって認識されていることを確認するために、dmesgコマンドによって生成された出力の最後の行を確認できます。次のような結果が得られるはずです:
dmesg | tail
[ 91.701565] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[ 91.708962] scsi host2: usb-storage 1-1.1:1.0
[ 92.714770] scsi 2:0:0:0: Direct-Access Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[ 92.726372] sd 2:0:0:0: [sda] 1994752 512-byte logical blocks: (1.02 GB/974 MiB)
[ 92.734814] sd 2:0:0:0: [sda] Write Protect is off
[ 92.739691] sd 2:0:0:0: [sda] Mode Sense: 23 00 00 00
[ 92.745685] sd 2:0:0:0: [sda] No Caching mode page found
[ 92.751147] sd 2:0:0:0: [sda] Assuming drive cache: write through
[ 92.851061] sda: sda1
[ 92.858827] sd 2:0:0:0: [sda] Attached SCSI removable disk
私たちのデバイスはfdiskを起動し、USBデバイスのパスをユーティリティの引数として渡します:
fdisk /dev/sda
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
最初にやりたいことは、デバイスに新しいoを入力し、Enterを押します:
Command (m for help): o
Created a new DOS disklabel with disk identifier 0xd67f57f9.
次に、新しいパーティションを追加します。操作を行うために n コマンドを使用します。どのタイプのパーティションを作成したいか尋ねられます:ここではプライマリパーティションを作成したいです。また、パーティション番号と最初および最後のセクターを入力するように求められます。3つのすべてのケースで、Enterキーを押してデフォルトを受け入れることができます。
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-1994751, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1994751, default 1994751):
Created a new partition 1 of type 'Linux' and of size 973 MiB.
私たちがデバイスに行った変更はまだ効果がありません。これらを確認するには、w コマンドを使用する必要があります:
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
デバイスがパーティション分割されたので、ファイルシステムを作成する必要があります。
ファイルシステムの作成
次のステップは、前のステップで作成したパーティションにext4ファイルシステムを作成することです。mkfs.ext4コマンドを実行し、引数としてパーティションのパスを渡すだけです。
mkfs.ext4 /dev/sda1
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 249088 4k blocks and 62336 inodes
Filesystem UUID: 42109b6a-759a-48ba-a7b9-1508d0973131
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
ファイルシステムUUID(42109b6a-759a-48ba-a7b9-1508d0973131)をメモします:次のステップでファイルシステムを参照するために必要です。
Fstabの設定
このステップでは、システムのfstabファイルを変更します。このファイルは私たちのLEDEシステムでは/etc/config/fstabです。ファイル内に次のセクションを追加します:
config 'mount'
option target '/overlay'
option uuid '42109b6a-759a-48ba-a7b9-1508d0973131'
option enabled '1'
UUIDによって識別されるファイルシステムは、私たちがUSBデバイス上で作成したもので、/overlayにマウントされるので、システムストレージとして使用されます。
USBデバイスにシステムストレージの内容をコピーすること
私たちのセットアップが機能するためには、現在のシステムストレージの内容をUSBデバイスにコピーする必要があります。最初に、ext4ファイルシステムを/mntにマウントします:
mount /dev/sda1 /mnt
それから、そこにある内容をコピーします。
cp -a /overlay/. /mnt
上記の例では、cpコマンドを二つのオプション-aで使用しました。これは--archiveの短縮版であり、コピーしたファイルの属性を保持するために使用されます。
システムを再起動する
この時点で私たちのセットアップは完了しているはずです。変更を有効にするためには、システムを再起動する必要があります。物理スイッチからデバイスの電源を切って再度入れることもできますし、次のコマンドを実行することもできます(デバイスの電源を切るとターミナルはおそらくフリーズするでしょう):
reboot
システムが再起動されると、追加スペースが使用されていることを確認するために、再度ルーターにログインし、df コマンドを実行して /overlay を引数として渡します。ここでも、人間が読みやすいサイズを取得するために -h オプションを使用しました。
df -h /overlay
Filesystem Size Used Available Use% Mounted on
/dev/sda1 941.7M 5.2M 871.9M 1% /overlay
予想通り、/dev/sda1 が /overlay にマウントされたファイルシステムであることが確認できます: サイズは 941.7M で、使用中なのは 5.2M だけで、利用可能なスペースの約 1% です。
再入荷しました
ストックシステムの構成に戻るのは非常に簡単で、いくつかの手順を実行するだけで済みます。最初に行うべきことは、元々 /overlay にマウントされていたシステムパーティションを特定することです。そのためには、/proc/mtd ファイルを確認する必要があります:
cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00010000 "u-boot"
mtd1: 001333cc 00010000 "kernel"
mtd2: 0069cc34 00010000 "rootfs"
mtd3: 00460000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 007d0000 00010000 "firmware"
私たちが興味を持っているのは、rootfs_data という名前の mtd ファイルで、今回は mtd3 です。対応するブロックデバイス /dev/mtdblock3 を /mnt にマウントしなければなりません。
mount -t jffs2 /dev/mtdblock3 /mnt
マウントコマンドのオプション -t を使用して、ファイルシステムのタイプを指定したことに注意してください。この場合は jffs2 で、フラッシュメモリデバイス専用に設計されたファイルシステムです。
パーティションがマウントされたら、以前に行ったfstabファイルの変更を元に戻す必要があります。この時点で、元のファイルは/mnt/upper/etc/config/fstabとしてアクセス可能であるべきです。お気に入りのテキストエディタで開いて、以前に追加したセクションを削除、コメント、または修正します。
config 'mount'
[...]
option enabled '1'
宛て先 :
config 'mount'
[...]
option enabled '0'
作業が完了したら、変更を保存します。最後に、ブロックデバイスをアンマウントし、システムを再起動します。
umount /mnt && reboot
結論
この記事では、簡単なUSBデバイスを使用してLEDEシステムのストレージスペースを拡張する方法を学びました。LEDEは、さまざまなルーターにインストール可能なオープンソースのOSです。この簡単な手順を使用することで、システムデータのためにより多くのスペースを得ることができ、たとえば、通常のルーターでは利用できる小さなストレージスペースに収まらない追加のパッケージをインストールするために使用できます。LEDEプロジェクトについてもっと知りたい場合は、LEDEのドキュメントをご覧ください。
