Arch Linux導入の際に設定したこと

## はじめに

久しぶりにLinuxが使いたくなったので、Arch Linuxを自分のPCにインストールしました。

https://www.archlinux.jp/

当記事ではインストール作業の際に実行したコマンドを紹介します。

## インストール手順

### キーボードの配列を変更

```
# loadkeys jp106
```

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

ストレージを2つのパーティションに分割します。
先頭の512MBをブートローダーに割り当て、残りをファイルシステムに割り当てます。
今回はスワップ領域は作りません。

```
# sgdisk -z /dev/sda
# sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sda
# sgdisk -n 2:0: -t 2:8300 -c 2:"Linux filesystem" /dev/sda
```

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

```
# mkfs.vfat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
```

### パーティションのマウント

パーティションをマウントしてデータを書き込めるようにします。

```
# mount /dev/sda2 /mnt
# mkdir -p /mnt/boot
# mount /dev/sda1 /mnt/boot
```

### ミラーリストの修正

日本にあるミラーサーバーをミラーリストに出力します。
これでパッケージのダウンロード速度が改善されます。
```
# reflector --country Japan --age 24 --protocol https --save /etc/pacman.d/mirrorlist
```

### パッケージをインストール

```
# pacstrap /mnt base base-devel linux linux-firmware linux-headers dkms intel-ucode which zsh vim sudo dhcpcd git networkmanager
```

### fstabの設定

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

### ルートディレクトリの変更

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

### タイムゾーンと時刻を設定

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

### ロケールの設定

`/etc/locale.gen`の以下の行をコメントアウトして、`locale-gen`コマンドを実行します。
```
#en_US.UTF-8 UTF-8
#ja_JP.UTF-8 UTF-8
```

```
# locale-gen
```

### ホスト名を設定

```
# echo Arch > /etc/hostname
```

`/etc/hosts`に以下を追記します。

```
127.0.0.1 localhost
::1 localhost
127.0.0.1 Arch.localdomain localhost
```

### パスワードの設定

rootユーザにパスワードを設定します。

```
# passwd
New password :
Retype new password : 
```

### ブートローダーのインストールと設定

ファームウェアにはBIOSとUEFIがあり、それぞれブートローダーの設定方法が異なります。
今回はUEFI用の設定を行います。

```
# pacman -S grub efibootmgr os-prober
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub
# grub-mkconfig -o /boot/grub/grub.cfg
# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi
```

再起動してインストール完了です。

## インストール後の設定

この時点ではまだ最低限のCUI環境しか用意されていません。
ですが設定したいことを全て挙げるときりがないので、今回は以下の5つを設定します。

* 一般ユーザの追加
* GNOMEの導入
* 日本語化
* 無線LANアダプターを使えるようにする
* 音を出力できるようにする

### dhcpcdの有効化

```
# systemctl start dhcpcd
```

### キーレイアウトの設定

```
# localectl set-keymap jp106
```

### 一般ユーザの追加

`wheel`グループに一般ユーザ`user`を追加します。
パスワードも設定します。

```
# useradd -m -G wheel -s /bin/zsh user
# passwd user
New password :
Retype new password : 
```

### sudo権限の設定

`visudo`コマンドで下記の行をコメントアウトして
`wheel`グループに所属するユーザがsudoコマンドを使用できるようにします。

```
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL
```

`visudo`コマンドでエディターが見つからないというエラーが出た場合は
エディターのパスを変更して再度実行します。

```
# export EDITOR=/usr/bin/vim
```

### グラフィックドライバのインストール

以下のコマンドでグラフィックボードを確認します。

```
# lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [Geforce GTX 1080] (rev a1
```

NVIDIAのグラフィックボードを搭載しているので専用のドライバをインストールします。

```
# pacman -S nvidia
```

### GNOMEのインストール

```
# pacman -S --noconfirm gnome
```

GDMの自動起動を有効化します。

```
# systemctl enable gdm
```

再起動すると自動でGUIが立ち上がります。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2693350/b47496ed-6a3f-6217-e327-59a3dbd41a25.png)

自動ログオンも有効化しておきます。
`/etc/gdm/custom.conf`に以下を追記します。

```
[daemon]
AutomaticLoginEnable=True
AutomaticLogin=user
```

### 日本語環境の設定

ここからは一般ユーザで作業を行います。
NetworkManagerを有効化します。

```
$ sudo systemctl start NetworkManager
$ sudo systemctl enable NetworkManager
```

日本語フォントや入力メソッドをインストールします。

```
$ sudo pacman -S otf-ipafont fcitx5-im fcitx5-mozc
```

ロケールを設定します。

```
$ sudo localectl set-x11-keymap jp,us jp106
$ sudo localectl set-locale ja_JP.utf8
```

`/etc/environment`に以下の設定を追記します。

```
GTK_IM_MODULE="fcitx"
QT_IM_MODULE="fcitx"
XMODIFIERS="@im=fcitx"
```

再起動すると設定が反映されます。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2693350/b22bfe9f-241d-bb49-4b10-34439ca0917f.png)

### 無線LANアダプターの設定

無線LANアダプターは[WDC-433SU2M2BK](https://www.elecom.co.jp/products/WDC-433SU2M2BK.html)を使用しているのですが自動で認識してくれません。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2693350/cd2e301d-2bab-c4be-abe1-964e0c25aafa.png)

どうやら自分でドライバをビルドしてインストール必要があるようです。
有志の方が作ったドライバのソースをcloneします。

https://github.com/gnab/rtl8812au

```
$ git clone https://github.com/gnab/rtl8812au.git
$ cd rtl8812au
```

ビルドする前にWDC-433SU22MBK用の設定を追加する必要があります。
`os_dep/linux/usb_intf.c`の290行目にある`#ifdef CONFIG_RTL8821A`~`#endif`の間に以下の設定を追加します。

```c
    {USB_DEVICE(0x056E, 0x400E),.driver_info = RTL8821},
```

ビルドして生成されたドライバをインストールします。

```
$ make
$ sudo cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
$ sudo depmod 
```

再起動すると無線LANアダプターが認識されました。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2693350/23a55377-62e5-a58e-8f07-14b4a0dcbad5.png)

### 音の設定

モニターはHDMIで接続しているのですが、なぜかスピーカーから音が出ませんでした。
追加のサウンド関連のパッケージをインストールします。

```
$ sudo pacman -S alsa-utils
```

デバイスの情報を確認します。

```
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
...
カード 1: NVidia [HDA NVidia], デバイス 7: HDMI 1 [VZ249        ]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0
...
```

自分の環境ではカード番号は1、デバイス番号は7でした。
`~/.asoundrc`に以下の設定を追加します。

```
defaults.pcm.card 1
defaults.ctl.card 1
defaults.pcm.device 7
```

再起動するとモニターのスピーカーから音が出ました。

## 参考文献

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

https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744

https://qiita.com/WmhwXs/items/b9100d73719c27c13350

https://wiki.archlinux.jp/index.php/Fcitx5

https://zenn.dev/haruki7049/articles/e55765737ff1e7