WindowsにArchLinuxをデュアルブートでインストールする
はじめに
WindowsがプリインストールされているマシンにデュアルブートでArch Linuxをインストールした時の記録です。基本的にはArchWikiの通りです。
Windowsの高速スタートアップは無効化しておいてください。
ハードウェア情報
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
でロケールを生成します。
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
# locale-gen
その後/etc/locale.conf
を編集してLANG
環境変数を設定します。
LANG=ja_JP.UTF-8
ネットワーク設定
ホスト名を設定します。
myhostname
ユーザー設定
rootユーザーではなく、一般ユーザーを作成してsudo権限を付与します。
# useradd -m -g wheel -G users username
# passwd username
# visudo
%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
コマンドで確認できます。
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とかだったかな?
最後にローダー設定を記載します。
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設定
カラー表示を有効化&表示をいい感じにします。
[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
日本語入力
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でいいと思います。
[Policy]
AutoEnable=true
[General]
ControllerMode = bredr
テーマ
Gnomeのテーマはorchis-theme、アイコンはTela cirleが格好いいのでオススメです。
$ paru -S orchis-theme
$ paru -S tela-circle-icon-theme-git
Discussion