[メモ] Raspberry Pi: 初期設定

## 概要
- Raspberry Piの初期設定など、自分の記事で、`いつもの`...と省略してるが、自分でもよくわからなくなりそうなので、現状のをメモっとく。
- 自分は、長期で運用は、あまり考えてなく、なにか試すたびにRaspbianイメージを焼いてる.
- `2016-11-25-raspbian` より、デフォルトで、ssh無効になっている。bootパーティションに、`ssh`というファイルを作成することで、有効化.

## 環境
- Raspberry Pi Zero/1/2/3
- Windows 7 (64ビット)

## 手順

### OSイメージ選択
Raspbian: https://www.raspberrypi.org/downloads/raspbian/

- だいたい X-window使うか、使わないか、で判断。

| |X|用途|イメージサイズ |ファイル名|
|:-:|:-:|:-:|:-:|:-:|
|Raspbian | Xあり |デスクトップ向け | 4.04GB  | `2016-11-25-raspbian-jessie`<br><del>`2016-09-23-raspbian-jessie.img`</del><br><del>`2016-05-27-raspbian-jessie.img` 3.74GB (1.29GB)</del>|
|Raspbian Lite| Xなし | サーバ向け| 1.29GB | `2016-11-25-raspbian-jessie-lite`<br><del>`2016-09-23-raspbian-jessie-lite.img`</del><br><del>`2016-05-27-raspbian-jessie-lite.img` 1.29GB (292MB)</del> |


### SDに焼く。
- ツール (Windows)
    - [Rufus](https://rufus.akeo.ie/) : ポータブル版、いいかも？<br>Create a bootable disk using \[DD Image\]で、となりのディスクアイコンを押して、イメージファイル(.img)を選択
    - [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/)
    - [DD for Windows](http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6)
- エクスプローラで、SDカードを開いて、右クリ>新規作成>テキスト文書、とでもして、`ssh`というファイルを作成。(拡張子無し)

### 初回電源投入とログイン

- ユーザ名: `pi` / パスワード: `raspberry`

- 環境としては、
    1. キーボード・ディスプレイ接続
    2. UART接続(シリアル-USB変換ケーブル接続) : 115200bps
    3. 有線ネットワーク接続(イーサネット)<br>ちなみに、MACアドレスは、`"b8:27:eb"` + CPUのシリアル番号の下6桁で、生成されてるらしい。

        ```shell-session
pi@raspberrypi:~ $ cat /proc/cpuinfo | grep -i serial 
Serial		: 000000002a6c0f31
pi@raspberrypi:~ $ ifconfig eth0 | grep -i hwaddr
eth0      Link encap:Ethernet  HWaddr b8:27:eb:6c:0f:31  
pi@raspberrypi:~ $ 
```

    4. 無線ネットワーク接続接続(Wifi)<br><font color='red'>(Liteじゃない方のみ)</font>FATパーティションに設定済み`wpa_supplicant.conf`を置いておくと、Wifiデバイス起動時(ifup)`/etc/wpa_supplicant/`にコピーしてくれる

        ```shell-session:wpa_supplicant.confをコピーするところ
pi@raspberrypi:~$ cat /etc/network/if-pre-up.d/01-wpa-config-copy
#!/bin/sh
    if [ -e /boot/wpa_supplicant.conf ]; then
            /bin/mv /boot/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
            /bin/chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
fi
pi@raspberrypi:~$
```

        ```shell-session:デフォルトのwpa_supplicant.conf
pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf 
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
pi@raspberrypi:~ $ 
```

        ```shell-session:wpa_passphraseで、設定生成(grepの-vは、その文字を含まない行を表示=>生パスワードを含めない)
pi@raspberrypi:~ $ wpa_passphrase wifi_ssid password_desuyo | grep -v \#psk
network={
            ssid="wifi_ssid"
            psk=e42b6b0cada605c80ca3727df865ea5adddb8ca9fee2ed1e276233d393526c76
}
pi@raspberrypi:~ $ 
```
        ```txt:(例)wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
            ssid="wifi_ssid"
            psk=e42b6b0cada605c80ca3727df865ea5adddb8ca9fee2ed1e276233d393526c76
}
```


- ツール
    - [TeraTerm](https://osdn.jp/projects/ttssh2/releases/) : zip版は解凍して、`ttermpro.exe`実行でいけるのでらくちん。何か設定したら、`TERATERM.INI`は、こまめにバックアップとっておくといいかも。
    - [PuTTY](http://www.putty.org/): `You can download PuTTY `[here](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)`.` の [here](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)あたりをクリックして、Windowsのバイナリをダウンロード...<br>(わたしは、[PuTTY Portable](http://portableapps.com/apps/internet/putty_portable)にお世話になっています。)


### APTパッケージレポジトリのアップデート。
- `sudo apt-get update` # 最初に一回やっとく。
- `sudo apt-get upgrade` # パッケージの更新. 適当に設定がおわったあとでもよいかと。

- `upgrade`する前に使わなそうなパッケージを削除しておくとよいかも。

    ```shell-session:例)2017-01-11-raspbian-jessie
pi@raspberrypi:~$ uname -a
Linux raspberrypi 4.4.34+ #930 Wed Nov 23 15:12:30 GMT 2016 armv6l GNU/Linux
pi@raspberrypi:~$ time sudo apt-get autoremove -y wolfram-engine  sonic-pi  scratch nodered  libreoffice-common --purge
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  libboost-atomic1.55.0* libboost-filesystem1.55.0* libboost-program-options1.55.0* libboost-regex1.55.0* libboost-thread1.55.0*
  libc-ares2* libcwiid1* libffi5* libjs-prettify* libqscintilla2-11* libqscintilla2-l10n* libqt4-network* libqt4-xmlpatterns*
  libqtwebkit4* libreoffice* libreoffice-avmedia-backend-gstreamer* libreoffice-base* libreoffice-base-core*
  libreoffice-base-drivers* libreoffice-calc* libreoffice-common* libreoffice-core* libreoffice-draw* libreoffice-gtk*
  libreoffice-impress* libreoffice-java-common* libreoffice-math* libreoffice-report-builder-bin* libreoffice-sdbc-hsqldb*
  libreoffice-writer* libruby1.9.1* libruby1.9.1-dbg* libruby2.1* libscsynth1* libtcl8.5* libtcltk-ruby1.9.1* libtk8.5*
  libv8-3.14.5* libyaml-0-2* nodejs* nodejs-legacy* nodered* nuscratch* python3-uno* ri1.9.1* ruby* ruby1.9.1* ruby1.9.1-dev*
  ruby1.9.1-examples* ruby1.9.1-full* ruby1.9.3* ruby2.1* rubygems-integration* scratch* sonic-pi* squeak-plugins-scratch*
  squeak-vm* supercollider* supercollider-common* supercollider-ide* supercollider-language* supercollider-server*
  supercollider-supernova* tcl8.5* tk8.5* wolfram-engine*
0 upgraded, 0 newly installed, 66 to remove and 133 not upgraded.
After this operation, 1,221 MB disk space will be freed.
(Reading database ... 122284 files and directories currently installed.)
Removing supercollider-supernova (1:3.6.6~repack-2-1) ...
```

- aptキャッシュサーバある場合は、先に、設定をしておく<br>=> [[メモ] aptのキャッシュサーバ(apt-cacher-ng)](http://qiita.com/mt08/items/c8b8187b1000382d77ae)

    ```txt:例-/etc/apt/apt.conf.d/02proxy
Acquire::http::Proxy "http://192.168.123.222:3142";
```



### らずぱいの初期設定 `sudo raspi-config` 
1. <del>パーティションの拡張(`1 Expand Filesystem`)</del>: <br>最近のRaspbianは初回起動時にスクリプトが実行されるので、**やらなくてよい**<br>(`df -h`とやって、`/dev/root`のサイズが(使ってるSDの割りに)小さければ、実行してみる、とか?)
- `pi`のパスワード変更(`2 Change User Password`): 単に`passwd`でもよいかと..
- ホスト名(`9 Advanced Options > A2 Hostname`): <br>`sudo raspi-config nonint do_hostname new_host_name` でもいける。

    ```bash:例)ホスト名をrpi-(eth0のMACアドレスの下6桁)にする=>rpi-6c0f31
# CPUのシリアル番号から
sudo raspi-config nonint do_hostname rpi-`cat /proc/cpuinfo | grep Serial | rev | cut -b 1-6 | rev`
# MacAddressから
#sudo raspi-config nonint do_hostname rpi-`cat /sys/class/net/eth0/address | sed -e 's/://g' | cut -b7-`
sudo reboot
```
    - Windows10だったり、avahi(`sudo apt-get install avahi-utils`)とか、[bonjour](https://support.apple.com/downloads/bonjour_for_windows)とか入ってると、
        - `ping rpi-6c0f31.local`とかで応答あったり、
        - `ssh pi@rpi-6c0f31.local`で SSHログインできたりするハズ。
- GPU Memory (`9 Advanced Options > A3 Memory Split`) : 16 (カメラとか、ディスプレイを使わないなら)。カメラ使うときは、最低128必要
- 国際化設定(`5 Internationalisation Options`)
    - `I1 Change Locale`:<br>`[*] ja_JP.UTF-8 UTF-8`にチェックを入れて<Ok>、Default localeで、`ja_JP.UTF-8`(日本語)または`C.UTF-8`(英語)あたりを選択。
    - `I2 Change Timezone` : `Asia > Tokyo`
    - `I3 Change Keyboard Layout`: (本体につないだUSBキーボードから実行可能)
    - `I4 Change Wi-fi Country`: `JP Japan` (`GB Britain (UK)`, `US United States`)
6. VNC (2016-09-23より、RealVNC が使える)
    - 9 Advanced Options > A5 VNC より
7. ネットワーク
    - IP固定(Static IP)
        1. ルータのDHCPの設定で、MACアドレスでIPアドレス固定割付、をやる。(自分のおうちなど、ルータの設定ができる場合)
        2. `/etc/dhcpcd.conf` で固定.

            ```txt:(例)/etc/dhcpd.conf
...
interface eth0
                static ip_address=192.168.0.62/24
                static routers=192.168.0.1
                static domain_name_servers=192.168.0.1
```



### 日本語関係
- X用日本語フォント(インストールせず、Default Localeを日本語にて、Desktopで起動すると、[豆腐](http://www.wdic.org/w/TECH/%E8%B1%86%E8%85%90)になる)<br>`sudo apt-get install fonts-ipafont fonts-ipaexfont`
- ほかの日本語フォント<br>`sudo apt-cache search fonts | grep -i japanese` # などで検索
- 日本語入力<br>`sudo apt-get install fcitx-mozc fcitx-anthy`
- 日本語のマニュアル<br>`sudo apt-get install manpages-ja manpages-ja-dev`

### ソフトウェア設定

#### よく使うパッケージインストール

```bash:お好みで.
# いつも
sudo apt-get install -y htop byobu git
# まぁまぁ.
sudo apt-get install iotop bwm-ng lsof ccze fbcat
# カーネルビルド.
sudo apt-get install build-essential git ncurses-dev bc unzip 
```


#### Swapを切る

```bash:よくわからないひとはやらない方がいいかと。
# パッケージ削除
sudo apt-get purge dphys-swapfile
#
# /etc/fstab : いくつかのフォルダをtmpfsとする。
sudo sh -c 'echo "#### ramdisk" >> /etc/fstab'
sudo sh -c 'echo "tmpfs    /tmp        tmpfs    defaults,noatime,nosuid,size=128m              0 0" >> /etc/fstab'
sudo sh -c 'echo "tmpfs    /var/tmp    tmpfs    defaults,noatime,nosuid,size=32m               0 0" >> /etc/fstab'
sudo sh -c 'echo "tmpfs    /var/log    tmpfs    defaults,noatime,nosuid,mode=0755,size=32m     0 0" >> /etc/fstab'
```

#### Samba

```bash:Shell
#パッケージインストール
sudo apt-get install -y samba
# オリジナル設定のバックアップ
if [ ! -e /etc/samba/smb.conf.orig ] ; then sudo mv /etc/samba/smb.conf{,.orig}; sudo cp /etc/samba/smb.conf{.orig,}; echo "smb.conf: backup done" ;else echo "No need backup"; fi
#
# 設定の編集.
sudo vi /etc/samba/smb.conf
```

```txt:/etc/samba/smb.conf
...
...
[homes]
   browseable = no  # 好みにより yes
   read only = yes
...
...
# (お好みにより)最後の方に追加
# だれでも読み書き可能な共有フォルダ
[public_share]
path = /home/pi/pub    # フォルダを作っておく.
writable = yes
guest ok = yes
guest only = yes
```



```bash:Shell
# smb.confの [global]セクションで、passdb backend = tdbsam となっているので、ユーザ設定をする.
# 現在のユーザリスト
sudo pdbedit --list
# ユーザ追加 => パスワードを聞かれる
sudo pdbedit -a -u pi -h /home/pi -f "Raspberry Pi" -N "Raspberry Pi Default User"
#
#
# 設定確認
sudo pdbedit --list
#
# サービス再起動
sudo systemctl restart smbd nmbd
```

- `\\rpi.local\pi` または、`\\<らずぱいのIP>\pi` にアクセスして、ユーザpi、パスワードを入力。


### 追加ハードウェアなどの設定

#### Wifi 

```bash
wpa_passphrase SSID PASS | grep -v  PASS | tee -a /etc/wpa_supplicant/wpa_spplicant.conf
```


#### USBシリアルでコンソール(USBの方を挿す)

```bash
sudo sudo systemctl enable serial-getty@ttyUSB0.service
```
- うちの環境だと、起動時9600bpsになる、`stty -F /dev/ttyUSB0 115200`とか、921600とかでボーレート変更する。

#### RTC(DS3231)
- I2C接続のリアルタイムクロック (VCC, GND, SDA, SCLの4つをつなぐ)

```bash
# ntpとi2c関係のツール.
sudo apt-get install -y ntpdate i2c-tools
# i2cを有効
sudo raspi-config nonint do_i2c 0
# 確認 => dtparam=i2c_arm=on となってる
cat /boot/config.txt | grep i2c
#
# /boot/config.txtに　dtoverlay=i2c-rtc,ds3231 を追加.
grep ^dtoverlay=i2c-rtc,ds3231 /boot/config.txt ; if [ $? != 0 ]; then sudo sh -c 'echo dtoverlay=i2c-rtc,ds3231 >> /boot/config.txt'; fi
#
# サービス設定
sudo update-rc.d fake-hwclock disable
sudo update-rc.d ntp disable
#
# 設定書き換え.
sudo vi /lib/udev/hwclock-set
```

```txt:/lib/udev/hwclock-set以下をコメントアウト
#if [ -e /run/systemd/system ] ; then
#    exit 0
#fi
```

```bash
#リブート.
sudo reboot
#
#
sudo i2cdetect -y 1
#こんなのがでてくる
#pi@raspberrypi:~ $ sudo i2cdetect -y 1
#     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
#00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
#10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
#20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
#30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
#40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
#50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
#60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
#70: -- -- -- -- -- -- -- --                         
#
# リブート後、時刻補正、RTCへ時刻設定
sudo sh -c 'ntpdate pool.ntp.org ; hwclock -w'
```

#### ENC28J60 (SPI-Ethernet Port)

- ワイヤー7本 => [RaspberryPi - ENC28J60(SPI-Ethernet)設定](http://qiita.com/mt08/items/679fcca26439419fb7f1)

```bash
# spiを有効
sudo raspi-config nonint do_spi 0
# 確認 => dtparam=spi=on
grep spi /boot/config.txt 
#
# /boot/config.txtに　dtoverlay=enc28j60,int_pin=25,speed=25000000 を追加.
grep ^dtoverlay=enc28j60,int_pin=25,speed=25000000 /boot/config.txt ; if [ $? != 0 ]; then sudo sh -c 'echo dtoverlay=enc28j60,int_pin=25,speed=25000000 >> /boot/config.txt'; fi
```

## その他
- 100記事目記念～ ![Q100_1.png](https://qiita-image-store.s3.amazonaws.com/0/75594/fc2e11ad-af07-2508-01ef-b10dba2be4f6.png)　![Q100_2.png](https://qiita-image-store.s3.amazonaws.com/0/75594/c1616fb9-a84f-58a7-78b0-6158869204ed.png)