OpenBSD 6.0 インストール (VirtualBox)

OpenBSD 6.0 をインストールしてみたのでメモ。

# 環境

1. VirtualBox 5.0.30 r112061
2. macOS 10.12.1

# 方針

1. VirtIO ネットワークアダプタを使う
2. とりあえず DHCP を使う

# OpenBSD インストール

1. OpenBSD/6.0/amd64/install60.iso をダウンロード
2. VM を作成
    1. ![Screen Shot 2016-12-25 at 14.35.04.png](https://qiita-image-store.s3.amazonaws.com/0/131106/afb61fed-5408-72af-f958-98f28f5d76f9.png)
    2. ![Screen Shot 2016-12-25 at 14.35.50.png](https://qiita-image-store.s3.amazonaws.com/0/131106/1b5bbad4-d458-3f68-6012-e4e33739d352.png)
        1. デフォルトが 64MB は今時小さすぎるような
    3. ![Screen Shot 2016-12-25 at 14.36.41.png](https://qiita-image-store.s3.amazonaws.com/0/131106/34831672-f88e-0720-fcd4-495a024eab18.png)
    4. ![Screen Shot 2016-12-25 at 14.37.06.png](https://qiita-image-store.s3.amazonaws.com/0/131106/d783bfb2-8baf-a375-97f7-8692bf0c7591.png)
    5. ![Screen Shot 2016-12-25 at 14.37.22.png](https://qiita-image-store.s3.amazonaws.com/0/131106/1279ef56-291f-45cf-ae4c-23eced968270.png)
    6. ![Screen Shot 2016-12-25 at 17.41.28.png](https://qiita-image-store.s3.amazonaws.com/0/131106/261581b2-34c1-3912-4b38-1db7d21d5523.png)
        1. カーネルをビルドするので大きめにする（デフォルトの 2GB で自動レイアウトだと `/` 800MB 、`/usr` 900MB, `/home`256MB となり CVS チェックアウトで `No space left on device` が出た）
3. 作成した VM の Details
    1. ![Screen Shot 2016-12-25 at 14.38.55.png](https://qiita-image-store.s3.amazonaws.com/0/131106/2e01fa83-2edb-6f5b-f0c6-ddc245697a99.png)
4. VM の `Settings`
    1. `System`
        1. `Motherboard`
            1. ![Screen Shot 2016-12-25 at 14.40.34.png](https://qiita-image-store.s3.amazonaws.com/0/131106/dd3f985c-cc15-e432-e7a6-6cf17aa96779.png)
                1. `Hardware Clock in UTC Time` をチェック
        1. `Processor`
            1. ![Screen Shot 2016-12-25 at 14.41.29.png](https://qiita-image-store.s3.amazonaws.com/0/131106/a1eecdad-8892-f92f-ffa4-122a85273fb6.png)
                1. `Processor(s)` を 2 個に変更（ 1 個のままだとマルチプロセッサー用の `bsd.mp` がデフォルトでインストールされない）
    2. `Network`
        1. `Adapter 1`
            1. `Advanced` をクリック
                1. ![Screen Shot 2016-12-25 at 14.42.46.png](https://qiita-image-store.s3.amazonaws.com/0/131106/e7572dad-e090-49ca-d5aa-579f672007a2.png)
                2. `Adapter Type` を `Paravirtualized Network (virtio-net)` に変更
5. VM を `Start`
    1. ![Screen Shot 2016-12-25 at 14.43.53.png](https://qiita-image-store.s3.amazonaws.com/0/131106/ee2afe40-46b2-02e0-9c74-43596dfe2f89.png)
        1. ダウンロードした ISO を選んで `Start`
    2. ![Screen Shot 2016-12-25 at 14.44.57.png](https://qiita-image-store.s3.amazonaws.com/0/131106/5e7616ba-bbe8-fdd4-229d-b66d27ecdb2d.png)
        1. `(I)nstall` (「I」を入力)
    3. ![Screen Shot 2016-12-25 at 14.49.30.png](https://qiita-image-store.s3.amazonaws.com/0/131106/9322d44f-8d05-94a5-4492-0f0eba07dc07.png)
        1. 日本語キーボード (`jp`)
        1. ホスト名を入力
    4. ![Screen Shot 2016-12-25 at 14.55.40.png](https://qiita-image-store.s3.amazonaws.com/0/131106/b58626d1-2505-6eec-7955-24f9e459e856.png)
        1. `vio0` を設定 (Enter)
            1. IPv4 アドレスは `dhcp` を選択 (Enter)
            2. IPv6 アドレスは `rtsol` を指定
        2. `vlan0` は設定しない (Enter)
    5. ![Screen Shot 2016-12-25 at 15.00.28.png](https://qiita-image-store.s3.amazonaws.com/0/131106/d2021b32-9b85-c1cf-dcf4-e6f7247e7182.png)
        1. `root` パスワードを入力
        2. `sshd` を自動起動 (Enter)
        3. X ウィンドウは使わない (`no`)
        4. ここではユーザーを追加しない (Enter)
        5. ssh で root ログインを許可しない (Enter)
        6. タイムゾーンは `Asia/Tokyo` (Enter)
    6. ![Screen Shot 2016-12-25 at 17.44.33.png](https://qiita-image-store.s3.amazonaws.com/0/131106/f054fafb-b30d-e798-8a95-107e5c94f05d.png)
        1. `root disk` を選択 (Enter)
        2. ディスク全体を使用 (Enter)
        3. レイアウトを指定 (`c`)
            1. `/` パーティションを追加: `a a`
                1. size: 512m
                2. mount point: /
            2. swap パーティションを追加: `a b`
                1. size: 256m
                2. FS type: swap (Enter)
            3. `/tmp` パーテョションを追加: `a d`
                1. size: 256m
                2. mount point: /tmp
            4. `/var` パーテョションを追加: `a e`
                1. size: 512m
                2. mount point: /var
            5. `/usr` パーテョションを追加: `a f`
                1. size: 4g
                2. mount point: /usr
            6. `/home` パーテョションを追加: `a g`
                1. size: (Enter)
                2. mount point: /var
            7. ![Screen Shot 2016-12-25 at 17.52.28.png](https://qiita-image-store.s3.amazonaws.com/0/131106/63c03ce0-19ad-362b-935f-f4b9256f8a54.png)
            8. 保存して終了: `q`
    7. ![Screen Shot 2016-12-25 at 17.15.02.png](https://qiita-image-store.s3.amazonaws.com/0/131106/16ac9e2d-db6b-c7f3-47d4-70be52d98282.png)
        1. ISO からインストール (Enter)
        2. `6.0/amd64` をインストール (Enter)
        3. X ウィンドウと game はインストールしない
            1. `-xbase60.tgz`
            2. `-xshare60.tgz`
            3. `-xfont60.tgz`
            4. `-xserv60.tgz`
            5. `-game60.tgz`
            6. (Enter)
        4. [SHA256.sig が無いのは ISO からインストールしているので仕方がない](http://www.openbsd.org/faq/faq4.html#Signify) (`yes`)
    8. ![Screen Shot 2016-12-25 at 17.58.49.png](https://qiita-image-store.s3.amazonaws.com/0/131106/d5a9ed6d-759d-8661-ab65-19aed4bb0b0f.png)
        1. インストール完了 (Enter)
    9. ISO をアンマウントしてシャットダウン

        ```
# eject /dev/cd0a
# halt
```
        1. ここが `Power Off` して `Take Snapshot` する良いタイミング

# OpenBSD インストール直後の状態

1. ![Screen Shot 2016-12-25 at 18.00.38.png](https://qiita-image-store.s3.amazonaws.com/0/131106/1ca81bb2-1291-f888-957b-152227910360.png)
  1. X サーバーと game をインストールしないことで 200MB 強を節約できてる

# グループとユーザーを作成

1. `/etc/adduser.conf` を作成

    ```
defaultshell=/bin/ksh
```

2. ユーザーとグループを作成

    ```
# adduser -batch ユーザー名 wheel,wsrc
# passwd ユーザー名
```
    1. `su` できるように `wheel` グループへ追加
    1. ソースをチェックアウトできるように `wsrc` グループへ追加

3. `/etc/group` にユーザー名と同じ名前のグループが追加されてるので、直接編集して名前変更しても良い

4. `doas` を設定
    1. 未設定で `doas` を実行するとエラーが出る: `doas: doas is not enabled, /etc/doas.conf: No such file or directory`
    2. `/etc/doas.conf` を作成

        ```
permit ユーザー名
```
        1. `persist` は [OpenBSD 6.0 ではまだサポートされてない](https://news.ycombinator.com/item?id=12429050&goto=news)


# セキュリティパッチを適用

[M:Tier](https://stable.mtier.org/) がバイナリ更新を提供しているようだけれど、とりあえずソースからビルドする通常方式（時間かかる）。

1. [stable ソースをチェックアウト](https://www.openbsd.org/stable.html)

    ```
$ cd /usr
$ cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_6_0 -P src
```
    1. `/usr` が 726MB 増えた

2. [ビルド](http://man.openbsd.org/OpenBSD-6.0/release)
    1. カーネルをビルド

        ```
$ cd /usr/src/sys/arch/amd64/conf
$ config GENERIC.MP
$ cd ../compile/GENERIC.MP
$ make clean && make
$ doas make install
$ doas reboot
```
        1. `GENERIC.MP` ではなく `GENERIC` をビルドすると CPU を 1 個しか使わなくなってしまう
        2. `/usr` が 36MB 増えた

    2. システムをビルド

        ```
$ cd /usr/obj && mkdir -p .old && mv * .old && rm -rf .old
$ cd /usr/src && make obj
$ cd /usr/src/etc && doas env DESTDIR=/ make distrib-dirs
$ cd /usr/src && make SUDO=doas build
$ doas reboot
```
        1. `doas.conf` で `nopass` を指定してないと、パスワードを 7 回求められる（冒頭で 3 回、時間をおいて 1, 1, 1, 1 回）
        2. `/usr` が 1016MB 増えた