[Raspberry Pi] Wi-FiやIPアドレスの設定を行う方法

Raspberry Piを使用する場合、ディスプレイ・キーボード・マウスを接続すれば、何ら問題はないのですが、出先などでそれらが使用できず、PCからリモート接続して操作する環境しかない場合には、RaspberryPiのWi-FiやIPアドレスの設定が必須になります。 PCとの接続(sshやリモートデスクトップ)が出来てしまえば、利用環境にほとんど問題ないかも知れません。 今回は、RaspberryPiをMacからリモートで使用できるようにネットワーク関係の設定作業について忘備録としてまとめることにしました。
2018.09.29

1 はじめに

Raspberry Piを使用する場合、ディスプレイ・キーボード・マウスを接続すれば、何ら問題はないのですが、出先などでそれらが使用できず、PCからリモート接続して操作する環境しかない場合には、RaspberryPiのWi-FiやIPアドレスの設定が必須になります。

PCとの接続(sshやリモートデスクトップ)が出来てしまえば、利用環境にほとんど問題ないかも知れません。

下記は、USB-Ethedを使用して、sshやリモートデスクトップでRaspberryPiと接続しているようすです。

今回は、RaspberryPiをMacからリモートで使用できるようにネットワーク関係の設定作業について忘備録としてまとめることにしました。

2 RaspberyPi 初期状態

最初に、イメージをコピーしただけの、全くのデフォルト状態のRaspberryPiとMacを接続する手順です。

(1) SDカードのマウント(アンマウント)

Raspberry Pi で使用しているMicroSDをMacに挿入すると、すぐにマウントされてアクセスが可能になります。

dfコマンドで確認すると /dev/disk1s1 が増えていることを確認できます。(diskの後の数字は、認識された順に採番されますので、状況によって変化します)

$ df -g
Filesystem    1G-blocks Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk0s2        232  217        15    94% 5267665 4289699614    0%   /
devfs                 0    0         0   100%    1154          0  100%   /dev
map -hosts            0    0         0   100%       0          0  100%   /net
map auto_home         0    0         0   100%       0          0  100%   /home
/dev/disk1s1          0    0         0    51%       0          0  100%   /Volumes/boot

diskutil listでは、ルートパーティション以外の情報も確認できます。

$ diskutil list /dev/disk1
/dev/disk1 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.8 GB    disk1
   1:             Windows_FAT_32 boot                    45.3 MB    disk1s1
   2:                      Linux                         4.8 GB     disk1s2

Macへのマウントは、接続時に自動的に行われますが、アンマウントやイジェクトは、コマンドを使用する必要があります。(マウントされている状態では、ddコマンドでの書き込みなどが出来ません。)

$ diskutil unmountdisk /dev/disk1
Unmount of all volumes on disk1 was successful
$ diskutil eject /dev/disk1
Disk /dev/disk1 ejected

(2) ssh

Raspberry Pi は、デフォルトでSSHはが無効になっています。 有効にするにはraspi-configで設定する必要があるのですが、/bootにsshという名前のファイルを置くだけでも有効にできます。

/bootのパーティションは、Macに接続しただけで, そのままアクセス可能ですので、下記のようにtouchでSSHを有効化できます。

$ df -g
Filesystem    1G-blocks Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk1s1          0    0         0    51%       0          0  100%   /Volumes/boot
$ sudo touch /Volumes/boot/ssh

なお、/boot/sshは、raspi-configで設定されていない場合だけ使用可能です。raspi-configでSSHを無効化した場合は、/boot/sshが存在しても、SSHは有効になりません。

(3) raspberrypi.local

Raspberry Piは、デフォルトで、raspberrypi.localでアクセス可能になります。

MacとRaspberryPiをEtherケーブルで接続すると、pingへのレスポンスを確認できます。

$ ping raspberrypi.local
PING raspberrypi.local (169.254.56.161): 56 data bytes
64 bytes from 169.254.56.161: icmp_seq=0 ttl=64 time=2.037 ms
64 bytes from 169.254.56.161: icmp_seq=1 ttl=64 time=0.559 ms

この名前を利用して、以下のようにsshで接続することが可能です。

$ ssh pi@raspberrypi.local
pi@raspberrypi.local's password:

4 Wi-Fiの設定

iwlistで、Wi-FiスポートのESSIDが一覧できます。

$ sudo iwlist wlan0 scan | grep ESSID
ESSID:"Free001"
ESSID:"Free002"
ESSID:"Free003"

Wi-Fiの設定は、/etc/wpa_supplicant/wpa_supplicant.confに記述します。

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
   ssid="Free001"
   psk="password"
}

RaspberryPiを再起動することで、設定は有効となります。Wi-FiスポートのDHCPで、アドレスが付与されていることを確認できます。

$ ifconfig
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.110  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 2400:2413:8681:c500:f53c:4047:d646:cc5d  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::cd1e:f000:76c7:8f98  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:6a:bc:03  txqueuelen 1000  (Ethernet)
        RX packets 50  bytes 12866 (12.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48  bytes 8243 (8.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Wi-Fi接続が完了すると、MacとRaspberryPiは、Wi-Fi経由で接続できます。

$ ping 192.168.0.110
PING 192.168.0.110 (192.168.0.110): 56 data bytes
64 bytes from 192.168.0.110: icmp_seq=0 ttl=64 time=18.073 ms
64 bytes from 192.168.0.110: icmp_seq=1 ttl=64 time=6.089 ms

$ ssh pi@192.168.0.110

5 IPアドレス

スタチックなIPアドレスは、/etc/dhcpcd.confで設定することができます。

$ sudo vi /etc/dhcpcd.conf

interfacestatic ip_address を設定することで固定のIPアドレスが設定できます。(直接ピア・トゥ・ピアで接続することを想定しているため、ゲートウエイの設定は考慮されていません)

# Example static IP configuration:
interface eth0
static ip_address=10.0.0.11/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

再起動すると、MacからEthnet経由で接続できることを確認できます。(Mac側のIPアドレスも同一ネットワークになるように手動で設定が必要です。)

$ ping 10.0.0.11
PING 10.0.0.11 (10.0.0.11): 56 data bytes
64 bytes from 10.0.0.11: icmp_seq=0 ttl=64 time=17.744 ms
$ ssh pi@10.0.0.11
pi@10.0.0.11's password:

6 Mac上でのWi-Fi設定

Wi-Fiの設定で使用した、/etc/wpa_supplicant/wpa_supplicant.confは、起動時に /boot/wpa_supplicant.conf が存在すると上書きされます。

/bootは、Macでマウントして編集が可能なため、結果的にMac上でもWi-Fi設定の変更は可能です。

$ sudo vi /Volumes/boot/wpa_supplicant.conf

/bootに作成したファイルは、起動時に、上書きされると同時に削除されます。

7 最後に

ネットワークの設定方法を理解していれば、MacとRaspberryPiの間を接続するEthedケーブルだけ持ち歩けば、なんとかなりそうです。

ちなみに、RaspberryPiにリモートデスクトップで接続できる環境を準備しておくことも、お薦めだと思います。
参考:Windowsパソコンからraspberrypi3にリモートデスクトップで接続する