(2023.06)レンタルサーバ変更に伴い、ドメイン変更致しました(旧URL:https://i-topics.net)。

【ラズパイ4】SSDブートの設定&起動しないときの対処方法

この記事は約21分で読めます。

特に目新しい情報ではないですが、私自身の備忘録としてログを残します。
ラズパイ4(Raspberry Pi 4)OSのSSDブート(起動)失敗も経験したので、その対処方法も書きました。

ラズパイOSをSSDブート(起動)にするメリットとは?

メリット

  • 劇的に処理速度が速くなる
    • 電源ONからOS立ち上がりまでの速度アップ。ほぼストレスがない。
    • GUI環境のブラウザ・Chromiumでレンタルサーバー上のWordPress編集ができる。若干の遅さは許容範囲内のレベル。

※YouTubeなどのストリーミング動画は再生できますが、だんだん重くなるので実用には不向きだと思います。個人的には、ラズパイOS(with desktop, bullseye)をSSD化しても、「ネットからの動画再生はNG」と心構えしておくと、過剰な固執を避けられると思います。

なぜ、速くなるのか?

  • microSDとSSDの構造・規格が違うから
microSDSSD
転送速度90MB/s[1]最低連続書き込み速度600MB/s
規格ビデオ速度クラスSATA3
参考資料Kingston TechnologyLogitec

ラズパイにはUSB3.0端子があり、この最大転送速度は5Gbps[2]出典:BUFFALO, 2023-03-02閲覧。
単位をMB/sに置き直すと、約625MB/s[3]出典:Yahoo!知恵袋, 2023-03-02閲覧。
SATAをUSB3.0に変換してSSDをラズパイに接続するので、上表のSSD転送速度600MB/sと考えるのが妥当だと思います。

Transcend SSD 左側のコネクタがSATA

すると、600÷90≒約6.67

上表のmicroSDは速度の速い規格を例にしているので、少なくとも6倍以上SSDのデータ転送速度が速くなります(計算上)。

理屈っぽく書きましたが、2000円強の投資でストレスが軽減され、用途が広がるのであれば、
試してみる価値は大いにあると思います。
私は現在、ラズパイOS LiteをSSDにインストールして、公開用Webサーバの処理速度を高めるテストを繰り返しております。

ラズパイSSDブート(起動)化の注意点

私の環境では、USB3.0ポートにSSDをケーブル接続すると、LogicoolのUnifying無線キーボードとマウスが使えなくなりました。ラズパイ本体、ラズパイOSの不備、変換ケーブル、どれが原因なのか分かりません。私はUSB2.0ポートは使わずに、Bluetooth キーボード・マウスを使っておりました。

あと、SSD起動で画面が映らず失敗も経験しました。対処方法は後述しています

Logicool Unifying on Raspi
Unifyingが使えなくなった

現在はWebサーバとして使っているため、BluetoothやWi-Fiを無効にし、有線LANで使っています。

前提条件

  1. microSDにラズパイOSをインストール・有効化できていること
  2. アップデート・アップグレードを済ましておく
  3. できれば、Wi-Fiより有線LANが望ましい(失敗リスクを低減するため)

ラズパイSSDブート(起動)の手順概要

  1. microSDのラズパイOSをSSDに丸ごとコピーする
  2. sudo raspi-config でUSBブートをデフォルトに設定する
  3. 一旦、ラズパイをシャットダウンする
  4. microSDを外す
  5. ラズパイの電源をONにして、SSDから起動すれば成功

所要時間

  • 2〜8分くらい

microSDの使用容量によって所要時間は異なります。
作成したばかりのラズパイOS Liteなら、2分以内だったと記憶しています。
下の例では約6分のログを残しております。

用意するもの

  1. ラズパイ本体
  2. SSD:全て上書きされるのでファイルシステムは何でも良いと思いますが、私はext4でフォーマットしました。
  3. USB3.0 – SATA 変換ケーブル

今回はシリコンパワーを選びました。

今後、常時SSD起動で使うので下側のUSB3.0端子に差します。

上側のポートはバックアップ用microSDを差します。

USB-Card-Reader-attached-on-Raspi
約5年使っているUSB3.0カードリーダー

SSDをUSB接続したラズパイ外観はこんな感じです。

rpi-cloneでSDカード内容を丸ごとSSDへクローン

普段通りにSDカードから起動します。rpi-cloneをラズパイにインストールしていない場合は、以下の過去記事をご覧ください。

以下のソースは私の実作業時のものです。入力するコマンドは赤字で示しています。
着目点は黄色のアンダーライン
LXTerminalの使い方はこちら。

pi@momo:~ $ lsblk #lsblkコマンドでSSDのデバイス名がsda(238.5G)だと分かる。
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 238.5G  0 disk 
mmcblk0     179:0    0  28.8G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0  28.6G  0 part /
pi@momo:~ $ 


pi@momo:~ $ sudo rpi-clone sda #rpi-cloneでsdaにクローンを書き込む。
Error: /dev/sda: unrecognised disk label

Booted disk: mmcblk0 31.0GB                Destination disk: sda 256.1GB
---------------------------------------------------------------------------
Part      Size    FS     Label           Part   Size  FS  Label  
1 /boot   256.0M  fat32  --                                      
2 root     28.6G  ext4   rootfs                                  
---------------------------------------------------------------------------
== Initialize: IMAGE partition table - partition number mismatch: 2 -> 0 ==
1 /boot               (49.5M used)   : MKFS  SYNC to sda1
2 root                (5.7G used)    : RESIZE  MKFS  SYNC to sda2
---------------------------------------------------------------------------
Run setup script       : no.
Verbose mode           : no.
-----------------------:
** WARNING **          : All destination disk sda data will be overwritten!
-----------------------:

Initialize and clone to the destination disk sda?  (yes/no):yes
Optional destination ext type file system label (16 chars max): 任意の名前

Initializing
  Imaging past partition 1 start.
  => dd if=/dev/mmcblk0 of=/dev/sda bs=1M count=8 ...
  Resizing destination disk last partition ...
    Resize success.
  Changing destination Disk ID ...
  => mkfs -t vfat -F 32  /dev/sda1 ...
  => mkfs -t ext4 -L 任意の名前 /dev/sda2 ...

Syncing file systems (can take a long time)
Syncing mounted partitions:
  Mounting /dev/sda2 on /mnt/clone
  => rsync // /mnt/clone with-root-excludes ...
  Mounting /dev/sda1 on /mnt/clone/boot
  => rsync /boot/ /mnt/clone/boot  ...

Editing /mnt/clone/boot/cmdline.txt PARTUUID to use aab7cb19
Editing /mnt/clone/etc/fstab PARTUUID to use aab7cb19
===============================
Done with clone to /dev/sda
   Start - 15:13:11    End - 15:19:15    Elapsed Time - 6:04 #6分で書き込み完了。

Cloned partitions are mounted on /mnt/clone for inspection or customizing. 

Hit Enter when ready to unmount the /dev/sda partitions ... #Enterキーを打鍵して、unmountする。
  unmounting /mnt/clone/boot
  unmounting /mnt/clone
===============================

pi@momo:~ $ #このようなプロンプトが現れると、USB端子から抜いても良い状態。

USBブート(起動)を設定する

Boot Orderの設定

1.raspi-config で起動順序を変更します。

sudo raspi-config

2.「6 Advanced Options」でEnterを打鍵。

3.「A6 Boot Order」をEnterで打鍵。

4.「B2 USB Boot」でEnterを打鍵。

5.「USB is default boot device」で<了解>を打鍵。
USB接続デバイスからの起動がデフォルトになるよう設定します。
(設定有効はラズパイ再起動後)

6.reboot(=再起動)を尋ねられるので、いいえを選択し、Enterを打鍵。

Boot loader Version を最新に設定

Boot loaderとは、ラズパイOSを起動するためのシステム[4]出典:raspberrypi.com, 2023-03-03閲覧。で、設定情報はEEPROMに記憶・保持されます。
パソコンのBIOSのようにロジックボード上のチップに書き込まれます。
このBoot loaderのversionを最新に設定します。

1.sudo raspi-config で「6 Advanced Options」を選択、Enterを打鍵。

2.「A7 Bootloader Version」を選択、Enterを打鍵。

3.「E1 Latest Use the latest version boot ROM software」を選択、Enterを打鍵。
最新バージョンのブートローダーを選択します。

4.「ブートROMをデフォルトにリセットしますか?」と尋ねられるので、Yes。

5.「ブートROMをデフォルトにリセットします」と応答されるので、OK。

6.raspi-config のトップメニューに戻るので、Tabキーを2回叩き、FinishでEnterキーを打鍵。

再起動せずにシャットダウン、microSDを外す

1.「Would you like to reboot now?」と尋ねられたら、<いいえ>を打鍵。
SDカードを抜き取ってからSSD起動を確認したほうが無難です。

2.一旦、ラズパイの電源を落とします。メニュー>ログアウト>shutdown

sudo shutdown -h now #コマンドの説明はこちらの記事を参照ください

3.電源を落としている状態で、SDカードを取り外します。

4.上でクローンしたSSDを接続し、ラズパイの電源を入れます。

5.ラズパイの画面が表示されログインできると、SSD起動は成功です。

SSDブート(起動)に失敗した場合の対処方法

対処方法:ネットインストールで直接SSDにOSを書き込む

raspi-configでUSBブートをデフォルトに設定した後、SSD起動出来なくなるトラブルに出くわしました。
ブートローダーが基盤のROMに書き込まれているため、SSD起動をmicroSD起動に変更できず、手間取った経験があります。

画面では

Press and hold <SHIFT> key to stop boot and start net install
(ネットインストールを開始するには、shiftキーを押し続ける)

と表示されたため、ラズパイにLANケーブルSSDをアタッチメントした状態で
shiftキーを押下し続けました。

  • ルーターが傍に無く、LANケーブルが差せない場合は後述の方法を。
  • モニターが映らないトラブルはこちらの後述をどうぞ。

以下の画面で、shiftキーを押下し続けます。

「ネットインストールするには、shiftキーを押下し続ける(意訳)」

23MBのInstallerがダウンロードされます。

Installerダウンロード進捗状況。

Installerのダウンロードが完了すると、raspi imager が表示されます。

オンラインで直接、ラズパイOSをSSDに書き込みます。
raspi imagerの使い方はこちら

OSの書き込みが完了すると、一旦再起動。
SSDから起動できれば、SSDブートは成功です。

念の為、

sudo raspi-config

再度、Boot OrderBoot loader Version の設定をやり直しておくと心強くなります。

有線LANに出来ない環境の場合の対処方法

1階にルーターがあり、2階でWi-Fiを使っている環境では、LANケーブルを差せないユーザーも多くおられると思います。
わざわざ1階にディスプレイを運ぶのも大掛かりな作業となります。

そんなときに便利なのは、Wi-Fi中継器です。
2階にもLANポートを設置できて、ラズパイを有線LAN接続できます。

コンセントに差すだけでLANポートを確保

私は、無線LAN機能の無いデスクトップPCにDebianをインストールする際にも、
Wi-Fi中継器を使っています。

契約しているISPによっては、一定の条件を満たしていれば無料でレンタルできる場合があります。

HDMI モニターディスプレイが映らない場合

先ずは、電源を入れる順序の確認。
モニターディスプレイをHDMIポートに接続し、先に電源を入れます。
後からラズパイの電源を入れます。
すると、システムがHDMIの検出を始めます。

次に、HDMIを差し直したり、角度を変えてみてください。
この端子は思いの外、簡単に外れてしまうので、
差し直すだけで直る場合があります。

第3に、別のモニターディスプレイでも試してみてください。
私の経験では、DVIをHDMIに変換していたため正常に映らず、
HDMI to HDMI のモニターディスプレイでは映りました。

それでも直らない場合は、boot設定ファイルを弄ります。

Windows 10 でconfig.txt を編集し、HDMIセーフモードを有効化する

SSDをWindows 10 マシンにUSB接続して、メモ帳を開いて編集します。

1.エクスプローラー>SSDのディスク(boot)>config

2.config.txtファイルをメモ帳で開き、「#hdmi_safe=1」の「#」を削除して上書き保存。

3.SSDを安全に取り外して、ラズパイに接続。

4.モニターディスプレイの電源を先に入れて、ラズパイの電源をON。

ラズパイOS起動画面が出力されれば成功です。
再度、Boot Order, Boot loader version を試してみて正常にOS作動しなければ、
ラズパイOSの作り直しを検討してみてください。

Debian でconfig.txt を編集し、HDMIセーフモードを有効化する

ラズパイOSをインストールしたSSDをDebian などLinuxマシンにUSB接続しておきます。

<Debian GUI環境の場合>

ファイルマネージャー(nautilus)から容量の小さいMBのボリュームを選択。
その中で、config.txtファイルを見つけます。
数値が似ていて混同するかもしれませんが、単位が「GB」「MB」で約1000倍の容量差があるので、
注意深く確認してください。

テキストエディター「gedit」でconfig.txtを編集。
「# hdmi_safe=1」の「#」を削除し、上書き保存。

debian マシンからSSDを安全に取り外し、ラズパイに取り付けて動作確認に進んでください。

<Debian CLI環境の場合>

DebianのTerminalからラズパイOSのconfig.txtファイルを編集します。
(入力するコマンドは赤字

deb@debian:~$ df -h #コマンドの説明はこちら
ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.9G     0  3.9G    0% /dev
tmpfs            785M  1.5M  784M    1% /run
/dev/sda6         26G  6.9G   18G   29% /
tmpfs            3.9G   29M  3.9G    1% /dev/shm
tmpfs            5.0M  8.0K  5.0M    1% /run/lock
tmpfs            785M  124K  785M    1% /run/user/1000
/dev/sdb1        253M   51M  202M   20% /media/deb/0903-3317 #マウントポイントはここ
/dev/sdb2        234G  1.4G  221G    1% /media/deb/256GB
deb@debian:~$

上のマウントポイント(黄色)へディレクトリ移動します(コマンド:cd)。
ディレクトリ配下のconfig.txtファイルを見つけます(コマンド:ls)。

deb@debian:~$ cd /media/deb/0903-3317
deb@debian:/media/deb/0903-3317$ ls
'$RECYCLE.BIN'                bcm2710-rpi-zero-2.dtb   kernel.img
 COPYING.linux                bcm2711-rpi-4-b.dtb      kernel7.img
 LICENCE.broadcom             bcm2711-rpi-400.dtb      kernel7l.img
'System Volume Information'   bcm2711-rpi-cm4.dtb      kernel8.img
 bcm2708-rpi-b-plus.dtb       bcm2711-rpi-cm4s.dtb     overlays
 bcm2708-rpi-b-rev1.dtb       bootcode.bin             pieeprom.sig
 bcm2708-rpi-b.dtb            cmdline.txt              pieeprom.upd
 bcm2708-rpi-cm.dtb           config.txt               recovery.bin
 bcm2708-rpi-zero-w.dtb       fixup.dat                start.elf
 bcm2708-rpi-zero.dtb         fixup4.dat               start4.elf
 bcm2709-rpi-2-b.dtb          fixup4cd.dat             start4cd.elf
 bcm2709-rpi-cm2.dtb          fixup4db.dat             start4db.elf
 bcm2710-rpi-2-b.dtb          fixup4x.dat              start4x.elf
 bcm2710-rpi-3-b-plus.dtb     fixup_cd.dat             start_cd.elf
 bcm2710-rpi-3-b.dtb          fixup_db.dat             start_db.elf
 bcm2710-rpi-cm3.dtb          fixup_x.dat              start_x.elf
 bcm2710-rpi-zero-2-w.dtb     issue.txt
deb@debian:/media/deb/0903-3317$

nano でconfig.txtファイルを編集します。

deb@debian:/media/deb/0903-3317$ nano config.txt

行頭の「#」を削除して、HDMIセーフモードを有効化します。

# uncomment if you get no picture on HDMI for a default "safe" mode
hdmi_safe=1

nano を保存し、Terminalを終了して、
debianから安全にSSDを取り外します。

  1. SSDをラズパイに接続
  2. モニターディスプレイの電源を先に入れる
  3. ラズパイの電源をON

モニターディスプレイに出力されれば、成功です。
再度、Boot Order, Boot loader version を試してみて正常にOS作動しなければ、
ラズパイOSの作り直しを検討してみてください。

再起動すると、ラズパイOSが起動しない場合

  • 考えられる原因:シャットダウン前に差していたmicroSDを抜いた、など

ラズパイOS LiteをSSD起動にして、fstabを編集してmicroSDをマウント出来るようにしたところ、
再起動後にOS起動出来なくなりました。microSDにはrpi-cloneによるバックアップデータが入っていたので、再起動時に2つのUSBデバイスを読みにいき、同じブートデータのため読み込めなくなったのだと思います。ラズパイSSDのfstabをDebianで開いて、microSDのマウントポイントの行頭に # を付けてコメントアウトすると、OS起動できるようになりました。

1.ラズパイからSSDを外して、Debianマシンに取り付けます。

2.以下のコマンドで、DebianでのSSDマウントポイントを洗い出します。

df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.9G     0  3.9G    0% /dev
tmpfs            785M  1.5M  783M    1% /run
/dev/sda6         26G  8.8G   16G   36% /
tmpfs            3.9G   38M  3.8G    1% /dev/shm
tmpfs            5.0M  8.0K  5.0M    1% /run/lock
tmpfs            785M  108K  785M    1% /run/user/1000
/dev/sdb1        253M   50M  203M   20% /media/deb/0903-3317
/dev/sdb2        234G  3.0G  219G    2% /media/deb/256GB ←ここにディレクトリ移動する

3.fstabはetcディレクトリ配下にあるため、etcを探します。

cd /media/deb/256GB
ls ←ディレクトリ配下を確認する
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
sudo nano ./etc/fstab

4.追加行の行頭に # を付けてコメントアウトし、無効化します。

proc            /proc           proc    defaults          0       0
PARTUUID=b7b3583f-01  /boot           vfat    defaults          0       2
PARTUUID=b7b3583f-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

# PARTUUID=cbe526e9-01 /media/sd vfat defaults 0 0

5.nano を保存し、SSDをアンマウントし、Debianから抜いてラズパイの元の位置に戻します。

cd
sudo umount /media/deb/256GB

6.ラズパイの電源をONにして、SSH接続が繋がれば成功です。

以上で本記事のコンテンツは終わりです。
お役に立てれば嬉しく思います。

以下の記事も一緒にどうぞ。

  1. ラズパイOS (bullsey) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作
  8. Sambaサーバを作ってiCloudを解除
  9. ローカルWordPress専用Webサーバ構築(SSL対応)
  10. Raspberry Pi OS Liteのインストール
  11. Raspberry Pi OS LiteでSambaを設定
  12. ラズパイサーバのWordPressを自動でバックアップ
  13. ラズパイSSDブート&起動しないときの対処方法
  14. MyDNSでドメインを無料取得する
  15. NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開

脚注

脚注
1 最低連続書き込み速度
2 出典:BUFFALO, 2023-03-02閲覧。
3 出典:Yahoo!知恵袋, 2023-03-02閲覧。
4 出典:raspberrypi.com, 2023-03-03閲覧。

コメント