疑問に思ったので試してみました。
結論としては。使えた。です。
rpi のディスク構成を GPTに変えてみます。
GPTディスクでも問題なく扱えるのか試してみます。
最初に今の構成を確認しておきます。
lsblk
でMicroSDを確認します。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 29.7G 0 disk ├─mmcblk0p1 179:1 0 41.8M 0 part /boot └─mmcblk0p2 179:2 0 29.7G 0 part /
USBメモリを用意します。
lsblk
でUSBメモリを確認します。
sdb 8:16 1 14.3G 0 disk
適当な手持ちの、USBメモリが16GBで、マイクロSDが32GBです。dd コマンドでまるっとコピーするのはめんどくさそうです。
今回は、rsync --one-file-system を使おうと思います。
USBメモリにパーティションを作成する
既存のパーティションを消去します。
sudo sgdisk -Z /deb/sdc
sgdisk でGPTパーティションを作成するには次のようにします。
sudo sgdisk -n "${パーティション番号}:${開始セクタ}:${終了セクタ}" /dev/sdc
パーティションを作成します。
sudo sgdisk -n "0::+250M" -t 0:0700 -c 0:"boot" /dev/sdc sudo sgdisk -n "1::" -t 1:8300 -c 1:"root" /dev/sdc
gdisk コマンドでインタラクティブにやってもいいと思います。
sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.8 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): p Disk /dev/sdb: 30031872 sectors, 14.3 GiB Model: SanDisk 3.2Gen1 Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): BBBB17B5-7447-4F58-A8CC-8C012946858F Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 30031838 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 526335 256.0 MiB 0700 Microsoft basic data 2 526336 30031838 14.1 GiB 8300 Linux filesystem
protectiv MBR のGPTになりました。
ファイルシステムを初期化します。
sudo mkfs.vfat /dev/sdb1 sudo mkfs.ext4 /dev/sdb2
ついでにラベルもつけておきます。
sudo fatlabel /dev/sdb1 boot sudo tune2fs /dev/sdb2 root
ラベルを付けておくと、fstab や cmdline.txt でUUID記述より簡潔に完結するので好きです。
ファイルシステムをコピーします。
マウントポイントを作って、コピーしてUSBメモリを複製します。
ルートファイルシステムのコピー
sudo mkdir /mnt/work sudo mount /sdb2 /mnt/work sudo rsync -av --progress --one-file-system / /mnt/work sudo rsync -av --progress --one-file-system / /mnt/work # チェック
bootもコピーします。
sudo mkdir /mnt2 sudo mount /sdb1 /mnt2 sudo rsync -av --progress --one-file-system /boot/firmware/cmdline.txt /mnt2 sudo rsync -av --progress --one-file-system /boot/firmware/cmdline.txt /mnt2
rsync を2回起動しているのは、転送終了のチェックのためです。
わたしの環境では、/boot
ではなく、/boot/firmware
になっていました。arm64(aarch64) のrpi4 でubuntuだからかもしれません、
cmdline.txt と fstab の確認
cat cmdline.txt cat fstab.txt
わたしは、UUIDで指定せず、LABEL指定( root=LABEL=root)ですので、特に変える必要はありませんした。
うっかりミスを防ぐために、確認しておきます。UUIDであればディスクのUUIDを指定するべきでしょう。
起動してみます。
レインボーが表示されました。ブートの読み込みが終わったようです。
起動が始まりました。
GPTディスクでも問題なく扱えた
これでGPTディスクは、RaspberryPi で問題なく扱えることがわかりました。
追記
メモを見直してみると、純粋GPTじゃなくてMBR protectiveになっていた。。