XPS13(9300)にArchLinuxをインストール・設定する Part2/4 --Archインストールとデュアルブート篇--
2020-08-10
- PC
この記事でやること
- ArchLinuxのインストールと基本設定
インストールガイド - ArchWikiの通り。 - Windowsとデュアルブートする
ブートローダはGRUBを使う。
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-8
と ja_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のメニューエントリを書くため、まず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を使えば簡単にできるなこれ…。