Windows11 と Ubuntu24.04LTS のデュアルブートPC構築手順 step by step!
想定する読者層
デュアルブートPC構築にあたり次の要望を持つ人が本記事の対象である
- Windows Boot Manager が入った既存のESP(EFI領域)を壊したくない
- Windowsの入った既存ディスクと、Ubuntuを入れるディスクを物理的に分けたい
- Ubuntu の ルート と /home は別パーティションで扱いたい
- WindowsとUbuntuの双方から読み書き可能なドライブを設けたい
- Ubuntuインストーラの進行をスクリーンショット付きで事前に見ておきたい
私の動機
自宅にて、2017年に購入したノートPC(Lenovo ThinkPad E470, CPU:Core™ i5-7200U, RAM:16GB, HDD:SATA500GB, Windows 10 Home 64bit)へUbuntuを入れて普段遣いしているが、1つのHDDをパーティション分割して(WindowsのCドライブを500GBから200GBに縮小して)Ubuntuを入れているので、/home の空き容量が乏しくなってきた。
$ lsblk -e 7 -o NAME,FSTYPE,LABEL,SIZE,FSUSE%,TYPE,MOUNTPOINTS
NAME FSTYPE LABEL SIZE FSUSE% TYPE MOUNTPOINTS
sda 465.8G disk
├─sda1 vfat SYSTEM 260M 14% part /boot/efi
├─sda2 16M part
├─sda3 ntfs Windows 200.8G part
├─sda4 ntfs WinRE_DRV 1000M part
├─sda5 swap 4.7G part [SWAP]
├─sda6 ext4 93.1G 25% part /var/snap/firefox/common/host-hunspell
│ /
└─sda7 ext4 165.9G 75% part /home
故障もなくディスク容量以外は性能不足を感じないが、来年で9年目となるので買い替えて環境を一新することにした。新規購入したノートPCはこれ。
ThinkPad E16 Gen 3 AMD:プレミアム(優先生産モデル)
- CPU: AMD Ryzen 7 250 w/ Radeon 780M Graphics
- RAM: 32 GB DDR5-5600MT/s (SODIMM) - (2 x 16 GB)
- 1stストレージ: 256 GB SSD M.2 2242 PCIe-NVMe Gen4 TLC OPAL対応
- 2ndストレージ: なし(M.2 2280スロット空き)
- ディスプレイ 16" WUXGA液晶 (1920 x 1200) IPS, 光沢なし, マルチタッチ非対応, 45%NTSC, 300 nit, 60Hz
- 導入OS: Windows 11 Home 64bit - 日本語版
- 合計(税込) ¥124,740
老眼が進んだので液晶16インチ以上で絞り込み、
その中からRAMが多く、SSDが増設可能な機種を選んだ。
増設SSDは別途購入した。
KIOXIA EXCERIA PLUS G3 SSD-CK2.0N4PLG3N 内蔵 SSD
- 容量: 2TB
- NVMe M.2 Type 2280 PCIe Gen 4.0×4
- 価格: (税込)¥25,180
やりたいこと
- Windows11がプリインストールされた新品PCにSSD(2TB)を増設し、そこへUbuntu24.04LTSをインストールしてデュアルブートを可能にする
- 増設SSDの半分をWindowsのDドライブに割り当てて、ダウンロードファイル・Steamゲームライブラリ・画像ファイル・仮想マシンファイル等の置き場として使う
- 増設SSDの残り半分に、Ubuntu用のルートとhomeの2つのパーテションを設ける
- 増設SSDにUbuntu用の独立ESP(EFI System Partition)を作る
- スワップパーテョンは設けない
- WindowsのDドライブパーテョンをUbuntu側から読み書き可能にするため /mnt/share へマウントする
- Ubuntuインストーラ入りのブータブルUSBメモリを確実に起動するために一時的にセキュアブートをOFFにするが、インストール完了後はセキュアブートをONに戻してUbuntuを起動する
独立ESPのメリット
- Windowsの更新や回復処理にてWindows側のESPが上書きされても、Ubuntu側のESPには影響なく安全である
- 逆もまたしかりでUbuntuのインストールに失敗しても、Windows側のESPは一切変わらないので安心
- BIOSにて起動先を選んで固定するので、WindowsUpdateの自動再起動にてWindowsが再起動できる
- 独立ESPを設けずWindowsのESPと共有すると、GRUBの起動選択メニューから手動でWindowsブートマネージャを選んで起動する必要があり、離席中に再起動した場合にはGRUBのメニューがタイムアウトしてデフォルト選択のUbuntuが起動してしまう
スワップパーティションは本当に不要か
Ubuntuで休止状態(ハイバネート)を使いたい場合はスワップパーテションを設けた方が安心である。
ルートがハードディスクかつ搭載メモリ不足で頻繁にスワップが発生する状況ならばスワップパーテションを設けた方が快適になるだろう。今回のようにSSDならばアクセス速度に差がないのでスワップファイルで十分である。
スワップファイルはUbuntuインストーラが自動的に用意してくれる。
ルートとhomeを別パーティションとするメリット
昔はドライブの信頼性が低く容量も小さかったので別ドライブに分ける意義があった。今のドライブは大容量であり、物理的に同じドライブ内にてパーテションを分けても信頼性は変わらないのでメリットは少ない。
あえていえばOSを再インストールする場合に、ルートは再フォーマットするが、homeはそのまま残せるのがメリット。だがそれに対しても、バックアップしたhomeをリストアすれば良いとの正論あり。
ルートとhomeで別のファイルシステム(ext4,xfs,btrfs)やマウントオプションを使いたい場合は別パーテションにするしかない。
補足: デスクトップPCの場合
ノートPCはCドライブの取り外しが難しくドライブ増設スロットに余裕がないので本記事で解説する面倒な手順が必要になるが、それらの制約がないデスクトップPCならば、以下の手順で簡単に独立ESPデュアルブート環境が構築できる。
- 既存のCドライブ(Windows用のESPを持つ)も含めて全ドライブをPCから外す
- Linux(Ubuntu)を入れたい新規ドライブを空スロットに接続して、Ubuntuを新規インストールする(新規ドライブにUbuntu用のESPが出来る)
- 外していた全ドライブを元通りに接続する
- 以上でそれぞれ独立ESPから起動できるデュアルブート環境が完成したので、BIOSでブート対象を選ぶ。Windows側と読み書き共有したいドライブがあれば、Ubuntu側からマウントする
事前準備
-
Ubuntu公式サイトから最新版インストーラをダウンロードする。本記事執筆時点の最新版は
Ubuntu Desktop 24.04.3 LTSです - ダウンロードした iso ファイルを使ってブータブルUSBメモリを作る
- 作成ツール毎に手順が違うので説明を割愛するが、私は Ventoy を使った。1つのUSBメモリに複数のisoファイルを入れて選択ブートできるので便利である
- 新ノートPCに増設SSDを取り付け、初回起動してWindows11をセットアップする
- ローカルアカウントを作る方法が無くなっていたり、BIOS更新やWindowsUpdateで何度も再起動し、不要なバンドルソフト(McAfee)を消したり、OneDriveのマイドキュメント同期を解除したり、USBメモリに回復ドライブを作成したり、ここが一番時間を食った
- Windowsの設定にてBitLockerを無効にする。高速スタートアップも無効化する
- Ubuntu側からWindowsドライブのデータを壊さずに読み書き可能とするためなので、読み書き不要なら無効化しなくて良い
- Windowsの設定にて増設SSD(2TB)をGPT形式で初期化し、1TBのNTFSパーティションを作り、フォーマットしてDドライブとする
- Windowsから再起動を実行し F1キー連打(PCメーカによってキーが異なる)で BIOS に入る
- BIOSにて、OSブート方式をUEFIに設定する
- 増設SSDに作るESPを起動可能とするためであり、最近のPCなら最初からUEFIに設定されているので確認のみでOK
- BIOSにて、セキュアブートをOFFにする
- ブータブルUSBメモリを起動可能にするためであり、インストール完了後にONへ戻す
- 用意したブータブルUSBメモリをPCに差し込み、BIOS設定を保存してBIOSから抜ける
- F12キー連打(PCメーカによってキーが異なる)でBIOSブート先選択メニューに入り、USBメモリを選ぶ
Ubuntuインストール実行
Ubuntuインストーラの全操作をステップ毎にスクリーンショットを撮りながら説明する
- ブータブルUSBメモリに入れたUbuntuインストーラを起動する
- "Ubuntu Pro" や "Ubuntuの改善を支援" の設定。私はスキップした
- "さらにアプリケーションを追加する" は、後からできるのでスキップした
- "使用言語の選択" >日本語
- "アクセシビリティ" は障碍者向けの補助機能です。必要に応じて選択する
- "キーボードレイアウト">日本語
- "ネットワークに接続">各自の環境にあわせて設定する
- "インストーラのアップデート" インストールに問題が発生すればやり直してここでアップデートする。とりあえずスキップでOK
- "試用またはインストール">インストールを選択
- "インストールの種類">対話式
- "アプリケーション">お好みで選ぶ
- "コンピューターを最適化">私は全部入にして、インストール失敗なら外してやり直すことにしている
- "ディスクのセットアップ">ここからが本記事の肝です。手動を選ぶ
- "手動パーティショニング">一覧の先頭にはブータブルUSBメモリがsda,sdbとして見えている。下にスクロールして増設SSDを探す
- "手動パーティショニング">増設SSDがnvme1n1として見えた。事前準備で作成したWindows Dドライブ(NTFS 1TB)を選び、変更をクリックする
- ”パーティションを編集”>マウントポイントに /mnt/share と入力してOKを押す
- "手動パーティショニング">ここでESP(FAT32 /boot/efi)が暗黙に自動生成された。結果オーライだが、本来なら画面下部の "ブートローダをインストールするデバイスを選択" で増設SSDを選ぶことで生成される。自動生成ESPのサイズは1.13GBで大きい。Ubuntu専用EPSなので200MBで十分な気がするが、ファームウェア更新(fwupd)やUKI(Unified Kernel Image)に備えるため1GBが最新トレンドらしい
- "手動パーティショニング">空き領域を選び、"+"をクリックしてルートパーティションを生成する。サイズ 100GB、Ext4、マウントポイント / を指定してOKを押す

旧PCではルートパーティションのサイズは93GBで使用率は25%(23GB)だったので、私の用途ではスワップファイルを足しても50GBで十分であるが、余裕をもって100GBとした - "手動パーティショニング">空き領域を選び、"+"をクリックしてhomeパーティションを生成する。サイズ 残り全部、Ext4、マウントポイント /home を指定してOKを押す
- "手動パーティショニング">完成したので次へ
- "アカウントの設定">名前、PC名、ログインユーザ名、パスワードを入力する
- "タイムゾーンを選択">Asia/Tokyo
- "インストールの準備完了">インストールを押す
- 生成したルートパーティションへ書き込み中
- インストール完了
- 今すぐ再起動を押し、F1連打でBIOSに入り、ブート先を増設SSDに変更する
- 実際には"今すぐ再起動"ではなく"試用を継続する"を選び、スクリーンショットを別ドライブにコピーしてから再起動した。インストーラのシステムはRAMディスク上で動作しているので、再起動するとスクリーンショットが消えてしまうため
- 最近のUbuntuはセキュアブートに対応しているので、BIOSのセキュアブートをONに戻す
- Microsoft以外のセキュアブートを許可という項目があればそれもONにする必要があるかも
- GPUドライバなどを追加でインストールする場合は、再起動時にMOK (Machine Owner Key) の登録画面が出るかも
- BIOS設定を保存してBIOSから抜ける。Ubuntuが無事に起動すれば任務完了。お疲れ様でした
出来上がったパーティションの構成
旧PCに比べて /home のサイズが4倍強となり当初の不満は解消した。
ルートのサイズは変わらずだが問題ない。
$ lsblk -e 7 -o NAME,FSTYPE,LABEL,SIZE,FSUSE%,TYPE,MOUNTPOINTS
NAME FSTYPE LABEL SIZE FSUSE% TYPE MOUNTPOINTS
nvme0n1 1.8T disk
├─nvme0n1p1 16M part
├─nvme0n1p2 ntfs share 1T 9% part /mnt/share
├─nvme0n1p3 vfat 1G 1% part /boot/efi
├─nvme0n1p4 ext4 93.1G 17% part /
└─nvme0n1p5 ext4 743.4G 1% part /home
nvme1n1 238.5G disk
├─nvme1n1p1 vfat SYSTEM 260M part
├─nvme1n1p2 16M part
├─nvme1n1p3 ntfs Windows 236.3G part
└─nvme1n1p4 ntfs WinRE_DRV 2G part
インストール後の仕上げ
デュアルブート環境固有の調整作業を行う
/etc/fstabの調整
Ubuntuインストーラの "手動パーティショニング" にて、WindowsのDドライブを /mnt/share にマウント指定したので読み込み可能になっている。だがインストーラが作ったマウント設定は最低限の記述しかされておらず、レガシーなntfsドライバが指定されているため書き込みにも難がある。
Ubuntu24.04LTSならばモダンなntfs3ドライバが使えるのでマウント設定を書き換える。さらにアクセス権など細かいオプションを生成AIに質問したり findmnt で他のパーティション内容を調べて追記した。
どうせ書き換えるのでインストーラでマウント指定しなくても良いのだが、インストーラで指定すればUUID付きのプレースホルダが用意されるので、DドライブのUUIDを sudo blkid や lsblk -f や ls -l /dev/disk/by-uuid/ を使って調べる手間を省けるし、ヒューマンエラーの防止にもなる。
$ sudoedit /etc/fstab
$ diff /etc/fstab{.bak,}
13c13
< /dev/disk/by-uuid/D022064222062E52 /mnt/share ntfs defaults 0 1
---
> /dev/disk/by-uuid/D022064222062E52 /mnt/share ntfs3 defaults,nosuid,nodev,uid=1000,gid=1000,umask=022,iocharset=utf8,windows_names 0 0
これに ,nofail,noatime を追加しても良いかも。
- Windows側で「高速スタートアップ」が有効に戻ったり、不適切なシャットダウンが起きたりすると、マウントエラーになることがある。このときにシステムが停止しないように nofail を追加することを推奨するとのことだ。エラーで止まったほうが見落とさずに対策できるので私は要らない
- noatime は、ファイルアクセス時刻の更新を一切やめて、パーティションへの書き込みを最小限にする設定である。デフォルトの relatime でも書き込むタイミングは同じなので、お好みで追加すれば良い
さらに ntfs3 ではなく lowntfs-3g を使用し、オプションに ignore_case を加えると「Windowsの大文字小文字を区別しない(同一視する)」動作を実現できるらしいが、今回は実施せず。
https://github.com/tuxera/ntfs-3g/wiki/NTFS-3G-FAQ
GRUBの表示サイズ調整
GRUBはVGA(640x480)画面に合わせたフォントサイズで表示するので、WUXGA(1920x1200)やFullHD(1920x1080)のディスプレイで表示すると文字が小さすぎる。
GRUB設定ファイル /etc/default/grub を編集して画面解像度を640x480に変える。ファイル中にある #GRUB_GFXMODE=640x480 のコメントを外せば良い。
編集後に update-grub を実行してブート設定に反映する。
$ sudoedit /etc/default/grub
$ diff /etc/default/grub{.bak,}
31c31
< #GRUB_GFXMODE=640x480
---
> GRUB_GFXMODE=640x480
$ sudo update-grub
BIOS時計の時差調整
WindowsはBIOS時計をローカル時刻として読み取るが、Ubuntuは世界時として読み取る。
この違いにより、デュアルブート環境でWindowsとUbuntuを相互に起動すると、時刻が時差分ずれてしまう。
そこでUbuntuの読み取り設定を変更してWindowsと同じにする。
$ timedatectl set-local-rtc 1
再起動してWindows側で時刻を確認し、ずれていたら時刻を再設定する。
さらに再起動してUbuntu側で時刻設定を確認する。Local time と RTC time が同一時刻で、RTC in local TZ: yes が表示されていればOK。
$ timedatectl
Local time: 土 2025-12-20 22:30:33 JST
Universal time: 土 2025-12-20 13:30:33 UTC
RTC time: 土 2025-12-20 22:30:33
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: yes
Warning: The system is configured to read the RTC time in the local time zone.
This mode cannot be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
過去の関連記事