Raspberry Pi model B1 初期設定まとめ

自宅の奥底からとても古いRaspberry Piが出てきてpython開発環境を構築した際の手順をまとめました。

## ゴール（前提）
- wifi経由でMacbookからssh接続できるようにする
- プログラムの編集はMacbookで行いたいので、NFSでファイル同期させる
- Raspberry Piはwifi非内蔵の古めかしいタイプ

## 環境

- Macbook（メインPC）
- Ubuntuが動いているZenbook（SDカードにRaspbianOSを書き込む用）
- [Raspbian Buster with desktop（September 2019）](https://www.raspberrypi.org/downloads/raspbian/)

## 使うもの

- [Raspberry Pi model B1](https://ja.wikipedia.org/wiki/Raspberry_Pi#%E4%B8%BB%E3%81%AA%E4%BB%95%E6%A7%98)
    - 2012年に販売された古いモデル
    - wifi内蔵していないので、無線子機を装着する
- [Buffalo無線子機（ドングル）](https://www.buffalo.jp/product/detail/wli-uc-gnm.html)
- [Buffalo家庭用wifiルーター](https://www.buffalo.jp/product/detail/wsr-2533dhp-cg.html)
- SanDiskのSDカード（8GB）
- micro USBケーブル
- LANケーブル

## 1. SDカードにRaspbianOSをインストール

- UbuntuPCにSDカードを挿す
- RaspbianOSイメージを[公式サイト](https://www.raspberrypi.org/downloads/raspbian/)からダウンロードする（今回は`Raspbian Buster with desktop` を選択）
- `SHA-256` に書かれている文字列をコピーして、`~/hash.txt`として保存する
- diffコマンドでhash値が一致していることを確認する。（OSイメージが正常にダウンロードされたことを確認）

        # ダウンロードしたRaspbianOSイメージファイルのhash値をテキストファイルとして保存する
        $ sha256sum ~/Downloads/2019-09-26-raspbian-buster.zip > ~/Downloads/2019-09-26-raspbian-buster.zip.sha256
        
        # hash値が一致していることを確認する
        $ diff ~/hash.txt ~/Downloads/2019-09-26-raspbian-buster.zip.sha256
        1c1
        < 2c4067d59acf891b7aa1683cb1918da78d76d2552c02749148d175fa7f766842
        ---
        > 2c4067d59acf891b7aa1683cb1918da78d76d2552c02749148d175fa7f766842  ~/Downloads/2019-09-26-raspbian-buster.zip

- SDカードに書き込む

        $ unzip ~/Downloads/2019-09-26-raspbian-buster.zip
        $ sudo dd if=2019-09-26-raspbian-buster.img of=/dev/mmcblk0 bs=1M
        $ umount /dev/mmcblk0p1

- RaspbianOSにssh設定ファイルを作成する

        $ touch /media/{user_name}/boot/ssh

## 2. ssh接続設定

### 2.1 Raspberry Pi本体を起動

- 以下を本体に装着して、本体を起動する
    - SDカード
    - 電源ケーブル（micro USB）
    - 有線LANケーブル to MacBook

### 2.2 有線LAN経由でssh接続

    $ ssh pi@raspberrypi.local  # piユーザーのパスワードはraspberry

### 2.3 無線LAN経由でssh接続

    pi@raspberrypi:~ $ cat /etc/wpa_supplicant/wpa_supplicant.conf
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
        ssid="--- wifiのssidを入力 ---"
        psk="--- wifiのパスワードを入力 ---"
        proto=WPA2
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
    }

    $ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -D nl80211,wext
    
    # 以下のようにssidが表示されたらOK
    $ iwconfig
    wlan0     IEEE 802.11  ESSID:"--- wifiのssid ---"
    
    # IPアドレスを確認しておく
    $ ifconfig wlan0
    # ...略...
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.11.11  netmask 255.255.255.0  broadcast 192.168.11.255
            inet6 fe80::51ee:f783:fead:5f52  prefixlen 64  scopeid 0x20<link>
            ether cc:e1:d5:15:e7:a3  txqueuelen 1000  (Ethernet)
            RX packets 793  bytes 189077 (184.6 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 292  bytes 49392 (48.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

- 有線LANケーブルを抜く
- `ssh pi@192.168.11.11` でssh接続できることを確認
- IPアドレスを`192.168.11.12`に固定する

        $ sudo vi /etc/dhcpcd.conf
        
        # 以下を追記
        interface wlan0
        static ip_address=192.168.11.12/24
        static routers=192.168.11.1
        static domain_name_servers=192.168.11.1
        
        # 再起動
        $ sudo reboot

## 3. python開発環境構築

### 3.1 vimをインストールし直す

    $ dpkg -l | grep vi
    $ sudo apt-get --purge remove vim-tiny vim-common
    $ sudo apt-get install vim

### 3.2 TimezoneをUTCからAsia/Tokyoに変更する

    # raspberry pi設定GUIを起動して、以下の通り選択する
    # 4 Localisation Options
    # I2 Change Timezone
    # Asia
    # Tokyo
    # Finish
    $ sudo raspi-config

### 3.3 python3をデフォルトにする

    $ cd /usr/bin
    $ sudo unlink /usr/bin/python
    $ sudo ln -s python3 /usr/bin/python

### 3.4 NFSでMacbookとファイル同期する

    # on raspberry pi
    
    # ファイル同期させるディレクトリを作る
    $ mkdir ~/Workspace
    
    # NFSパッケージをインストールする
    $ sudo apt-get install -y nfs-common nfs-kernel-server
    
    # piユーザーのuser_idとgroup_idを確認
    $ cat /etc/passwd | grep pi
    pi:x:1000:1000:,,,:/home/pi:/bin/bash
    
    # NFS設定ファイルに設定を追加
    # 書式：公開ディレクトリ 公開先ネットワーク（オプション）
    $ sudo vim /etc/exports
    /home/pi/Workspace 192.168.11.0/24(rw,insecure,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check)
    
    # NFSサーバを起動 & 正常に起動したことを確認
    $ sudo /etc/init.d/nfs-kernel-server start
    $ sudo /etc/init.d/nfs-kernel-server status
    
    
    # on Macbook
    
    # ホスト名をrpiとして登録する
    $ vim /etc/hosts
    192.168.11.12 rpi
    
    # マウントポイントを作る
    $ mkdir ~/workspace/pi
    
    # マウントする
    $ sudo mount -t nfs rpi:/home/pi/Workspace ~/workspace/pi