[メモ] PiServerを使ってみた(VitrualBox使用)

- Raspberry Pi 3のネットワーク起動の機能を利用して、複数のラズパイを管理できるPiServerというのを使ってみた。
- SDカードは必要なし(設定後は...)
- [公式ページ](https://www.raspberrypi.org/blog/piserver/)よりイメージ<br>![aa](https://www.raspberrypi.org/app/uploads/2017/12/piserver.png)

# 概要

- PiServerをVitrualBoxに入れたRaspbian-x86から使ってみた。
- Stretch版のRPD-x86を入れたときに、メニューに "PiServer"というのがあって、なんだろう、と思ってたんだけど、最近、その説明を見つけたので、試してみた。
- RPD-X86(Stretch)
    ![VirtualBox_2017-11-16-rpd-x86-stretch_10_01_2018_12_07_14.png](https://qiita-image-store.s3.amazonaws.com/0/75594/28d9022e-4106-b97b-4702-7e471c725cc1.png)

- とりあえず、2台つないで、起動はできた。
- 設定方法は、そのうち追記するｶﾓ.

## 関連リンク
RaspberryPi Blogやら、MagPiあたりでの説明。

- [Steretch for PCs and Macs, and Raspbian update](https://www.raspberrypi.org/blog/stretch-pcs-macs-raspbian-update/)
- [The Raspberry Pi PiServer tool](https://www.raspberrypi.org/blog/piserver/)
- [Set up PiServer](https://www.raspberrypi.org/magpi/set-up-piserver/)



# 環境
- ホストPC
    - Windows 10 x64
    - Wifi にて、インターネット接続
    - 有線LANは、ネットワークハブにつないで、インターネットにはつながない。

- 仮想マシン
    - VirtualBox v5.2.4 
    - Raspberry Pi Desktop x86 (2017-11-16-rpd-x86-stretch)
   
- RaspberryPi 3 (クライアント) x 1台以上
- ネットワークハブ/スイッチ

## ネットワーク図
- のちほど..


# 手順

## RaspberryPi側の準備
### ネットワーク起動可能にする
1. いつも通り、Raspbian LiteをmicroSDに焼く。(`2017-11-29-raspbian-stretch-lite`)
2. BOOTパーティション内の`config.txt`の最後に、`program_usb_boot_mode=1`を追記する。
3. BOOTパーティション内に、`ssh` というファイルを作る。
4. できあがったmicroSDを、RaspberyPiに挿して、起動
5. `sudo vcgencmd otp_dump | grep 17:`を実行して、`17:3020000a`というのが、でれば、準備OK。

    ```shell-session:実行例
pi@raspberrypi:~$ sudo vcgencmd otp_dump | grep 17:
17:3020000a
```
6. シャットダウン: `sudo shutdown -h now`
6. microSDはもう使わないので、<font color='red'>抜いておく</font>。

## サーバの準備

### 仮想機作成
とりあえず、↓に従って、VirtualBoxへ、RPD-x86をインストール。

> [[メモ] VirtualBoxにて、Raspberry Pi Desktop(2017-11-16-rpd-x86-stretch版)](https://qiita.com/mt08/items/8c5fc9c754b5eeee447c)


### VirtualBoxの仮想機設定
有線アダプタをブリッジ接続として、VMで使用する。

1. 仮想機をシャットダウンしておく。
2. 仮想機の設定を開く。
    1. Networkの設定を選択
    2. Adapter 2のタブを選択
    3. Enavle Network Adapterにチェックを入れる
    4. `Bridged Adapter`を選択
    5. ホストの有線アダプターを選択
    6. OKを押す。

    ![image.png](https://qiita-image-store.s3.amazonaws.com/0/75594/45afc7d4-f313-6ce4-ffb3-fa178403b03c.png)

### 仮想機内のネットワーク設定

有線ネットワーク(`eth1`)を固定IPにする。

```txt:/etc/dhcpcd.confの最後に追記する。
...
...
# 192.168.52.1に固定
interface eth1
static ip_address=192.168.52.1/24
static routers=192.168.52.1
```

- 再起動

```shell-session:こんな感じ。
pi@raspberry:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:95:cb:73 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::305f:bdde:9937:23c3/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:1e:58:87 brd ff:ff:ff:ff:ff:ff
    inet 192.168.52.1/24 brd 192.168.52.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::765:54ba:a5ea:95c1/64 scope link
       valid_lft forever preferred_lft forever
pi@raspberry:~ $
```


### PiServer 初回起動
1. Menu > Preferences > PiServer
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_49_04.png](https://qiita-image-store.s3.amazonaws.com/0/75594/2bc50ea6-10ba-f5ef-e192-0de3fa6e009f.png)
2. Interoduction: Next押す
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_49_47.png](https://qiita-image-store.s3.amazonaws.com/0/75594/36ea989c-baaf-8abe-bd03-40af1f678fa5.png)
3. Select Raspberry Pi clients to use<br>interfaceをeth1を選択
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_52_09.png](https://qiita-image-store.s3.amazonaws.com/0/75594/483b7b7e-74fc-cbda-049d-866de91042ec.png)
4. ここで、Raspberry Pi 3の有線LANをつないで、電源を入れる
5. ちょっと待つと、MACアドレスが表示される
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_53_35.png](https://qiita-image-store.s3.amazonaws.com/0/75594/c6417cd7-e9d6-0bce-44d7-8945a997c4d0.png)
    表示されないときは、eth0を選んで、eth1を選び直したり、Back押して前のページに戻ったり、ハブの電源を入れ直して、ラズパイの電源を入れてみる。

6. ユーザ作成
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_56_02.png](https://qiita-image-store.s3.amazonaws.com/0/75594/f43ae17e-dcfb-90b8-7ec2-675a8cf1729b.png)
7. 使用するRaspbianの選択をする。
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_56_10.png](https://qiita-image-store.s3.amazonaws.com/0/75594/e994bf64-f5d9-af30-2417-84c40ee40a98.png)
    - http://downloads.raspberrypi.org/piserver.json にアクセスすると、デフォルトのダウンロード先が分かるので、そこから、ファイルを取得しておけば、install operating system from local fileで、ローカルインストールできる。
8. 待つ
    インストール開始<br>![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_56_27.png](https://qiita-image-store.s3.amazonaws.com/0/75594/86544e7f-5c6a-0b20-0f06-16a1ece65de2.png)
    - イメージダウンロード・インストール<br>![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_14_58_26.png](https://qiita-image-store.s3.amazonaws.com/0/75594/c4b9dad1-47a4-26f1-af89-c5b5f58ca58e.png)
    - インストール終了<br> ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_01_22.png](https://qiita-image-store.s3.amazonaws.com/0/75594/52c11d80-51fe-aa23-5e0a-9f8684af1660.png)
9. PiServerの設定が起動する。

### PiServer
1. Users
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_14_21.png](https://qiita-image-store.s3.amazonaws.com/0/75594/0ce27715-d3c6-e9df-c4f6-5331df147e82.png)
2. Clients
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_14_28.png](https://qiita-image-store.s3.amazonaws.com/0/75594/b4ddeddf-7a91-8f3f-24d2-cbc11f41dec3.png)
3. Software
    インストールしたRaspbianを選んで、右上のShellをクリックすると、chrootされたShellが開くので、アップデートとか設定とかできる。
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_14_32.png](https://qiita-image-store.s3.amazonaws.com/0/75594/295f8f80-d01a-fa3f-0d4a-fbf90c3bb5ef.png)
4. Settings
    Act as standalone DHCP server を選択して、[Save]を押す。
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_15_04.png](https://qiita-image-store.s3.amazonaws.com/0/75594/c15d65b4-7039-b888-4d60-c64dc9515460.png)
    ![VirtualBox_2017-11-16-rpd-x86-stretch_14_01_2018_15_20_00.png](https://qiita-image-store.s3.amazonaws.com/0/75594/ee374f7f-9810-dce5-ebd1-148c149bb12e.png)

## Raspberry Pi 起動
1. 上記の設定が済んだら、Raspberry Piの電源をいれる。
2. しばらく待つと、ネットワークブートする。




# その他
1. Raspberry Pi をインターネットにつなぎたい。<br>Stretch x86 にて、ip forwarding する

	```txt:/etc/sysctl.conf
	#コメントをはずす
	net.ipv4.ip_forward=1
	```

	```bash:いかこぴぺ
	sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
	#
	sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
	sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
	sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
	#
	sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
	```

	```txt:/lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat
	iptables-restore < /etc/iptables.ipv4.nat
	```
	再起動時にうまく反映されない... そのときは、手動で。(`sudo iptables-restore < /etc/iptables.ipv4.nat`)


2. ラズパイのUSBに何か刺さってると起動しないかも？


<!--
- [Steretch for PCs and Macs, and Raspbian update](https://www.raspberrypi.org/blog/stretch-pcs-macs-raspbian-update/)
> PiServer — this allows you to set up an operating system, such as Raspbian, on the PC which can then be shared by a number of Pi clients networked to it. It is intended to make it easy for classrooms to have multiple Pis all running exactly the same software, and for the teacher to have control over how the software is installed and used. PiServer is quite a clever piece of software, and it’ll be covered in more detail in another blog post in December.

- [The Raspberry Pi PiServer tool](https://www.raspberrypi.org/blog/piserver/)
> Use this tool to easily set up a network of client Raspberry Pis connected to a 
single x86-based server via Ethernet. With PiServer, you don’t need SD cards, you can control all clients via the server, and you can add and configure user accounts — it’s ideal for the classroom, your home, or an industrial setting.

- [Set up PiServer](https://www.raspberrypi.org/magpi/set-up-piserver/)
> The idea is to use an old PC or Mac computer to boot multiple Raspberry Pi devices without requiring a microSD card for each Raspberry Pi 3 (only Raspberry Pi 3 boards support network boot at the moment).
> 
> PiServer is perfect for classrooms and coding groups. Users can log in to their account from any Raspberry Pi on the network, and access their saved files and programs. And you don’t need microSD cards for your Raspberry Pi.
-->