ESXiでArchLinuxの仮想ホストを作り、簡単な調整をする

ESXiでArchLinuxを稼働させようとして、ところどころはまりました。
最終的に問題なく稼働が出来るようになったので、構築のメモとして残しておきます。

#前提条件

以下の環境を想定しています。

- ESXi上(バージョン不問)に、ArchLinuxを構成する
- 仮想マシンのネットワークではDHCPが利用でき、Internetへ直接アクセスが出来る構成になっている

構築するArchLinuxは以下の設定とします

- 英語キーボード
    - 日本語キーボード利用の記載もしますが、私は利用していないので正しくないかも
- ディスク割当は、SWAP:2GB, boot:100MB, /:残り
    - 必要に応じて、ディスク割当時に変更可能
    - ext4を利用します
- ミニマムなインストール
    - base, base-devel を入れます。必要な時に必要なパッケージを入れる、方針です。

構築する人は、fdiskコマンドは知っていると良いです。

- 例えば、新規でパーティション1を作る場合、「n, p, 1としてFirst sectorデフォルト, Last sectorは+1G」のように書きます

```bash:上記の操作は、以下のイメージ
root@HOST# fdisk /dev/sda

Command (m for help): n
Select (default p): p
Partition number (1-4, default 1):1
First sector (2048-xxxxx, default 2048): <enter>
Last sector, +sector or +size{K,M,G,T,P}: +2G

(これで 1GBのPrimary partitionを作る)
```

#事前準備

以下の準備をします

- ArchLinuxのISOイメージをダウンロード
    - https://www.archlinux.org/ からダウンロードしてください
- vShpere等でマウントが出来る場所に保存
    - Datastore に ISO ディレクトリを作って置いておく、というのが楽かもしれません。運用次第です。

#ArchLinux仮想マシンをつくる
##仮想マシンを作る

vSphereClient等で仮想マシンを作ってください。

- スペックは任意で作成してください。
- ゲストOSは、Other linux (64bit)系を選ぶと良さそうです。
- 準備したArchLinuxのISOで起動するように、CD/DVDドライブの設定をしてください。

##ISOイメージで起動する

ISOイメージで起動するので、"Boot Arch Linux (x86_64)"を選択して起動します。
暫くすると、rootのプロンプトが表示されます。

> 日本語キーボードを利用する場合は `loadkeys jp106`してください。

なお、この時点でネットワークにつながっているかを確認しておきましょう。

- `ping www.yahoo.co.jp`などでアクセスが出来る事を確認

##インストールディスクのパーティション設定

ISOイメージ起動しているので、インストール先のディスクのパーティショニングをして、インストールできるようにしましょう。fdiskコマンドでパーティションを作成します。

- パーティションの作成
    - swap領域の作成
        - /dev/sda1で2GB
        - fdiskで、`n, p, 1`として`First sectorデフォルト, Last sectorは+2G`
    - boot領域の作成
        - /dev/sda2で100MB
        - fdiskで、`n, p, 2`として`First sectorデフォルト, Last sectorは+100M`
    - /領域の作成
        - /dev/sda3で "残り全部"
        - fdiskで、`n, p, 3`として`First sectorデフォルト, Last sectorもデフォルト(最大値)`
- パーティションタイプの設定と、bootable flagの設定、設定の書き込み
    - swapパーティションのタイプを82(Linux swap/Solaris)に変更
        - fdiskで、`t, 1, 82`
    - bootrパーティションにbootable flagを付与
        - fdiskで、`a, 2`
    - 設定の書き込み
        - 設定を確認する
            - fdiskで、`p`
            - /dev/sda1が"Linux swap / Solaris"、sda2とsda3が"Linux"になっている
        - 問題なければ、書き込む
            - fdiskで、`w`
- ファイルシステムの構築
    - 各パーティションを ext4ファイルシステムで構成します
        - `mkfs.ext4 /dev/sda1`
        - `mkfs.ext4 /dev/sda2`
        - `mkfs.ext4 /dev/sda3`
- bootの設定
    - 稼働した際に /boot で起動できるようにする
        - /を /mnt 辺りにマウント
            - `mount /dev/sda3 /mnt`
        - /boot となるよう、/mnt/boot を作り、マウントする
            - `mkdir /mnt/boot`
            - `mount/dev/sda2 /mnt/boot`
- swapの設定
    - スワップ有効化の設定をする
        - `mkswap /dev/sda1`
        - `swapon /dev/sda1`

##システムインストール

/mnt 以下にディスクをマウントしているので、インストールしてしまいましょう。

- まずは、起動時にマウントできるように、fstabの作成
    - `genfstab -U -p /mnt >> /mnt/etc/fstab`

chrootしてからインストールしましょう。

- `arch-chroot /mnt`

###環境設定

localeやtimezone、hostnameの設定をします。

- /etc/locale.genの編集と、localeの生成、LANG設定
    - nanoで編集
        - en_US.UTF-8 UTF-8とja_JP.UTF-8 UTF-8を有効化(先頭の#を外す)
            - `nano /etc/locale.gen`
    - 編集後、生成
        - `locale-gen`
    - LANを設定し、exportする
        - `echo LANG=en_US.UTF-8 > /etc/locale.conf`
        - `export LANG=en_US.UTF-8`
- timezoneの設定
    - `ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime`
    - `hwclock --systohc --utc`
- ホスト名の設定
    - ホスト名を/etc/hostnameに書き込む
        - `echo "HOSTNAME" > /etc/hostname`

###GRUBのインストール

GRUBをインストールして、grub.cfgを生成

- パッケージのインストール
    - `pacman -S grub`
- GRUBのインストールとcfgの生成
    - `grub-install --recheck /dev/sda`
    - `grub-mkconfig -o /boot/grub/grub.cfg`

###最終設定

後はリブートするだけですが、忘れがちな設定を先にしておきましょう。

- DHCPでネットワーク構成が出来るようにサービスを起動
    - `systemctl enable dhcpcd.service`
- rootのパスワード設定
    - `passwd`

これで最小限のArchLinuxサーバが完成しました。再起動して、ディスクから起動しましょう。

- `reboot`

#ArchLinux起動後の構成とか

必要なパッケージを入れましょう。

- パッケージ管理は pacman です。
    - `pacman -S <PackageName>` でインストール可能です。
        - `pacman -S vim net-tools` とかしましょう。
        - 不要なものはなるべく入れないのが良いでしょう。
    - `pacman -Ss <PackageName>` でパッケージを検索できます

sshdは必要でしょう

- インストール
    - `pacman -S openssh`
- サービス開始
    - `systemctl start sshd.service`
- サーバ起動時に有効にする
    - `systemctl enable sshd.service`

#終わりに

これで一応は使える環境になったので、後は普通のLinux同様に設定が出来るはずです。

なにか詰まったことがあった時は、`archlinux postgres` のようにググれば、ArcLinuxのWiki https://wiki.archlinuxjp.org/ が出てくるでしょう。インストールの仕方から設定の仕方まで書いてあるので、非常に助かるサイトです。