
私は、ラップトップに Windows と Linux をデュアル ブートでインストールするより簡単な方法を考え出そうとしてきましたが、必ずしもその順序に従う必要はありません。通常、最初に Windows をインストールし、次に Linux をインストールして、GRUB が Windows を処理できるようにします。
そこで私が達成しようとしているのは、その厄介なインストール プロセス (Windows) を回避し、イメージを使用してドライブに直接コピーする方法を見つけることです。これにより、ブート マネージャー (GRUB) を保持することもできます (後で復元できないわけではありませんが、独占するのが Microsoft のポリシーであり、この場合、システム内の他のブート マネージャーの存在を否定します)。
まず、Windows 8.1 の正規コピーを入手し、VirtualBox を使用して仮想マシンにインストールしました。次に、GPT パーティション ハード ドライブに NTFS パーティションを作成し、Windows パーティションの内容を .vdi イメージから新しく作成したパーティションにコピーしました。
もちろん、まだ動作しません。bootmgrを置き換える方法がわかりません。
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
起動やシステム回復などに使用される他のパーティションからそのファイルを見つけることができないためです。
さて、bootmgr は最終的に winload.exe を実行して Windows を起動すると読みました。次に何をすればいいのか全くわかりません。
Windows を実行するために必要なファイルはすべて揃っているので、理論的には動作するはずです。また、これを思いついたのは私だけではないはずなので、ここでは非常に基本的なことを見逃している可能性があります。すでに実行されているのでしょうか?
ブートの仕組みについてはほとんどわかりません。私が理解できたのは、Windows と Linux をデュアルブートする場合、Windows ブートローダーを Linux のブートローダーに連結するということです。つまり、私が実現しようとしているのは、Windows ブートローダーを何とかして取り除くことです。
編集
私はバイナリ ファイルを調べてきましたbootmgr
が、\Boot\BCD
BCDbootmgr
ファイルを読み取り、オプションを一覧表示します。その中から起動先を選択できます。
したがって、実行などの情報はwinload.exe
BCD ファイルに存在します。現在、モジュールbootmgr
を使用して syslinux によって実行されると考えていますchain.c32
。私がやろうとしているのは、何らかの方法で Windows ブートローダーを実行することです。つまり、syslinux から直接実行するか(可能な場合)、BCD などを検索せずに、(パスが実行可能ファイルに直接含まれる)それ自体が実行されるようにwinload.exe
変更することです。bootmgr
winload.exe
bootmgr
このステップでは、休止状態(別の手順が必要)は問題になりません。
質問を編集して、ファームウェアの種類と、(EFI の場合)ファームウェアの設定で互換性サポート モジュールを有効にしたかどうかをお知らせください。
私のファームウェアは EFI (CSM が有効) で、通常は GRUB を使用して Arch Linux を起動します。レガシー システムとEFI でbootmgr
実行できることを発見しました。System32\winload.exe
System32\winload.efi
ここから何をすべきかはわかっています0.0
。過去 10 日間、BCD に変更を加えようとしてきましたが、もうすぐ成功しそうです。しかし、それは無関係です。私が本当にやりたいのは、Windows ブート マネージャーを完全にバイパスすることだからです。
EFI シェルからそれを実行する方法があるかどうかwinload.efi
(単なる推測)、またはチェーンローダーなしで EFI モードで Windows を起動するように GRUB に他の変更を加える方法があるかどうか、ご存じであれば教えてください。
アドバイスがあれば歓迎します。
補遺
次のフォーラム投稿は役に立つ情報を提供するかもしれません:
http://reboot.pro/topic/19371-チェーンロード-直接winloadexe/
1.
grub4dos は現在、ブートローダ (NTLDR や BOOTMGR など) をチェーンロードできます。これは、"通常の" ブートセクタ (つまり、300 バイト程度のマシン コード) に含まれるコードの置き換えとして機能できるためです。
このコードは、いくつかのパラメータを設定し、ローダーを呼び出すだけです。
それさえも、理解して別のコードで再現するのはまったく簡単ではありませんでした。
BOOTMGR のような NT システム ローダーには、単一の .exe 内に「リアル モード」オペレーティング システム (DOS とまったく同じではありません) と、プレーン テキストとレジストリ ハイブの両方を解析する機能/ツールがほぼ含まれていますが、簡単に最初から書き直すことはできません。
@ReactOS の優秀な人たちは、何年も前から FREELDR (はるかにシンプルな NTLDR の代替となることを目指しています) の作成に取り組んでいます (そして、ReactOS プログラマーの中には、本当に優秀で、その点が優れた人たちが何人かいることを信じてください)。
それ思われる(ただし、明確に文書化されていません) NTLDR を使用して Server 2003 を実験的に起動することに成功しました。
2.
(U)EFI のサポートが導入されたことで、BootMgr は BIOS と (U)EFI の違いを抽象化するのに役立ちます。たとえば、次の 2 つのシーケンスがあります。
BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows 64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> Windows
WinLoad は、特定の環境 (API を含む) が存在することを想定しています。BootMgr がこれを処理するため、どちらの環境でも [ほぼ] 同じ WinLoad プログラムが動作します。
実際、(U)EFI はブート パラメータを保存および取得する方法を定義しているため、BIOS/(U)EFI に関係なく、BootMgr の BCD は同じ目的をカバーします。
しかし、BIOS と (U)EFI の違いを超えて、BootMgr では「ブート選択」を行うことができますが、WinLoad では起動方法がわかっている特定のオペレーティング システムを起動します。
WinLoad がどの程度の環境を期待しているかによって、WinLoad を直接呼び出すことができるかもしれません。Michael Brown の wimboot は BootMgr PE[1] を直接呼び出すので、WinLoad を直接呼び出すことができますが、WinLoad はおそらくもっと多くの環境を必要とします。試してみる価値はあるでしょう。
[1] GRUB4DOS と Syslinux の chain.c32 が呼び出すことができる BootMgr と混同しないでください。その BootMgr には、埋め込まれた BootMgr PE を呼び出す方法を知っているスタブが含まれています。
答え1
元の質問にお答えすると、いいえです。Windows は、独自のブートローダー (UEFI インストールの場合は bootmgfw.efi) を経由せずにロードすることはできません。これは、Windows がブートマネージャーが存在し、winload.efi を呼び出すことを期待しているためです。これが行われない場合、問題を修正するまで Windows はクラッシュします。これには多くの理由があります (実際的なものも無知なものも)。ほとんどの場合、Microsoft はブートマネージャーを、すべての処理 (OS のロード、回復環境のロード、疑似プレ OS 環境など) を処理するように作成したためです。現在、何らかの健全性を実現する唯一の方法は、Grub-efi を使用してチェーン ロードすることです。
答え2
UEFI ファームウェアのブート オプションのリストに Windows EFI ブートローダーを追加する必要があります。これにより、次のオプションを選択できるようになります。
- GRUB2をロードするか、
- Windowsブートローダーがロードされるはずです
DVDドライブ、外付けハードドライブ、ネットワークブートなどの追加オプションもその時点で表示されます。UEFIブートローダは通常、\EFI
(/boot/efi/
)パーティションにあります。Windowsを適切にインストールせずにWindowsハードドライブイメージをコピーしただけなので、現在のマシンのEFIパーティションには適切なブートローダが含まれていない可能性があります。そのため、
- ブートローダーをEFIパーティションにコピーする
- GRUB2とともにWindowsをブートオプションとして追加する
その後、BIOS でブート順序を変更するだけで、どの OS を起動するかを選択できるようになります。私のラップトップでは、 を押すと、F12ロードするブートローダーを選択するためのメニューが表示されます。
これらの手順では、efibootmgr
そして、このチュートリアル:
対応するファイルをbootmgfw.efi
の EFI パーティションにコピーする必要があります。Linux を使用している場合は\EFI\Microsoft\Boot\bootmgfw.efi
、次のようになります。/boot/efi/Microsoft/Boot/bootmgfw.efi
# mkdir -p /boot/efi/EFI/Microsoft
# cp -r Microsoft /boot/efi/EFI/Microsoft
はMicrosoft
、Windows バージョンの元の EFI ファイルを含むフォルダーです。
.efi
次に、次のコマンドを使用して、UEFI ブート エントリにファイルを追加する必要があります。
# efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\Microsoft\\Boot\\bootmgfw.efi -L "Windows Boot Manager"
もちろん、ディスク デバイスとパーティション番号を正しい値に/dev/sda
変更する必要があります。-p 1
Lenovo ラップトップをお持ちの場合は、次の点に注意してください。
また、少なくとも 1 つの製造元 (Lenovo) は、ブートローダーの名前が「Windows Boot Manager」または「Red Hat Enterprise Linux」のいずれかでないとシステムが起動を拒否するという既知のバグのある製品を出荷していることにも注意してください。
PC を起動すると、次のような画面が表示されます (起動プロセス中に対応するキーを押し続けた場合)。
Windows Boot Manager
ubuntu
USB CD
USB FDD
ATAPI CD
ATA HDD2
(etc.)
bcdedit
Windows では次のように表示されます:
C:\WINDOWS\system32>bcdedit /enum firmware
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{bb086763-b111-11e2-bf8e-806e6f6e6963}
{8e7fb978-8bc8-11e2-bf2f-806e6f6e6963}
timeout 0
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-US
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {ec215a09-8bc4-11e2-bf2b-0024d7eb75a4}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 2
(...)
Firmware Application (101fffff)
-------------------------------
identifier {bb086763-b111-11e2-bf8e-806e6f6e6963}
device partition=\Device\HarddiskVolume2
path \EFI\ubuntu\grubx64.efi
description ubuntu
答え3
インストールは任意の順序で実行できます。つまり、GNU/Linux をインストールしてから Windows をインストールすることも、その逆も可能です。
すべてのオペレーティング システムをインストールしたら、次の操作を実行してください。
ここから「ブート修復ディスク」を入手してください。http://sourceforge.net/projects/boot-repair-cd/
ライブ ブート可能な USB ペンドライブを作成します (手順は pendrivelinux.com を参照)
または、ISO ファイルを CD に書き込みます。
これを介して起動し、画面の指示に従います。インストールしたすべてのオペレーティング システムを含む再インストールされた GRUB が作成されます。
ではごきげんよう。