AcerのノートPCにArch Linuxをインストールしたときの手順のメモ書き

Arch Linuxは何度かインストールしているのですが。手順まとめないといつまで経っても慣れないのと、あと、ノートPCにインストールするのは初めてだったので(Secure Bootなどでもハマったので)、記録として残しておこうと思いました。機種はAcer Swift 5ですが、EFIでセキュアブートなものなら似た手順かと思います。
また、これは今のところ、理由が分からないのですが、Swift 5に内蔵の無線LANは、インストール時にWi-Fiにつながりませんでした。他のUSBの無線LAN装置を使ってようやく接続ができました。(これについては、単に私のミスかもしれませんし、本当にダメなのかもしれません。調査不足です。)
他のディストロをインストールされる方も、Secure Bootの設定の部分などは役に立つかもしれません。

ちなみに。Arch Linuxは、Linuxディストリビューションの中では、インストールは難しい部類に入ります。過去にFedora, Ubuntu, OpenSuSEも使ったことがありますが、これらはWindowsのセットアップとそうそう変わらないほど簡単です。けれどArch LinuxはGUIインストーラがなく、自分で説明読みながらコマンド打てる人じゃないとインストールできません。たーのしー！

そして、Qiitaの番号箇条書きの仕様なのか、番号が面白いところでリセットされてますね。かといって、手動で直そうとも思えないので、このままにします。
また、X11のインストールなども別で書くかもしれませんが。なんかドライバ入れ忘れたりゴタゴタしたので、書かないかもしれません。

# おやくそくのやつ
1. 電源ボタンを押すと、Windowsの初期設定画面が起動しました。ライセンスを熟読しましたが、Microsoftのライセンス条項に承諾したくなかったので、Arch Linuxを入れようと決意しました。ライセンスに承諾する前に、電源ボタンを長押しすることで電源を切ることができました。

# Arch Linux のISOファイル準備(別PCと、USBメモリなどが必要)
2. 別PCで https://www.archlinux.org/download/ にアクセスし、ISOファイルをダウンロードしました。
3. ddコマンドで、ブータブルUSBを作りました。手順を忘れたので https://wiki.archlinux.org/index.php/USB_flash_installation_media を参考にしました。また、できたUSBメモリは、早速ノートPCに差しました。

# ノートPCのBIOSを設定する
4. BIOS設定画面を起動するために、F2を押しながら電源ボタンを押しました。
5. Mainタブの`F12 Boot Menu`をEnabledにかえて、F12を押しながら電源ボタンを押した時、どのデバイスからブートするかを選べるようにしました。
6. Secure Bootの設定を削除しないといけないのですが、グレーアウトしていて設定できないので、`Set Supervisor Password` でパスワードを適当に設定しました。すると、グレーアウトしていた設定が触れるようになりました(ゼルダの伝説かよ！)
7. `Erase all Secure Boot Setting`でEnterを押し、セキュアブートの設定を削除しました。
8. `Supervisor Password`を忘れるといけないので、再度Set Supervisor Passwordをし、空に設定しなおしました。(再びSecure Bootの設定がグレーアウトしました)
9. USBメモリがノートPCに刺さっていることを確認し、F10 `Save and Exit`で、セーブしExitしました。再起動されますので、F12を押しっぱなしにしておきました。

# Arch Linux のISOファイルからブートする
10. 前回の手順のとおり、F12を押しっぱなしでノートPCを起動しました。
11. Boot Option Menuが表示されますので、USBメモリから起動しました。
12. Arch Linuxのブートメニューが表示されますので、一番上を選択しました。

# Arch Linuxのインストール (別PCで方法確認しながらが吉)
## インストール先のパーティション準備まで
13. install.txtの内容を確認し、インストールの流れを確認しました。
14. 別PCで https://wiki.archlinuxjp.org/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 を開き、大体の流れを確認しました。
15. `loadkeys jp106`で、日本語キーボードに切り替えました。
16. EFIでブートされているのを確認するため、 ls /sys/firmware/efi/efivars で、efivarsディレクトリがあるのを確認しました。
17. `fdisk -l /dev/sda` しました。パーティションが4つ切られていました。sda1はEFI System 100MB, sda2はMicrosoft reserved 16MB, sda3はMicrosoft basic data 237.4G, sda4はWindows recovery environment 1GB なので、sda2とsda3を消して、そこにArch Linuxを入れることに決めました。EFI領域はArch LinuxでもEFI使うなら必要です。また、リカバリ用っぽい領域は、今後、Linux教からMicrosoft教に宗旨替えすることになったときのために置いとくことにしました。
18. 【!!重要: この動作でディスクの中身を変更して以降、しばらくの間、ディスクにWindowsもLinuxも入っていない、どちらも起動できない状態となります!!】fdiskの操作`fdisk /dev/sda` 次の手順で行いました。 dで削除、2を選ぶ。dで削除、3を選ぶ。nで作成。サイズはデフォルトで(全部)割り当てて、あと、パーティションタイプはLVMにしました。wで保存してfdisk終了(qだと、保存せずに終了できる)
19. LVMの設定。 https://wiki.archlinuxjp.org/index.php/LVM を見ると便利です。

```
pvcreate /dev/sda2
vgcreate VolGroup00 /dev/sda2
lvcreate -l 100%FREE VolGruop00 -n volarch
pvdisplay
```

20. ディスクのフォーマット。`mkfs.ext4 /dev/mapper/VolGroup00-volarch` して、 `mount /dev/mapper/VolGroup00-volarch /mnt` しました。また、今回私はやり忘れてたのですが。EFIの場合、EFI system partitionを/mnt/bootにマウントした方がブートローダのインストールがスムーズです。`mount /dev/sda1 /mnt/boot` です。

## ネットワーク接続
ここの手順でコケました。
何かやり方がまずかったのか、ハードウェアが対応していなかったのか、正直よく分かりません。
幸い、USBの別の無線LAN接続機器を持っていたので、それで事なきを得ました。

21. https://wiki.archlinuxjp.org/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 と https://wiki.archlinuxjp.org/index.php/WPA_supplicant に従い、wpa_supplicantの設定ファイルを作成しました。`wpa_passphrase SSID passphrase >> /etc/wpa_supplicant/example.conf`で、Wi-Fiパスワードを設定ファイルに追記しました。 `ip link set インタフェース名 up` と `wpa_supplicant -B -i インタフェース名 -c /etc/wpa_supplicant/example.conf`をしました。
22. `dhcpcd インタフェース名` をしました。
23. なぜかつながりませんでした。dmesgには、以下のようにありました。

```
wlp1s0: associate with MACアドレス (try 1/3)
wlp1s0: RX AssocResp from MACアドレス (capab=0x411 status=0 aid=3)
wlp1s0: associated
wlp1s0: deauthenticated from MACアドレス (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
wlp1s0: authenticate with MACアドレス
wlp1s0: send auth to MACアドレス (try1/3)
wlp1s0: authenticated
ath10k_pci 0000:01:00.0 wlp1s0: disabling HT as WMM/QoS is not supported by the AP
ath10k_pci 0000:01:00.0 wlp1s0: disabling VHT as WMM/QoS is not supported by the AP
```

24. USBの別の無線LANモジュールをさして、上の手順を行いました。すると、問題なくつながりました。
25. `ping archlinuxjp.org` で接続の確認をしました。

## baseのインストールまでやってしまう
26. Archのインストールガイドにあるとおりの手順でどんどんいきました。まず `timedatectl set-ntp true` しました
27. /etc/pacman.d/mirrorlist から Japanを検索して、日本のミラーをファイルの上に持ってきました
28. `pacstrap /mnt base base-devel` を行いました
29. `genfstab -U /mnt >> /mnt/etc/fstab` で、自動でfstabを作ってもらいました
30. `arch-chroot /mnt` で、新しいシステムにchrootしました。ここから、シェルがzshからbashになります。
31. タイムゾーン設定 `ln -s /usr/share/zoneinfo/Asia/Tokyo` と、 /etc/locale.genの編集(en_US.UTF-8とja_JP.UTF-8のコメントアウトを外す)、`locale-gen`を終わらせたら `echo LANG=en_US.UTF-8 >/etc/locale.conf` しました。(LANG=ja_JP.UTF-8としたいところでしたが、コンソールでどうせ文字化けするだけですので、日本語にするのはX11入れてからでいいかな、と思いました)
32. キーマップの設定の前に、私はCtrlとCapsを入れ替えるのが好みなので、そういうキーマップ設定を作りました。(X11でも別途設定が必要になったはずですので、あえてやる必要もないです。)

```
cd /usr/share/kbd/keymaps/i386/qwerty
zcat jp106.map.gz > jp106_swapctrlcaps.map
viなどでjp106_swapctrlcaps.mapを編集し、CtrlとCapsのキーコードを入れ替える
zgip jp106_swapctrlcaps.map
```

33. キーマップの設定をしました。先程jp106_swapctrlcapsを作ったので、 `echo KEYMAP=jp106_swapctrlcaps >/etc/vconsole.conf` としました。
34. `echo ホスト名 >/etc/hostname`しました。/etc/hostsもインストールガイドの通りに編集しました。
35. 今のうちにネットワークの設定をしておくみたいです。(とはいえ、内蔵つながらないのですが) また、さっさと入れちゃいたいパッケージを`pacman -S パッケージ名`でインストールします。pkgfileはあると便利(このコマンドってどのパッケージなの? を探す機能)です。bash補完を強くするbash-completionも私はいつも入れてます。ノートパソコンなので、NetworkManagerがあると便利かな、と思ったので、インストールしときます。(Wi-Fiつながらねーけどな！) `pacman -S networkmanager pkgfile bash-completion` して `systemctl enable networkmanager`
36. 【※私は忘れてましたが。この手順の前に、LVM使った場合はmkinitcpio.confの編集が必要です。HOOKS="..."の行の、blockとfilesystemsの間に、lvm2を書く必要があります】`mkinitcpio -p linux` しました。"possibly missing firmware"みたいなWARNINGが出ましたが、ぐぐったところ、さして問題ではなさそうだったので、見なかったことにしました。
37. `passwd`でrootパスワードを設定しました。
38. 使用している機器がIntel CPUなので、intel-ucodeパッケージのインストールが必要なようです。`pacman -S intel-ucode`しました。
39. ここで、EFIブートの場合、/bootがEFI system partitionの方がよかったことに気づきました。/bootの中身をどっかに移して、`mount /dev/sda1 /boot`して中身を戻しました。まだfstab書き換えてないですが、それは後でgenfstabします。(chroot環境には、genfstabがない)
40. `bootctl --path=/boot install`で、ブートローダをインストールしました。
41. https://wiki.archlinuxjp.org/index.php/Systemd-boot にしたがって、/boot/loader/entries/arch.confのようなエントリーを作りました。LVMの場合はPARTUUIDではなくUUIDを指定する必要があることに注意が必要です。(べつに、/dev/mapper/... でもいいですが) UUIDは、blkidか、自動生成されたfstab見るとわかります。
42. `exit`でchroot環境を抜けました。先程、後から/bootをマウントしたので、再度genfstabしました。`genfstab -U /mnt > /mnt/etc/fstab`
43. `reboot`しました

#BIOS設定ふたたび
44. 再起動されてる間、F2キーを押し続け、再びBIOS設定画面を起動しました。
45. せっかくだから、`Select an UEFI file as trusted for executing`で、EFI/systemdのファイルを登録してみました。F10押して保存と再起動しました。
46. 再びF2を押すとBootタブのブート順序のところにさっき登録したのが現れたかと思います。しつこくWindows Boot Managerも残ってますが、知らんふりして、さっき登録したのを優先順位を最上位に上げました。
47. これで、F10押して、再起動かかるので、Arch Linuxが立ち上がれば成功です。おめでとう！
48. 私はいろいろミスってたので、再度USBメモリから起動し、マウント、arch-chrootを繰り返しました。つかれた。