Raspberry Piに32GB SDカードを使用しています。オペレーティングシステム(Archlinux
ARM
)をUSBハードドライブに正常に転送しました。つまり、SDカードのブートパーティションだけが必要です。
約100MBしか使用しない32GBカードはひどいスペースの無駄であり、私は4GB前後のより小さなSDカードを持っています。
MBR
と32GBカードの最初のパーティションを4GBカードにコピーするにはどうすればよいですか?
私はMBR
とより大きいカードの最初のパーティションをdd
で保存してみました:
dd if=/dev/sdb of=mbr_image bs=446 count=1
dd if=/dev/sdb1 of=boot_image
次に、元の32GBカードのテーブルとまったく同じように見える、小さなカードに新しいパーティションテーブルを作成しました。
Device Boot Start End Blocks Id System
/dev/sdc1 * 2048 194559 96256 c W95 FAT32 (LBA)
最後に、以前に保存した画像を小さなカードにコピーしました。
dd if=mbr_image of=/dev/sdc bs=446 count=1
dd if=boot_image of=/dev/sdc1
fdisk
ではすべて正常に見えますが、機能しません。小さいカードから起動しようとすると、ラズベリーが何もしません。
エラーはどこにありますか?
私の場合、MBRをコピーするだけで問題が発生しました。私にとって次のステップはうまくいきました:
fdisk
必要なパーティションを持つ新しいカード。
新しいカードをマウントし、必要なパーティションファイルをcp
(古いブートパーティションだと思います)を古いものから新しいものにマウントします。変更(grub2を使用している場合)/boot/grub/grub.cfg
を新しいカードに追加して、ブートパーティションのUUIDが4GBカードの1つになるようにします(blkid
を使用してUUIDを識別します)。
mount --bind
/dev、/ procおよび/ sysを古いカードから新しいカードに。chroot
をマウントされた4GBカードに。grub-install
4GBカードに。編集:ステップ4〜6はgrub-install --boot-directory=YourPathToMounted4GBBoot /dev/your4GBcard
この説明 によると、MBRをバックアップするときにbs=512
を使用し、小さいカードにコピーするときにbs=446
を使用します。
dd if=/dev/mmcblk0 of=mbr_image bs=512 count=1
dd if=mbr_image of=/dev/mmcblk0 bs=446 count=1
私はRaspberry Piを実際に使用したことがないため、デバイスラベルが重要かどうかはわかりません。 参照サイト は、MBRに/dev/mmcblk0
を使用し、デバイスパーティションに/dev/mmcblk01
を使用することをお勧めします。
編集:
以前見落としていた。試した手順と私が言及したリンクの両方に、ファイルシステムのフォーマットが不足しているようです。 fdiskを使用して/dev/sdc1
を作成した後、使用する前にファイルシステムをフォーマットする必要があります。
mkfs.vfat -F 32 /dev/sdc1
この後、dd if=boot_image of=/dev/sdc1
を実行すると動作するはずです。