USB起動版Raspberry Pi OSのパーティション自動拡張を止めるには


Raspberry Pi OSを起動しますと。

初回起動時、ルート(/)パーティションの自動拡張が行われます。

Windows PCのC:ドライブに相当しますが。

必ず、ストレージのすべての領域をルートに割り当ててしまうため。

困ったことに、D:ドライブのような別のパーティションを作ることができません。

・・・・・

D:ドライブを作るために、この仕様は、回避できないでしょうか?

そのような理由から。

Raspberry Pi OSの初回起動時、ルートパーティションの自動拡張を止められないか?別のパーティションを作るにはどうしたら良いか、調べてみました。

なおRaspberry Pi OS 64ビット版で試しております。


パーティション自動拡張についてRaspberry Piフォーラムの情報を検証

こちらの情報をもとに。

https://forums.raspberrypi.com/viewtopic.php?t=313003

次の2つのファイルを編集し、初回起動時のパーティション拡張を止められるかどうか試してみました。

  1. /boot/cmdline.txt
  2. /etc/init.d/resize2fs_once

/boot/cmdline.txtに該当の項目なし

USBストレージにRaspberry Pi OSを書き込んでみました。

こちらの手順になります。

https://denor.jp/usb%E8%B5%B7%E5%8B%95%E7%89%88raspberry-pi-os-64%E3%83%93%E3%83%83%E3%83%88%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A-%E4%BB%A4%E5%92%8C5%E5%B9%B42023%E5%B9%B41%E6%9C%88%E7%89%88

フォーラムの情報では、/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ファイルですが、こちらは確かに存在します。

次の手順で削除します

  1. USBストレージにRaspberry Pi OSのイメージを書込み。
  2. 別途、Raspberry Pi OSをmicroSDカードで起動。
  3. USB端子に、1番で書き込んだUSBストレージを接続。
  4. /mntにファイルシステムをマウント。
  5. /mnt/etc/init.d/resize2fs_onceを削除
  6. 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を初期設定しましょう。

https://denor.jp/usb%E8%B5%B7%E5%8B%95%E7%89%88raspberry-pi-os-64%E3%83%93%E3%83%83%E3%83%88%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A-%E4%BB%A4%E5%92%8C5%E5%B9%B42023%E5%B9%B41%E6%9C%88%E7%89%88

Raspberry Piで使用する場合、ランダムアクセスが高速で、最低読書速度30MB/sが保証されている、UHS-I U3 A2対応のmicroSDカードをぜひ選択しましょう。

[amazonjs asin=”B01N5AVN71″ locale=”JP” title=”【5年保証 】Gigastone Micro SD Card 32GB A2 V30 マイクロSDカード UHS-I U3 Class 10 95/35 MB/S 高速 Gopro アクションカメラ スポーツカメラ 4K Ultra HD 動画 micro sd カード 動作確認済 SD変換アダプタ付 ミニ収納ケース付 w/adapter and case Nintendo Switch”]

ここでは、32GBのmicroSDカードを選択して初期設定してみました。64GBのメディアなら、ルートパーティションは64GBになりますが。16GBや32GBで作成しておいて、あとから拡張する手もあると思いますので、小さい容量で大丈夫かと思います。

このような感じで、32GBのmicroSDカードを使用して、Raspberry Pi OS(64-bit)を初期設定しました。

ルートパーティションは29.5GBの容量になりました。


microSDカードをddイメージ化

初期設定が終わりました、容量32GBのmicroSDカードですが。

Windows PCでイメージ化してみました。

使用するアプリはこちらになります。

https://gitlab.com/bztsrc/usbimager

usbimagerを使用させて頂きました。

こちらをダウンロード・展開・実行します。

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ブートローダーは、最新版に更新しました。

https://denor.jp/raspberry-pi-4%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BCeeprom%E3%82%92%E6%9C%80%E6%96%B0%E7%89%88%E3%81%AB%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF

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」という存在。シンプルさを尊重したシステムでは。

細かいパーティションとシンプルさは、相反する要件なのかな?と考えれば、そういうもの、納得できる気がする内容となりました。

細かいパーティションが必要な場合、上記の作り方が助けになれば幸いです。[amazonjs asin=”B084TXTF51″ locale=”JP” title=”トランセンド microSDカード 256GB UHS-I U3 V30 A2 Class10 (最大転送速度100MB/s) TS256GUSD330S”]

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です