💡

WindowsにArchLinuxをデュアルブートでインストールする

2022/11/24に公開

はじめに

WindowsがプリインストールされているマシンにデュアルブートでArch Linuxをインストールした時の記録です。基本的にはArchWikiの通りです。

Windowsの高速スタートアップは無効化しておいてください。

https://wiki.archlinux.jp/index.php/インストールガイド

https://wiki.archlinux.jp/index.php/Windows_と_Arch_のデュアルブート

ハードウェア情報

https://store.minisforum.jp/products/minisforum-elitemini-hx90g?variant=43443825672358

https://news.mynavi.jp/article/20221016-2481405/

Minisforum EliteMini HX90G
AMD Ryzen™ 9 5900HX & RX 6600M / 32GB RAM+512GB SSD

CPU
AMD Ryzen™ 9 5900HX
8 コア/16 スレッド 、L2キャッシュ合計4MB、L3キャッシュ合計16MB、基本クロック3.3GHz、最大ブースト・クロック4.6GHz

グラフィック
AMD Radeon™ RX 6600M (GDDR6 8GB)

メモリ
DDR4 8GB×2 デュアルチャンネル (SODIMM スロット×2、合計最大64GBまで)

ストレージ
M.2 2280 256GB/ 512GB/1TB PCIe SSD×1
M.2 2280 SSD PCIe スロット x2 (SSD装着、空)
(NGFF SATA / NVMe PCle3.0 サポート)

ワイヤレス接続性
M.2 2230 WIFI サポート(Wi-Fi , BT)

イーサネット
① 2500Mbps LAN

ビデオ出力
① HDMI 2.0 (4K@60Hz) ×2
② ディスプレイポート (4K@60Hz)×2

オーディオ出力
HDMI ×2/ ディスプレイポート ×2/ ヘッドフォンジャック

電源
DC 19V(電源アダプター含み)

OS
Windows 11 Pro

インストールの準備

パーティション分割

Windows領域のパーティションを縮小してLinuxをインストールするための場所を確保します。失敗するとWindowsまで起動できなくなってしまうので慎重に作業しましょう。今回はubuntuのLiveメディアから起動してGPartedを使いました。

領域全体にインストールする場合、Arch Linuxのインストールメディアから起動してgdisk/fdiskで行っても構いません。後述の『パーティションのフォーマット』の前に実施してください。

いずれの場合でも後からパーティションを変更するのは大変なのでレイアウトは予め決めておきましょう。感覚ですが、/ (root) は最低でも40GBはあった方がいいです。分けずに全部1つにするのでも大丈夫です。

root@archiso #fdisk -l /dev/nume0n1
...

### 分割前
Device              Start         End    Sectors    Size  Type
/dev/nume0n1p1       2048      206847     204800    100M  EFI System
/dev/nume0n1p2     206848      468991     262144    128M  Microsoft reserved
/dev/nume0n1p3     468992   996468735  995999744  474.9G  Microsoft basic data
/dev/nume0n1p4  996468736  1000214527    3745792    1.8G  Windows recovery environment

### 分割後
/dev/nume0n1p1       2048      206847     204800    100M  EFI System
/dev/nume0n1p2     206848      468991     262144    128M  Microsoft reserved
/dev/nume0n1p3     468992   367323135  366854144  174.9G  Microsoft basic data
/dev/nume0n1p4  367323136   371068927    3745792    1.8G  Windows recovery environment
/dev/nume0n1p5  371068928   496898047  125829120     60G  Linux Filesystem
/dev/nume0n1p6  496898048  1000214527  503316480    240G  Linux Filesystem

分割前後のパーティションはこんな感じになります。Microsoft basic dataを300GB縮小、Windows recovery environmentをMicrosoft basic dataの直後に移動、60GBと240GBのLinux Filesystemを作成しました。

後ほど/dev/nume0n1p5, /dev/nume0n1p6をそれぞれ/, /homeとしてマウントします。その他はリカバリ領域等なので触らないようにしましょう。

/dev/nume0n1p1はWindowsのブートイメージが入っているEFIシステムパーティションです。/bootにマウントします。UEFIブートには必須の領域です。後ほどLinuxのブートローダーもここに入れることになります。

インストールメディアの入手・作成

Arch Linux JP Project - ダウンロードからarchlinux-202X.XX.XX-x86_64.isoをダウンロードしてUSBメモリ等に書き込みます

$ sudo dd if=archlinux-202X.XX.XX-x86_64.iso of=/dev/sda

ライブ環境の起動

インストールメディアをマシンに刺した状態で電源を入れてからライブ環境を起動します。起動しない場合はBIOSなどの設定を確認してください。

キーボードレイアウトはデフォルトでUS配列です。利用可能なキーマップの確認と指定は下記のコマンドで行います。

# ls /usr/share/kbd/keymaps/**/*.map.gz
# loadkeys jp106

DHCPが起動しているので、有線なら特に問題なく接続できるはずです。ping archlinux.jpなどで確認します。

時刻についても、systemd-timesyncd も起動しているので自動的で同期されるようになっているはずです。timedatectl status などで確認します。

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

パーティション分割を冒頭で行わなかった場合はここで実施してください。ライブ環境にはfdiskなどが入っています。

/dev/nume0n1p1などにWindowsのEFIシステムパーティションがある場合はフォーマットしてはいけません。

今回は/, /homeパーティションはBtrfsでフォーマットします。そろそろ安定してきたのではないでしょうか。より安定を重視する場合はExt4でもいいでしょう。

# # mkfs.fat -F32 /dev/nume0n1p1
# mkfs.btrfs /dev/nume0n1p5
# mkfs.btrfs /dev/nume0n1p6

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

# mount -o noatime,compress=lzo /dev/nume0n1p5 /mnt
# mkdir -p /mnt/home
# mkdir -p /mnt/boot
# mount -o noatime,compress=lzo /dev/nume0n1p6 /mnt/home
# mount /dev/nume0n1p1 /mnt/boot

マウントオプションは不要ならなくても大丈夫です。

noatime
アクセスによるタイムスタンプの更新を無効化するオプションです。読み書きの回数を減らしてパフォーマンスを向上させます。relatime(アクセスされてから少し時間を置いて書き込みを行う)でもOKです。

compress=lzo
Btrfsで透過的自動圧縮を有効にするオプションです。ファイルサイズを小さくして読み書きのパフォーマンスを向上させるのに加え、書き込み増幅を減らすことでSSDの寿命を伸ばすこともできるそうです。

インストール

必須となるパッケージをインストールします。/etc/pacman.d/mirrorlistにあるミラーサイトからシステムが自動で速度の速いものを選択してダウンロードしてくれます。

後からpacmanでインストールすることもできますが、最低限ネットワークや設定ファイルの編集に必要なものは入れておきましょう。

# pacstrap /mnt base base-devel linux linux-firmware
# pacstrap /mnt xorg-server gnome gnome-extra mesa
# pacstrap /mnt sudo vim networkmanager
# pacstrap /mnt noto-fonts noto-fonts-cjk noto-fonts-emoji
# pacstrap /mnt xf86-video-amdgpu amd-ucode

xf86-video-amdgpuはAMD GPU用のドライバです。お使いのハードウェアに合わせて変更してください。

amd-ucodeはAMD CPUに必要なマイクロコードです。後ほどブートローダーの部分で使用します。Intel CPUの場合はintel-ucodeになります。

システムの設定

マウント情報をfstabに保存します。UUID を使う場合は -U オプション、ラベルを使う場合は -L オプションを指定します

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

chroot

これ以降はchrootからシステムに入って作業します。

# arch-chroot /mnt

タイムゾーン設定

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

ロケール設定

/etc/locale.genを編集して、必要な部分をアンコメントしてからlocale-genでロケールを生成します。

/etc/locale.gen
en_US.UTF-8 UTF-8  
ja_JP.UTF-8 UTF-8  
# locale-gen

その後/etc/locale.confを編集してLANG環境変数を設定します。

/etc/locale.conf
LANG=ja_JP.UTF-8

ネットワーク設定

ホスト名を設定します。

/etc/hostname
myhostname

ユーザー設定

rootユーザーではなく、一般ユーザーを作成してsudo権限を付与します。

# useradd -m -g wheel -G users username
# passwd username
# visudo
/etc/sudoers
%wheel ALL=(ALL) ALL

ブートローダー

今回はSytemd-bootを使用しました。他にもGRUBなどの選択肢もあります。

最初にEFIブートマネージャをインストールします。

# bootctl --path=/boot install

Windowsのデュアルブートをしている場合、Windows UpdateなどでArch Linuxが起動できなくなることが時々あります。ライブメディアから起動してEFIブートマネージャの再インストールで解決する場合がありますので、メディアは削除せずに保管しておくことをおすすめします。

次にローダーエントリを追加します。サンプルエントリファイルが/usr/share/systemd/bootctl/arch.confに存在しますのでそちらも参考にしてください。設定済みのエントリはbootctl listコマンドで確認できます。

/boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /amd-ucode.img
initrd  /initramfs-linux.img
options root=UUID=XXXX rw

amd-ucode.imgマイクロコードのファイル名です。Intel CPUの場合はintel-ucode.imgになります。いずれかのマイクロコードのパッケージをインストールしておいてください。

UUIDは、Arch Linuxのルートがインストールされているパーティションです。blkidなどで調べて記入してください。UUIDを手で打ち込むのは大変なので、下記のように実行してから編集するとちょっと楽です

# bllid | grep nvme0n1p1 >> /boot/loader/entries/arch.conf

パーティションをLABEL, PARTUUIDなどで指定することもできるようです。

自動でローダーを作成してくれる方法があったような気がしたのですが忘れました。efibootmgrとかだったかな?

最後にローダー設定を記載します。

/boot/loader/loader.conf
default Arch Linux
timeout 3

再起動

chrootから抜けてシャットダウンまたはリブートします。

# exit
# umount -R /mnt/home
# umount -R /mnt/boot
# umount -R /mnt
# shutdown -h now

その後ライブメディアを取り除いて再起動すればArch Linuxが起動します。ここではまだ必要なサービスが有効化されていないので、CUI画面で起動します。GUIとネットワークのサービスを有効化してもう一度再起動すれば、OSにログインできるようになるはずです。

$ sudo systemctrl enable gdm.service
$ sudo systemctrl enable NetworkManager.service
$ sudo shutdown -h now

システムのインストールは以上で完了です。ネットワークが繋がってGUIが起動してpacmanコマンドが使用できれば、後はどうとでもなると思います。

その他

その他の個人的にオススメな設定を記載しておきます。

pacman設定

カラー表示を有効化&表示をいい感じにします。

/etc/pacman.conf
[options]
Color
ILoveCandy

Arch User Repository

$ sudo pacman -S --needed base-devel
$ git clone https://aur.archlinux.org/paru.git
$ cd paru
$ makepkg -s
$ sudo pacman -U paru-X.X.X-x86_64.pkg.tar.zst

日本語入力

.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

ディレクトリの英語化

$ LANG=C xdg-user-dirs-gtk-update

fstrim

$ sudo systemctl enable fstrim.timer

profile-sync-daemon

Firfox, Chromiumなどのブラウザのプロファイルを tmpfs で管理することで、速度の向上や物理ドライブの損耗の減少が期待できます。

$ psd
First time running psd so please edit /home/facade/.config/psd/psd.conf to your liking and run again.
$ vim .config/psd/psd.conf
$ psd p
Profile-sync-daemon v6.44

 Systemd service: active
 resync-timer: active
 sync on sleep: enabled
 use overlayfs: enabled
...

$ systemctl --user enable psd.service

bluetooth設定

起動時、ログイン前にbluetoothが自動で起動するようにします。キーボードを無線でつないでいる場合に便利です。

機器の相性なのか、ヘッドセットがdual(LE , BR/EDRを自動で選択)だと接続できないのでBR/EDRで起動するように設定しました。通常は特に設定せずdualでいいと思います。

/etc/bluetooth/main.conf
[Policy]
AutoEnable=true

[General]
ControllerMode = bredr

テーマ

Gnomeのテーマはorchis-theme、アイコンはTela cirleが格好いいのでオススメです。

$ paru -S orchis-theme
$ paru -S tela-circle-icon-theme-git

Discussion