Raspberry Pi Zero を USB で繋いでディスプレイやキーボード無しでうんちゃらかんちゃらとかやったことなかったので。Bonjourというか avahi-daemonは使わない。
microSDが /dev/sdb
にあるものとする。とりあえず Raspbian のイメージを microSDに書き込んだところから。
boot パーティションのマウント。
$ sudo mount /dev/sdb1 /mnt
OTG を有効にする。なんかネットを見て回ると「rootwait
の後ろに modules-load=dwc2,g_ether
を入れる」とあるけど、別に最後でもいいんだよねこれ。
$ sudo sed -i'' 's/$/ modules-load=dwc2,g_ether/' /mnt/cmdline.txt
dtoverlay=dwc2
を追加する。
$ sudo tee -a /mnt/config.txt <<! dtoverlay=dwc2 !
boot パーティションをアンマウント。
$ sudo umount /mnt
次に root パーティション。
$ sudo mount /dev/sdb2 /mnt
最近だと IP アドレスの固定には /etc/dhcpcd.conf
を使っているのでそっちに追記。Raspberry Pi Zero の IP アドレスを 10.0.0.2/24
にする。 母艦の PC を 10.0.0.1
にする。
$ sudo tee -a /mnt/etc/dhcpcd.conf <<! interface usb0 static ip_address=10.0.0.2/24 static routers=10.0.0.1 static domain_name_servers=8.8.8.8 8.8.4.4 !
あと、最近になってから(?)sshdが自動で起動しないようになっているので systemctl enable ssh
を手動でやる。
$ sudo ln -s /lib/systemd/system/ssh.service /mnt/etc/systemd/system/multi-user.target.wants/ssh.service
パーティションをアンマウントして microSDを取り外す。
$ sudo umount /mnt $ sudo eject /dev/sdb
次に母艦の方。
インターフェイス名は使っている OS によって違うと思う。
IP アドレスを追加する。Raspberry Pi Zero を再起動する度にインターフェイスが消えるので udev に設定しておいた方が良さそう。
$ sudo ip a add 10.0.0.1/24 dev enp0s29u1u2
ルーティングとパケット転送の設定。
$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE $ sudo sysctl -w net.ipv4.ip_forward=1
で、母艦から SSHで接続すればよい。
$ ssh pi@10.0.0.2
母艦の PulseAudio で再生するようにしておけば母艦の負荷を上げずに YouTubeの BGM なんかを再生しておける。
$ PULSE_SERVER=10.0.0.1 mpv --no-video 'https://www.youtube.com/watch?v=lt_c5RK4Cyg'