「Windows とのデュアルブート」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「[[zh-cn:」を「[[zh-hans:」に置換) |
Kusanaginoturugi (トーク | 投稿記録) 細 (→Windows の UEFI と BIOS の制限: 用語を日本語版Windowsのものに修正) |
||
32行目: | 32行目: | ||
* Win キーを押しながら 'R' で起動ダイアログを開く |
* Win キーを押しながら 'R' で起動ダイアログを開く |
||
* 起動ダイアログに "msinfo32" と入力してエンター |
* 起動ダイアログに "msinfo32" と入力してエンター |
||
− | * ''' |
+ | * '''システム情報''' から左側の '''システムの要約''' を選択して右の '''BIOS モード''' の値を確認 |
* 値が '''UEFI''' であれば、Windows は UEFI-GPT モードで起動しています。値が '''Legacy''' の場合、Windows は BIOS-MBR モードで起動しています。 |
* 値が '''UEFI''' であれば、Windows は UEFI-GPT モードで起動しています。値が '''Legacy''' の場合、Windows は BIOS-MBR モードで起動しています。 |
||
2017年3月9日 (木) 12:31時点における版
この記事では Arch と Windows を共存させる方法を簡単に説明しています。
重要情報
Windows の UEFI と BIOS の制限
Microsoft は Windows のバージョンによって使用できるファームウェアのブートモードとパーティションスタイルを制限しています:
- Windows XP は x86 32ビット版と x86_64 (別名 x64) の両方とも UEFI モードによる起動や 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 版のみ)。
- Windows Vista (SP1 以上) と 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 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 x86_64 は GPT ディスクからの x86_64 UEFI モードによる起動、あるいは MBR/msdos ディスクからの BIOS モードの起動をサポートしています。IA32 UEFI ブート、MBR/msdos ディスクからの x86_64 UEFI ブート、GPT ディスクからの BIOS ブートなどには対応していません。
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 がプリインストールされたマシンは全て UEFI-GPT モードで起動します。ファームウェアのビット数は Windows のビット数と一致します。例えば x86_64 の Windows 8/8.1 は x86_64 UEFI モードで起動し32ビットの Windows 8/8.1 は 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 をインストールする公式の方法はありません。したがって Windows は UEFI-GPT あるいは BIOS-MBR しかサポートしていません。
Linux カーネルにはそのような制限はありませんが、使用するブートローダーやその設定方法が変わってきます。Windows と Linux を同一のディスクからデュアルブートする場合、注意が必要です。出来る限り、Windows が使用する方法、つまり UEFI-GPT あるいは BIOS-MBR ブートにあわせることを推奨します。詳しくは http://support.microsoft.com/kb/2581408 を見てください。
インストールメディアの制限
Intel Atom System-on-Chip タブレット (Clover Trail と Bay Trail) は Microsoft による OEM 向けのコネクテッドスタンバイガイドラインによれば、レガシーな BIOS (CSM) はサポートしておらず IA32 UEFI ファームウェアしか用意されていません。Arch の公式インストール ISO または Archboot の ISO では32ビットの UEFI ブートができないため (2014年4月現在)、Windows 8/8/1 の32ビット版がプリインストールされた Atom SoC タブレットではインストールメディアが起動しません。
ブートローダーの 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 を起動できます。
UEFI Secure Boot
Windows 8/8.1 がプリインストールされている場合、デフォルトで UEFI-GPT モードで起動するようになっており UEFI Secure Boot が有効になっています。これは全ての OEM プリインストールで Microsoft によって強制されています。
Arch Linux のインストールメディアは現在 Secure Boot をサポートしています。セキュアブート#archiso の起動を見てください。
Arch Linux を起動する前に UEFI Secure Boot を無効化することが推奨されます。Secure Boot を無効にしても Windows 8/8.1 は問題なく起動できます。UEFI Secure Boot のサポートを無効化するには物理的にコンピュータにアクセスして、ファームウェアの設定で Secure Boot オプションを無効化する必要があるというのが唯一の問題です。Microsoft はリモートで、またはプログラムを使って Secure Boot を無効化する方法を一切認めていません。
高速スタートアップ
Windows 8 以上には高速スタートアップという新しい機能が含まれており、シャットダウンを実際に行う代わりにハイバネートをすることで起動時間を短縮します。Windows がハイバネートを行なっているときに、他の OS にデュアルブートしてファイルに変更を加えてしまうと、ファイルシステムのデータを消失してしまう可能性があります。ファイルシステムを共有する予定がない場合でも、EFI 環境では ESP が破壊されるおそれが存在します。従って、Windows 8 を使っているコンピュータでは、Linux をインストールする前に [2] (Windows 8 の場合) や [3] (Windows 10 の場合) に記述されているようにして高速スタートアップを無効にしてください。
ハイバネートされたディスクを読み書きでマウントすることを防ぐセーフガードが NTFS-3G には追加されています が、Linux カーネルの NTFS ドライバーにはそうしたセーフガードが存在しません。
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 が作成されます。
BIOS 環境
Linux のブートローダーを使う
GRUB もしくは Syslinux を使うことができます。
Windows のブートローダーを使う
このセットアップの場合 Windows のブートローダーが GRUB を読み込んでから Arch を起動します。
Windows 7/8/8.1 のブートローダー
以下のセクションには http://www.iceflatline.com/2009/09/how-to-dual-boot-windows-7-and-linux-using-bcdedit/ からの引用が含まれています。
他の設定は通常のインストールと変わりありません。ドキュメントによっては Windows のブートローダーによってロードされるパーティションはプライマリパーティションでなければならないと言及していますが、拡張パーティションも問題なく使用できます。
- GRUB ブートローダーをインストールする際に、MBR ではなく
/boot
パーティションにインストールしてください。
- Linux 下でコマンドシェルに以下を入力してブート情報のコピーを取って下さい:
my_windows_part=/dev/sda3 my_boot_part=/dev/sda5 mkdir /media/win mount $my_windows_part /media/win dd if=$my_boot_part of=/media/win/linux.bin bs=512 count=1
- Windows を起動して下さい、FAT32 パーティションが見えているはずです。linux.bin ファイルを
C:\
にコピーして下さい。そして管理者権限で cmd を実行します (スタート > 全てのプログラム > アクセサリ から コマンドプロンプト を右クリックして 管理者として実行 を選択):
bcdedit /create /d “Linux” /application BOOTSECTOR
- BCDEdit はエントリの英数字による識別子を返します。以下、それを {ID} と称します。{ID} を実際に表示された識別子で置き換えてください。例えば {ID} は {d7294d4e-9837-11de-99ac-f3f3a79e3e93} などとなります。
bcdedit /set {ID} device partition=c: bcdedit /set {ID} path \linux.bin bcdedit /displayorder {ID} /addlast bcdedit /timeout 30
再起動して下さい。Windows のブートローダーを使うことにより、例えば Dell Precision M4500 の二番目の電源ボタンを Windows の代わりに Linux を起動するようにすることができます。
Windows 2000/XP のブートローダー
こちらの方法については http://www.geocities.com/epark/linux/grub-w2k-HOWTO.html を見て下さい。おそらく Linux ブートローダーを使わずにこの方法を使うはっきりとした利点はありません。/boot
パーティションが必要で、おそらく設定の難易度は上がります。
UEFI 環境
既に Windows がインストールされている場合、以下のようなパーティションが既に存在します (GPT によってフォーマットされたディスクの場合):
- タイプが
ef00 EFI System
でファイルシステムがFAT32
のパーティション - タイプが
0c01 Microsoft reserved
で容量が128 MiB
のパーティション - タイプが
0700 Microsoft basic data
でファイルシステムがNTFS
のパーティション (C:\
) - システムリカバリやバックアップ用のパーティションあるいはデータ用のセカンダリパーティション (
D:\
以上)
Windows の Disk Management ユーティリティを使用して、パーティションのラベルやタイプを確認してください。Windows にとってどのパーティションが重要で、どのパーティションを再利用できるかを知る助けになるはずです。上記の最初の3つのパーティションは重要なパーティションなので、削除してはいけません。
確認したら必要に応じてパーティショニングを行ってください。EFI システムパーティションは既に存在するため追加する必要はありません。/boot
にマウントしてブートローダーをインストールしたら /etc/fstab
にエントリを保存してください。
ブートローダーについては、systemd-boot と rEFInd はどちらも Windows Boot Manager \EFI\Microsoft\Boot\bootmgfw.efi
を自動で検出してブートメニューに表示します。そのため手動の設定は必要ありません。GRUB(2) の場合 GRUB#UEFI-GPT モードでインストールされた Windows のメニューエントリ に従って下さい。Syslinux (バージョン 6.02 と 6.03-pre9) や ELILO は他の EFI アプリケーションのチェインロードをサポートしていないため、\EFI\Microsoft\Boot\bootmgfw.efi
をチェインロードするのに使うことはできません。
新しいバージョンの Windows が入っているコンピュータではセキュアブートが有効になっていることがあります。Secure Boot を無効にするか、インストールメディアを Secure Boot に対応させるかのどちらかの作業をする必要があります。
トラブルシューティング
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
を見てください。
時刻系
- 推奨: Arch Linux と Windows のどちらも UTC に設定します。簡単なレジストリの修正が必要です。また、ハードウェアクロックが localtime にデフォルトで戻るため、Windows がオンラインで時間の同期をすることができなくなります。時刻あわせ (NTP sync) をしたいときは、Arch Linux 側で ntpd を使うのが好ましいです。
- 非推奨: Arch Linux を localtime に設定して NTPd のような時刻関係のサービスを無効にします。こうするとハードウェアクロックの修正の面倒を Windows に押し付けることになるので、一年に夏時間が入るときに少なくとも2回(春と秋に)は Windows を起動しないといけないことを覚えておく必要があります。Windows をしばらく起動しなかったら時計が1時間すすんだりおくれたりするのは何故?とフォーラムで聞くのはやめましょう。