初回起動時、ルート(/)パーティションの自動拡張が行われます。
Windows PCのC:ドライブに相当しますが。
必ず、ストレージのすべての領域をルートに割り当ててしまうため。
困ったことに、D:ドライブのような別のパーティションを作ることができません。
・・・・・
D:ドライブを作るために、この仕様は、回避できないでしょうか?
そのような理由から。
Raspberry Pi OSの初回起動時、ルートパーティションの自動拡張を止められないか?別のパーティションを作るにはどうしたら良いか、調べてみました。
なおRaspberry Pi OS 64ビット版で試しております。
パーティション自動拡張についてRaspberry Piフォーラムの情報を検証
こちらの情報をもとに。
次の2つのファイルを編集し、初回起動時のパーティション拡張を止められるかどうか試してみました。
- /boot/cmdline.txt
- /etc/init.d/resize2fs_once
/boot/cmdline.txtに該当の項目なし
USBストレージにRaspberry Pi OSを書き込んでみました。
こちらの手順になります。
フォーラムの情報では、/boot/cmdline.txtに次の項目がある、との情報ですが。
init=/usr/lib/raspi-config/init_resize.sh
テキストエディタで編集。令和5年(2023年)1月現在、該当init_resize.shの項目は見当たりません。
明らかに「ルートパーティションをリサイズするスクリプトを実行」のような、削除しても大丈夫そうな項目は見当たりません。
よって、cmdline.txtはそのまま使用することにします。
/etc/init.d/resize2fs_onceを削除
次に。/etc/init.d/resize2fs_onceファイルですが、こちらは確かに存在します。
- USBストレージにRaspberry Pi OSのイメージを書込み。
- 別途、Raspberry Pi OSをmicroSDカードで起動。
- USB端子に、1番で書き込んだUSBストレージを接続。
- /mntにファイルシステムをマウント。
- /mnt/etc/init.d/resize2fs_onceを削除
- USBストレージをアンマウント。
/etc/init.d/resize2fs_onceファイルは確かに存在しました。
そしてUSBストレージから確かに削除しました。
/etc/init.d/resize2fs_onceを削除してから初回起動したものの
/etc/init.d/resize2fs_onceを削除したUSBストレージを、Raspberry Piに接続して。
Raspberry Pi OSを初回起動しました。
さて。
ルートパーティションは、自動拡張されるのでしょうか?
起動開始!
・・・・
・・・・
リサイズ中の表示が目に入りました。
Raspberry Piフォーラムの情報にも、確かに「/etc/init.d/resize2fs_onceを削除して起動したけれど、ルートパーティションの自動拡張を止められなかった」との報告が御座います。
ええ。よくわかります。
/etc/init.d/resize2fs_onceを削除しても止められません!※2023年1月現在の情報。
microSDカードで初期設定後、USBストレージにイメージを書き込む作戦
フォーラムの情報の最後の投稿の通り。
初回起動時のパーティション自動拡張は止められないため。
ルートパーティション以外の別のパーティションを作りたい、という要件に対応したい場合。
microSDカードで初期設定を完了後、そのイメージを取り出して、USBストレージに書き込むという方法が、最も確実かと思います。賛同致します。
というわけで。そのような手順で具体的に進めたいと思います。
microSDカードでRaspberry Pi OSを初期設定
まずは、microSDカードを使用して、Raspberry Pi OSを初期設定しましょう。
Raspberry Piで使用する場合、ランダムアクセスが高速で、最低読書速度30MB/sが保証されている、UHS-I U3 A2対応のmicroSDカードをぜひ選択しましょう。
ここでは、32GBのmicroSDカードを選択して初期設定してみました。64GBのメディアなら、ルートパーティションは64GBになりますが。16GBや32GBで作成しておいて、あとから拡張する手もあると思いますので、小さい容量で大丈夫かと思います。
このような感じで、32GBのmicroSDカードを使用して、Raspberry Pi OS(64-bit)を初期設定しました。
microSDカードをddイメージ化
初期設定が終わりました、容量32GBのmicroSDカードですが。
Windows PCでイメージ化してみました。
使用するアプリはこちらになります。
こちらをダウンロード・展開・実行します。
Windows PCにmicroSDカードを取り付けて「Read」ボタンをクリックします。
上図のように、ddファイルの作成が開始されます。
作成が完了すると、確かに容量29.7GBのddイメージファイルが作成されました。
ddイメージをUSBストレージに書込み
microSDカードを取り出して、代わりにUSBストレージを取り付けます。
書込みはRaspberry Pi Imager・・・・は使用できませんでした。
バイト境界の問題があるようです。
よって、書込みも、同じくusbimagerを使用させて頂きました。
このような感じで、容量1TBのUSB接続のHDDに書き込みました。
数分待った後、特に問題なく、書込みが完了しました。
ddイメージを書き込んだUSBストレージでRaspberry Pi OSを起動
Raspberry PiのmicroSDカードを取り外して。
EEPROMブートローダーは、最新版に更新しました。
USBストレージを接続して起動してみました。
問題なく起動し、確かに/dev/sdaの容量は1TBと表示されています。
cfdiskコマンドで確認すると、Free spaceとして901.8G確保されています。
以上のような感じで。
結論として、Raspberry Pi OSの初回起動時のルートパーティション拡張は止められませんでした。
それは諦めて。
容量32GBのmicroSDカードでRaspberry Pi OSの初期設定を完了後。
ddイメージを作成し、そのイメージをUSBストレージに書き込むことで。
ルートパーティションの容量が32GBのRaspberry Pi OS起動用のUSBストレージを作成することができました。
・・・
ルートパーティション以外に、swapパーティションやNAS(ファイル共有)用のパーティションを作ったり、細かくパーティションを作る需要はあると思うのですが。
「Raspberry Pi」という存在。シンプルさを尊重したシステムでは。
細かいパーティションとシンプルさは、相反する要件なのかな?と考えれば、そういうもの、納得できる気がする内容となりました。
細かいパーティションが必要な場合、上記の作り方が助けになれば幸いです。