やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ラズパイ4B(4GB)にRaspbianPiOS(2020-08-20)32bit版をインストールしてUSBブートした

 USBブートが正式対応されたらしいので試してみた。無事に成功!

成果物

github

経緯

 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ブートが正式対応したらしい。購入してから一年近く。待ちわびたぞ。早速インストールしよう。

方法

  1. OSをダウンロードする
  2. SDカードとHDDにOSを書き込む
  3. SDカードからラズパイ4Bをブートさせる
  4. raspi-configにてUSBブート設定する
  5. SDカードを抜いてHDDのみ接続しラズパイ4Bをブートする

1. OSをダウンロードする

1-1. OSファイルのURLを調べる

 公式サイトを参照する。

 ブラウザでダウンロードして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. 初回ブートする

  1. OSを書き込んだSDカードを、ラズパイ4Bのカードスロットに挿す
  2. ディスプレイを接続する
  3. 電源アダプタを挿す
  4. ブートするのでデスクトップが起動するまで待つ
  5. デスクトップが出るとダイアログがある

3-2. 初期設定

  1. ダイアログ画面に従って設定する

 なお、既存ネットワーク設定は以下ファイルで閲覧できる。

cat /etc/wpa_supplicant/wpa_supplicant.conf

4. raspi-configにてUSBブート設定する

  1. 端末LXTerminalを起動する
  2. sudo raspi-configと入力しEnterキー押下する
  3. 8 Updateを選択する

 terminal画面になる。更新が完了すると再びコンフィグ画面に戻る。

  1. 3 Boot Optionsを選択する
  2. B4 Boot Orderを選択する
  3. B1 USB Bootを選択する
  4. 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.
  1. 3 Boot Optionsを選択する
  2. B5 Boot ROM Versionを選択する
  3. E1 Latestを選択する
  4. Yes
Latest version boot ROM selected - will be loaded at next reboot.
Reset boot ROM to defaults?   
Boot ROM reset to defaults 
  1. 再起動する(reboot

 起動したら端末を起動する。

  1. sudo raspi-config
  2. 3 Boot Options
  3. B4 Boot Order
  4. B1 USB Boot
  5. OK
  6. シャットダウンする

 以下の手順でSDカードを抜く。

  1. 緑色のLED点滅が終了したら電源を切る
  2. ラズパイのカードスロットからSDカードを抜く
  3. USBにHDDが接続されていることを確認する
  4. 電源を入れる

 なお、HDDの初回ブートには3分ほどかかった。その後はSDカード時と同様にデスクトップが表示され、初回設定ダイアログが出るので、それに従って設定する。

 初回起動以降は30秒くらいでブートする。

5. SDカードを抜いてHDDのみ接続しラズパイ4Bをブートする

  1. シャットダウンする
  2. 緑LEDの点滅が完了するのを待つ
  3. 電源を切る
  4. SDカードを抜いてHDDを接続する
  5. 電源を入れる
  6. ラズパイ4BがUSBブートする

 HDDだけでブートするはず。最初に見慣れない画面が出るが、待っていればブートする。

 HDD初回ブートには3分くらいかかった。それからSDカードと同様に初期設定する。以降のブートは30秒くらい。

設定

 以降は、以下を参照に設定する。

2020-08-20版から変更されていた点

メモ

IEEEバイス初期不良

 ネットワーク接続が不安定だった。のちに接続しなくなった。そこでWiFiドングルを付けたら安定した。

 原因はラズパイ本体付属の無線LANバイスが物理的に使えなかったためか? 粗悪品?

 だが以下によると謎のバグっぽい。未だに直っていないのか。かなり致命的だと思うのだが……。

作業コマンド抜粋

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なのだが。

  • 必要だが入手困難な周辺機器
    • 5V3AのUSB3.0 type-C 電源
    • micro HDMI(ディスプレイ側、ケーブル、ラズパイ本体、間における変換キャップで対応するのが現実的)
  • WiFiの不安定さ
  • セットアップの大変さ
  • システムクラッシュ頻度の高さ

 4Bがもっと導入しやすければ人にも勧めやすいのだが。

 それでも3B+のときとは比較にならないほど素晴らしい。3B+はメモリ1GBで、しかもUSB2.0のためクソ遅かった。もう使いたくない。

対象環境

$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux