Fedora LinuxとWindows 11のデュアルブート:UEFI・Secure Boot・GRUB2の設定で安全に並行起動する方法

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

2026年にもデュアルブートが必要な理由

Fedoraをメインの開発マシンとして2年間使ってきて、パッケージの更新速度にはかなり満足しています。新しいカーネルや新しいツールチェーンがUbuntuより数ヶ月早く利用できるのが魅力です。ただ、実際にはWindows 11を起動しなければならない場面もあります。Microsoft Teamsを使うクライアントへのデモ、Edgeでの表示確認、急ぎの動画書き出しでAdobe Premiereが必要な時などです。仮想マシンで大半は解決できますが、すべてではありません。GPUパススルーはまだ複雑ですし、一部の業務ソフトは仮想化環境を検知して起動を拒否することがあります。

2025〜2026年のデュアルブートの難しさはインストール手順にあるわけではありません。実際に遭遇した問題は3つあります。Windows 11でSecure Bootがデフォルトで有効になっておりコンフリクトが起きやすいこと、Windows Feature UpdateのたびにGRUB2が上書きされること、そして2つのOS間でシステム時刻がずれることです。この記事ではその3点に絞って解説します。

インストール前の準備

インストール順序:Windowsを先に、Fedoraを後に

これは変わることのないルールです。WindowsインストーラーはEFI System Partitionをすべて上書きし、他のOSを認識しません。Windows 11を先にインストールし、Fedoraを後から入れると、GRUB2が自動的にWindowsを検出してブートメニューに追加してくれます。逆の順番でやると、WindowsはGRUBを容赦なく削除してしまいます。

BIOSモードとSecure Bootの確認

Windowsでmsinfo32を開き、以下を確認します:

  • BIOS ModeUEFIであること(Legacyではない)
  • Secure Boot State:OnでもOffでも問題なし

Fedora 39以降はshim loaderとMOK(Machine Owner Key)を通じてSecure Bootをネイティブでサポートしているため、Secure Bootをオフにする必要はありません。ThinkPadでSecure Bootを有効にしたままインストールしましたが、何も問題は起きませんでした。

WindowsからFedora用の空き領域を作成する

ディスクの管理(diskmgmt.msc)を開き、Cドライブを右クリック→ボリュームの縮小を選択します。Fedora用に最低50GBを確保しましょう(Docker imagesとプロジェクトコードを保存するために100GBにしています)。

空き領域は未割り当てとして表示されます。そのままにしておけば、Fedora Anacondaインストーラーが自動的に処理します。EFI System Partition(通常は約100〜500MBのFAT32パーティション)が既に存在することも確認しておきましょう。既にある場合、Fedoraはそれを共有して使用し、新たに作成しません。

Windows 11が入ったシステムへのFedoraのインストール

起動用USBの作成

公式サイトからFedora Workstation ISOをダウンロードします。WindowsではFedora Media Writer(推奨)またはRufusをGPT/UEFIモードで使用します。Linuxでは:

sudo dd if=Fedora-Workstation-Live-x86_64-40-1.14.iso \
  of=/dev/sdX bs=4M status=progress oflag=sync
# /dev/sdX を実際のUSBデバイスに置き換える — 事前にlsblkで確認すること

Anacondaインストーラーでのパーティション設定

USBから起動し、Install to Hard Driveを選択します。Installation Destination画面で:

  1. Windowsが入っているドライブを選択する
  2. Customストレージ設定を選択→Done

未割り当て領域にマウントポイントを作成します:

  • /boot/efi既存のEFIパーティションを選択し、マウントのみ行いフォーマットしない(フォーマットするとWindowsのブートエントリが削除される)
  • /boot:1GB、ext4
  • /:残り全部、Btrfs(Fedoraのデフォルト、スナップショットロールバック対応)
  • swap:任意。省略するとFedoraはデフォルトでzramを使用する

Secure Bootの処理:MOK Enrollment

インストール完了後、初回起動時にSecure Bootが有効であれば、MOK Management画面(緑の背景で旧BIOSに似た見た目)が表示されます。これは正常な動作です。電源を切らないでください。

Enroll MOKContinueを選択し、インストール時に設定したパスワードを入力してRebootします。この手順でshim loaderのキーがUEFIファームウェアに登録され、Secure Bootが有効な状態でFedoraを起動できるようになります。

GRUB2とUEFIの設定

UEFIのブートエントリの確認

sudo efibootmgr -v

# 出力例:
# BootCurrent: 0000
# BootOrder: 0000,0001
# Boot0000* fedora   HD(1,GPT,...)/File(\EFI\fedora\shimx64.efi)
# Boot0001* Windows Boot Manager   HD(1,GPT,...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)

FedoraがBootOrderの最初のエントリにあるべきです。そうでない場合は修正します:

sudo efibootmgr --bootorder 0000,0001

タイムアウトとデフォルトOSの設定

sudo nano /etc/default/grub

以下の行を編集します:

GRUB_TIMEOUT=10           # 待機時間(秒単位)
GRUB_DEFAULT=saved        # 前回の選択を記憶する
GRUB_SAVEDEFAULT=true     # 選択をデフォルトとして保存する

grub設定を再生成します:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Windowsをデフォルトのオペレーティングシステムにする場合:

# インデックス付きのメニューエントリ一覧を表示する
awk -F\' '/menuentry / {print i++, $2}' /boot/grub2/grub.cfg

# Windowsをデフォルトに設定する(対応するインデックス番号に置き換える)
sudo grub2-set-default 2

Windows Updateで上書きされた後のGRUB2の復元

Windows Feature UpdateでBootOrderがWindows Boot Managerにリセットされることがあります。症状として、GRUBメニューが表示されずWindowsが直接起動します。Fedora Live USBから起動し、Try Fedoraを選択します:

# FedoraのルートパーティションをJA確認する
lsblk -f

# システムをマウントする(sdaX、sdaY、sda1を実際のデバイスに置き換える)
sudo mount /dev/sdaX /mnt
sudo mount /dev/sdaY /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi

# 擬似ファイルシステムをバインドマウントする
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

# chrootしてGRUB2を再インストールする
sudo chroot /mnt
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=fedora
grub2-mkconfig -o /boot/grub2/grub.cfg
exit

再起動するとGRUBメニューが両方のOSとともに表示されます。最初の1年でこの作業を2回やりました。Windowsアップデートのたびにefibootmgrで確認する習慣をつけてからは、不意打ちを受けることはなくなりました。

インストール後の確認とモニタリング

WindowsとLinux間の時刻のずれを修正する

これが最もよく遭遇した問題です。Windowsを使った後にFedoraを起動すると、時刻が9時間ずれてしまいます(日本のUTC+9)。原因は、LinuxがハードウェアクロックをUTCで保存するのに対し、WindowsはローカルタイムでJA管理するためです。

対処法:WindowsにUTCを使わせます。コマンドプロンプト(管理者)で実行します:

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

Fedoraでは:

sudo timedatectl set-local-rtc 0
sudo timedatectl set-ntp true
timedatectl status

Secure Bootが正常に動作していることの確認

# ステータスを確認する
mokutil --sb-state
# 期待される出力:SecureBoot enabled

# 登録済みのMOKキーを確認する
mokutil --list-enrolled | grep -A2 "Subject:"

ブート設定のバックアップと自動確認スクリプト

# EFIエントリとgrub設定をバックアップする
sudo efibootmgr -v > ~/efi-backup-$(date +%Y%m%d).txt
sudo cp /boot/grub2/grub.cfg ~/grub-backup-$(date +%Y%m%d).cfg

# GRUBがデフォルトのブートエントリであることを確認するスクリプト
cat > ~/check-grub.sh << 'EOF'
#!/bin/bash
FEDORA_ENTRY=$(efibootmgr | grep -i fedora | awk '{print $1}' | tr -d 'Boot*')
BOOT_ORDER=$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | awk '{print $1}')
if [ "$BOOT_ORDER" != "$FEDORA_ENTRY" ]; then
  echo "WARN: Fedoraがデフォルトのブートエントリではありません。修正中..."
  sudo efibootmgr --bootorder ${FEDORA_ENTRY},$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | sed "s/ ${FEDORA_ENTRY}//g" | tr -d ' ')
fi
EOF
chmod +x ~/check-grub.sh

FedoraからWindowsドライブをマウントしてファイルを共有する

# ntfs-3gをインストールする(まだ入っていない場合)
sudo dnf install ntfs-3g

# Cドライブをテストマウントする(/dev/sdaXを実際のデバイスに置き換える)
sudo mount -t ntfs-3g /dev/sdaX /mnt/windows
ls /mnt/windows/Users/

Windowsが正しくシャットダウンされていない場合(高速スタートアップが有効な場合)、ntfs-3gは読み取り専用でマウントします。対処法:Windows → 電源オプション →高速スタートアップを有効にするのチェックを外します。休止状態は管理者CMDでpowercfg /h offを実行して無効にします。

このセットアップを2年近く使ってきて、UEFIでのデュアルブートはLegacy BIOSの頃よりもはるかに安定していると実感しています。最も注意が必要な点はWindowsのメジャーアップデート後です。再起動前にターミナルでefibootmgrを確認する習慣をつけましょう。30秒の作業ですが、chrootでの復元作業に費やす数時間を防ぐことができます。

Share: