HPCメモ

HPC(High Performance Computing)に関連したりしなかったりすることのメモ書き

ラズパイ4のセットアップ

ちょっと前にラズパイのアップデートで軽く炎上してましたね。

www.reddit.com

要するに

あ…ありのまま 今 起こった事を話すぜ!

「おれは、OSのアップデートをしたと思っていたら MSのリポジトリがadd-apt-repositoryされていた」

な… 何を言っているのか わからねーと思うが 

おれも 何をされたのか わからなかった…

頭がどうにかなりそうだった… 催眠術だとか超スピードだとか

そんなチャチなもんじゃあ 断じてねえ

もっと恐ろしいものの片鱗を 味わったぜ…

てことのようです。

MSのリポを追加したこと自体は、VS codeを公式イメージの配布物に含めるっていう方針のようなので 新規に配布されるイメージには勝手にやってくれりゃ良いだろうと思うんですが、 アップデートの時にこっそりやるのはマズいですね。

ところで、こんなこともあろうかと思って昨年末にRaspberry Pi ImagerからOSイメージを書き込んだ後、放置してたSDカードが手元ににあります。 今日は、ラズパイ4にこのカードを挿してセットアップした後、例のアップデートがどういうように行なわれるのかを見てみようと思います。

SDカードにOSを書き込むところまではこちらの記事を参考にしました。

deviceplus.jp

手順は簡単なんですが、私の環境ではいくつかトラブルがありました。

1つめは、ダウンロードしたRasberry Pi Imagerが壊れていたというもので、インストールしようとすると次のエラーが出ました。*1

f:id:n_so5:20201217000311p:plain

これは、単純に再ダウンロードすれば解決しました。

もう1つは、OSイメージのダウンロードに時間がかかりすぎてタイムアウトするというものですorz

OSイメージを取得するのに、ミラーサイトを使わずに本家まで取りに行っていたようで、だいたい2〜3時間かかってました。 最初はノートPCで作業をしていたので、気付いたらスリープして接続が切れてエラーになってました。

今は改善されているようですが、当時はImager(10数MB)のダウンロードにも10分以上かかってたので、配布サーバに問題があったんでしょうね。

さて、無事にSDカードが用意できたということにして、ラズパイのセットアップを進めていきます。

まずは、キーボードとディスプレイ、電源のみを繋いだ状態で(SDカードは挿さずに)起動してみます。

f:id:n_so5:20210324120037j:plain

起動途中で止まって次の画面*2が表示されていれば、とりあえずOKです。

f:id:n_so5:20210324120053j:plain

改めて、SDカードを挿入して起動します。*3

f:id:n_so5:20210324120218j:plain

起動すると、デスクトップが表示されて、「(セットアップが)もうちょっとだけ続くんじゃよ」と表示されたダイアログが出ます。

f:id:n_so5:20210324120513j:plain

この後、次の順に設定画面が表示されます。

  • locale, キーボードの確認
  • piユーザのパスワード変更*4
  • ディスプレイの設定
  • wifiの設定

最後に、次のようなダイアログでアップデートする?と聞かれるので[Next]をクリックすると特に何も表示されずにアップデートが始まります。

f:id:n_so5:20210324121006j:plain

アップデートが始まってから慌ててaptのリポジトリ関係の状態を調べたところ、アップデート前の状態ではMSのリポジトリは入っていませんでした。

f:id:n_so5:20210324121408j:plain

アップデート終了後、この時点でも特に内容は表示されずに単にアップデートできたよとだけ言われます。なお、この後[OK]をクリックすると再起動されました(そこはダイアログに書いといてほしいw)

f:id:n_so5:20210324122432j:plain

で、再起動後のリポジトリ設定は次のとおりで、ファイルは追加されているけどコメントしか残ってませんでした。

f:id:n_so5:20210324122736j:plain

というわけで、確かに特に確認する間もなくアップデートされますが、現在はVS code用のリポは追加されないようになっているようですね。*5

引き続きセットアップを続けていきましょう。

設定アプリっぽいものを立ち上げて

  1. piユーザのパスワード変更
  2. sshの有効化
  3. カメラの有効化(必要な人だけ)

と変更した後、求められるままに再起動します。

再起動したらコマンドプロンプトからip addressしてIPアドレス(この例では192.168.0.22)を確認して、 PCからssh pi@{IPアドレス} でログインできるか確認しましょう。

% ssh pi@192.168.0.22
The authenticity of host '192.168.0.22 (192.168.0.22)' can't be established.
ECDSA key fingerprint is SHA256:QyiNjok1ZCVBPTCVTeSV4nBFu1B5U1eh2fmdyktPLMc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.22' (ECDSA) to the list of known hosts.
pi@192.168.0.22's password: 
Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Mar 24 12:29:23 2021

こんな感じでパスワードでログインできるのを確認したら、公開鍵認証に切り替えましょう。

まずは、ログインした先でauthorized_keysファイルを編集し、コピペでPCの公開鍵を登録します。

> mkdir .ssh
> vi .ssh/authorized_keys
> chmod go-r .ssh/authorized_keys

ここまできたら、PCで別のターミナル画面を開いて公開鍵認証でログインできるか確かめます。

先程と同じようにssh pi@{IPアドレス}して、パスワードを聞かれずにログインできれば大丈夫です。

続けて、パスワードログインを無効化するために、/etc/ssh/sshd_configを編集してPasswordAuthenticationをnoにし、sshdを再起動ます。

> sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
> sudo systemctl restart sshd

最後に、パスワード認証が無効になっているか確認するために、公開鍵認証を無効にしてログインを試してみます。

% ssh -oPubkeyAuthentication=no  pi@192.168.0.22
pi@192.168.0.22: Permission denied (publickey).

無事にログインできませんでした。

長くなってきたので、一旦この辺で終了します。

*1:こういう事故に対応するためにも、ハッシュ値は置いといて欲しいものです・・・

*2:右上に表示されているQRコードはrasberypi.orgへのリンクなんですが、これは何かトラブってたらスマホで調べてねってことでしょうかね。便利な世の中になったもんだ・・・

*3:SDカードスロットだけ裏面なんだけど、一瞬カードスロットが無い!ってパニックになってましたwww

*4:ここで変えたはずなんだけど、後でsshでログインした時にデフォルトパスワードのままだぞって怒られた気がする

*5:なんか騒動の最中に「この挙動は変えないよん」って公式のコメントを見た記憶があったんだけど気のせいだろうか・・・