ConoHaのArch Linux初期イメージについて調べてみた

ConoHaにArch Linux環境を構築したので、その際に調べた内容をメモ。

最初はISOイメージからクリーンインストールしようかと思ったのだけど、新ConoHaはAPI経由じゃないとイメージのアップロードなどができず面倒くさかったので初期で用意されているArch Linuxイメージを使ってみることにした。
で、初期イメージって何かConoHa用に設定とか手が加えられているのかなーと気になったので調べてみた。

※ぱぱっと目についたところを洗い出しただけなので網羅しているわけではない。

イメージ
--------

Arch Linux 20151008 (64bit)

ディスク=50GB, メモリ=1GB

Virtio
------

Virtioは有効になっていた。

ディスク
--------

```
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
sr1     11:1    1  434K  0 rom
vda    254:0    0   50G  0 disk
├─vda1 254:1    0    2M  0 part
└─vda2 254:2    0   50G  0 part /
```

```
Device     Start       End   Sectors Size Type
/dev/vda1   2048      6143      4096   2M BIOS boot
/dev/vda2   6144 104855551 104849408  50G Linux filesystem
```

/dev/sr1にはメタデータが入っていて後述のconoha-initが参照して初期設定とかする。
rootのパスワードとかが平文で参照できるので取り扱いには気をつけよう。

初期設定
--------

初回起動時にconoha-initなるものによって初期設定が行われる。

- タイムゾーンの設定（選んだリージョンによって異なる）
    - 東京=`Asia/Tokyo`, シンガポール=`Asia/Singapore`, アメリカ=`US/Pacific`みたいな感じ
- コンパネで指定したrootパスワードの設定
- コンパネで設定したSSH公開鍵の設定（rootの`authorized_keys`に追加される）
- sshdの設定（PasswordAuthenticationとかPermitRootLoginとかそのへん）
    - 公開鍵を設定するかどうかによって設定が変わる

`conoha-init.service`, `conoha-extra-ipv6.service`というユニットが登録されていて起動時に実行されるようになっている。
中身は`/etc/cloud/conoha-init`内のスクリプトを実行するようになっていて、前者が初期設定、後者がIPv6の追加アドレスの設定になっている。
`/etc/cloud/conoha-init/conoha-init.sh`を見ればどういう初期設定をしているのかわかる。

ロケールとか
------------

ロケールは`en_US.UTF-8`だけが有効になっており、`ja_JP.UTF-8`などは自分でlocale-genし直す必要がある。

コンソールのキーマップは`jp106`になっていた。
conoha-initで設定している感じはなかったので最初から設定済みの模様。

```
$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: n/a
```

```
$ cat /etc/vconsole.conf
KEYMAP=jp106
```

スワップ
--------

/var/swapfileに2GBのスワップファイルが作成されている（選んだインスタンスサイズとかによっては異なるのかもしれない）。

```
$ swapon --show
NAME          TYPE SIZE USED PRIO
/var/swapfile file   2G 704K   -1
```

ネットワーク
------------

ホスト名は`archlinux`になっていたと思う（変更してしまったので忘れた）。

ネットワークは`/etc/systemd/network/10-conoha.network`によってDHCP構成が設定されてる。

```
$ cat /etc/systemd/network/10-conoha.network

[Match]
Name=eth0

[Network]
DHCP=yes
```

インターフェイス名は古き良きeth0になるように設定されている。

```
$ ls -l /etc/udev/rules.d
lrwxrwxrwx 1 root root 9 Oct  8 12:17 /etc/udev/rules.d/80-net-setup-link.rules -> /dev/null
```

iptablesとかは特に設定されていない。


NTP
---

時刻合わせは`systemd-timesyncd`が有効になっていて、NTPで同期するようになっているが、何か専用のNTPサーバが設定されていたりはしない。

```
$ timedatectl status
      Local time: Fri 2016-02-26 11:40:31 JST
  Universal time: Fri 2016-02-26 02:40:31 UTC
        RTC time: Fri 2016-02-26 02:40:31
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no
```

```
$ cat /etc/systemd/timesyncd.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.poolntp.org 3.arch.pool.ntp.org
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
```

その他
------

conoha-init内で使うためにjqがインストールされている。

その他、何か追加でインストールされているパッケージやユニットがあるかどうかは不明。
ぱっと見た感じではそんなにあれこれ勝手に突っ込まれているようには見えなかった。
（既に色々追加してしまったので、初期パッケージリストとかもうわからない）