USBブートが正式対応されたらしいので試してみた。無事に成功!
成果物
経緯
2020-10-01。ラズパイ4Bのシステムが不安定になった。原因は低電圧によるフリーズ状態を電源断により終了したせいだと思われる。おそらくシステムが破損したかHDDが物理的にイカれた。
- 寿命はHDD作成から約8〜10ヶ月間だった。3B+より少し長かったが、やはり約半年に1回システムクラッシュする
- 低電圧の原因は不明。ちゃんと5V3Aを買ったと思うのだが経年劣化か? まだ半年くらいしか使ってないのに
そこで最新OSをHDDに導入することにした。
変わっていたこと
- OSの名前が
Raspbian
からRaspberry Pi OS
へ変更された(ググラビリティ低下) - USB bootが実装された release_notes.txt
- 64bitOSが出た(現状では32bit推奨)
- Raspberry Pi 4B Memory 8GB版が登場した($75)
最新OSを調査したところ、上記のような情報を得た。ついにUSBブートが正式対応したらしい。購入してから一年近く。待ちわびたぞ。早速インストールしよう。
方法
- OSをダウンロードする
- SDカードとHDDにOSを書き込む
- SDカードからラズパイ4Bをブートさせる
raspi-config
にてUSBブート設定する- SDカードを抜いてHDDのみ接続しラズパイ4Bをブートする
1. OSをダウンロードする
1-1. OSファイルのURLを調べる
公式サイトを参照する。
- https://www.raspberrypi.org/downloads/raspberry-pi-os/
- 2020-08-20版
- 1133MB
- 32bit
ブラウザでダウンロードしてURLを調べた。
https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2020-08-24/2020-08-20-raspios-buster-armhf.zip
日本のミラーサイト。昔はこっちのほうが高速だったが、最新版が存在しなかった……。
1-2. SHA-256を調べる
9d658abe6d97f86320e5a0288df17e6fcdd8776311cc320899719aa805106c52
これを以下に保存する。
echo '9d658abe6d97f86320e5a0288df17e6fcdd8776311cc320899719aa805106c52' > /home/pi/root/tmp/raspbian/20201001/sha256_expected.txt
1-3. ダウンロードする
ダウンローダを使って公式サイトからOSをダウンロードする。
sudo apt-get install aria2
mkdir -p /home/pi/root/tmp/raspbian/20201001 cd /home/pi/root/tmp/raspbian/20201001 time aria2c -x10 https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2020-08-24/2020-08-20-raspios-buster-armhf.zip
20分ほどで完了。公式も高速になったようだ。以前は8時間以上かかっていたのに。もうミラーサイトは使わなくて良さそう。
(OK):ダウンロード完了しました real 19m19.661s user 2m40.697s sys 0m27.287s
1-4. ファイル破損チェック
shasum -a 256 2020-08-20-raspios-buster-armhf.zip > sha256_actual.txt
diff sha256_expected.txt sha256_actual.txt
1c1 < 9d658abe6d97f86320e5a0288df17e6fcdd8776311cc320899719aa805106c52 --- > 9d658abe6d97f86320e5a0288df17e6fcdd8776311cc320899719aa805106c52 2020-08-20-raspios-buster-armhf.zip
sha256の値は同じ。よって正常にダウンロードされたことが確認できた。
2. SDカードとHDDにOSを書き込む
SDカードをラズパイに接続する。今回は以下の構成で接続した。
PI--[USB]--[USBハブ]--[SDカードリーダ]--[SDカード]
SDカードの名前を調べる。環境によって変わるので毎回調べること。今回は内容とサイズから/dev/sdb
と判断した。
df -h
... /dev/sdb1 43M 22M 21M 51% /media/pi/boot /dev/sdb2 29G 4.0G 24G 15% /media/pi/rootfs
アンマウントする。
umount /dev/sdb1 umount /dev/sdb2
ダウンロードしたOSファイルをSDカードに書き込む。
time unzip -p 2020-08-20-raspios-buster-armhf.zip | sudo dd of=/dev/sdb bs=4M conv=fsync
8分ほどで完了。展開後は約4GBのファイルスペースを消費した。
0+41470 レコード入力 0+41470 レコード出力 3821010944 bytes (3.8 GB, 3.6 GiB) copied, 436.836 s, 8.7 MB/s real 7m19.836s user 1m27.917s sys 0m31.522s
同様にHDDにも書き込んだ。HDDは電力を食うので外付電源のあるUSBハブにつなげた。2分くらいで書込完了した。さすがUSB3.0、速い。でもUSBハブは2.0のはずなのだが。
AC電源 | PI--[USB]--[USBハブ]--[HDDケース]--[HDD]
2-1. ディスプレイ設定を書き込む
ラズパイ4Bからはディスプレイの差込口が2つある。ディスプレイに合わせて設定すること。以下は購入時にメーカーへ問い合わせた設定値である。
なお、古いディスプレイ(1024x768)のものは何も設定しなければいい。
/boot/config.txt
[pi4] # Enable DRM VC4 V3D driver on top of the dispmanx display stack dtoverlay=vc4-fkms-v3d max_framebuffers=2 ## 2019-11-29 #[HDMI:0] ## 2018-09-22 cocopar 13.3inch 16:9 Display # max_usb_current=1 # hdmi_group=2 # hdmi_mode=82 # hdmi_cvt 1920 1080 60 6 0 0 0 # gpu_mem=256 # program_usb_boot_mode=1 # program_usb_boot_timeout=1 # 2019-11-29 [HDMI:1] # 2018-09-21 Elecrow Display start # 古いディスプレイ(1024x768まで対応)だとブートしなくなる。(ディスプレイが暗い状態でチカチカするのを無限ループする)その場合はコメントアウトする。 max_usb_current=1 hdmi_group=2 hdmi_mode=1 hdmi_mode=82 hdmi_cvt 1920 1080 60 6 0 0 0 hdmi_drive=2 program_usb_boot_mode=1 program_usb_boot_timeout=1
3. SDカードからラズパイ4Bをブートさせる
以下を参照した。
まずはSDカードでブートさせる。たぶんいきなりHDDだけつないでもブートしない。ブートローダが最新でないためSDカードからしかブートできないから。
3-1. 初回ブートする
- OSを書き込んだSDカードを、ラズパイ4Bのカードスロットに挿す
- ディスプレイを接続する
- 電源アダプタを挿す
- ブートするのでデスクトップが起動するまで待つ
- デスクトップが出るとダイアログがある
3-2. 初期設定
- ダイアログ画面に従って設定する
なお、既存ネットワーク設定は以下ファイルで閲覧できる。
cat /etc/wpa_supplicant/wpa_supplicant.conf
4. raspi-config
にてUSBブート設定する
- 端末
LXTerminal
を起動する sudo raspi-config
と入力しEnterキー押下する8 Update
を選択する
terminal画面になる。更新が完了すると再びコンフィグ画面に戻る。
3 Boot Options
を選択するB4 Boot Order
を選択するB1 USB Boot
を選択するUSB device is default boot device
と表示されるので<了解>
する
BCM2711 detected Dedicated VL805 EEPROM detected BOOTFS /boot *** INSTALLING /tmp/tmp.FFi0slXpf7 *** BOOTFS /boot EEPROM update pending. Please reboot to apply the update.
3 Boot Options
を選択するB5 Boot ROM Version
を選択するE1 Latest
を選択するYes
Latest version boot ROM selected - will be loaded at next reboot. Reset boot ROM to defaults?
Boot ROM reset to defaults
- 再起動する(
reboot
)
起動したら端末を起動する。
sudo raspi-config
3 Boot Options
B4 Boot Order
B1 USB Boot
OK
- シャットダウンする
以下の手順でSDカードを抜く。
- 緑色のLED点滅が終了したら電源を切る
- ラズパイのカードスロットからSDカードを抜く
- USBにHDDが接続されていることを確認する
- 電源を入れる
なお、HDDの初回ブートには3分ほどかかった。その後はSDカード時と同様にデスクトップが表示され、初回設定ダイアログが出るので、それに従って設定する。
初回起動以降は30秒くらいでブートする。
5. SDカードを抜いてHDDのみ接続しラズパイ4Bをブートする
- シャットダウンする
- 緑LEDの点滅が完了するのを待つ
- 電源を切る
- SDカードを抜いてHDDを接続する
- 電源を入れる
- ラズパイ4BがUSBブートする
HDDだけでブートするはず。最初に見慣れない画面が出るが、待っていればブートする。
HDD初回ブートには3分くらいかかった。それからSDカードと同様に初期設定する。以降のブートは30秒くらい。
設定
以降は、以下を参照に設定する。
2020-08-20版から変更されていた点
- 音声出力
- デスクトップのタスクバーにある音量アイコンを右クリックしてオーディオ出力先を再選択する(
Analog
,HDMI
)
- デスクトップのタスクバーにある音量アイコンを右クリックしてオーディオ出力先を再選択する(
- chromium パスワード・インポートができなくなっていた
- プロファイルをコピーすればOK
メモ
IEEEデバイス初期不良?
ネットワーク接続が不安定だった。のちに接続しなくなった。そこでWiFiドングルを付けたら安定した。
原因はラズパイ本体付属の無線LANデバイスが物理的に使えなかったためか? 粗悪品?
だが以下によると謎のバグっぽい。未だに直っていないのか。かなり致命的だと思うのだが……。
- https://qiita.com/god19/items/95ebf608fd38d1f18883https://qiita.com/god19/items/95ebf608fd38d1f18883#wi-fi
HDMI0
でなくHDMI1
に接続するとよい1920x1200
でなく1024x768
の解像度にするとよい
作業コマンド抜粋
time sudo apt update -y time sudo apt full-upgrade -y sudo apt install -y fonts-vlgothic fonts-ipafont fonts-ipaexfont sudo apt install -y fcitx-mozc
sudo apt install -y gimp sudo apt -y install libreoffice libreoffice-l10n-ja libreoffice-help-ja
ファイルコピーはUSB経由よりWiFi(rsync)経由のほうが圧倒的に高速だった。なぜ?
UN=pi IP=192.168.11.51 rsync -auvzP -e ssh "$HOME/root/sys" "$UN@$IP":"$HOME/root" rsync -auvzP -e ssh "$HOME/root/work" "$UN@$IP":"$HOME/root" rsync -auvzP -e ssh "$HOME/root/in" "$UN@$IP":"$HOME/root" rsync -auvzP -e ssh "$HOME/.config/chromium/Default" pi@192.168.11.13:"$HOME/.config/chromium" rsync -auvzP -e ssh "/home/pi/.config/ranger" pi@192.168.11.13:"$HOME/.config" rsync -auvzP -e ssh "/home/pi/.config/libreoffice/4/user/Scripts" pi@192.168.11.13:"/home/pi/.config/libreoffice/4/user" rsync -auvzP -e ssh "/home/pi/.config/libreoffice/4/user/basic" pi@192.168.11.13:"/home/pi/.config/libreoffice/4/user" rsync -auvzP -e ssh "/home/pi/.sqliterc" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/.vimrc" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/.odbc.ini" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/.vim" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/.fonts" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/Music" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/Videos" pi@192.168.11.13:"/home/pi" rsync -auvzP -e ssh "/home/pi/Downloads" pi@192.168.11.13:"/home/pi"
所感
ラズパイ4BでUSBブートできた。
ラズパイ4B(8GB)が75$で発売された。コスパ最強。USBブートに対応したし、USB3.0でHDDやSSDに接続すれば高速。普通にデスクトップPCとして使えそう。もうNUCもMini-STXもいらない。ラズパイに比べて高すぎる。
ラズパイ4B(4GB)を10ヶ月ほど使ったが、メモリ不足は感じなかった。むしろRAMディスクを使いまくってメモリ上でファイル作成し、GitHubにアップするということを続けていた。非常にサクサク。
だが問題も多い。以下に目をつぶれば自由度の高い最高のPCなのだが。
- 必要だが入手困難な周辺機器
- WiFiの不安定さ
- セットアップの大変さ
- システムクラッシュ頻度の高さ
4Bがもっと導入しやすければ人にも勧めやすいのだが。
それでも3B+のときとは比較にならないほど素晴らしい。3B+はメモリ1GBで、しかもUSB2.0のためクソ遅かった。もう使いたくない。
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26, 2020-08-20
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux