簡単ArchLinuxインストールガイド

Arch Linuxのインストールを簡単にまとめているサイトが無かったので、とりあえずインストールメディアから再起動したら、GUIが立ち上がって使える状態になる、手順をまとめてみました。

ベースはArchWikiのインストールガイドですが、省ける手順は省き、まとめられる手順はまとめました。

# 必要なモノ

- Arch Linuxをインストールするもの (物理マシン・仮想マシン どちらでも可)
- 空のストレージ
- DHCPでIPが降ってくる有線LAN (物理マシンの場合)
  - 自分でどうこうできるならどんな環境でも良い
  - ただし、無線LANよりインストールが早く終わるのでオススメ
- 何が起きてもめげない精神

## まず最初に

とりあえずArch LinuxのインストールisoをUSBやCDに焼いて、**EFI** で起動しましょう。もしくは、VMを好きなスペックで作り、ブートモードをEFIにして立ち上げましょう。

今からインストールするなら、EFIブートでインストールしたほうが、イケてます。

## インストール手順

インストールメディアが起動して、`zsh`が立ち上がり、`root`でプロンプトに入れたら、作業開始です。

キー配列が起動時点ではUSになっているので、日本語にするには

```bash
loadkeys jp106
```

と入力しましょう

起動した段階でDHCPで勝手にネットに繋がっていると思いますが、とりあえずの確認でどこかに`ping`を打ってみましょう。わたしはいつも`www.google.co.jp`に飛ばしています。

インターネッツに疎通ができることを確認したら、インストールを始めて行きます。

### 1. パーティショニング

まず最初にインストールをするためのスペース作りをします。

既存のパーティション情報は邪魔なので、

```bash
dd if=/dev/zero of=/dev/sda count=1 bs=1MiB
```



とやってパーティション情報を消してしまうことをオススメします。



パーティショニングツールは`cgdisk`がオススメです。

```bash
cgdisk /dev/sda
```

起動時に`Select label type`を訊かれるので、`gpt`を選択します。

ここで一つポイントなのは、Arch Wikiでは`/boot`とESP(EFIシステムパーティション)は一緒にしてしまって構わないと書かれていますが、他のLinuxや、万が一にもないと思いますが、もしWindowsをマルチブートしたいとなどと思ってしまった時に、非常に厄介なことになるので、ESPは別パーティションにした方が幸せになれます。

それ以外は、パーティショニングは個人の好きなようにして良いと思います。私はすべて一つにまとめてしまうので、ESPと`/(ルート)`の二つしか切りません。

`cgdisk`の使い方は調べて下さい。`parted`などのCLIツールよりは難しくないです。

私は以下のように切ります。

| デバイス  | サイズ              | タイプ           |
| --------- | ------------------- | ---------------- |
| /dev/sda1 | 100MiB              | EFI System       |
| /dev/sda2 | 15.9GiB(残りすべて) | Linux filesystem |

### 2. フォーマットとマウント

先ほど作ったパーティションをフォーマットして、マウントします。

ESPパーティションは無条件でFAT32でフォーマットします。

```bash
mkfs.vfat -F32 /dev/sda1
```

rootパーティションはお好みのファイルシステムでフォーマットしましょう。

筆者のオススメは`ext4`です

```bash
mkfs.ext4 /dev/sda2
```

フォーマットが終わったらマウントします。

ルートになるパーティションからマウントしていきます

```bash
mount /dev/sda2 /mnt            # ルートパーティションのマウント
mkdir -p /mnt/boot/efi          # ESPのマウントポイントを作成
mount /dev/sda1 /mnt/boot/efi   # ESPをマウント
```

### 3. システムのインストール

システムを`pacstrap`で展開していきます。これが一番時間がかかる作業です。(と言っても10分もあれば終わる)

`/etc/pacman.d/mirrorlist`をvimなどのテキストエディタで開き、jaistのミラーを一番上に持ってきます。

ここでポイントなのは、ArchWikiではここの段階では`base`と`base-devel`しか指定していませんが、ここで他のソフトも一緒に指定してインストールすることができます。(よく読めば書いてある)

私はここでGUIデスクトップ環境で必要になるモノをすべてインストールしてしまいます。

因みに私は、ディスプレイマネージャーは`lightdm`、デスクトップ環境は`cinnamon`を好んで使っていますが、ここは個人の好きなモノにして下さい。(この記事ではlightdmとcinnamonで進めていきます)

#### まとめて入れるモノ一覧

- 基本システム系
  - base
  - base-devel
  - linux
  - linux-firmware
  - grub
  - intel-ucode (Intel製CPUを使った物理マシンにインストールする場合)
  - dosfstools
  - efibootmgr
- エディタ
  - vim
- シェル補完
  - bash-completion
- ネットワーク管理
  - networkmanager
- Xorg
  - xorg-server
- ディスプレイマネージャー
  - lightdm
  - lightdm-gtk-greeter
  - lightdm-gtk-greeter-settings
- デスクトップ環境 GUI関係
  - cinnamon
  - cinnamon-translations
  - terminator
  - adobe-source-han-sans-jp-fonts
  - adobe-source-han-serif-jp-fonts
- その他
  - git

これらをまとめて、インストールしていきます。

```bash
pacstrap /mnt base base-devel linux linux-firmware grub intel-ucode dosfstools efibootmgr vim bash-completion networkmanager xorg-server lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings cinnamon cinnamon-translations terminator adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts git
```

## 4. システムの設定

#### fstabの生成

`genfstab`コマンドを実行して、fstabを生成します。UUIDを使うのが確実なので、`-U`オプションを付けて実行しましょう。

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

#### 新しいシステムにchroot

```bash
arch-chroot /mnt
```

新しくインストールしたシステムに`chroot`をした状態になりました。

#### 地域の設定

タイムゾーンとロケールの設定をしていきます。

##### タイムゾーン

`/usr/share/zoneinfo`にタイムゾーンの設定ファイルのサンプルが転がってるのでそのまま使います。

```bash
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

`/etc/adjtime`を生成する必要があるので、次のコマンドを実行します。

```bash
hwclock --systohc --utc
```

##### ロケールの設定

システム全体のロケールを設定していきます。`/etc/locale.gen`を編集します。vim等で開いて、`ja_JP.UTF-8 UTF-8`をアンコメントした後に、`locale-gen`を実行します。

```bash
vim /etc/locale.gen # ja_JP.UTF-8 UTF-8をアンコメント
locale-gen
```

言語などの設定をするために、`/etc/locale.conf`を、キーマップを設定するために`/etc/vconsole.conf`を作成します。

```bash
echo LANG=ja_JP.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf
```

#### ホスト名の設定

システムにホスト名を設定します。`/etc/hosts`と`/etc/hostname`を編集していきます。

ホスト名は好きなモノにしましょう。(筆者は担当アイドル名にしたりします)

```bash
echo hostname > /etc/hostname
```

`/etc/hosts`の中身(多分 空なので全部書きましょう)

```text
127.0.0.1	localhost
::1			localhost
127.0.1.1	hostname
```

### サービスの有効化

NetworkManagerとlightdmを有効化して、起動時に自動的に立ち上がるようにします。

```bash
systemctl enable NetworkManager
systemctl enable lightdm
```

### ユーザの追加・パスワード設定

新システムに一般ユーザの追加と、パスワードを設定していきます。

ついでに`sudoers`の設定もしていきます。

まず最初に`root`ユーザーのパスワードを設定していきます。

```bash
passwd
```

対話型でパスワードを設定していきます。

次に一般ユーザの追加をしていきます。`sudo`を使えるようにするために、`wheel`グループへの追加も同時にします。

```bash
useradd -m -G wheel username
```

次にパスワードを設定していきます。

```bash
passwd username
```

最後に`sudoers`に`wheel`を追加します。

```bash
visudo
```

として

```text
# %wheel ALL=(ALL) ALL
```

の頭の`#`を削除して保存してください。

### イニシャル RAM ディスクの生成

イニシャルRAMディスクの生成をします。

以下のコマンドを実行します。

```bash
mkinitcpio -p linux
```


### ブートローダーの設定

最後に、ブートローダーをセットアップしていきます。

ブートローダとして`GRUB`を使います。(systemd-bootより楽)

以下のコマンドを実行していきます。

```bash
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Arch Linux GRUB" --recheck --debug
grub-mkconfig -o /boot/grub/grub.cfg
```



## これで終了

最後に`exit`でchroot環境を終了した後、`reboot`コマンドを叩きましょう。

恐らくArchLinuxが起動してきます。

それでは良いArchライフを

## 謝辞
[WAKAME_temp](https://qiita.com/WAKAME_temp)氏に「GPTを使うときのパーティショニングは`cfdisk`よりも`cgdisk`を使っておいたほうが幸せになれる確率が高いと思いますよ」とコメントをいただきまして、該当箇所を修正いたしました。
コメントありがとうございます。