Arch Linux と Windows 11 の Dual Boot を設定した
Posted on 2022-09-26 in zakki
前回の記事の続き。期間が空いたのは … まあそういうものだと思う。
構成
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 インストールと設定
インストーラに従ってインストールを行う。インストール完了後に起動し、以下の設定を行う。
- 高速スタートアップとハイバネートの無効化
- 標準時間の変更
- 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:)
を縮小する。縮小は縮小したいボリュームを右クリックし「ボリュームの縮小」を選択して進む。
- Windows 回復環境
- EFI パーティション
- 予約パーティション
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 をインストールするパーティションの初期化を行う。下のコマンド例では以下の情報に読み替えている。
- Arch Linux をインストールするパーティション :
/dev/nvme0n1p5
- すでに存在するEFI パーティション :
/dev/nvme0n1p1
## ここで使用するデバイス名をメモする。
## 縮小して何も存在しないパーティションと、** すでに存在する **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
ホストネームの設定
- 新しいホストネーム :
arch
# 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
を使用する。
- Arch Linux をインストールするパーティション :
/dev/nvme0n1p5
- すでに存在するEFI パーティション :
/dev/nvme0n1p1
# 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
通常使用するユーザの設定
- 通常使用するユーザー名 :
paraselene92
# 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 で編集に進む。
「Windows Boot Manager」プロファイルの設定を確認する。Media file:
のパスを確認しこのイメージでコピーしたプロファイルの「Archmgr」の設定を変更する。
「Archmgr」プロファイルの設定を変更する。Media file:
のパスは以下のようなイメージで変更した。変更後に「Save current boot entry」で変更内容を保存する。
上手くいったようで、起動時に rEFInd の画面が表示され boot メニューが選択できるようになった。
デスクトップ環境をインストール
デスクトップ環境をインストールする。各自環境はお好みのものがあると思うのでそれをインストールする。ここでは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 が起動するかどうか確認する。つい先程撮ってきたことがバレバレな画像。構築当時に撮影しておこうという気概が全く無いことが問題とされている。
- Windows
- Linux
まとめ
Arch Linux と Windows11 の Dual Boot を設定した。まずは両 OS が動作するようになってよかった。新 PC かつ新ディスクへのインストールだったこともあって、いろいろ試してダメだったら削除して別の方法でもう一回試すという手法が取れたのがよかった。試行錯誤を繰り返して多少なりとも理解することができたと思う。それ自体はよいのだが、インストール直後から 1 週間ぐらいはほぼほぼこのときの記憶が残っていたというのに、1ヶ月ほど経過した現在だと当時残しておいたメモ無しだと全然記憶が取り出せないことに愕然とする。もう若くないんだよね。
Arch Linux のインストール方法などは Web を徘徊すれば普通に出てくるのでここに残す意味もあまり無いような気がするけど、なんというか自分の手を動かしたことをこうやって文字で残す行為自体が大事な気がしているのでやっているところがある。まあ備忘録として面も多分にあるのだけど。
参考
お世話になりました。構築途中の様子や投げたコマンドの応答が見れるのは非常に強い。