「Windows とのデュアルブート」の版間の差分
(Translateme を削除。同期完了。) |
(「簡単に」を削除。全く持って「簡単」ではない。) |
||
6行目: | 6行目: | ||
[[sk:Dual boot with Windows]] |
[[sk:Dual boot with Windows]] |
||
[[zh-hans:Dual boot with Windows]] |
[[zh-hans:Dual boot with Windows]] |
||
− | この記事では Arch と Windows を共存させる方法を |
+ | この記事では Arch と Windows を共存させる方法を説明しています。 |
== 重要情報 == |
== 重要情報 == |
2022年4月6日 (水) 16:19時点における版
この記事では Arch と Windows を共存させる方法を説明しています。
目次
重要情報
Windows の UEFI と BIOS の制限
Microsoft は Windows のバージョンによって使用できるファームウェアのブートモードとパーティションスタイルを制限しています:
- Windows XP は x86 32ビット版と x86_64 (別名 x64) の両方とも UEFI モード(IA32 や x86_64)による、如何なるディスク(MBR や GPT)からの起動も、BIOS モード による GPT ディスクからの起動もサポートしていません (RTM や全てのサービスパックを含む)。BIOS ブートかつ MBR/msdos ディスクからしか起動できません。
- Windows Vista や 7 の x86 32ビット版は MBR/msdos ディスクからの BIOS モードによる起動しかサポートしていません。x86_64 UEFI や IA32 (x86 32ビット) UEFI による起動はサポートしていません。
- Windows Vista RTM x86_64 バージョンは MBR/msdos ディスクからの BIOS モードによる起動しかサポートしていません (RTM 版のみ)。x86_64 UEFI や IA32 (x86 32ビット) UEFI による起動はサポートしていません。
- Windows Vista (SP1 以上で非 RTM) と Windows 7 x86_64 は GPT ディスクからの x86_64 UEFI モードによる起動、または MBR/msdos ディスクからの BIOS モードによる起動のみサポートしています。GPT/MBR ディスクからの IA32 (x86 32ビット) UEFI ブート、MBR/msdos ディスクからの x86_64 UEFI ブート、GPT ディスクからの BIOS ブートなどはサポートしていません。
- Windows 8/8.1 と 10 x86 32ビット は GPT ディスクからの IA32 UEFI モードによる起動、あるいは MBR/msdos ディスクからの BIOS モードによる起動のみサポートしています。GPT/MBR ディスクからの x86_64 UEFI ブート、MBR/msdos ディスクからの x86_64 UEFI ブート、GPT ディスクからの BIOS ブートなどはサポートしていません。市場に出ているマシンとしては古い Intel Mac (2010年以前のモデル) や Intel Atom System-on-Chip (Clover Trail と Bay Trail) が搭載された Windows タブレットだけに IA32 (U)EFI が含まれており、GPT ディスクからの IA32 UEFI モードによる起動を行います。
- Windows 8/8.1 と 10 x86_64 は GPT ディスクからの x86_64 UEFI モードによる起動、あるいは MBR/msdos ディスクからの BIOS モードの起動をサポートしています。IA32 UEFI ブート、MBR/msdos ディスクからの x86_64 UEFI ブート、GPT ディスクからの BIOS ブートなどには対応していません。
- Windows 11 は x86_64 と UEFI モードによる GPT ディスクからの起動のみをサポートしています。
Windows がマシンにプリインストールされている場合:
- Windows XP, Vista, 7 の32ビット版がプリインストールされているマシンはデフォルトで BIOS-MBR モードで起動します。サービスパックやビット数、Windows のエディション (SKU) やファームウェアが UEFI をサポートしているかどうかは関係ありません。
- Windows 7 x86_64 がプリインストールされているマシンの大多数はデフォルトで BIOS-MBR モードで起動します。サービスパックやビット数、エディション (SKU) は無関係です。最近発売された Windows 7 マシンにはデフォルトで x86_64 UEFI-GPT モードで起動するものも少数ながらあります。
- Windows 8/8.1, 10, 11 がプリインストールされたマシンは全て UEFI-GPT モードで起動します。Windows 10 までは、ファームウェアのビット数は Windows のビット数と一致します。例えば x86_64 の Windows は x86_64 UEFI モードで起動し32ビットの Windows は IA32 UEFI モードで起動します。
Windows のブートモードは以下の手順で確認できます ([1] を参照):
- Windows を起動
- Win キーを押しながら 'R' で起動ダイアログを開く
- 起動ダイアログに "msinfo32" と入力してエンター
- システム情報から左側のシステムの要約を選択して右の BIOS モードの値を確認
- 値が UEFI であれば、Windows は UEFI-GPT モードで起動しています。値が Legacy の場合、Windows は BIOS-MBR モードで起動しています。
一般に、Windows では使用しているファームウェアのモードによってパーティションのタイプが強制的に決定されます。Windows が UEFI モードで起動していれば、GPT ディスクにしかインストールすることができません。Windows がレガシー BIOS モードで起動している場合、MBR ディスクにしかインストールできません (別名 msdos)。これは Windows インストーラーによる制約であり、2014年4月現在、UEFI-MBR や BIOS-GPT の組み合わせで Windows をインストールする公式(Microsoft)の方法はありません。したがって Windows は UEFI-GPT あるいは BIOS-MBR しかサポートしていません。
Linux カーネルにはそのような制限はありませんが、使用するブートローダーやその設定方法が変わってきます。ブートローダーのインストール手順はファームウェアの種類やディスクのパーティショニングの設定に依るので、Windows と Linux を同一のディスクからデュアルブートする場合、Windows の制限には注意が必要です。出来る限り、Windows が使用する方法、つまり UEFI-GPT あるいは BIOS-MBR ブートにあわせることを推奨します。詳しくは https://support.microsoft.com/kb/2581408 を見てください。
インストールメディアの制限
Microsoft による OEM 向けのコネクテッドスタンバイガイドラインによれば、Intel Atom System-on-Chip タブレット (Clover Trail と Bay Trail) は(ほとんどの x86_64 UEFI システムとは違って)レガシーな BIOS (CSM) はサポートしておらず IA32 UEFI ファームウェアしか用意されていません。これらのシステムでのレガシー BIOS へのサポートがないせいや、Arch の公式インストール ISO が32ビット UEFI ブートができない(FS#53182)せいで、公式のインストールメディアはこれらのシステムで起動できません。さらなる情報や利用可能な回避策については Unified Extensible Firmware Interface#UEFI ファームウェアのビット数 をご覧ください。
ブートローダーの UEFI と BIOS の制限
ほとんどの Linux ブートローダーはインストールされたものと別のタイプのファームウェアのブートローダーを起動したりチェインロードすることができません。したがって、Arch を UEFI-GPT あるいは UEFI-MBR モードでインストールして、Windows を他のディスクに BIOS-MBR モードでインストールした場合、Arch の UEFI ブートローダーで Windows をチェインロードすることは不可能です。同じように BIOS-MBR や BIOS-GPT モードで Arch をインストールして、Windows を UEFI-GPT を使って他のディスクにインストールした場合、Arch の BIOS ブートローダーで Windows をチェインロードすることはできません。
Apple Mac における GRUB(2) だけが上記の例外であり、appleloader コマンドを使って EFI でインストールされた GRUB(2) から BIOS でインストールされた OS を起動したり、rEFInd を使って UEFI 環境からレガシー BIOS の OS を起動できますが、ツールの作者である Rod Smith によれば Apple 以外の UEFI 環境では機能しません。
ただし Arch を BIOS-GPT でインストールして、Windows を他のディスクに BIOS-MBR でインストールした場合、ブートローダーが他のディスクをチェインロードできれば、Arch の使用しているブートローダーで他のディスクに入っている Windows を起動できます。
Windows セットアップ は 100 MiB の EFI システムパーティション を作成します(ただし、Advanced Format の 4K ネイティブドライブには 300 MiB の ESPが作成されます)。故に、使用できるカーネルの数は制限されます。回避策は:
- ESP を
/efi
にマウントする。そして、ファイルシステムドライバーがあり、他のパーティションにあるカーネルを起動できるブートローダーを使用する。 - ESP を拡張する。通常の方法としては、回復パーティションのサイズを減らすか、Windows パーティションを移動する(これにより UUID が変わります)かです。
- バックアップをとり、
esp/EFI/Microsoft/Boot/Fonts/
内にある不要なフォントを削除する[2]。 - バックアップをとり、
esp/EFI/Microsoft/Boot/
内にある不要な言語ディレクトリを削除する。(例えば、en-US
のみを残す)
UEFI セキュアブート
Windows 8/8.1, 10, 11 がプリインストールされている場合、デフォルトで UEFI-GPT モードで起動するようになっており UEFI Secure Boot が有効になっています。これは全ての OEM プリインストールで Microsoft によって強制されています。
Arch Linux のインストールメディアは現在 Secure Boot をサポートしています。セキュアブート#archiso の起動を見てください。
Arch Linux を起動する前に UEFI Secure Boot を無効化することが推奨されます。Secure Boot を無効にしても Windows 8/8.1, 10, 11 は問題なく起動できるはずです。UEFI Secure Boot のサポートを無効化するには物理的にコンピュータにアクセスして、ファームウェアの設定で Secure Boot オプションを無効化する必要があるというのが唯一の問題です。Microsoft は、Windows 8/8.1 以上のプリインストール済みのシステムにおいて、リモートで、または(OS 中から)プログラムを使って Secure Boot を無効化する方法を明確に禁止しています。
高速スタートアップとハイバネート
ハイバネート可能な OS が2つあるとき、Windows と Linux (または、他の OS)の一方をハイバネートしてもう一方を起動したり、両方をハイバネートする場合があります。
同じ理由で、1つの EFI システムパーティションを Windows と Linux の間で共有している場合に、Windows をハイバネート(または、高速スタートアップを有効化した状態でシャットダウン)して Linux を起動したり、その逆をしたりすると、EFI システムパーティションが損傷するかもしれません。
ハイバネートされたディスクを読み書きでマウントすることを防ぐセーフガードが [https://www.archlinux.org/packages/?name=ntfs-3g ntfs-3g には追加されています] が、Linux カーネルの NTFS ドライバーにはそうしたセーフガードが存在しません。
Windows はデフォルトで、Linux で一般的に使用されている ext4 のようなファイルシステムを読み込むことができません。Windows にこれらのファイルシステム用のドライバーをインストールしていない限り、これらのファイルシステムを考慮する必要はありません。
Windows 設定
Windows 8 以上には高速スタートアップという新しい機能が含まれており、シャットダウンを実際に行う代わりにハイバネートをすることで起動時間を短縮します。
高速スタートアップとハイバネートに対する Windows 設定の複数の選択肢が次のセクションで言及されています。
- 高速スタートアップとハイバネートを無効化する
- 高速スタートアップを無効化し、ハイバネートを有効化する
- 高速スタートアップとハイバネートを有効化する
高速スタートアップを無効化する手順については、Windows 8 はここに、Windows 10 はここにあります。如何なる設定を無効化する場合においても、Linux をインストールする前にその設定を無効化したことを確認して Windows をシャットダウンしてください。再起動では不十分であることに注意してください。
高速スタートアップとハイバネートを無効化する
この選択肢は、ある OS から別の OS に再起動するときにユーザの注意を最も必要としません。よって最も安全で、先の問題についてよくわからない場合に推奨されます。1つの同じ EFI システムパーティションを Windows と Linux の間で共有することができます。
高速スタートアップを無効化し、ハイバネートを有効化する
この選択肢は、ある OS から別の OS に再起動するときにユーザの注意を必要とします。 一般的な使用ケースとして、Windows がハイバネートしているときに Linux を起動したい場合:
- EFI システムパーティション(ESP)を Windows 用と Linux 用とで分けなければならず、Windows が Linux 用の ESP をマウントしないようにしなければなりません。ドライブごとに1つの ESP しか存在できないので、Linux 用の ESP は Windows 用の ESP があるドライブとは別のドライブに存在していなければなりません。この場合、Linux の root パーティションとは別のドライブに Linux 用の ESP を置けば、Windows と Linux は同じドライブの別々のパーティションにインストール可能です。
- Windows がハイバネートしているときに、Windows によってマウントされているファイルシステムを読み書き可能な状態で Linux からマウントすることはできません。これについては非常に注意するべきです。また、自動マウント の挙動についても考慮すべきです。
- Windows をハイバネートでなく完全にシャットダウンした場合は、先に述べたようなファイルシステムを読み書き可能な状態でマウントすることができます。
高速スタートアップとハイバネートを有効化する
「高速スタートアップを無効化し、ハイバネートを有効化する」場合と同じ考慮が適用されますが、Windows が完全にシャットダウンされずハイバネートするだけなので、Windows がハイバネートしているときに、Windows によってマウントされていたファイルシステムを読み書き可能な状態でマウントすることはできません。
Windows のファイル名の制限
Windows ではファイルパスが 260 文字 以下までに制限されています。
また、Windows はファイル名で 特定の文字を使用禁止 にしています。これは昔の DOS の名残です:
- < (小なり)
- > (大なり)
- : (コロン)
- " (ダブルコロン)
- / (スラッシュ)
- \ (バックスラッシュ)
- | (縦線またはパイプ)
- ? (クエスチョンマーク)
- * (アスタリスク)
以上の制約は Windows のものであって NTFS にはありません、つまり NTFS パーティションを使用する他の OS は影響を受けません。Windows はこれらのファイルを検出することが出来なくて chkdsk
を実行すると大抵はファイルを削除しようとします。
NTFS-3G では windows_filenames オプションを使用すると Windows の制限が新しく作成したファイルに適用されます (fstab を見てください)。
インストール
Linux/Windows のデュアルブートをセットアップする場合、最初に Windows をインストールするのが推奨されます。Windows はディスクの一部を使ってパーティションを作ります。Windows のセットアップが終わったら、Linux のインストール環境にブートして、既存の Windows のパーティションには触れずに Linux 用のパーティションを作成することができます。Windows をインストールすると、Linux のブートローダーから使うことができる EFI System Partition が作成されます。
Linux の前に Windows をインストール
BIOS システム
Linux のブートローダーを使う
マルチブートをサポートする BIOS ブートローダーを使うことができます。
Windows 7/8/8.1 のブートローダーを使う
このセクションでは次のことをする方法を説明しています: Linux のブートローダーを MBR 以外のパーティションにインストールする; そのブートローダーを Windows のブートローダーから読み込めるパーティションにコピーする; Windows のブートローダーを使って Linux のブートローダーのコピーを起動する。
- GRUB ブートローダーをインストールする際に、MBR ではなく /boot パーティションにインストールしてください。GRUB でこれをする場合は、GRUB/ヒントとテクニック#パーティションやパーティションレスディスクにインストールするを見てください。Syslinux の場合は、Syslinux#手動インストール にあるノートを見てください。LILO の場合は、LILO#パーティション、またはパーティションレスディスクにインストールを見てください。
- VBR のコピーを作成します:
dd if=/dev/disk of=/path/to/linux.bin bs=512 count=1
/dev/disk
の部分はブートローダーがインストールされているパーティションのパスです。/path/to/
の部分は Windows のブートローダーによって読み込めるブートローダーのコピーを置くマウント済みファイルシステムです。
- Windows を起動して下さい、Windows から linux.bin ファイルにアクセス可能なはずです。コマンドプロンプト cmd を管理者として実行し以下を実行してください(スタート > 全てのプログラム > アクセサリ から コマンドプロンプト を右クリックして 管理者として実行 を選択):
bcdedit /create /d "Linux" /application BOOTSECTOR
BCDEdit はエントリの UUID を返します。以下の残りの手順では、この UUID をUUID
と表記します。bcdedit /set UUID device partition=c: (or the drive letter on which linux.bin is kept) bcdedit /set UUID path \path\to\linux.bin bcdedit /displayorder UUID /addlast bcdedit /timeout 30
再起動すると Windows と Linux が Windows のブートローダーに表示されているはずです。
詳細については https://www.iceflatline.com/2009/09/how-to-dual-boot-windows-7-and-linux-using-bcdedit/ をご覧ください。
UEFI システム
既に Windows がインストールされている場合、GPT でフォーマットされたディスクにはいくつかのパーティションがすでに作成されています。
- Windows 回復環境パーティション。一般的に 499 MiB で、Windows の起動に必要なファイルが含まれます(例えば、Linux の
/boot
に相当します)。 - FAT32 ファイルシステムの EFI システムパーティション
- Microsoft 予約パーティション。一般的に 128 MiB。
- NTFS ファイルシステムの Microsoft basic data パーティション。
C:
に対応します。 - もしかすると、システム回復用かバックアップ用のパーティションや他のデータパーティション(
D:
などに対応)もあるかもしれません。
Windows の「ディスクの管理」ユーティリティを使って、パーティションのラベルやタイプを調べられます。これは、どのパーティションが Windows に必須で、どのパーティションを再利用できるかを理解する助けになります。Windows の「ディスクの管理」ユーティリティは Windows の(NTFS)パーティションを縮小するのにも利用できます。これで Linux パーティション用の空き領域を作ることができます。
そしたら、必要に応じてパーティショニングの作業に移れます。
追加の EFI システムパーティションは作成すべきでないことに注意してください。作成すると Windows が起動できなくなるかもしれません。単にすでにある EFI システムパーティションをマウントしてください。
Windows と Linux をデュアルブートするには、使用するブートローダーは他の EFI アプリケーションのチェインロードをサポートしている必要があります。
新しいバージョンの Windows を搭載しているコンピュータではしばしばセキュアブートが有効化されています。セキュアブートを無効化するかインストールメディアをセキュアブートに対応させるには追加の手順を踏む必要があります(このページの上の部分に行ってリンクページを見てください)。
Windows の前に Linux をインストール
Linux/Windows をデュアルブートするには Windows からインストールするのが推奨されますが、逆に Linux からインストールすることも可能です。Linux の前に Windows をインストールする場合とは対照的に、Windows 用のパーティションを(例えば40GB以上)確保しておく必要があります。あるいは、パーティショニングされていないディスク領域を用意しておいたり、Windows のインストール前に Linux から Windows 用のパーティションを作成しリサイズしておく必要があります。
UEFI ファームウェア
Windows はすでに存在しているEFI システムパーティションを使用します。#UEFI システムでの話とは対照的に、Windows 用のパーティション一つのみで、Windows 回復環境やMicrosoft 予約パーティションがない場合にうまく行くかどうかは不明です。
ファームウェアでセキュアブートが無効になっていることを前提として概要に移ります。
- Windows インストーラーを起動してください。意図したパーティションのみを使用させるように注意してください。それ以外は Linux がインストールされていないかのように動作させてください。
- #高速スタートアップとハイバネートセクションに従ってください。
- 起動時に Linux をロードできるように修正してください。おそらく、#Windows をインストールしたら Linux が起動できなくなったに従えばできます。#UEFI システムで言及されているように、一部の Linux ブートマネージャーは Windows Boot Manager を自動検出します。新しい Windows インストーラーには高度な再起動オプションがあり、それを使って Linux を起動できます。しかし、Arch インストールメディアや live CD などの Linux を起動するには別の方法を取ることを推奨します。
GRUB で Windows 10 を起動
以下ではブートローダーとして GRUB が使用されていることを前提とします(ですが、他のブートローダーの場合でも手順は似ているでしょう)。また、EFI システムパーティションがすでにある GPT ブロックデバイス上に Windows 10 がインストールされるとします(さらなる情報については、Microsoft documentation の "System partition" セクションをご覧ください)。
gdisk
を使ってブロックデバイス上に以下の3つのパーティションを新しく作成してください。より正確なパーティションサイズは[5]をご覧ください。
最小サイズ | コード | 名前 | ファイルシステム |
---|---|---|---|
16 MB | 0C01 | Microsoft reserved | N/A |
~40 GB | 0700 | Microsoft basic data | NTFS |
300 MB | 2700 | Windows RE | NTFS |
ntfs-3g パッケージに含まれる mkntfs プログラムを使って、NTFS ファイルシステムを新しい Microsoft basic data パーティション上と Windows RE (recovery) パーティション上に作成してください。
システムを再起動し、Windows 10 インストールメディアを起動してください。インストール画面が表示されたら、カスタムインストールオプションを選び、先ほど作成した Microsoft basic data パーティション上に Windows をインストールしてください。これで EFI パーティション上に Microsoft EFI ファイルもインストールされるはずです。
インストール後は(Windows のセットアップとログインは必要ありません)、再起動して Linux を起動し、GRUB の設定ファイルを生成して、GRUB のブートメニューから Windows ブートマネージャーを利用できるようにしてください。
トラブルシューティング
Couldn't create a new partition or locate an existing one
Windows 8.1 のインストール USB スティックは MBR パーティションテーブルを必要としており、存在しない場合、パーティションは作成されるのにかかわらず、"Couldn't create a new partition or locate an existing one" と出力されます。
Windows をインストールしたら Linux が起動できなくなった
UEFI#Windows によってブート順序が変わってしまうを見てください。
Windows のブートレコードの修復
習慣的に、Windows は1番目のパーティションにインストールされ、パーティションの1番目のセクタにパーティションテーブルとブートローダーの位置がインストールされることになっています。間違えて GRUB などのブートローダーを Windows のパーティションにインストールしてしまったなど何らかの理由でブートレコードを破損した場合は、ユーティリティを使用して修復する必要があります。Microsoft はリカバリディスクの中にブートセクタの修復ユーティリティである FIXBOOT
と MBR の修復ユーティリティである FIXMBR
を用意しています。インストールディスクから使うことが出来る場合もあります。修復できたら、本来のとおりに MBR に GRUB を再インストールしてください。
Windows が使用できるように戻したい場合、FIXBOOT
コマンドを使うことで Windows オペレーティングシステムが自動的にロードされるようにすることができます。
また、ms-sysAUR という Linux ユーティリティも存在します。ただし、このユーティリティが書き込むことができるのは新しい MBR とブートセクタだけです。ほとんどの LiveCD にはユーティリティがデフォルトでは含まれていないため、あらかじめインストールするか、Parted Magic などのようなレスキュー CD が必要です。
まず、パーティション情報 (パーティションテーブル) を書き出すには:
# ms-sys --partition /dev/sda1
次に Windows 2000/XP/2003 の MBR を書き出すには:
# ms-sys --mbr /dev/sda # Read options for different versions
そして、新しいブートセクタ (ブートレコード) を書き出すには:
# ms-sys -(1-6) # Read options to discover the correct FAT record type
ms-sys
が書き出すことができるのは Windows 98, ME, Vista, 7 の MBR です。詳しくは ms-sys -h
を見てください。
Windows Setup によって作成された EFI システムパーティションが小さすぎる
Windows Setup は 100 MiB の EFI システムパーティションを作成します(ただし、Advanced Format の 4K ネイティブドライブには 300 MiB の ESP が作成されます)。一般的に、このサイズは必要なものを格納するには小さすぎます。ESP をリサイズするには様々なツールを試せますが、たいてい他のパーティションが邪魔をするので難しくなります。選択肢の一つは、Windows をインストールする前に Arch インストールメディアを使って EFI システムパーティション をお好みのサイズで作成することです。Windows Setup がその EFI システムパーティションを使ってくれます。
時刻系
- 推奨: Arch Linux と Windows のどちらも UTC に設定します。簡単なレジストリの修正が必要です。また、Windows のバージョンによっては、ハードウェアクロックが localtime にデフォルトで戻るため、Windows がオンラインで時間の同期をすることができなくなります。時刻あわせ (NTP sync) をしたいときは、Arch Linux 側で ntpd を使うのが好ましいです。ただしこの問題は Windows 10 では修正されています。
- 非推奨: Arch Linux を localtime に設定して NTPd のような時刻関係のサービスを無効にします。こうするとハードウェアクロックの修正の面倒を Windows に押し付けることになるので、一年に夏時間が入るときに少なくとも2回(春と秋に)は Windows を起動しないといけないことを覚えておく必要があります。Windows をしばらく起動しなかったら時計が1時間すすんだりおくれたりするのは何故?とフォーラムで聞くのはやめましょう。
Bluetooth ペアリング
Bluetooth デバイスを Linux と Windows の両方でペアリングする場合、両方のシステムは同じ MAC アドレスを持ちますが、ペアリング処理で生成された異なるリンクキーを使用します。その結果、一方の OS にペアリングすると、もう一方の OS からの接続が切断されます。再ペアリングせずにどちらの OS からも接続できるようにするには、Bluetooth#デュアルブートペアリングに従ってください。