1. 始めに
CentOSの後継として使用可能なAlmalinuxをRaspberry pi4のサーバでも使い始めました。サーバではgptのHDDからブートする方法を取りたかったのですが、公開されているRaspberry piのイメージはmbrのため2TBより大きいHDDは使えません。調べたところ、mbrのイメージをインストール後、gptに切り替えて使用する方法があったので、メモとしてのこします。
2.準備
- Raspberry Pi 4
- 2TBより大きいUSB HDD
- SDカード(作業用Raspberry pi OS用)
- AlmalinuxのRaspberry Pi向けイメージ
- usb_boot.zip
3.手順
3-1. Raspberry Pi OSの準備
Raspberry Pi Imagerなどを使用して、準備した作業用SDカードにインストールしてください。
3-2. usb_boot.zipのダウンロード
以下のURLからusb_boot.zipをダウンロードして、Raspberry Pi OS上で解凍してください。
3-3. Almalinuxイメージのインストール
Almalinux のaarch64のブートイメージをダウンロードします。下記のgitのREADME.md内にイメージのダウンロードリンクがあります。
ダウンロードしたら、USB HDDにddをします。PC上での作業はbalenaEtcherが便利です。
一度Raspberry PiにUSB接続で立ち上げ、SDカードなしで立ち上がることを確認します。
3-4. mbr → gpt変換作業
SDカードをRaspberry Piに装備して、Raspberry Pi OSで立ち上げます。起動したら、上記ディスクを接続します。(以降、仮に/dev/hdaとします。)接続するとオートマウントするので、アンマウントします。
$ sudo su
# umount /media/pi/*
mbrからgptに変換します。Raspberry Pi OSでのみ、このコマンドが実行できます。他のOSではエラーとなります。
# mbr2gpt /dev/sda
3-5. ディスクの調整
次にパーティション拡張をします。この例では、rootに約128GB割り当て、残りを別パーティションとしています。128GiBはディスク最初からのサイズとなります。partedのresizepartを使用します。ディスクの最初にはブートパーティションとスワップが定義されているため、少し小さい値のパーティションとなります。指定方法は、20GiB,1.5TiBとか設定できます。すべてrootfsに定義するのであれば、ディスクいっぱいの値を定義してください。
# parted /dev/hdb
(parted) resizepart 3 128GiB
残りを別パーティションにするには、続けてpartedでmkpartコマンドで定義します。
(parted) mkpart work ext4 128GiB 100%
終了します
(parted) quit
次にPARTUUIDが変更になってしまうので、cmdline.txtを変更します。
blkidを実行して/dev/sda3のPARTUUIDを取得します。
# blkid
/dev/sda3の項目内のPARTUUID="XXXX" をコピーします。
次に/dev/sda1をマウントします。
# mount /dev/sda1 /mnt
cmdline.txtを編集します。
# vi /mnt/cmdline.txt
上記のPARTUUIDのコピーをペーストして、コマンドライン内のPARTUUID=XXXXと入れ替えます。
編集が終了したらシャットダウンします。
# shutdown -h now
SDカードを外してUSBディスクのみにしてブートすると立ち上がるはずです。ダメな場合はPARTUUIDのミスであることがほとんどのため、見直してください。