20240204221948 raspberry pi 4 5 をSSD bootに設定

raspissd

概要

色々と情報を見たが、一番簡単で確実な方法は、

  1. SSDにRaspberry Pi Imagerで必要なOSを書きこむ。やり方はこちら(SSDドライブを選択) raspberry Pi Imagerを使ってSDカードを作成 (20240204 時点ではraspi-cloneではうまくいかなかった)
  2. microSDでブート、bootloaderを最新にする
  3. raspi-configで起動をSSDに設定、これ以降はmicroSD無しでも起動可能になる
  4. (raspi5の場合) 起動確認後にPCIをGen3にする

という手順が確実そう。

SSDのフォーマット

SSDをraspiにUSBで接続。認識されると、こんな感じにdmesgが出てくる

$ dmesg
[ 2371.382886] sd 0:0:0:0: [sda] Attached SCSI disk
[ 2555.521771] usb 2-2: USB disconnect, device number 3
[ 2555.565777] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[ 2555.801704] sd 0:0:0:0: [sda] Synchronize Cache(10) failed: Result: hostbyte=0x07 driverbyte=DRIVER_OK
[ 2627.619831] usb 2-2: new SuperSpeed USB device number 4 using xhci_hcd
[ 2627.652398] usb 2-2: New USB device found, idVendor=0bda, idProduct=9210, bcdDevice=f0.01
[ 2627.652420] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2627.652433] usb 2-2: Product: RTL9210
[ 2627.652442] usb 2-2: Manufacturer: Realtek
[ 2627.652451] usb 2-2: SerialNumber: 012345678905
[ 2627.684644] usb 2-2: Enable of device-initiated U1 failed.
[ 2627.685583] usb 2-2: Enable of device-initiated U2 failed.
[ 2627.714973] usb 2-2: Enable of device-initiated U1 failed.
[ 2627.716024] usb 2-2: Enable of device-initiated U2 failed.
[ 2627.720692] scsi host0: uas
[ 2628.284123] scsi 0:0:0:0: Direct-Access     Realtek  RTL9210 NVME     1.00 PQ: 0 ANSI: 6
[ 2628.302746] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 2628.306857] sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[ 2628.308244] sd 0:0:0:0: [sda] Write Protect is off
[ 2628.308260] sd 0:0:0:0: [sda] Mode Sense: 37 00 00 08
[ 2628.310966] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2628.312278] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[ 2628.312300] sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes
[ 2628.324088]  sda: sda1 sda2
[ 2628.324372] sd 0:0:0:0: [sda] Attached SCSI disk
[ 2753.358307]  sda: sda1 sda2

fdiskで全部のパーティーションを削除。状況によって異なるので割愛。 削除したら、 Raspberry Pi Imager が動くOSに接続、 必要なOSを書きこむ。

bootloaderのバージョン確認

$ vcgencmd bootloader_version
2023/01/11 17:40:52
version 8ba17717fbcedd4c3b6d4bce7e50c7af4155cba9 (release)
timestamp 1673458852
update-time 0
capabilities 0x0000007f

sudo raspi-config

A7 Boot ROM Versionを最新に。 E1 Latest Use the latest version boot ROM software を選択して再起動。

$ vcgencmd bootloader_version
2024/01/22 10:41:21
version 51ed67b03b3dde4e76b345370f312d07aabf45b8 (release)
timestamp 1705920081
update-time 1707048097
capabilities 0x0000007f

ここまでできたら、USBブートにする。最初の手順で作ったSSDをraspi4に接続。microSDは外して起動。

どのくらい速度違うか、簡単に調べてみた。 これはraspi4

$ sudo hdparm -tT /dev/mmcblk0 # マイクロSD

/dev/mmcblk0:
 Timing cached reads:   2048 MB in  2.00 seconds = 1024.23 MB/sec
 Timing buffered disk reads: 132 MB in  3.02 seconds =  43.70 MB/sec

$ sudo hdparm -tT /dev/sda # SSD
/dev/sda:
 Timing cached reads:   2034 MB in  2.00 seconds = 1017.23 MB/sec
 Timing buffered disk reads: 1020 MB in  3.06 seconds = 333.44 MB/sec

約 7.6倍くらい高速になっている。素晴しい。

raspi5でPCI Gen3接続するとどうなったかというと

$ sudo hdparm -tT /dev/nvme0n1p2

/dev/nvme0n1p2:
 Timing cached reads:   6416 MB in  2.00 seconds = 3209.38 MB/sec
 Timing buffered disk reads: 2556 MB in  3.00 seconds = 851.35 MB/sec

さらに高速化。

もっと詳しく調べたい場合は PiBenchmark を使う。

Refs.