久々にラズパイを買った

Raspberry pi買っていじくり回してる人みてたら欲しくなったので、

私も書いました。Raspberry pi 4 8GB。

大昔にも買ったことがあるんですが、OSのコンパイル が死ぬほどめんどくさくて四苦八苦した記憶。最近はそんな苦労とは無縁のようです。

 

Raspberry PiのOSインストールからSSH接続までなんて

無数に記事があるので書く必要はないのですが、

割と初歩的なところでめちゃめちゃつまづいたので、日記として記録。

 

64bit OSインストール

キットで買ったので、microSDにはNOOBSが入っていましたが

64bitOSは現時点でまだbetaなので、NOOBS上では選べません。

ということで一旦WindowsPCにつないで、microSDの中身を64bitOSで上書き!

 

f:id:Messerarche:20211008183032p:plain

手順はこの辺の冒頭を参照。すんなり成功。

Raspberry Pi 3/4 (RaspberryPi OS 64bit) 一括セットアップ手順: node-redでスマートホーム用 - Qiita


sshで接続したいのでboot領域にsshという空ファイルも作成しておきます。

ブート時にsshというファイルが見つかったら有効にするという仕組みらしいですが

なんかアナログだなぁ・・・。

 

ちなみにwpa_supplicant.confを作成しておくネット接続までいけるようですが

うっかり忘れてたので後ほど手動設定。

 

さて、モニタ・キーボード・マウスをPiに接続し

起動!・・・で早速謎の躓き×2。

1.microSDカードどこに刺すねん

Raspberry PiのセットアップとOS (Raspbian)の初期設定 – Indoor Corgi

裏面のこれかーー。

キットについてた説明書は日本語が怪しくてよくわからんし無駄に探した。

 

そして電源挿して、起動するかと思いきや

2.画面が虹色に輝いて止まったんだが???

Raspberry Pi 4(ラズパイ)起動!虹画面フリーズの原因は意外なものだった… │ きゅうり大爆発
HDMIポートが隣だったらしい。刺しやすい方に刺すってのはダメだった模様

 

 

各種設定

気を取り直して

user:pi、password:raspberryにて起動。

 

この時点ではインターネットにつながってないので

sudo raspi-config

でコンフィグレーション画面を表示。

System option→Wireless LANから

SSIDとpasswordを入力。

設定反映の再起動の後、

ifconfigを叩くと192.〜の自宅アドレスが出たので無事つながった模様。

 

PC(mac)でコンソールを起動し

ssh pi@raspberry.local

を叩いたところ、無事接続完了。

これでやっとスタートライン。

 

さて、ちょうど日経ネットワークがSSH特集やってたので、

フィンガープリント周り(接続初回に出るコレ↓)

ECDSA key fingerprint is SHA256:Q2rDOIyj+/I8YMR4JnHjE2bJuhb90g2Pprbt8b9Nh/0.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

を深堀しようと思っていましたが

それよりもっと気になったことがあったので調査。

 

mDNS

なんか普通にipアドレスの代わりにraspberry.local使ってますが

これは一体どう言う仕組み?と思って調べました

mDNS(マルチキャストDNS)に興味 - treedown’s Report

mDNSの謎について - 知見(・・)!

マルチキャストDNSという、LAN専用のDNS。

 

ということは、マルチキャストパケットが飛んでるんだろうなぁってことで

PC側でキャプチャ仕掛けてraspberry piを再起動。

 

f:id:Messerarche:20211008191613p:plain

お、飛んでる飛んでる。ちょうどログインプロンプトが出る直前ぐらいに出てきた。

宛先は224.0.0.251のマルチキャスト用アドレス。port5353。

 

f:id:Messerarche:20211008191701p:plain

Domain Nameにraspberrypi.localが入っているので、ここでPCが理解するというわけですね。

そして、PCが理解していると言うことはキャッシュがどこかにあるということで。

ごそごそしてたら最終的にこれを見つけました。

macOSでない他のホストを.localで解決することはできるのか

$dscacheutil -q host -a name raspberrypi.local
name: raspberrypi.local
ipv6_address: 2001:a450:3e45:1600:f797:89df:1694:f5a7
name: raspberrypi.local
ip_address: 192.168.2.34

おー、でてきた。

 

ついでにpi側でもmDNSサービスの起動を確認してみます(Linuxだとavahiというらしい)

pi@raspberrypi:~ $ systemctl list-unit-files --type=service | grep avahi
avahi-daemon.service                   enabled

確かに起動してますね。

 

今回はMacで繋ぎましたが、Windows10でもmDNSの機能が実装されているらしく、

そのまま繋がるとのこと。