てっくらのーとは、触れた技術のメモと日常の記録が少し合わさった個人のサイトです。
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インストールと設定
インストーラに従ってインストールを行う。インストール完了後に起動し、以下の設定を行う。
- 高速スタートアップとハイバネートの無効化
- 標準時間の変更
- 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を徘徊すれば普通に出てくるのでここに残す意味もあまり無いような気がするけど、なんというか自分の手を動かしたことをこうやって文字で残す行為自体が大事な気がしているのでやっているところがある。まあ備忘録として面も多分にあるのだけど。
参考
お世話になりました。構築途中の様子や投げたコマンドの応答が見れるのは非常に強い。