さくらのVPSにArch Linuxをインストールするまで(2018年4月版)

# はじめに
以前借りたまま使うことなく契約し続けていたさくらのVPSにArch Linuxをインストールしました．その過程を半分自分のためのメモとして記します．

今回利用するVPSはメモリ1GBにストレージがHDD100GBのプランです．

# Arch Linux ISOファイルの準備

今回インストールするArch LinuxはさくらのVPS側でインストールファイルを用意してもらえていないので，自分でインストールメディアを用意する必要があります．[公式サイトのダウンロードページ](https://www.archlinux.jp/download/)からISOファイルをご自身の端末にダウンロードしてください．

ダウンロードが完了したら，さくらのVPSのインストールメディア用アカウントにISOファイルをアップロードします．コントロールパネルから各種設定>OSのインストールとすすみ，OSインストール形式の「ISOイメージ」の項を選択してください．そこでISOイメージアップロード用のアカウントを作成し，表示される情報を元にSFTPでファイルのアップロードを行います．私はWindows端末で作業をしたのでWinSCPを利用しました．

アップロードが完了するとISOイメージ情報が表示されます．これを確認し，VirtIOを有効にしてインストールを開始してください．

# インストールの準備

ここからはVNCコンソール上で作業を行っていきます．インストールは基本的には公式Wikiの[インストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)にしたがって行っていきます．


## キーボードレイアウト

多くの方はJIS配列のキーボードを利用されていると思います．`loadkeys jp106`を実行してお使いのキーボードの配列を設定してください．

## パーティション

### パーティションの設定

さくらのVPSのパーティションテーブルはデフォルトではGPTになっています．このままパーティショニングしてGRUBをインストールすると起動できなくなる(あるいは複雑な設定が必要になる)ので注意が必要です．GRUBを利用したい場合はMBRを利用する方が無難だと思います．

まず`fdisk -l`でストレージデバイスの情報を確認してください．おそらくファイル名は`/dev/vda`となっていると思います．ストレージのファイル名がわかったらパーティションの設定を行います．fdiskでもpartedでも好きなものを使ってください．
fdiskを利用する場合は`o`コマンドで，partedの場合は`mklabel msdos`を実行してMBRを利用できるようにすることを忘れないようにしましょう．パーティションの区切り方は自由ですが参考までに私が行った設定を示します．

```
Device     Boot   Start       End   Sectors  Size Id Type
/dev/vda1  *       2048    206847    204800  100M 83 Linux
/dev/vda2        206848   8595455   8388608    4G 82 Linux swap / Solaris
/dev/vda3       8595456 209715199 201119744 95.9G 83 Linux
```

### パーティションのフォーマット

パーティションを区切り終わったらそのフォーマットを行います．上のパーティション設定にした場合のコマンドを下に示します．適宜変更してください．

```
# mkfs.ext4 /dev/vda1
# mkswap /dev/vda2
# swapon /dev/vda2
# mkfs.ext4 /dev/vda3
```

### マウント

フォーマットが終わったらストレージのマウントを行います．ルートパーティションを`/mnt`にマウントしてください．その他のパーティションについては適宜マウントポイントを作成してください．

```
# mount /dev/vda3 /mnt
# mkdir /mnt/boot
# mount /dev/vda1 /mnt/boot
```

## ネットワーク

そのままだとインターネットに接続できないのでネットワークの設定を行います．`ip a`でデバイスの確認を行い，適当なインターフェースを使ってください．IPアドレス，ゲートウェイの情報はさくらのVPSコントロールパネルで確認して入力してください．

```
# ip addr add  [IPアドレス]/23 dev [インターフェース]
# ip route add default via [ゲートウェイ]
```

続いてDNSの設定を行います．`/etc/resolv.conf`に次の内容を記録してください．DNSサーバのアドレスも同様にコントロールパネルで確認してください．

```:/etc/resolv.conf
nameserver [プライマリDNS]
nameserver [セカンダリDNS]
```

これでインターネットに接続できるようになったと思います．pingを打って確認してください．

## システムクロックの更新

次のコマンドでシステムクロックを正確にします．

```
# timedatectl set-ntp true
```

# インストール

## ミラーの選択

`/etc/pacman.d/mirrorlist`を編集してミラーを選択します．国内のものが良いでしょう．リストの中から次の項目を探し，リストのトップに記載します．

```:/etc/pacman.d/mirrorlist
## Japan
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
```

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

次のコマンドでベースシステムのインストールを行います．

```
# pacstrap /mnt base base-devel
```

# システムの設定

## fstab

次のコマンドでfstabを作成します．これはシステムの起動時にストレージを自動でマウントするためのものです．genfstabは実行時にマウントされているファイルシステムやスワップを認識するので，使う予定のファイルシステムは必ずマウントしておいてください．

```
# genfstab -U /mnt >> /mnt/etc/fstab
```

## chroot

インストールしたシステムに入ります．

```
# arch-chroot /mnt
```

## タイムゾーンの設定

次のコマンドでシンボリックリンクをはります．タイムゾーンは適宜変更してください．

```
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock -w -u
```

## ロケールの設定

`/etc/locale.gen`を編集して使用するロケールを設定します．`en_US.UTF-8 UTF-8`（例）をコメントアウトし，次のコマンドを実行します．ロケールは適宜変更してください．

```
# locale-gen
```

またロケールを`/etc/locale.conf`に設定します．

```
# echo LANG=en_US.UTF-8 > /etc/locale.conf
```

さらにコンソールキーマップも設定しておきます．

```
# echo KEYMAP=jp106 > /etc/vconsole.conf
```

日本語を利用する場合はフォントの設定もしておく必要があります．

## ホストネームの設定

`/etc/hostname`および`/etc/hosts`にホストネームを記録します．

```
# echo [ホストネーム] > /etc/hostname
```

```:/etc/hosts
127.0.0.1	localhost.localdomain		localhost
::1		localhost.localdomain		localhost
127.0.1.1	[ホストネーム].localdomain	[ホストネーム]
```

## ネットワーク設定

新しくインストールした環境でのネットワークの設定を行います．以下のコマンドで設定ファイルを作成します．

```
# cp /etc/netctl/examples/ethernet-static /etc/netctl/mynetwork
```

コピーした設定ファイルの内容を次のように編集します．

```:/etc/netctl/mynetwork
Description='A basic static ethernet connection'
Interface=[インターフェース]
Connection=ethernet
IP=static
Address=('[IPアドレス]/23')
Gateway='[ゲートウェイ]'
DNS=('[プライマリDNS]' '[セカンダリDNS]')
```

最後に次のコマンドを実行しておくと，システム再起動後も自動的にネットワークに接続されます．

```
# netctl enable mynetwork
```

## initramfsの設定

`/etc/mkinitcpio.conf`を編集し，`MODULES`を以下のように変更します．

```:/etc/mkinitcpio.conf
MODULES="virtio virtio_blk virtio_pci virtio_net"
```

変更が完了したら次のコマンドを実行します．

```
# mkinitcpio -p linux
```

# ブートローダーの設定

今回はGRUBを使用します．その他のブートローダーを使う場合は[公式Wiki](https://wiki.archlinux.jp/index.php/%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC)等を参照してください．

## LVMの無効化

今回はLVMを利用していないのでエラー回避のために無効にしておきます．`/etc/lvm/lvm.conf`を編集して以下の変更を行ってください．

```:/etc/lvm/lvm.conf
use_lvmetad = 0
```

## GRUBのインストールおよび設定

次のコマンドを実行し，インストールおよび設定ファイルの作成を行ってください．

```
# pacman -S os-prober grub
# grub-install --target=i386-pc --recheck /dev/vda
# grub-mkconfig -o /boot/grub/grub.cfg
```

# もう少しで終わりです

以上でArch Linuxのインストールはほぼ終了です．一度システムを停止してから細かな設定を行います．

次のコマンドでシステムを停止し，コントロールパネルから起動を行ってください．`reboot`や`halt`はうまく動作しませんでした．

```
# exit #chroot環境から脱出
# umount -R /mnt
# shutdown -h now
```

## rootのパスワード設定

`passwd`でrootのパスワードを設定してください．

## ユーザの追加

次のコマンドでユーザを追加します．rootを使い続けるのはあまり良くないので，sudoを利用できるユーザを作成します．

```
# useradd -m -g wheel [ユーザ名]
# passwd [ユーザ名]
```

## sudoの設定

`visudo`を実行して設定ファイルを開きます．ファイル中の次の行からコメントアウトを削除し，wheelグルーブにsodoの権限を付与します．

```:/etc/sudoers
# %wheel ALL=(ALL) ALL 
```

## その他の設定

次の設定をすることをおすすめします．

- 公開鍵暗号認証の設定
- ファイアウォールの設定

# お疲れ様でした！

以上でArch Linuxのインストールおよび最低限の設定は終わりです．お疲れ様でした．

# 参考文献

[VPS（仮想専用サーバー）｜さくらインターネット - 無料お試し実施中](https://vps.sakura.ad.jp/)
[インストールガイド - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)
[Arch Linuxを簡単インストール – 「楽しいさくらのクラウド」(17) | さくらのナレッジ](https://knowledge.sakura.ad.jp/6443/)
[さくらVPSにArchlinuxのインストール - Qiita](https://qiita.com/ys-0-sy/items/85684521e5226842a728)
[わかめそばmogmog: さくらのVPSを借りてArchLinuxを導入した](https://wakamesoba98.blogspot.jp/2016/04/vpsarchlinux.html)