特に目新しい情報ではないですが、私自身の備忘録としてログを残します。
ラズパイ4(Raspberry Pi 4)OSのSSDブート(起動)失敗も経験したので、その対処方法も書きました。
ラズパイOSをSSDブート(起動)にするメリットとは?
メリット
- 劇的に処理速度が速くなる
- 電源ONからOS立ち上がりまでの速度アップ。ほぼストレスがない。
- GUI環境のブラウザ・Chromiumでレンタルサーバー上のWordPress編集ができる。若干の遅さは許容範囲内のレベル。
※YouTubeなどのストリーミング動画は再生できますが、だんだん重くなるので実用には不向きだと思います。個人的には、ラズパイOS(with desktop, bullseye)をSSD化しても、「ネットからの動画再生はNG」と心構えしておくと、過剰な固執を避けられると思います。
なぜ、速くなるのか?
- microSDとSSDの構造・規格が違うから
microSD | SSD | |
転送速度 | 90MB/s[1]最低連続書き込み速度 | 600MB/s |
規格 | ビデオ速度クラス | SATA3 |
参考資料 | Kingston Technology | Logitec |
ラズパイにはUSB3.0端子があり、この最大転送速度は5Gbps[2]出典:BUFFALO, 2023-03-02閲覧。。
単位をMB/sに置き直すと、約625MB/s[3]出典:Yahoo!知恵袋, 2023-03-02閲覧。。
SATAをUSB3.0に変換してSSDをラズパイに接続するので、上表のSSD転送速度600MB/sと考えるのが妥当だと思います。
すると、600÷90≒約6.67
上表のmicroSDは速度の速い規格を例にしているので、少なくとも6倍以上SSDのデータ転送速度が速くなります(計算上)。
理屈っぽく書きましたが、2000円強の投資でストレスが軽減され、用途が広がるのであれば、
試してみる価値は大いにあると思います。
私は現在、ラズパイOS LiteをSSDにインストールして、公開用Webサーバの処理速度を高めるテストを繰り返しております。
ラズパイSSDブート(起動)化の注意点
私の環境では、USB3.0ポートにSSDをケーブル接続すると、LogicoolのUnifying無線キーボードとマウスが使えなくなりました。ラズパイ本体、ラズパイOSの不備、変換ケーブル、どれが原因なのか分かりません。私はUSB2.0ポートは使わずに、Bluetooth キーボード・マウスを使っておりました。
あと、SSD起動で画面が映らず失敗も経験しました。対処方法は後述しています。
現在はWebサーバとして使っているため、BluetoothやWi-Fiを無効にし、有線LANで使っています。
前提条件
- microSDにラズパイOSをインストール・有効化できていること
- アップデート・アップグレードを済ましておく
- できれば、Wi-Fiより有線LANが望ましい(失敗リスクを低減するため)
ラズパイSSDブート(起動)の手順概要
- microSDのラズパイOSをSSDに丸ごとコピーする
sudo raspi-config
でUSBブートをデフォルトに設定する- 一旦、ラズパイをシャットダウンする
- microSDを外す
- ラズパイの電源をONにして、SSDから起動すれば成功
所要時間
- 2〜8分くらい
microSDの使用容量によって所要時間は異なります。
作成したばかりのラズパイOS Liteなら、2分以内だったと記憶しています。
下の例では約6分のログを残しております。
用意するもの
- ラズパイ本体
- SSD:全て上書きされるのでファイルシステムは何でも良いと思いますが、私はext4でフォーマットしました。
- USB3.0 – SATA 変換ケーブル
今回はシリコンパワーを選びました。
今後、常時SSD起動で使うので下側のUSB3.0端子に差します。
上側のポートはバックアップ用microSDを差します。
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の設定
- 関連記事:LXTerminalの使い方
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キーを押下し続けました。
以下の画面で、shiftキーを押下し続けます。
「ネットインストールするには、shiftキーを押下し続ける(意訳)」
23MBのInstallerがダウンロードされます。
Installerダウンロード進捗状況。
Installerのダウンロードが完了すると、raspi imager が表示されます。
オンラインで直接、ラズパイOSをSSDに書き込みます。
raspi imagerの使い方はこちら。
OSの書き込みが完了すると、一旦再起動。
SSDから起動できれば、SSDブートは成功です。
念の為、
sudo raspi-config
再度、Boot Order と Boot loader Version の設定をやり直しておくと心強くなります。
有線LANに出来ない環境の場合の対処方法
1階にルーターがあり、2階でWi-Fiを使っている環境では、LANケーブルを差せないユーザーも多くおられると思います。
わざわざ1階にディスプレイを運ぶのも大掛かりな作業となります。
そんなときに便利なのは、Wi-Fi中継器です。
2階にも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を取り外します。
- SSDをラズパイに接続
- モニターディスプレイの電源を先に入れる
- ラズパイの電源を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接続が繋がれば成功です。
以上で本記事のコンテンツは終わりです。
お役に立てれば嬉しく思います。
以下の記事も一緒にどうぞ。
- ラズパイOS (bullsey) のインストール・セットアップ
- LXTerminal のコマンド一覧(最低限)
- nano の操作方法(保存)
- ラズパイOSセットアップ直後の設定
- ラズパイIPアドレスの固定など
- ufw(ファイアウォール)設定
- SSH接続でラズパイをリモート操作
- Sambaサーバを作ってiCloudを解除
- ローカルWordPress専用Webサーバ構築(SSL対応)
- Raspberry Pi OS Liteのインストール
- Raspberry Pi OS LiteでSambaを設定
- ラズパイサーバのWordPressを自動でバックアップ
- ラズパイSSDブート&起動しないときの対処方法
- MyDNSでドメインを無料取得する
- NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開
コメント