Arch Linux と Windows 11 の Dual Boot を設定した

前回の記事の続き。期間が空いたのは…まあそういうものだと思う。

構成

Arch Linux と Windows 11 Home の Dual Boot にしている。

最初は Arch のみにしようと思っていたのだけど、急遽 Windows も必要かな…と思い直してしまったため Dual になった経緯がある。先代PC(2011-2022)のOSはWindowsだったのでデータ移行周りを気にしてみたり、偶にやるゲーム周りを気にしてみたり。とか言いつつ、データ移行に関してはOSが原因で決定的にダメだったことは現時点で無かったし、ゲームはまあ最近のものであれば、steam(とproton)がなんとかしてくれると信じている。steamでリリースされていないような昔のCD/DVD媒体のゲームがWineで動作しなかったときのために用意したところはある。

Windowsも最近はパッケージではなくてオンラインコードを購入するだけで導入できるので非常に楽になった。Windowsは上記のような予備的な用途なので Home Edition にしている。こちらを見てみると、個人ユースであれば Home で十分だなとなった。

確か昔はリモートデスクトップを使用したいがために Pro にしていた気がする。気になって調べてみると、Windows10/11では接続のクライアントマシンはHomeでも使用に問題ない旨が書かれていてマジか…となった。実は今までPro仕様にしていたところは必要なかったのだろうか?もはやどうでもいいところではあるのだけど…。

注: リモート デスクトップ サーバー (接続先のPCなど) は Pro エディションの Windows を実行している必要がありますが、クライアント マシン (接続元のデバイス) は任意のエディションの Windows (Pro または Home) またはまったく別のオペレーティング システムも実行できます。

準備

それぞれのOSイメージを用意して、USBフラッシュドライブあたりに書き込む。OSイメージ(ISO)は、Arch Linuxはここから、Windowsはここからそれぞれ用意する。

ISOファイルの書き込みにはRufasを使用した。

Arch Linux と Windows の Dual Boot をセットアップする場合は、Windowsからインストールすることが推奨されている。Windowsをインストールすることで、Linuxのブートローダから使用できる EFI パーティションも作成されるため便利。というわけで最初に Windows のインストールを行う。

Windowsインストールと設定

インストーラに従ってインストールを行う。インストール完了後に起動し、以下の設定を行う。

高速スタートアップとハイバネートの無効化

マウスポチポチでもよいし、レジストリの操作でもよい。レジストリの操作の場合は以下を管理者権限を有するコマンドプロンプトから実施する。

powercfg /h off

気をつけることは無効化設定後に、パソコンをシャットダウンすること。

標準時間の変更

日本標準時が自動設定されていることがほとんどなので、Linux を意識して UTC に設定を変更する。以下を管理者権限を有するコマンドプロンプトから実施する。

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

Windowsパーティションの縮小

Linux をインストールするパーティションを作成するために、Windows が現在専有しているパーティションを縮小する。両OSをそれぞれ別ディスクにインストールする場合はこの限りではない。その場合は、新しいディスクの初期化だけでよいと思われるが今回は実施していないので上手くいくかは分からない。

縮小する場合は(初期化する場合も)、「Windowsユーティリティ」->「コンピューターの管理」->「ディスクの管理」から行う。Windowsをインストールしたディスクは以下のようなボリューム状態となっていると思われるのでbasicdata(C:)を縮小する。縮小は縮小したいボリュームを右クリックし「ボリュームの縮小」を選択して進む。

今回は2TBの領域にWindowsをインストールして、そのあとに500GBまで縮小することにした。

Arch Linuxインストールと設定

Arch Linuxのインストールを行う。一度PCをシャットダウンし、Arch Linux ISOファイルを書き込んだUSBフラッシュドライブをPCに挿入し起動する。事前にUSBフラッシュドライブがブートドライブになるようにUEFIの設定を変更しておくとよい。

root@archiso ~ #

キーマップの設定

キーマップの設定を行う。

# loadkeys jp106

ネットワーク設定

PCをインターネットに接続する。LANケーブルを接続する or 無線設定を行う。以下は無線設定の方法を記載する。

# iwctl
[iwd]#
[iwd]# device list
## ここで使用するデバイス名をメモする。
[iwd]# station (デバイス名) scan
[iwd]# station (デバイス名) get-networks
[iwd]# station (デバイス名) connect (SSID)
## パスワードを押下する。
[iwd]# exit
#

パーティションの初期化

Arch Linuxをインストールするパーティションの初期化を行う。下のコマンド例では以下の情報に読み替えている。

## ここで使用するデバイス名をメモする。
## 縮小して何も存在しないパーティションと、**すでに存在する**EFIパーティションの2つ。
# fdisk -l

## 縮小したデバイスを選択する
# fdisk /dev/nvme0n1p5
# (fdisk) n
# (fdisk) enter (連打)
## 自動で空いているセクタをスタートとエンドに選択するので便利
# (fdisk) p (確認)
# (fdisk) w (書き込み)

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

ファイルシステムを作成する。今回は ext4 ファイルシステムを作成している。前述のとおり、追加の EFI パーティションは作成しない。すでにある EFI パーティションをマウントする。

# mkfs.ext4 /dev/nvme0n1p5

##マウントする。
# mount /dev/nvme0n1p5 /mnt

##EFIパーティションをマウントする。
# mkdir -p /mnt/boot
# mount /dev/nvme0n1p1 /mnt/boot

## マウント状態を確認する。
# lsblk

時刻の設定

# timedatectl set-ntp true

/mntにシステムに必要なパッケージをインストール

pacstrapコマンドで/mntに必要なパッケージをインストールする。

# pacstrap /mnt base linux linux-firmware nano neofetch sudo networkmanager git grep bash-completion

fstabの生成と確認

/mnt/etc/fstabを生成して内容を確認する。

# genfstab -U /mnt >> /mnt/etc/fstab
# cat /mnt/etc/fstab
-> / がマウントされていること
-> efi が`vfat`になっていること

chroot で/mntを新たなルートディレクトリとする

# arch-chroot /mnt

タイムゾーンの設定

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

ロケールの設定

# nano /etc/locale.gen

- #en_US.UTF-8 UTF-8
+ en_US.UTF-8 UTF-8

- #ja_JP.UTF-8 UTF-8
+ ja_JP.UTF-8 UTF-8

# locale-gen
  en_US.UTF-8... done
  ja_JP.UTF-8... done

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

ホストネームの設定

# echo 'arch' >> /etc/hostname
# nano /etc/hosts
  127.0.0.1	localhost
  :1	localhost
  127.0.1.1	arch.localdomain    arch

アカウントパスワードの設定

# passwd
(new password)

ブートローダの設定

ブートマネージャとして、複数のOSを起動できるように設計されているrEFIndを使用する。

# pacman -S refind efibootmgr linux-headers
# refind-install --usedefault /dev/nvme0n1p1 --alldrivers
# mkrlconf
# ls /boot
-> `*.conf`のファイルが生成されているはず
# nano /boot/refind_linux.conf
##Boot with minimal options の行以外を消す

# cat /boot/refind_linux.conf
"Boot with minimal options"   "ro root=/dev/nvme0n1p5"

# nano /boot/EFI/Boot/refind.conf
  - options  "root=PARTUUID=5028faxxxxxxxxxxxxxx rw add_efi_memmap"
  + options  "root=/dev/nvme0n1p5 rw add_efi_memmap"

# cat /boot/EFI/Boot/refind.conf
menuentry "Arch Linux" {
    icon     /EFI/refind/icons/os_arch.png
    volume   "Arch Linux"
    loader   /boot/vmlinuz-linux
    initrd   /boot/initramfs-linux.img
    options  "root=/dev/nvme0n1p5 rw add_efi_memmap"
    submenuentry "Boot using fallback initramfs" {
        initrd /boot/initramfs-linux-fallback.img
    }
    submenuentry "Boot to terminal" {
        add_options "systemd.unit=multi-user.target"
    }
    disabled
}

ネットワークマネージャの有効化

# systemctl enable NetworkManager

通常使用するユーザの設定

# useradd -mG wheel paraselene92
# passwd paraselene92

visudoの設定

# EDITOR=nano visudo

- #%wheel ALL=(ALL:ALL) ALL
+ %wheel ALL=(ALL:ALL) ALL

rEFInd のプロファイル作成

この時点で一度再起動を行うとブートタイミングで、rEFIndのOS選択画面が表示されるはずなのだが表示されなかった。いろいろと調査しつつrEFIndの設定を変更しても上手くいかなかった。そもそもUEFIのブートデバイスにWindowsの表示しか無く不思議がっていた。(ただ、Linux 構築時のEFIデバイスはWindowsのものと共用しているかたちので、表示されないで問題ないとも取れた)

その線で見ていたところ、こちらを発見した。まさに同様の質問をしていてその答えが書かれていた。本PCのマザーボードはMSIだが、EFIパスは自動検出に制限があるようで、今回作成したパスは検知されていなかった様子。ということで、記載があるようにWindows上でデータを複製し新規にEFIパスを作成する手順を行う。(あとで確認したところLinuxでもefimanagerで編集できそうだった)

編集するときの変更内容は、実際のEFIのファイルパスを参照することになるので事前に確認しておく。

## Linux
# ls /boot/EFI/Boot/bootx64.efi
-rwxr-xr-x 1 root root 318483 Aug 17 10:38 /boot/EFI/Boot/bootx64.efi

## Windows
# ls /boot/EFI/Microsoft/Boot/bootmgfw.efi
-rwxr-xr-x 1 root root 2024792 Aug 17 19:58 /boot/EFI/Microsoft/Boot/bootmgfw.efi

Windowsを起動しログインして管理者権限でプロンプト実行してプロファイルをコピーする。下記でコピーしたプロファイルの名前はArchmgerとなっているが任意の名前でよい。

> bcdedit /copy {bootmgr} /d "Archmgr"

プロファイルを編集するツールである BOOTICE をダウンロードして起動する。起動後は UEFI -> Edit boot entries で編集に進む。

20220926_001_edit_boot_entry_fix

「Windows Boot Manager」プロファイルの設定を確認する。Media file:のパスを確認しこのイメージでコピーしたプロファイルの「Archmgr」の設定を変更する。

20220926_002_edit_boot_entry_fix

「Archmgr」プロファイルの設定を変更する。Media file:のパスは以下のようなイメージで変更した。変更後に「Save current boot entry」で変更内容を保存する。

20220926_003_edit_boot_entry_fix

上手くいったようで、起動時にrEFIndの画面が表示されbootメニューが選択できるようになった。

20220926_004_refind_screen_shot_fix

デスクトップ環境をインストール

デスクトップ環境をインストールする。各自環境はお好みのものがあると思うのでそれをインストールする。ここではPlasmaをインストールする。

$ sudo pacman -Syu plasma kde-applications sddm xorg adobe-source-han-sans-jp-fonts fcitx-im fcitx-configtool fcitx-mozc kcm-fcitx

また、ログインマネージャを有効化する。ここではsddmを有効化している。

$ sudo systemctl enable sddm

日本語環境を設定する

fcitxを使用するよう設定する。

$ touch ~/.xprofile
$ vi ~/.xprofile
$ export GTK_IM_MODULE=fcitx
$ export QT_IM_MODULE=fcitx
$ export XMODIFIERS="@im=fcitx"

ロケールを設定する

$ sudo localectl set-locale ja_JP.UTF-8
$ sudo localectl set-x11-keymap jp

再起動後にデスクトップ環境が起動するか確認する

再起動し rEFInd を経てそれぞれのOSが起動するかどうか確認する。つい先程撮ってきたことがバレバレな画像。構築当時に撮影しておこうという気概が全く無いことが問題とされている。

20220926_007_windows_screen_shot_fix

20220926_006_linux_screen_shot_fix

まとめ

Arch Linux と Windows11 の Dual Boot を設定した。まずは両OSが動作するようになってよかった。新PCかつ新ディスクへのインストールだったこともあって、いろいろ試してダメだったら削除して別の方法でもう一回試すという手法が取れたのがよかった。試行錯誤を繰り返して多少なりとも理解することができたと思う。それ自体はよいのだが、インストール直後から1週間ぐらいはほぼほぼこのときの記憶が残っていたというのに、1ヶ月ほど経過した現在だと当時残しておいたメモ無しだと全然記憶が取り出せないことに愕然とする。もう若くないんだよね。

Arch Linux のインストール方法などはWebを徘徊すれば普通に出てくるのでここに残す意味もあまり無いような気がするけど、なんというか自分の手を動かしたことをこうやって文字で残す行為自体が大事な気がしているのでやっているところがある。まあ備忘録として面も多分にあるのだけど。

参考

お世話になりました。構築途中の様子や投げたコマンドの応答が見れるのは非常に強い。

© てっくらのーと/mkr-note 2024