VirtualBox上の仮想マシンにPhoton OSをインストールする

# VirtualBox上の仮想マシンにPhoton OSをインストールする

Photon OSはコンテナ環境稼働に特化したOSであり、公式でGCEやEC2への対応を謳っています。
今回は開発環境として利用することを想定し、Photon OSをVirtualBox上にインストールします。

## 前提環境
- Windows10 64bit
- VirtualBox 5.1.16
- Photon OS 1.0 R2

## 構築手順
1. Photon OSのISOイメージをダウンロードする
2. VirtualBox上に仮想マシンを定義する
3. 仮想マシンにPhoton OSをインストールする
4. Photon OSの設定を行う

### 1. Photon OSのISOイメージをダウンロードする
[Photon OS公式サイト](https://vmware.github.io/photon/)または[Photon OS ダウンロードページ](https://github.com/vmware/photon/wiki/Downloading-Photon-OS)から**Photon OS, Version 1.0 — Full ISO(or Full ISO)**をダウンロードします。(今回ダウンロードしたファイルは photon-1.0-13c08b6.iso)

### 2. VirtualBox上に仮想マシンを定義する
まずVirtualBoxを起動します。
次に**新規(N)**ボタンを押して仮想マシンの定義を作成します。
![001.png](https://qiita-image-store.s3.amazonaws.com/0/151455/d8a3aeb3-fb77-f6da-25d3-1954d7b01178.png)

- 名前とオペレーティングシステム
    - 名前(N):
        - 任意の名前を付ける。今回は*photon*とします
    - タイプ(T):
        - **Linux**を選択します
    - バージョン(V):
        - **Linux 2.6 / 3.x / 4.x (64bit)** を選択します
- メモリーサイズ(M)
    - 2048 MB
        - この値はホストPCに実搭載されているメモリ量と相談して決めてください
        - Photon OSの公式では「1GB以上を推奨」となっています
- ハードディスク
    - 仮想ハードディスクを作成する(C)

定義を入力したら**作成**ボタンを押して作成します。
次に仮想HDDの設定を行います。
![002.png](https://qiita-image-store.s3.amazonaws.com/0/151455/7317af7b-f3ed-014a-eec4-8e8df0d8d255.png)

- ファイルの場所
    - photon
        - デフォルト値として入力されているはずです
- ファイルサイズ
    - 40.00GB
        - この値はホストPCに実搭載されているHDD/SSDの空き容量と相談して決めてください
        - Photon OSの公式では「20GB以上を推奨」となっています
- ハードディスクのファイルタイプ(T)
    - VDI(VirtualBox Disk Image)
        - このパラメーターに関しては任意の物で問題ないと思われますが、標準の物を使った方がトラブルが起きにくいでしょう
- 物理ハードディスクにあるストレージ
    - 可変サイズ(D)
        - このパラメーターも任意の物で構いませんが、可変サイズとすることで容量を節約できます

定義を入力したら**作成**ボタンを押して作成します。
これでPhoton OSをインストールするための仮想マシン*photon*が作成されました。
インストールに入る前に、仮想マシン*photon*の調整を行います。

![003.png](https://qiita-image-store.s3.amazonaws.com/0/151455/1d804884-b6cd-6c7b-109d-890659ab4740.png)
**設定(S)**ボタンを押して以下の項目を調整します。

![004.png](https://qiita-image-store.s3.amazonaws.com/0/151455/67fa0697-ae81-566c-c4fa-28e9f20a62a4.png)

- システム
    - 起動順序
        - フロッピーのチェックを外す
            - フロッピーディスクを使う予定はありませんので外してしまいましょう
    - ポインティングデバイス
        - PS/2 マウス
            - サーバー用のOSですので、デバイスドライバーとの兼ね合いから、枯れた技術の方がよいでしょう

![005.png](https://qiita-image-store.s3.amazonaws.com/0/151455/a418e97f-3bd7-8389-d679-ab8cf8402837.png)

- **ストレージ**
    - 属性
        - 光学ドライブ
            - ここで右側のディスクのアイコンをクリックして先ほどダウンロードしたPhoton OSのISOイメージをマウントしておきます

![006.png](https://qiita-image-store.s3.amazonaws.com/0/151455/b1a5bd6b-25a0-4b43-dc0e-1a8bdd8850b1.png)

- オーディオ
    - オーディオの有効化のチェックを外す
        - つけたままでも問題はありません

![007.png](https://qiita-image-store.s3.amazonaws.com/0/151455/31698e52-7cc6-851b-5c56-1f43e5441eaa.png)
![008.png](https://qiita-image-store.s3.amazonaws.com/0/151455/00aabbb2-ced5-c87a-1a7b-4b2c5e734756.png)

- **ネットワーク**
    - アダプター1
        - ネットワークアダプターを有効化(E)にチェックが入っていることを確認します
        - 割り当て(A)
            - **NAT**
    - アダプター2
        - ネットワークアダプターを有効化(E)にチェックを入れます
        - 割り当て(A)
            - **ホストオンリーアダプター**

設定が済んだら**OK**ボタンを押して仮想マシンの定義を反映します。

### 3. 仮想マシンにPhoton OSをインストールする
起動(T)ボタンを押して仮想マシンを起動します。
![009.png](https://qiita-image-store.s3.amazonaws.com/0/151455/1874022f-b400-2b4a-2e14-2e51dbb7a131.png)

- インストール画面が出てきますのでそのままエンターキーを押して先へ進みます

![010.png](https://qiita-image-store.s3.amazonaws.com/0/151455/07966713-831d-bb39-8fcd-5d669ab6d595.png)

- ライセンス条項が表示されますので**Accept**を選択してエンターキーを押します

![011.png](https://qiita-image-store.s3.amazonaws.com/0/151455/9e2d1e85-5157-889a-96dd-d185563417a7.png)
![012.png](https://qiita-image-store.s3.amazonaws.com/0/151455/70bd9319-513c-876e-b1ed-222ce31f6517.png)

- インストール先が表示されますのでここもエンターキーを押して先へ進みます
    - 確認が表示されますので**YES**を選択してエンターキーを押します

![013.png](https://qiita-image-store.s3.amazonaws.com/0/151455/6da56035-73f8-7619-424b-3770ab794f57.png)

- しばらくHDDチェックが行われ、インストールタイプの選択画面になります
    - 2. Photon Full を選択してエンターキーを押します

![014.png](https://qiita-image-store.s3.amazonaws.com/0/151455/54d8fdbd-ee60-492a-7d0b-0f0832449413.png)

- ホスト名を入力してエンターキーを押します
    - 今回は開発機なので変更せず進めます

![015.png](https://qiita-image-store.s3.amazonaws.com/0/151455/ecb99607-6abb-a3c8-ed12-3cd285e15b0c.png)

- Rootのパスワードを入力してエンターキーを押します
    - 堅固なパスワードが要求されますので、8文字以上で記号を含むようなものにすれば大丈夫でしょう
    - 辞書チェックが行われますので、辞書に載っている単語が含まれていると拒否されます
        - 辞書チェックに引っかかるパスワードであっても、インストール後にpasswdコマンドを使う事で設定できます
- 確認のためにRootのパスワードを再度入力してエンターキーを押します

![017.png](https://qiita-image-store.s3.amazonaws.com/0/151455/53b15ce2-f97f-3aa2-2e9c-bd23036e152a.png)

- インストール処理が行われますのでしばらく待ちます

![018.png](https://qiita-image-store.s3.amazonaws.com/0/151455/c69fbfde-ea0b-0774-785b-80f56ebc6c00.png)
![019.png](https://qiita-image-store.s3.amazonaws.com/0/151455/2fff638b-3cb8-2029-4d8a-f06462e583d2.png)

- インストールが完了すると再起動を促すメッセージが表示されます
    - ここでISOイメージを取り外します
        - **キーボードの右側のCtrlキー**を押して制御を仮想マシンからホストマシンに戻します
        - メニューバーの**デバイス**から**光学ドライブ**へ進み、**仮想ドライブからディスクを除去**をクリックします
        - **強制除去しますか？**と表示された場合はそのまま強制除去を実施します
    - キーボードの適当なキーを押して再起動します
        - 再起動しない場合は、メニューバーの**仮想マシン**から**リセット**をクリックします

![020.png](https://qiita-image-store.s3.amazonaws.com/0/151455/7044865a-7b49-4787-24dd-9a72772a72f3.png)

- 再起動後にPhoton OSのスクリーンが表示されれば成功です

### 4. Photon OSの設定を行う
ここではSSHログインの設定とネットワークの設定を行います。

#### 4.1 SSHログインの設定
Photon OSではデフォルトでRootのSSHログインは許可されていません。
そこで、SSHの設定を変更し、Rootでログインできるようにします。
**RootでSSHログインできるようにしておくことは大変危険なので、開発環境だけに留めるようにしたほうがよいでしょう。**


![022.png](https://qiita-image-store.s3.amazonaws.com/0/151455/e86b2b53-ffa5-5cf0-b71c-dab9ab8f8ae6.png)
![023.png](https://qiita-image-store.s3.amazonaws.com/0/151455/04b0417b-45d4-5f63-f698-534047bfba86.png)
![024.png](https://qiita-image-store.s3.amazonaws.com/0/151455/06b95ff9-d756-12b7-1e16-14d3ae9fe761.png)

- **nano /etc/ssh/sshd_config** とキーインしてエンターキーを押します
    - アンダーバーは日本語キーボードの場合Shiftキーを押しながら=(= - ほ)のキーで入力できます
    - キーボードの↓キーを押して一番下までスクロールします
        - PermitRootLogin no と書いてあるところを探します
    - 設定を変更します
        - PermitRootLogin no となっているところをPermitRootLogin yes に変更します
            - noを消してyesに書き換えます
    - Ctrlキーを押しながらO(オー)キーを押します
    - 確認メッセージが出るのでエンターキーを押します
    - Ctrlキーを押しながらXキーを押します
- **systemctl restart sshd** とキーインしてエンターキーを押します

#### 4.2 ネットワークの設定

![025.png](https://qiita-image-store.s3.amazonaws.com/0/151455/dcfba932-6ef3-a8ad-ab37-06064e32b25e.png)

- **networkctl** とキーインしてエンターキーを押します
    - 以下のようになっていると想定して進めます
        - eht0がroutable configured
        - eth1がdegraded configuring

![026.png](https://qiita-image-store.s3.amazonaws.com/0/151455/e9144a4f-6f9e-cceb-2dc7-dda2a2efe2bb.png)

- **nano /etc/systemd/network/10-dhcp-en.network** とキーインしてエンターキーを押します
    - [Match]の下にあるName=e*をName=eth0に変更します
    - Ctrlキーを押しながらO(オー)キーを押します
    - 確認メッセージが出るのでエンターキーを押します
    - Ctrlキーを押しながらXキーを押します

![28.png](https://qiita-image-store.s3.amazonaws.com/0/151455/853d7509-44d4-3c46-d17c-f244555015c0.png)

- **nano /etc/systemd/network/10-static-en.network** とキーインしてエンターキーを押します
    - 以下の内容をキーインします
        - `[Match]`
        - `Name=eth1`
        - `[Network]`
        - `Address=192.168.1.100`
            - ＝はキーボードの(~ ^ へ)のキーで入力できます
            - [はキーボードの(@)のキーで入力できます
            - ]はキーボードの[のキーで入力できます
            - **192.168.1.100は試験用ネットワークですので環境に合わせて変更してください**
    - Ctrlキーを押しながらO(オー)キーを押します
    - 確認メッセージが出るのでエンターキーを押します
    - Ctrlキーを押しながらXキーを押します
- **chmod 644 /etc/systemd/network/10-static-en.network** とキーインしてエンターキーを押します
- **systemctl restart systemd-networkd**  とキーインしてエンターキーを押します

![029.png](https://qiita-image-store.s3.amazonaws.com/0/151455/5fe50096-1e28-2fae-2613-0d5a2419e2e3.png)

- **networkctl** とキーインしてエンターキーを押します
    - 以下のようになっていれば成功です
        - eth0がroutable configured
        - eth1がroutable configured

#### 4.3 SSHでログインできるか確認する

- *ssh 192.168.1.100* とキーインします
    - 確認メッセージが表示されるので yes とキーインしてエンターキーを押します
    - パスワードを聞かれるのでRootのパスワードを入力します
        - ログインに成功すれば設定は正常に出来ています
    - exitとキーインしてエンターキーを押します

### 5. シャットダウン

- **poweroff**とキーインしてエンターキーを押します


## 雑記
極力漏れが無いように確認しながら作成しましたが、漏れないようにするのは意外と難しいものです。
スクリーンショットなど取り忘れたところもあるので、いずれその辺りをアップデートするかもしれません。
またセキュリティ関連の設定を行っていないため、開発用の環境と言えど若干よろしくないところもあります。
この辺りは追々作っていければと思います。