1. はじめに
Raspberry Pi 3 Model Bが死蔵状態にあり、これを活用するために、まずは起動できるところまでもっていき、最新のOSを導入します。
2. 用意するもの
- Raspberry Pi 本体
- 2.4A以上供給可能なUSB電源
- 抵抗値の少ない電源供給用USBケーブル
- 下記いずれかの起動メディア
- microSD(Pi2,3でUSB起動への設定変更をしていない場合と初代では必須)
- USBメモリ
- ハードディスクとUSB接続ケース
- SSDとUSB接続ケース
3. Raspberry Pi 起動メディアの準備
長らく使われていなかったせいでmicroSDカードが装着されていない状態だったので、起動メディアの作成から始めます。
3.1. メディアの種類
Raspberry Piの起動メディアですが、通常はmicroSDです。しかし長期運用を行う場合、書き込み回数に対する耐性の低さから、いつのまにか動作しなくなっている場合がよくあります。このため、起動メディアはUSBメモリやUSB接続のハードディスク、理想的にはUSB接続のSSDにするのがいいと思います。
3.2. メディアは32GBを超えていてもOK
Raspberry Pi Imagerは、VFATフォーマットの上限である32GBを超える容量のメディアも扱えます。起動用にVFAT領域が小さく確保され、残りの領域はすべてext4で確保されます。
microSDやUSBメモリを使用する場合、容量が大きい方が、同じ量のデータ書き込みに対して寿命が向上するかもしれませんが、特定領域だけに書き込みが集中する場合は、容量の大きさが寿命に寄与することはないでしょう。知らんけど。
3.3. USB起動の注意点
- USB接続のHDDケースを使用する場合、電流不足で適切に動作しないことがあります。
- Raspberry Pi 初代はmicroSDからしか起動できません。
- Raspberry Pi 4はファームウェアが正式対応したそうです。
USB MSD boot also requires the firmware from Raspberry Pi OS 2020-08-20 or newer.
https://github.com/raspberrypi/rpi-eeprom/blob/09f77ad9fa8655a28de754640e82ca67aabe6c33/firmware/release-notes.md
- Raspberry Pi 2,3は設定の変更が必要です。私はこちらの記事を参考にさせていただきました。
https://jyn.jp/raspberrypi-usb-only-boot/
4. 起動メディアの作成
以前はNoobsというものを使っていた記憶がありますが、今はRaspberry Pi Imagerのおかげで、ずいぶん楽になりました。メディアを選ばず、消去もできます。
デスクトップ環境は不要なので、CHOOSE OSからRaspberry Pi OS (other)を選択し、Raspberry Pi OS Lite(32-bit)を選択します。64bitないの?と思う方、私もそう思いました。調べるとあるようなので、それを使うことにしました。次の節へどうぞ。
CHOOSE STORAGEからメディアを選択し、WRITEすれば、程なくして起動メディアが作成されます。ダメになったmicroSDや不良セクタの多いHDDなど、メディアに問題がある場合は時間がかかります。その場合は思い切って捨て、新しいものを使いましょう。
4.1. Raspberry Pi OS Lite (64-bit)
Raspberry Pi Imager には表示されませんが、下記サイトに日付別に用意されていますので、最新のzipファイルをダウンロードします。
初代をはじめとしたBroadcom BCM2835採用機種は64bit(arm64)に対応しません。
https://downloads.raspberrypi.org/raspios_lite_arm64/images/
記事作成時点では2021-05-07-raspios-buster-arm64-lite.zipが最新でした。
Raspberry Pi Imagerで扱うことができ、一番下のUse customから起動メディアを作成できます。
5. 起動する前に
初期設定の一部は起動メディアを編集することでも可能です。無線LAN、SSHを有効にできるので、モニタやキーボードをつなぐことなく、LANケーブルがなくても作業ができるため、やることにします。
作成した起動メディアをパソコンから取り外し、再度取り付けると、bootという200MB程の領域が認識されますので、それを開き、設定を加えていきます。
5.1. 無線LANの事前設定
wpa_supplicant.confというファイル名で、UTF-8形式のテキストファイルを作成します。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSIDを入力します"
psk="パスワードを入力します"
}
パスワードは後でハッシュ化しましょう。
wpa_passphraseコマンドが使える環境があれば、ハッシュ化済みのファイルを生成できます。
touch wpa_supplicant.conf
echo 'country=JP' | sudo tee -a wpa_supplicant.conf
echo 'ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev' | sudo tee -a wpa_supplicant.conf
sudo wpa_passphrase "SSIDを入力します" "パスワードを入力します" | sudo tee -a wpa_supplicant.conf
結果を確認し、内容をコピペするか、ファイルをコピーします。
$ cat wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
ssid="SSIDを入力します"
#psk="パスワードを入力します"
psk=d16ef9220f4c0ff9a2573b53757e19fad33e45cdf89c731253973c57f83d8706 #ハッシュ化された"パスワードを入力します"
}
5.2. SSHの事前設定
sshというファイル名で、中身がないファイルを作成します。
以上で起動前の設定は終わりです。
6. Raspberry Pi の起動
作成した起動メディアを取り付け、電源を接続し、無事起動するのを待ちます。
私は起動メディアをSSDで作成したのですが、最初の起動で領域の大きさを拡大するらしく、メッセージが表示された後に自動的に再起動されました。しかし、その後うんともすんとも言いません。電源を確認すると、5V400mA程度流れているのですが、SSDを収めたHDDケースのアクセスランプは沈黙したままです。仕方がないので、電源を抜き差ししたところ、無事起動しました。
7. 低電圧対策
起動はするものの低電圧警告が出まくる場合、対策が必要です。
- スイッチサイエンス様の分析(PDF)が参考になります
http://doc.switch-science.com/support/RaspberryPi3/raspi3power.pdf
- ACアダプタは5V2.4A以上、できれば5V3Aのものを使いましょう
- USBケーブルは抵抗値の低いもの(3A対応や急速充電対応などをうたうもの)を使いましょう
- どうしても給電が追い付かない場合はGPIOからの給電を検討しましょう
8. 起動してからの設定
無事起動したら、パソコンからSSHで、おなじみのユーザー名とパスワードを使いログインし、設定コマンドを実行します。IPアドレスが分からない場合は、こちらが参考になると思います。
https://iot-plus.net/make/raspi/ssh-connect-using-mdns/
8.1. raspi-config
raspi-configコマンドで初期設定を行います。
sudo raspi-config
私の場合は以下の項目について設定を変更しました。
System Options Hostname から、ホスト名の設定
Localisation Options Locale から、ロケールの設定(en_US.UTF-8 UTF-8、ja_JP.UTF-8 UTF-8を追加、デフォルトをC.UTF-8に)
Localisation Options Timezone から、タイムゾーンの設定(Asia,Tokyo)
Localisation Options Keyboard から、キーボードの設定(Generic 105-key PC (intl.) Other Japanese Japanese The default for the keyboard layout No compose key)
Advanced Options Network Interface Names から、インターフェース名の設定(いいえにすると長い名前ではなくeth0などの短い名前になる)
- 途中で画面遷移がおかしくなったら、再起動しましょう。
- パスワードはLocalisation Options、特にキーボードの設定変更を反映させた後に行うようにしています。キーボードの見た目通りに記号が入力されず、ログインできなくなるのが怖いので・・・。
- デフォルトのロケールはCにしておいて、必要があればユーザーごとに
export LANG=ja_JP.UTF-8することにしています。たまにコンソール画面が必要になり、日本語部分が■で表示されて困るからです。
設定後、最新の環境にします。
sudo apt update
sudo apt upgrade
Bullseyeにしないのであれば、ここまで。
9. BusterからBullseyeへ
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
手順はこちらを拝見し、ほぼそのまま実行しました。
https://qiita.com/kakinaguru_zo/items/78aa8ba3912a131fd078
今回使っているOSはRaspberry Pi OS Liteの64bit版なので、/etc/apt/sources.listにはdeb http://deb.debian.org/debian bullseye main contrib non-freeを追加しています。
echo 'deb http://deb.debian.org/debian bullseye main contrib non-free' | sudo tee -a /etc/apt/sources.list
Liteも含め、Raspberry Pi OSの32bit版を使った場合、実行するコマンドは下記のようになります。
echo 'deb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi' | sudo tee -a /etc/apt/sources.list
以降、続けて以下のコマンドを実行します。
sudo apt update
sudo apt --with-new-pkgs upgrade
sudo apt --autoremove purge libgcc-8-dev gcc-8-base
sudo apt --purge dist-upgrade
sudo sync
sudo reboot
確認してみます。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
Bullseyeになりました。
今日はここまで。