以前よりも格段にセットアップしやすくなったのでメモ。macOS母艦、Raspberry Pi Zero W前提。
公式からOSイメージ(RASPBIAN STRETCH LITE)をダウンロードして解凍してSDカードに書き込む。
// SDカードの場所を確認
$ diskutil list
// SDをアンマウント
$ sudo diskutil umount /dev/disk2s1
// OSイメージを書き込み
$ sudo dd bs=1m if=OSイメージのパス of=/dev/disk2参考: Raspberry PiにRaspbianをインストールする for Mac OSX - Qiita
SSH接続をデフォルトで有効にするためSDカードのルートディレクリにsshという空のファイルを作成。
$ touch /Volumes/boot/ssh続けてルートディレクトリにWifi接続情報をwpa_supplicant.confに記述する。ルートディレクトリに配置すると、起動時に/etc/wpa_supplicant/wpa_supplicant.confを更新する。Raspberry Piの対応している周波数に注意。(Zero Wは2.4GHzのみ)
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=\"ssid\"
psk=\"password\"
}参考: Raspberry Piの無線LANをmicroSDで設定する - Qiita
2018/11/02追記:この項目のやり方ではMacのターミナル上の日本語入力・表示がややこしくなるので、ターミナルの起動時のロケール環境変数チェックはそのままでMac側で/etc/ssh/ssh_config/に記述されているSendEnv LANG LC_*をコメントアウトするほうがベターだった。(追記終わり)
macOSのターミナルにはローカルで使用している言語の環境変数をSSH接続先のLinuxでも維持してくれるというお節介機能があるので日本語が文字化けする可能性があるのでチェックを外しておく。
Terminal > Preference > Profiles > Advanced > Set locale environment variables on startupのチェックを外す。
参考: MacからSSHしたLinuxで日本語が文字化けする際に確認したいTerminalの設定
microSDカードをRaspberry Piに挿して電源につなぐ。いつのまにかAvahiが標準で使えるっぽいのでMacならIPアドレスを調べなくても簡単に接続できる。初期パスワードはraspberry。
$ ssh pi@raspberrypi.localパッケージ管理のアップデートとvimをインストールしておく。
$pi@raspberrypi:~ $ sudo apt-get update
$pi@raspberrypi:~ $ sudo apt-get upgrade
$pi@raspberrypi:~ $ sudo apt-get vimひとまずpiとrootのパスワードを変更。
$pi@raspberrypi:~ $ passwd
$pi@raspberrypi:~ $ sudo passwd rootmacOSに戻り、SSHの公開鍵をraspberry piに転送する。ssh-copy-idを使うと楽。
$ ssh-copy-id pi@$raspberrypi.local再びRaspberry piへ。公開鍵認証でログインできるので/etc/ssh/sshd.configを編集してパスワードログインとrootログインを禁止する。(コメントアウトして書かれているので外して値を変えるなり。)
PasswordAuthentication no
PermitRootLogin noよりセキュアにするならpiユーザーを削除したり、portを変えるとか適当に。sshd設定を変えたらrestartを忘れずに。
$pi@raspberrypi:~ $ sudo /etc/init.d/sshd restartZeroconfによる接続だとホスト名が衝突しそうなのでホスト名をユニークなものに変更しておきます。/etc/hostnameを変更する。
これでssh ユーザー名@設定したホスト名.localで接続できる。
さらに接続を簡略化するならmacOSの~/.ssh/configに記述する。ここに接続名と引数を書いておけばssh 任意の接続名だけで接続できるようになるので便利。
Host 任意の接続名
HostName ラズパイのホスト名.local
port 22
User ユーザー名
Protocol 2
IdentityFile ~/.ssh/id_rsa