
Manjaro ARM が入った USB ドライブ (Raspberry Pi 4 システム用) と空の SD カードがあります。パーティションを保持したまま、OS を USB ドライブから SD カードに転送する方法はありますか? 可能であれば、Manjaro の実行中に実行できますか?
出力は次のとおりですlsblk
:
$ lsblk # partitions on USB Drive
sda 8:0 1 14.9G 0 disk
├─sda1 8:1 1 213.6M 0 part /boot
└─sda2 8:2 1 14.7G 0 part /
zram0 254:0 0 11.2G 0 disk [SWAP]
答え1
- パーティションを保持しながら、OS を USB ドライブから SD カードに転送する方法はありますか?
はい、SD カードが USB ドライブと少なくとも同じ大きさであると仮定します。USBblockdev --getsize64 /dev/sda
ドライブのサイズをバイト単位で取得するには、次のコマンドを実行します。また、デバイス パスを SD カードに変更することで、少なくとも同じバイト数になるようにすることができます。
デバイスがまったく同じサイズである可能性は低いので、SD カードに手動で同一のパーティション テーブル (手間を最小限に抑えるために同じパーティション番号を使用) を作成することをお勧めします。これにより、SD カードで使用可能な追加のディスク領域を、後でルート パーティションの拡張や新しいパーティションの作成などに使用できるようになります。 を使用して、sfdisk -l /dev/sda
セクター単位で /dev/sda 上のパーティションのリストを取得し、 を使用してfdisk /dev/sdb
SD カードに同じパーティションを作成します (SD カード デバイスが /dev/sdb であると仮定します。必要に応じて更新してください)。
パーティションを再作成した後、各パーティションの内容を一度に 1 つずつコピーできます。
- 可能であれば、Manjaro の実行中に実行できますか?
はい、ただしその場合は、コピー中にオペレーティング システムがディスクに何かを書き込んでコピーを破損するリスクを回避するために、ファイル システムを読み取り専用でマウントする必要があります。
以下に、上記のようにパーティションを作成し、SD カードが /dev/sdb であると仮定して、質問に記載されている 2 つのパーティションをコピーするコマンドを示します。
mount /dev/sda1 -oremount,ro
dd if=/dev/sda1 of=/dev/sdb1 bs=1048576
mount /dev/sda2 -oremount,rw
mount /dev/sda2 -oremount,ro
dd if=/dev/sda2 of=/dev/sdb2 bs=1048576
mount /dev/sda2 -oremount,rw
おそらく、一部のソフトウェアでは、ルート ファイルシステムが一時的に読み取り専用でマウントされることが好まれない可能性があります。再起動すると、この問題は修正されます。