以前私が共有した拡張オーバーレイは、元の 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)
です。
マウントポイントはルートファイルシステムとして使用(/)
を選択します。
このマウントポイントを有効にするチェックを入れます√
先ほど、マウントポイントをルートファイルシステムとして使用することをクリックしました。ルートディレクトリの準備で一連のコードがポップアップします。これは問題ではなく、これらのコマンドを少し修正してルートをマウントポイントにコピーする必要があります。
ここで私はすでに修正しました。実際、サンプルの 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 の設定をリセットすることをお勧めします。
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です。