Part1の続き。
この続きはPart3

この記事でやること

ArchのUSBメモリでブートし、Arch起動

手順はPart1参照。

(必要なら)キーボードレイアウトの変更

今回はUSキーボードなので不要だった。JIS配列キーボードなら以下を実行。

loadkeys jp106

起動モードの確認

以下のコマンドでいろいろ文字列が出ればOK。UEFIモードで起動しているということ。

ls /sys/firmware/efi/efivars

Wi-Fi接続

前にやったときと同じように

wifi-menu

でいけると思ったが、なぜか wifi-menu コマンドがない!

iwdというのを使えばいけるよう。(今回は対話的にやったがコマンド1つでもできる。リンク先参照。)

iwctl

### ここからiwdシェル

# デバイスの一覧
device list

# wlan0が出るので、以下これで設定する

# ネットワークのスキャン
station wlan0 scan

# ネットワーク一覧
station wlan0 get-networks

# SSIDを指定し、ネットワークへの接続
station wlan0 connect <SSID>

# パスフレーズ入れて接続

# iwdシェルを抜ける
exit
### ここまでiwdシェル

# 確認
ip a

# 接続確認(Ctrl-cで中断)
ping 8.8.8.8

システムクロックの更新

NTPサーバとの同期。

$ timedatectl set-ntp true

ファイルシステムのマウント

パーティションは以下のようになっているとする。

  • /dev/nvme0n1p5
    Archを入れる。
  • /dev/nvme0n1p1
    EFI。
mount /dev/nvme0n1p5 /mnt

mkdir -p /mnt/boot/efi

mount /dev/nvme0n1p1 /mnt/boot/efi

インストール

ミラーの選択

これは数年前にやったときは自分で編集して、日本のミラーを上にしていた。でも今回はそれは不要らしい。インストールガイドを見ると「インストールイメージが作られたときのミラーの同期状況と速度でソートされています」と書いてあり、実際ミラーリストではjaistが上位にあった。というわけで確認するだけで編集はせず。

vim /etc/pacman.d/mirrorlist

インストール

ここでいろいろ入れた方がいいようだが、とりあえずこれだけ。

pacstrap /mnt base base-devel linux linux-firmware

fstab作成

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

システム内での諸設定

chrootでシステムに入る

arch-chroot /mnt

いろいろインストール

実際に打ったのは次のコマンドだが wpa_supplicant は入れなくていいと思う。

pacman -Syy
pacman -S vim iwd wpa_supplicant

vimは設定ファイル編集用、iwdはネットワーク接続用。

タイムゾーンの設定(日本時間)

hwclockでハードウェアクロックも設定。

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

ローカリゼーション

/etc/locale.gen を編集。en_US.UTF-8ja_JP.UTF-8 をアンコメント。そのあと

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

hostname

archxps というhostnameにした。

echo archxps > /etc/hostname

また

vim /etc/hosts

とし、以下のように書く。

127.0.0.1	localhost
::1		localhost
127.0.1.1	archxps.localdomain	archxps

rootパスワードの設定

passwd

ブートローダのインストール

マイクロコードを入れろと書いてあるので、intel-ucodeも入れる。(よくわかってない。)

pacman -S grub efibootmgr intel-ucode
grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub --recheck --debug
grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg

chrootを抜ける

Ctrl-dで抜ける。または exit

アンマウント

umount -R /mnt

再起動してログイン

reboot

再起動するとGRUBからArchを起動できる。が、GRUBにWindowsが載っていない。

さきほど設定したrootパスワードでrootログイン。

ネットワーク再設定

この時点ではネットワーク接続できていないので設定する必要がある。

systemd-networkd + iwdを使う。

まずsystemd-networkd関連のサービスを有効化・起動しておく。

systemctl enable systemd-networkd
systemctl start systemd-networkd

systemctl enable systemd-resolved
systemctl start systemd-resolved

# /etc/resolv.confにシンボリックリンクを設定
mv /etc/resolv.conf /etc/resolv.conf.bak
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

iwdについてはArchインストール時のコマンドをと同じ。ただしこれもサービスを有効化・起動しておかないとiwctlが実行できないので注意。

systemctl enable iwd
systemctl start iwd

iwctl

### ここからiwdシェル
device list

# wlan0が出るので、以下これで設定する

station wlan0 scan
station wlan0 get-networks
station wlan0 connect <SSID>
exit
### ここまでiwdシェル

ここまでやると ip a でwlan0になんか設定されているが、まだpingは通らない。

/etc/systemd/network/25-wireless.network を作成し、以下のように記述。

[Match]
Name=wlan0

[Network]
DHCP=yes

systemd-networkd 再起動でネットワーク接続完了。

systemctl restart systemd-networkd
# 接続確認(Ctrl-cで中断)
ping 8.8.8.8

iwd - ArchWikiの下の方で起動時に接続失敗することがあるという話がある。サービスの起動順序を設定しておく。

mkdir /etc/systemd/system/iwd.service.d
touch /etc/systemd/system/iwd.service.d/override.conf

/etc/systemd/system/iwd.service.d/override.conf に以下のように記述。

[Unit]
After=systemd-udevd.service systemd-networkd.service

これで再起動し、ログイン後に再度pingして、ネットワーク接続できているか確認。

Windowsとのデュアルブート

(systemd-bootを使えば楽らしいということをここで知る…が、既にGRUBで進めてきてしまったので、とりあえずGRUBのままでやる。)

GRUB - ArchWiki

GRUBのメニューエントリを書くため、まずfs_uuidとhints_stringを確認しようと以下を打った。

# fs_uuid
grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# hints_string
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

…が、後者で "unknown device type" とか言われてしまい、どうにもできない。
仕方ないのでos-proberで自動でやる。これを入れればgrub-mkconfigのときに自動でWindowsを発見してくれる。

pacman -S os-prober
grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg

再起動し、WindowsとArchが両方起動できることを確認。
前はいちいちGRUBのメニューエントリを手で書いていたがos-proberを使えば簡単にできるなこれ…。