32 GB SDカード(13 GiB使用済み))を16 GB SDカードにコピーするために使用したので、以下のプロセスを共有します(Raspberry Pi用でした):/dev/loop0で何度か失われました...
コピーする最初のSDカードに2つのマウントされていないパーティション/ dev/mmcblk0p1(boot fat16、100 MiB)と/ dev/mmcblk0p2(ext4、〜31,9 GB)があると仮定します。
パーティションをファイルにコピーする:
Sudo dd bs=1M if=/dev/mmcblk0p1 of=/home/pi/file_part1 status=progress
Sudo dd bs=1M if=/dev/mmcblk0p2 of=/home/pi/file_part2 status=progress
パーティションのサイズを変更する
最初のパーティションはブートです。サイズを変更する必要はありません。パーティションext4をe2fsck
で確認してください(resize2fs
の前に実行する必要があります)。
Sudo e2fsck /home/pi/file_part2
Sudo resize2fs /home/pi/file_part2 14G
14Gを選択すると、ファイルシステムで13GiBが使用されます。ファイルシステムの使用量が少ない場合は、より少ない数を選択してください)。
ファイルfile_part2
のサイズが14 GiB(32 GBではない)になったことを確認します
注意withgibibytes(2 ^ 30)andgigabytes(10 ^ 9)、それは大きな違いを生む可能性があります:
たとえば、「16 GB」SDカード(16 000 000 000バイト)SDカード用に15 GiBファイルシステム(15 * 2 ^ 30バイト= 16 492 674 416 640バイト)がある場合、収まりません...
2枚目のSDカードにパーティションテーブルを再作成します
2番目のSDカードにfdisk
または他のツールを使用して、たとえばRaspberry Pi4にarchlinux
をインストールするマニュアルを使用して、パーティションテーブルを再作成します。 https:/ /archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4
note:最初のSDカードの/dev/mmcblk0
の最初の200Mを2番目のカードにコピーする際にdd
でチートすることもできますパーティションテーブルを再作成するためのSDカード(ちなみにブートパーティション)。
2番目のSDカード(16 GB)のパーティションにファイルをコピーする
Sudo dd bs=1M if=/home/pi/file_part1 of=/dev/mmcblk0p1 status=progress
Sudo dd bs=1M if=/home/pi/file_part2 of=/dev/mmcblk0p2 status=progress
(Raspberry Piで)新しいSDカードを起動する前に、/dev/mmcblk0p2
をマウントしてファイル(/etc/fstab
など)を変更します