初心者向けのArchLinuxのインストールと初期設定（64bit環境にMBRでインストール）

#前書き
初めてのMarkdownになるのでおかしい部分があると思います。

ArchLinux自体、最近になってハマったので間違っている部分等あったら教えてください。

#前提
シングルブートで行います。
ブートローダーにはGrub2を使用します。
この記事では64bit MBRのみ解説しています。

#インストールディスクの作成
インストールディスクはUSBのほうが速いのでUSBメモリに作成していきます。
[Arch Linux Downloads](https://www.archlinux.org/download/)からISOファイルを入手して下さい。
ISOサイズは600~700MBなので小さいサイズUSBで十分です。
####Windowsの場合
[USB Writer](https://sourceforge.net/projects/usbwriter/)を使い、ISOファイルを書き込んでください

####Linuxの場合
まずはUSBのデバイス名を確認します。

```bash
fdisk -l
```
接続されているデバイスの中からUSBメモリを見つけ出し、/dev/sdxという部分（xは環境によって変化します）を覚えておいてください。

```bash
dd bs=4M if=archlinux.iso of=/dev/sdx && sync
```
`archlinux.iso`の部分はダウンロードしたisoのパス、/dev/sdxのxは先程のUSBメモリの数値に置き換えてください。

#インストール作業
USBメモリにISOを書き込んだらインストール作業を行っていきます。
BIOSから起動デバイスにUSBメモリを指定して起動してください。
##キーボードレイアウトの設定##
デフォルトではUS配列になっているので日本語106配列に変更します。

```zsh
loadkeys jp106
```

##インターネット接続
### Wi-Fiの場合

```zsh
ip a
```
でWi-Fiのインターフェースの名前をメモしておきます。
そして下のコマンドでWi-Fiに接続します。

```zsh
wpa_supplicant -B -i interface -c <(wpa_passphrase SSID password)
dhcpcd interface
```
`interface`は先程調べたWi-Fiのインターフェースの名前、`SSID`は接続したいWi-FIのSSID、`password`はWi-Fiのパスワードに置き換えてください。


### 有線の場合
自動で接続されます。

IPアドレスを固定する場合は以下を参考にしてください。
[ネットワーク設定 -- 固定IPアドレス](https://wiki.archlinux.jp/index.php/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A#.E5.9B.BA.E5.AE.9A_IP_.E3.82.A2.E3.83.89.E3.83.AC.E3.82.B9)

##時間設定

```zsh
timedatectl set-ntp true
```
でntpサーバとの同期を有効化します。

##パーティショニング
今回はディスクをすべて1つのパーティションでフォーマットします。

/dev/sdaの部分はインストール先の名前を調べて置き換えてください。

```zsh
fdisk -l
```

通常はこのままfdiskやpartedなどを使用してポチポチやっていくのですが、正直面倒なのでcfdiskを使用していきます。

```zsh
cfdisk /dev/sda
```
パーティションテーブルはdosを指定して下さい。
[new]を選択し、サイズで124GB（※）と入力、[primary]を選択して下さい。
あとはそのままEnterキーで飛ばしてください。
/dev/sda1の作成ができたら、[↓]キーで下のパーティションに移動します。
[primary]を選択する以外はすべてEnterキーを連打で大丈夫です。
/dev/sda2の作成も終わったら[Write]を選択し、[yes]と入力して設定を適用してください。
その後「Quit」でcfdiskを終了してください。

※ここでは/dev/sda1のサイズを124GBを仮定しているため124GBと打っていますが、インストール先のサイズによって変化します。
「（インストール先のディスクのサイズ）- （スワップ領域のサイズ）」の式で求められる数字がベストなサイズです。
スワップ領域のサイズは実装されている物理メモリと同じ大きさが適切です。

##フォーマット
/dev/sda1をフォーマットします。

ファイルシステムはext4を使用します。

```zsh
mkfs.ext4 /dev/sda1
```

##マウント

```zsh
mount /dev/sda1 /mnt
```

##ミラーリストの作成
pacman（ArchLinuxのパッケージ管理システム）のサーバーリストを日本のみにします。
正攻法ではViなどを使用して'##Japan'のみを有効化するのですが、私はViが苦手なのジェネレータを作成します。
既存のミラーリストをバックアップ

```zsh
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
```

ミラーリストをダウンロードする

```zsh
curl -sL https://0u0.biz/YNhG | sed "s/^#Server/Server/g" > /etc/pacman.d/mirrorlist
```
短縮URLを使用していますが、[Pacman Mirrorlist Generator](https://www.archlinux.org/mirrorlist/)から日本のミラーリストを取得しています。
短縮URLは[アートスピンのURL短縮サービス](https://u.artspin.jp/)を使用しています。

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

```zsh
pacstrap /mnt base base-devel　bash-completion linux linux-headers
```
`bash-completion`はbash補完を使用するためにインストールします。
##fstabの作成
/etc/fstabはマウントに関する設定が記述されています。

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

#システムの設定
インストール完了後、chrootしてシステムに入り、設定を行っていきます。

```zsh
arch-chroot /mnt
```

##nanoの設定
行数表示を有効化

```bash
nano /etc/nanorc
```
`set linenumbers`をアンコメントしてください。

デフォルトのエディターをnanoに変更

```bash
echo EDITOR=nano >> /etc/bash.bashrc
source /etc/bash.bashrc
```

##ロケールの設定
/etc/locale.genの一部をアンコメントします。

```bash
nano /etc/locale.gen
```
`en_US.UTF-8 UTF-8`と`ja_JP.UTF-8 UTF-8`をアンコメントしてください。
その後、以下を実行してください。

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


##コンソールのフォントとキーボードレイアウト
```bash
echo -e "KEYMAP=jp106\nFONT=lat9w-16" >> /etc/vconsole.conf
```

##タイムゾーンの設定

```bash
tzselect
```
自分の住んでいる地域（ここでは日本なので`Asia`つまり`4`）の数値を入力します。
次に、その地域の国が表示されるので自分の国（ここでは日本なので`Japan`つまり`19`）の数値を入力します。
最後に確認が出るので、間違っていないのなら`1`を入力します。

最後にハードウェアクロックを同期させます

```bash
hwclock --systohc --local
```

##ホスト名の設定

```bash
echo hogehoge > /etc/hostname
```
`hogehoge`は自分の好きなホスト名で置き換えてください。
同じホスト名を/etc/hostsにも追記します。

```bash
nano /etc/hosts
```

```bash:/etc/hosts
127.0.0.1 localhost.localdomain localhost hogehoge
::1       localhost.localdomain localhost hogehoge
```
##rootのパスワード

```bash
passwd root
```
好きなパスワードを入力してください。（先程入力したrootパスワードは一切関係ありません。）

##一般ユーザーの作成
`fuga`はそれぞれのユーザ名で置き換えてください。

```bash
groupadd fuga
useradd -m -g fuga -s /bin/bash fuga
passwd fuga
groupadd sudo
usermod -G sudo fuga
```
これでsudoを使用できるユーザが作成されます。
sudoが不要な場合は最期の二行は不要です。

##sudoの設定
sudoの設定ファイルを変更するために以下のコマンドでnanoを起動します。

```bash
visudo
```
下の方へスクロールして`%sudo ALL=(ALL) ALL`という部分をアンコメントして保存してください。

#ブートローダーの設定
GrubとNetworkManagerをインストールします。
再起動後はネットに接続されていない可能性もあるので、今のうちにNetworkManagerもインストールしておきます。
（以下のコマンドはMBRのみです。UEFIの場合は異なるので使用しないでください。←今更ですが）

```bash
pacman -S os-prober grub networkmanager
grub-install --target=i386-pc --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
```
これでインストール作業は終わりです。

##システムから出て再起動する
chrootから抜け出してシャットダウン後、起動していたUSBメモリを取り外して再び起動します。

```bash
exit
umount -R /mnt
swapoff /dev/sda2
shutdown 0
```

無事にArchLinuxが起動したらインストール完了です。

#再起動後の設定
##インターネットに接続する
最後にGrubと一緒にインストールした`networkmanager`を使用します。
まずは`NetworkManager`を有効化します。

(パッケージ名は`networkmanager`でサービス名は`NetworkManager`です)

```bash
systemctl enable NetworkManager
systemctl start NetworkManager
```
・Wi-Fiの場合
[NetworkManager -- コマンドライン](https://wiki.archlinux.jp/index.php/NetworkManager#.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.83.A9.E3.82.A4.E3.83.B3)を参考にしてください。

・有線の場合
自動で接続されます。

##パッケージの更新

```bash
sudo pacman -Syu
```

##yayのインストール
ArchLinuxにはpacmanというパッケージ管理システムがあります。
そしてArchLinuxの公式リポジトリには無いパッケージをユーザがアップロードするリポジトリにAUR（Arch User Repository）があります。
本来はAURのパッケージを自分でビルドしてインストールする必要があるのですが、ダウンロード→ビルド→インストールをすべて自動で行ってくれる素晴らしいシステムがあります。（このシステムのことをAUR Helperといいます。）
それがyayです。yayは最初の導入さえ行ってしまえば、GoogleChromeだろうがなんでもコマンド一つでインストールできようになります。
「導入さえ」といってもコマンドをコピペするだけです。

```bash
cd ~/
pacman -S git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ../
rm -r yay
pacman -Rn git
```
gitをこれからも使う場合は最後の行は実行しないでください。

以上です。
一応yayのバージョンを確認してみてください。

```bash
yay --version
```
正常にバージョンが表示されればインストールされています。
使い方は以下を参考にしてください。（もうpacmanを使うことはありません。）
[Arch Linux - AURヘルパー「yay」を試す](https://slacknotebook.com/testing-out-arch-linux-aur-helper-yay/)

# GUIなどをインストールする
[こちらの記事](https://qiita.com/Hayao0819/items/f23c6a6f1e103c5b6a83)にまとめました。
3つめの「GUI環境の構築」からご覧ください。

#最後に
いかがだったでしょうか？自分が混乱したpartedやインターネット接続などを簡単にしてみました。
間違っている部分があったら教えてください。
最後に[私のTwitter](https://twitter.com/Hayao0819)をフォローしてくれると私が喜びます。

#追記
公開後、コマンドに誤字がたくさんあったので修正しました。
もし他にもあったら教えてください。