banner
miaoer

miaoer

喵二の小博客 https://www.miaoer.net xLog 分站
tg_channel
telegram
bilibili

OpenWrt ルーターのスペースが足りない?overlay のルートを拡張してみてください

以前私が共有した拡張オーバーレイは、元の OpenWrt の /overlay パーティションをコピーして外部オーバーレイとしてマウントするものでしたが、最新の OpenWrt/LEDE および LEDE を基にした CatWrt では拡張できません。成功したものもありますが、成功率は高くありません。今回共有する内容は、B 站の UP 主韩风 Talkの動画にある最初の方法に基づいており、成功率も比較的高いです。第二の方法は、ファームウェア内で容量を更新できなかったため、諦めました。

まず、韩风が提供してくれた方法に感謝します。必要な方は彼の動画を確認してください。ここでは要約を行います。

v22.11 ファームウェアには 100M の空きスペースがあり、OpenWrt をインストールする際の必須項目としては強く推奨しません!ハードルがあり、データは貴重ですので、必要に応じてバックアップを取ってから操作を行ってください。仮想マシンにスナップショットを作成することもできます。




以前の外部オーバーレイに関しては、私のブログOpenWrt 拡張オーバーレイパーティションチュートリアルを参考にしてください。


準備#

まず、ターミナルを開いて SSH でルーターに接続します。ここでは CatWrt EFI ブートファームウェアに付属の ttyd を使用します。

ルーターのパーティション状況を確認するためにfdisk -lを実行します。

root@CatWrt:~# fdisk -l
Disk /dev/loop0: 184.88 MiB, 193855488 bytes, 378624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
GPT PMBR size mismatch (852511 != 7129087) will be corrected by write.


Disk /dev/sda: 3.4 GiB, 3650093056 bytes, 7129088 sectors
Disk model: VMware Virtual I
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0EAC8D5A-F014-DB49-E8EB-FA846A473B00

Device      Start    End Sectors  Size Type
/dev/sda1     512  33279   32768   16M Linux filesystem
/dev/sda2   33280 852479  819200  400M Linux filesystem
/dev/sda128    34    511     478  239K BIOS boot

Partition table entries are not in disk order.

EFI 版ファームウェアは従来のモードよりも 239k の /dev/sda128 が追加されていますが、中止セクターは 819200 のままです。この中止セクターを覚えておいてください。以降の多くの詳細はこの中止点を中心に展開されます!

次にパーティション作業を行います。まず、ファームウェアのアップグレードが必要かどうかを確認する必要があります。CatWrt では、200M の空きスペースを確保することを強く推奨しています。このスペースは現在、/dev/sda2 の後ろに確保する必要があります。

まず、パーティション管理ツールに入ります。fdisk /dev/sdaと入力します。

ここで注意が必要なのは、セクターが重複してはいけないということです!

次に、nを入力して新しいパーティションを作成します。

root@CatWrt:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.38).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (852511 != 7129087) will be corrected by write.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.


Command (m for help): _

ここで、主パーティションか拡張パーティションを選択するように求められます。主を選択し、pと入力します(ここでは私は遭遇しませんでしたが、全員がそうではありません)。

Select (default p): _

ここでパーティションを選択します。OpenWrt ではまだパーティション操作が行われていないため、3を選択します。

Partition number (3-127, default 3): _

ここで、/dev/sda3パーティションの開始セクターを指定します。将来のアップグレードの必要に応じて、/dev/sda2 パーティションの中止セクターに 409600 を加えます。

つまり、2048 x 200、すなわち 200M のパーティションで、中止点 (≈852479) から 860000 までをアップグレード用に確保します。つまり、1270000 セクターからパーティションを開始する必要があります。

ここに 1270000 を入力します。

First sector (852480-7129054, default 854016): _

新しいパーティションの中止セクターは、最も馴染みのある g 単位で開始できます。ここでは、+2g と入力することをお勧めします。

Last sector, +/-sectors or +/-size{K,M,G,T,P} (1270000-7129054, default 7127039): +2g

ここでwを入力してエンターを押すと、保存が成功します。

Created a new partition 3 of type 'Linux filesystem' and of size 2 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.

root@CatWrt:~# 

これで作成が成功しました。パーティションが成功したか確認するためにfdisk -lを実行します。

root@CatWrt:~# fdisk -l
Disk /dev/loop0: 184.88 MiB, 193855488 bytes, 378624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 3.4 GiB, 3650093056 bytes, 7129088 sectors
Disk model: VMware Virtual I
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0EAC8D5A-F014-DB49-E8EB-FA846A473B00

Device        Start     End Sectors  Size Type
/dev/sda1       512   33279   32768   16M Linux filesystem
/dev/sda2     33280  852479  819200  400M Linux filesystem
/dev/sda3   1270000 5464063 4194064    2G Linux filesystem
/dev/sda128      34     511     478  239K BIOS boot

Partition table entries are not in disk order.

フォーマット#

ここまででパーティション作業は完了しましたが、ext4 にフォーマットする必要があります。mkfs.ext4 /dev/sda3と入力してエンターを押します。

root@CatWrt:~# mkfs.ext4 /dev/sda3
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 524258 4k blocks and 131072 inodes
Filesystem UUID: ff7a2c4a-fd56-42ad-a9ac-45ade1c5819a
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

マウント#

これで完了です。次に LuCi ウェブバックエンドで操作を行い、システム - マウントポイントに入り、マウントポイントで追加をクリックします。

UUID には、先ほど作成したパーティションを選択します。私の場合はff7a2c4a-fd56-42ad-a9ac-45ade1c5819a (/dev/sda3, 2047 MB)です。

マウントポイントはルートファイルシステムとして使用(/)を選択します。

このマウントポイントを有効にするチェックを入れます

image

先ほど、マウントポイントをルートファイルシステムとして使用することをクリックしました。ルートディレクトリの準備で一連のコードがポップアップします。これは問題ではなく、これらのコマンドを少し修正してルートをマウントポイントにコピーする必要があります。

ここで私はすでに修正しました。実際、サンプルの sda1 を sda3 に変更しただけです。これらのコマンドをターミナルに入力すれば大丈夫です。

mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sda3 /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot
reboot

最後のコマンドは再起動で、手動でエンターを押す必要があります。もし、終わりに近づいたときに私とは異なる(find 何かの文字列)が表示された場合は、手順を飛ばしてエラーが発生したか、ファームウェアの問題が原因です。

この手順に従えば、必ず拡張に成功します。

……
./www/uuandriod.png
./www/uuios.png
./boot/
./home/
./home/ftp/
./run/
./run/docker/
./run/docker/plugins/
./run/mount/
./run/blkid/
./run/blkid/blkid.tab
./run/blkid/blkid.tab.old
root@CatWrt:~# umount /tmp/introot
root@CatWrt:~# umount /tmp/extroot
root@CatWrt:~# reboot

再起動後、最も簡単な方法は、ソフトウェアパッケージに余分なスペースが残っているかどうかを確認することです。システム - ソフトウェアパッケージを開くと、拡張が成功していることがわかります。もし拡張に成功していない場合は、sda3 を削除して OpenWrt の設定をリセットすることをお勧めします。

image


Docker#

Docker パーティションについては、ここではあまり詳しくは述べませんが、上記の内容を参考にし、以前のオーバーレイ拡張に関するブログを参照してください。ここでも fdisk を使用して操作できます。

fdisk /dev/sdaと入力します。

新しいパーティションを作成するためにnを選択します。

主パーティションか拡張パーティションを選択するように求められます。主を選択し、pと入力します(ここでは私は遭遇しませんでしたが、全員がそうではありません)。

Select (default p): _

パーティションを選択します。ここでは4を選択します。

拡張後の中止セクターは 5464063 ですので、開始セクターを5466000に設定し、エンターを押します。

次に、Docker パーティションに必要なスペースを指定します。ここでは+10gを選択します。

ここでwを入力してエンターを押すと、保存が成功します。

mkfs.ext4 /dev/sda4を入力して Docker パーティション (/dev/sda4) をフォーマットします。

システム - マウントポイントに移動し、先ほど作成したパーティション /dev/sda4 を追加します。

マウントポイントはDockerデータパーティションとして使用 (/opt)を選択します。

マウントポイントを有効にするチェックを入れます

保存して適用し、再起動すると Docker パーティションが拡張されていることが確認できます。

この記事はMix Spaceによって xLog に同期更新されました。元のリンクはhttps://www.miaoer.net/posts/network/expansion-overlayです。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。