Raspberry pi開発環境(無線LANのみ)を作る話
最近、Raspberry pi周りをやっておりますが、結構開発環境を再構築とか結構しておるわけです。
そのときの構築って頭の中でぱぱぱーと作っていますが、時間が経つと忘れますのでメモを残しておきます。
昔の環境は忘れていますし
ターゲット : Raspberry pi 3(未確認ですが、4でもzeroでもいっしょかな?)
欲しい環境
開発環境の構築するにあたりまして欲しい環境というのをまとめておきます。
電子工作をしていまして結構邪魔なのはLANケーブルです。
なので今回は無線LANのみの接続環境で有線LAN配線がない状態の環境がベストです。
Macbook proでOSを作る
Raspberry piの環境構築ではじめにSDカードにOSを書き込みます。
今回作業をおこなったのはMacbook proで32GBのメディアを使いました。
SDカードをUSBにカードでマウントしてとかは略です
1.OSをSDカードに書き込む。
今回利用するOSはシンプルにRaspberry pi OSを使います。
ディスクの作成方法は、Raspberry pi Imagerを使って、「Raspberry pi OS (32bit)」を選択すれば作成可能です…
2.SSHを有効にする
OSを書き込んだ後にSDカードを接続すればOSを起動可能ですが、SSHは無効状態で上がります。
モニタ・キーボードを接続して設定をする場合には不要ですが、今回は有線LAN(DHCP払い出し)にて接続させたいので、SSHを有効にします
有効にする方法はsdカードのbootにsshファイルがあれば有効になりますのでファイルを作成します。
OS書き込み後はbootがマウントされていませんので一度SDカードを抜き差しして、SDカードをマウントします
macosの場合は/Volumesにマウントされますのでマウントされているbootにファイルを作成します
$ touch /Volumes/boot/ssh
bootをアンマウントして、SDカードを取り出します。
Raspberry piの起動と有線LANでのSSH接続…
Raspberry piにSDカードを接続してOS起動します…
設定を行いますので有線LANを接続して設定をSSHで行います。
有線のIPアドレスは… ルータなどでDHCP払い出しを参考にしてください。
(MACをb8:27:eb くらいで始まるものを参考してください。)
ルータのDHCP払い出し一覧から…
IPが分かりましたら、SSHで入ります
$ ssh pi@192.168.1.84
Raspberry pi のデフォルトアカウントはpi / raspberryです。
無線を設定する
さっそく、無線の設定を行います。
接続する無線LAN設定は前もってルータなどでメモしておきます。
今回の設定は以下を想定しております。
設定項目 | 値 |
SSID | DIAN24 |
passpath | 3db78cd1c6dd2 |
方式など | 2.4GHz / WPA/WPA2-PSK(AES) / 802.11 |
毎回 sudo コールするのがめんどくさいのでsudo -iでroot権限でやっておきます。
wpa_supplicantを設定する
初期状態のwpa_supplicant.confをはじめに確認します
root@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
無線LANの接続登録情報の内容を確認します。
ここで、自身のSSIDとパスフェーズを指定してください
root@raspberrypi:~ $ wpa_passphrase DIAN24 3db78cd1c6dd2
network={
ssid="DIAN24"
#psk="3db78cd1c6dd2"
psk=698787526627958b489c8dc996ea8c76aea8d43484d53950fac6d9d210f35f3a
}
無線LANネットワークに接続する内容はこんな感じです。
この内容をwpa_supplicant.confに追記します
当たり前ですが、2回はしないでください
root@raspberrypi:~# wpa_passphrase DIAN24 3db78cd1c6dd2 >> /etc/wpa_supplicant/wpa_supplicant.conf
接続情報の出来上がりは、こんな感じです
root@raspberrypi:~# sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="DIAN24"
#psk="3db78cd1c6dd2"
psk=698787526627958b489c8dc996ea8c76aea8d43484d53950fac6d9d210f35f3a
}
インタフェイス(wlan0)を再定義
はじめに、現在利用中のインタフェイス(wlan0)の設定を確認します。
root@raspberrypi:~# iwconfig wlan0
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
意味はないですが、インタフェイス情報はiwconfingで確認できます。
先ほど実環境の定義をwpa_supplicant.confに記述したので、インタフェイス(wlan0)に定義します
iwconfigで確認した通りに、wpa_supplicantが動いていますので、killします。
謎のコマンドrfkillして(調べろw)
インタフェイスを定義します(wpa_supplicant)
root@raspberrypi:~# killall wpa_supplicant
root@raspberrypi:~# rfkill unblock wifi
root@raspberrypi:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Successfully initialized wpa_supplicant
はい、Successfullyされて反映は環境です
無線LANの情報を確認します
root@raspberrypi:~# iwconfig wlan0
wlan0 IEEE 802.11 ESSID:"DIAN24"
Mode:Managed Frequency:2.412 GHz Access Point: 9A:F1:99:93:47:B6
Bit Rate=24 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=66/70 Signal level=-44 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
無事にSSIDが反映されているのを確認できました。
次にIPと思ったのですが、自動的にDHCPからIPを引っ張っている様です
root@raspberrypi:~# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.85 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::66da:9fa6:eb13:c795 prefixlen 64 scopeid 0x20<link>
inet6 2409:250:40c0:2500:5b0c:7901:1aa:65d0 prefixlen 64 scopeid 0x0<global>
ether b8:27:eb:58:89:f2 txqueuelen 1000 (Ethernet)
RX packets 209 bytes 24672 (24.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 122 bytes 19287 (18.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
固定IPを使う!
DHCPでも良いですが、ころころ変わるとめんどくさいのでIPを固定にします。
方法がいろいろありますが、dhcpcd.confに記述します…
root@raspberrypi:~# vi /etc/dhcpcd.conf
... 略 ...
interface wlan0
static ip_address=192.168.1.220/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254
… 設定を反映…
めんどくさいので再起動…
root@raspberrypi:~# reboot
固定IPになっていることを確認
pi@raspberrypi:~ $ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.220 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::66da:9fa6:eb13:c795 prefixlen 64 scopeid 0x20<link>
inet6 2409:250:40c0:2500:5b0c:7901:1aa:65d0 prefixlen 64 scopeid 0x0<global>
ether b8:27:eb:58:89:f2 txqueuelen 1000 (Ethernet)
RX packets 70 bytes 5883 (5.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 4788 (4.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wifiのSSHサーバに接続する
現在は有線LANのIPでSSH接続しておりますので、無線LANのIPに接続します
MacBook-Pro:~ wataru$ ssh pi@192.168.1.220
… 接続できません…
原因調査していませんが、有線LANを抜いてください
通りますw
MacBook-Pro:~ wataru$ ssh pi@192.168.1.220
pi@192.168.1.220's password:
pi@raspberrypi:~ $
これで、無事に机の上には有線LANがなく作業ができる様になりました!
終いに
今回はraspberry pi開発環境の構築に無線LANの設定を入れるだけですが、結構OSを入れ替えるのでメモを残しておきたいと思いまして書いておきました
wpa_supplicant.confファイルを残しておき、bootに配置すれば無線LAN接続のDHCP払い出しまではできますが、パスフェーズの作成とかが分かりづらいので今回はファイル作成まで含めました。
他の設定
ssh接続をパスワードなしに…
macbook proにてKEYを作成しているかをチェックして
MacBook-Pro:~ wataru$ ls ~/.ssh/id_rsa.pub
/Users/wataru/.ssh/id_rsa.pub
Keyをコピーします
MacBook-Pro:~ wataru$ ssh-copy-id -i ~/.ssh/id_rsa.pub pi@192.168.1.220
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/wataru/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@192.168.1.220's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'pi@192.168.1.220'"
and check to make sure that only the key(s) you wanted were added.
接続確認…
MacBook-Pro:~ wataru$ ssh pi@192.168.1.220
入れました。
BootをCUIにする
pi@raspberrypi:~ $ sudo raspi-config
[1.System Options] > [S5 Boot / Auto Login] > [B1 Console]
これでOK.
reboot
GUIパッケージ一式を削除
GUI関係は使わないのでリソースの無駄なので一式を削除します… ( 厳密ではなくX11が不要なので消します )
pi@raspberrypi:~ $ sudo apt-get remove -y *x11*
…
残りの参照パッケージを削除します
pi@raspberrypi:~ $ sudo apt-get -y autoremove
課題
・無線LANの接続するときに有線LANケーブルを抜くのか… route周りかな?この辺りは課題で残します
参考
Raspberry piのMACアドレス : https://uic.jp/mac/address/b827eb/
wpa_supplicant https://wiki.archlinux.jp/index.php/Wpa_supplicant