Alpine Linux をインストールする

# Alpine Linux とは？
Alpine Linux はイメージサイズが小さく、シンプルでセキュアのディストリビューションです。DockerのベースOSとしても有名です。

OSのライブラリにglibcではなくmuslを使用しているため、Pythonの実行環境として使うと実行速度が極端に落ちるケースがあります。muslをリンクして再コンパイルを行えば回避できるものの、運用の中でそれを行うのはなかなか骨が折れる作業です。

しかしながら、開発環境やWebアプリケーションの実行環境ではなく、NAS、NTP、メールサーバーなど用途を限定してやれば、非常に使いやすくサーバーとしてのポテンシャルが高いと感じています。

# 前提
VirtualBoxにAlpineLinuxをインストールするために、VirtualBoxのセットアップを完了しておいてください。ネットワークはNAT構成とします。VirtualBoxでのNAT構成は[VirtualBoxでNAT構成を作る](https://qiita.com/elfincafe/items/1143d5978fb6c9dafc4f)を参照してください。

AlpineLinuxは3.15系を使用します。

# インストール
### Boot
 AlpineLinuxのisoファイルからBootします。VirtualBoxではなく実機で行う場合はCD-Rに焼くなり、USBに入れるなりしてBootしてください
### Login
ユーザー「root」でログインしてください。パスワードなしです。
```
Welcome to Alpine Linux 3.15
Kernel 5.15.32-0-virt on an x86_64 (/dev/tty1)

localhost login: root
```
### セットアップ
setup-alpineコマンドを実行します。
```
# setup-alpine
```
### キーボードレイアウトの設定
ここでは日本語キーボードを選択します。
```
Avaiable keyboard layouts:
af   az   br   cm   dz   fo   gr   il   it   kz   lv   ml   nl   pt   si   tm   uz
...
Select keyboard layout: [none] jp
Available variants: jp-OADG109A jp-dvorak jp-kana jp-kana86 jp-mac jp
Select variant (or 'abort'): jp
```
### ホスト名の設定
ここでは hoge.example.com を設定します。
```
Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] hoge.example.com
```
### ネットワークの設定
VirtualBox上でのNAT構成なので、NICが2枚ついています。eth0は固定アドレスで192.168.56.10(Gatewayなし)、eth1はDHCPに設定します。
```
Available interfaces are: eth0 eth1.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0] eth0
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] 192.168.56.10
Netmask? [255.255.255.0] 255.255.255.0
Gateway? (or 'none') [none] none
Configuration for eth0:
  type=static
  address=192.168.56.10
  netmask=255.255.255.0
  gateway=
Available interfaces are: eth1
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth1] eth1
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] dhcp
Do you want to do ant manual network configuration? (y/n) [n] n
```
### rootのパスワードを設定
rootユーザーのパスワードを設定します。パスワードなので入力しても画面には反映されません。
```
Changing password for root
New Password: 
Retype password: 
```
### タイムゾーンの設定
ここではAsia/Tokyoを設定します。
```
Which timezone are you in? ('?' for list) [UTC] Asia/Tokyo
```
### プロキシの設定
ここではnoneを設定します。
```
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
```
### NTPクライアントの選択
ここではChronyを設定します。
```
Which NTP client to run? ('budybox', 'openntpd', 'chrony', or 'none') [chrony] chrony
```
### ミラーサーバーの選択
ここでは1を選択します。
```
r) Add random from the above list
f) Detect and add fastest mirror from abeve list
e) Edit /etc/apk/repositories with text editor

Enter mirror number (1-72 or URL to add (or r/f/e/done) [1]
```
### SSHサーバーの選択
ここでは OpenSSH を選択します。
```
Which SSH server? ('openssh', 'dropbear' or 'none') [openssh] openssh
```
### インストール先ストレージの選択
ここではsdaを選択する。複数のストレージがある場合はsdb, sdcなどと表示される。
```
Available disks are:
  sda   (8.6GB ATA  VBOX HARDDISK)
Which disk(s) would you like to use? (or '? for help or 'none') [none] sda
How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys
WARNING: Erase the above disk(s) and continue? (y/n) [n] y
```
### 再起動
インストールメディアの抜いてから再起動します。
```
Installation is complete. Please reboot.
hoge:~# reboot
```

# GUIのインストール (オプション)
AlpineLinuxはインストール直後はCUI環境ですが、当然GUIも用意されています。ここではxfceをインストールをしてみましょう。
### リポジトリの追加
リポジトリの設定ファイルを書き換えてcommunityパッケージのリポジトリを有効にしましょう。
```
# vi /etc/apk/repositories
```
#http://dl-cdn.alpinelinux.org/alpine/v3.15/community
  ↓
http://dl-cdn.alpinelinux.org/alpine/v3.15/community

### GUI環境のセットアップ
GUI環境ををセットアップします。
```
# setup-xorg-base
# apk add xfce4 xfce4-terminal xfce4-screensaver lightdm-gtk-greeter dbus
# rc-update add dbus
# rc-update add lightdm
# reboot
```