以下にWindowsのPCを使って、真っ新なmicroSDカードにRaspberry Pi最新の64bit OS bullseye (コードネーム)をインストールして、SSH含めRaspberry Piを設定する全手順を備忘録として書きました。
BullseyeでBoot時の自動的にWifiに接続する解決方法を追記しました。(2022/3/07)
Raspberry Piは新しいRaspberry Pi Imagerソフトを使うとめちゃくちゃ簡単にOSをインストールする事が出来ます。
Raspberry Pi imagerインストール
新しい raspberry pi imager for windowsからダウンロード。(下の図ではv1.6となっているが、v1.7.1をダウンロードしてくれる。@2022.02.21) 『Dowonload for Windows』を選択。
『imager_1.7.1.exe』をクリックしてインストール。 途中で『変更を許可しますか』もメッセージがでたら『はい』をクリック。
『Install』をクリック。
『Finish』をクリック。
microSDをFAT系にフォーマット
しかし、microSDカードがRaspberry Pi用にフォーマットされてないと、OSインストールを失敗します。(私も1回目は失敗でした。)WindowsのフォーマットはNTFSですが、Raspberry Piの場合、microSDカードのフォーマットは32GB以上はFAT32でなければなりません。 そこで、microSDカードをSDカード変換アダプタに挿入して、Windows PCのSDカードスロットに挿して、『ディスクの管理』(スタートメニューを右クリック)でSDカードのフォーマットされているかどうか、フォーマットのタイプが何かを確認する。 フォーマットがexFATやFAT32と表示されればSDカードのフォーマットはスキップしてできますが、exFATやFAT32でなければ、SDカードのフォーマットが必要です。 フォーマットもRaspberry Pi Imagerでします。
注意:SDカードをWindows PCのSDカードスロットに挿しておく。 この時、『ドライブ…..フォーマットする必要があります。 フォーマットしますか?』と聞いてきても、『キャンセル』をクリックしておく。 これはWindowsが聞いてきているので、NTFSにフォーマットされてしまいます。 もしNTFSにフォーマットされても、下の方法で簡単にFATに再フォーマットできるので慌てないでください。
『CHOOSE OS』をクリック。
下の方にスクロールして『Erase』を選択。
これがフォーマットです。
『CHOOSE STORAGE』をクリック。
microSDカードを選択。 この場合はSDXCがmicroSDなのでSDXを選択。
*後で128GBと出てきますが、64GBと128GBの2枚別々にインストールしました。
『WRITE』をクリック。
『YES』をクリック。
フォーマットが完了しました
続けてOSイメージをインストールするので、『CONTINUE』と出ているダイアログボックスの外をクリックして、『CONTINUE』のダイアログボックスを消す。
『CONTINUE』を押してしまったら、microSDを一度抜いて、再度SDスロットに挿入。
OSイメージのインストール
『Erase』をクリック。
上にスクロールして『Raspberry Pi OS (other)』をクリック。
『Raspberry Pi OS (64-bit)』をクリック。
『CHOOSE STORAGE』をクリック。
『SDカード』を選択。 私の場合、128GBのSDカードなのでSDXCと表示されています。
『WRITE』をクリック。
『SDカードの中身が消えますよ。 続けていいですか?』と聞いてきているので『YES』を選択。
10分でまだこんな感じです。
『CONTINUE』を押して、SDカードアダプタごとWindows PCから抜きとる。
microSDをSDカードアダプタから抜き取る。
Raspberry Pi設定
設定の前に
USBマウスとUSBキーボードが必要です。 Raspberry Piにマウスとキーボードも接続しておく。
Raspberry Piの電源ケーブルを抜いて、電源が入っていない状態で、microSDカードをRaspberry Piに装着して、Raspberry Piの電源を入れて画面がモニタに表示されるのを待つ。
地域やキーボードの設定
Welcomeメッセージがでるので、
- CountryをJapanにする。
- LanguageをJapaneseにする。
- TimezoneをTokyoにする。
- Use US Keyboardを使用しているKeyboardタイプに合わせる。(*私の場合、@キーが2の上にある、英語キーボードなので、チェックを入れています。)
上記を設定して、『Next』をクリック。
パスワードを設定
パスワードを入力して設定します。 このパスワードは、User PiのログインパスワードでSSHでも使用するのでメモしておく事。
タスクバーが画面にフィットしていれば、チェックを入れずに『Next』をクリック。
していなければ、チェックを入れて『Next』をおすと、Rebootしてタスクバーを合わせてくれるみたいです。(そしてReboot後、この画面になるのかなぁ。)
Wifi接続
Wifiを検索して、リストが表示されるので、スクロールして自分のWifiを選択(クリック)して『Next』をクリックする。
Wifi接続のパスワードを入力して、『Next』をクリック。
『Hide characters』のチェックを外すと入力しているパスワードが表示されるので間違えにくい。
Wifiに接続まで1分以上かかりました。 分からないですが、3分くらいかかっていたかもしれません。 右の図の『…please wait』は数十秒で消えて次のUpdateの画面に移行したのですが、Updateとしても『ネットワーク接続されていません』と出てきました。 しかしもう少し2~3分待ってからUpdateするとUpdateが始まりました。
OSやアプリのUpdate
『Next』をクリック。
これで基本の設定は終わりなので『Done』をクリック。
その他の設定
SSH設定
左上のラズベリーマークをクリックして、『Preferences』をクリックして、『Raspberry Pi Configuration』をクリック。
*この画面はPrint Screen出来なかったので、スマホで撮ったので画質が悪いです。🙇
上のタブで『Interfaces』をクリックして、『『SSH』のスイッチを右に動かしてONにする。 これをしないと、SSH通信できない。
SSH通信するIpアドレスを確認
Raspberry Piのコマンドプロンプト(Bash)を立ち上げて、ip aで確認してメモしておく。
$ ip a
rootのパスワード設定
初期状態ではroot(最上位管理者)のパスワードは入っていないので非常に危険です。 なのでrootのパスワードを設定します。 普段使うユーザーは名はpiで、そのパスワードは既に上で設定しました。 以下コマンドを入れて、新しいパスワードを設定する。
$ sudo passwd root
これでRaspberry Piの設定は一応完了。(本当は、SSH通信をパスワードでなく、鍵によるSSH通信に設定する必要ありますが、疲れてきたので後で設定します。 設定の仕方は『Raspberry Pi に鍵を使ってSSH通信』を参考戴けます。
Windows PCからSSH通信してみる
Windows PCにTeraTermをインストールして立ち上げる。
- 『ホスト』に先ほど調べたIPアドレスを入力する。
- 『TCPポート』は『22』
- 『SSH』を選択し『SSH2』を選択して
- 『OK』
『続行』をクリック。
*『既存の鍵を新しい鍵で上書きする(R)』にチェックを入れていると、次からこのメッセージは現れません。
- 『ユーザー名』に半角で『pi』
- 『パスフレーズ』に先ほど設定した『パスワード』を入力し
- 『OK』をクリック
Windows PCからログインできました!
aarch64とあるのでkernelは64bitですね。
uname -aでチェック。
$ uname -a
OSも64bitです。
$ getconf LONG_BIT
ちゃんとversion11でbullseyeになっていますね。
$ cat /etc/os-release
Pythonは2.7でなく、標準で3.9.2になっていますね。 Python2は/binからも無くなっていました。
Luaはまだ5.1.5でした。 5.4になっていると期待したのですが残念。
日本語入力設定 fcitx-mozcのインストール
$ sudo apt update
$ sudo apt full-upgrade
$ sudo apt install ibus-mozc fonts-takao
『y』→『Enter』を押す。
$ sudo reboot -f
再起動して、またTeraTermでSSH接続する。
64bit化して良かった事
32bit Busterの時は、Low Voltageの警告が出ていたのが出なくなった。
32bit Busterの時は、YouTubeの再生など断続的に止まったり再生したりしていたのが、止まらなくなった。
おまけ 32bit Busterからの32bit Bullseye へのUpgrade
32bit Busterから64bit BullseyeへのUpgradeは、『CrossGrading』と言われていて、Debianのサイトでは出来そうな感じですが、試したGary Terryさんは、Raspberry Piのサイトで『CrossGrading出来なかった』とコメントしています。
ここでは、既存のデータを残しつつ32bit BullseyeへのUpgradeです。
最初に一応修復しておく~
$ dpkg --audit //修復しておく $ dpkg --get-selections | grep 'hold$' //ホールド状態のパッケージが無いか確認 $ sudo mount -o remount,rw /boot //読込専用ファイルシステムを読書可能にする
source.listを変更
sources.listにdeb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpiを書き加える。
$ sudo nano /etc/apt/sources.list
upgrade実行
$ sudo apt update //パッケージ情報更新 $ sudo apt -o APT::Get::Trivial-Only=true full-upgrade //Upgradeする容量が十分あるか確認 $ apt upgrade --without-new-pkgs //最小限のOS Upgrade $ apt full-upgrade //OS Upgrade
- 何度か止まってる。
- 止まって『:』と表示されなるので『q to quit』が表示されるまでspaceを押す。
- 止まって『q to quit』が表示されたら、『q』を押す。
- 止まって青い画面がでたら 『OK』を押す。 (”cron”とかなんとか書いてあった)
- 止まってN,Y,D等聞いてくるので、デフォルトの『N』を入力。
/usr/bin/apt-listchanges:not foundエラーが出たら
『/usr/bin/apt-listchanges:not foundエラー対処方法』をご参考ください。
libc6-dev:breaks:
libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installedエラーが出たら
The following packages have unmet dependencies: libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed
以下を実行して再度full-upgradeする。
$ sudo apt install gcc-8-base libc6-dev $ sudo apt full-upgrade
確認
ちゃんとなりましたね。
$ cat /etc/os-release
しかし32bitです。 64bitはフォーマットして新規しかできないようです。
$ lsb_release -a
.bashrcが読み込まれない問題解決
実は、32bit BulseyenにUpgradeして、TeraTermでSSH接続しても右の様にpi@raspberrypi:の文字に色が付いておらず、python -Vも認識しませんでした。 そこで、.bash_profileに以下を書き込んで、TeraTermで再接続したら全て解決しました。
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
下は解決後
因みに、BullseyeからPython3とPython3.9だけになっています。なので、Pythonしても反応しません。 私の場合は、pyenvでPython3.10を入れているので、左の図の様になります。 pyenvのパスやpyenvでインストールしたPython3.10のパスを.bashrcで読み込んでいるのが、.bashrcが読み込まれていなかったので、python -Vも認識されませんでした。
Boot時Wifi接続方法
何故かBullseyeにしたらBoot時にWifiがつながりませんでした。
解決策
以下を実行したらboot後、自動的にWifi接続するようになりました。
connmanctl enable wifi
これをする方法は、実際Raspberry Piにキーボードをつないでするか、Raspberry PiをEthernetに繋いでSSH接続でするかしかありません。 私は、USBキーボードを繋いで入力しました。
以下のコマンドで通信のStatus(状態)を見る事ができます。
connmanctl technologies
右の図はBoot後です。 WifiのPowered=Trueになっていますね。 Wifiもちゃんとつながってました。
このおかげかどうか分かりませんが、通信速度も64bit時ほどは早くないですが、32bitのBuster時と同じくらいになくなりました。
YouTubeを観ると64bit時に出ていなかった、Low Voltageが偶に表示されます。
私の場合はsudo rfkillでは解決しませんでした
以下実行後Wifiは繋がりましたが、Reboot後はWifiにつながらず、再度手動でWifi ONにしなければなりませんでした。
sudo rfkill unblock wifi
もしかしたら、上記がReboot後Wifi ONにならなかったのは、piユーザーでSSH接続して実行したからかもしれません。 SSH接続でなく、直接USBでキーボードを接続して以下を実行したらReboot後も反映されたのかもしれません。 しかし、既にconnmanctlでWifiは問題なく動作しているので、検証していません。
更に設定しておきたい事
鍵を使ったSSH通信
セキュリティの面と、VScodeからRaspberry Piを踏み台にして外部サーバに多段接続する際パスワードでは出来ないので鍵を使ったSSH通信に設定する。
Pythonの仮想環境
pyenvをインストールして、pyenvでPythonをインストールしてversion切り替え可能にしておく。
そしてVirtualenvも入れてプロジェクトごとに分けれるようにしておく。
これをしていないと後でRaspberry Piないがぐちゃぐちゃになって、どのバージョンのライブラリやモジュールがどこから読まれて動作しているかデバッグできなくなる。
コメント