web-dev-qa-db-ja.com

独自のブートマネージャーなしでWindows8.1を起動することは可能ですか?

私は自分のラップトップにWindowsとLinuxのデュアルブートをインストールする簡単な方法を考え出そうとしてきましたが、必ずしもその順序である必要はありません。一般的に行う必要があるのは、最初にWindowsをインストールしてから、Linuxをインストールし、GRUBがWindowsを処理できるようにすることです。

したがって、私が達成しようとしているのは、その厄介なインストールプロセス(Windows)をバイパスし、イメージを使用してドライブに直接コピーする方法を見つけることです。これにより、ブートマネージャー(GRUB)を保持することもできます。 (後で復元できないわけではありませんが、独占するのはMicrosoftのポリシーです。この場合、システム内の他のブートマネージャーの存在を拒否します)。

最初にWindows8.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を見てきました。 bootmgrはBCDファイルを読み取り、オプションを一覧表示します。その中から起動するように選択できます。

したがって、winload.exeの実行などの情報はBCDファイルにあります。さて、bootmgr自体はchain.c32モジュールを使用してsyslinuxによって実行されると思います。私がやろうとしているのは、どういうわけかWindowsブートローダーを実行することです。つまり、syslinuxから直接winload.exeを実行するか(可能な場合)、bootmgrを変更してwinload.exe自体を実行します(パスはbootmgr実行可能ファイルで直接)BCDやその他のものを探す必要はありません。

このステップでは、休止状態(別の手順が必要)は気になりません。

質問を編集して、ファームウェアの種類と、(EFIの場合)ファームウェアのセットアップで互換性サポートモジュールを有効にしているかどうかをお知らせください

私のファームウェアはEFI(CSMが有効)であり、通常はGRUBを使用してArchLinuxを起動します。 bootmgrがレガシーシステムでSystem32\winload.exeを実行し、EFIでSystem32\winload.efiを実行することを発見しました。

ここから何をすべきかについて0.0のアイデアがあります。過去10日間、私はBCDに変更を加えようとしてきましたが、もうすぐ成功すると思います。しかし、私が本当にやりたいのはWindows Boot Managerを完全にバイパスすることなので、それは関係ありません。

EFIシェルからそのwinload.efiを実行する方法があるかどうか(推測)、またはGRUB)でWindowsを起動するように他の変更を加える方法があるかどうかがわかります。チェーンローダーなしのEFIモード。

アドバイスは大歓迎です。

補遺

次のフォーラム投稿は、いくつかの有用な洞察を提供する可能性があります。

http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/

1.1。

Grub4dosは、「通常の」ブートセクターに含まれるコード(つまり、300バイトのマシンコードなど)の代わりとして機能できるため、現在、ブートローダー(NTLDRやBOOTMGRなど)をチェーンロードできます。

このコードは、いくつかのパラメーターを設定してから、ローダーを呼び出すだけです。

それでも、別のコードで理解して複製するのは簡単ではありませんでした。

BOOTMGRのようなNTシステムローダーは、単一の.exeに多かれ少なかれ「リアルモード」オペレーティングシステム(DOSと完全に異なるわけではありません)と、プレーンテキストとレジストリハイブの両方を解析するための機能/ツールを備えています。ゼロから簡単に書くことができます。

善良な人たち@ReactOSは、何年もの間、FREELDR(はるかに単純なNTLDRの代わりになることを目指しています)の作成に取り組んでいます(そして、ReactOSプログラマーの中には本当に上手で上手な人がいると信じています)。

彼らはNTLDRを使用してServer2003を実験的に起動できたようです(ただし、明確に文書化されていません)。

2.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はブートパラメータを保存およびフェッチする方法を定義しているため、BootMgrのBCDは、BIOS /(U)EFIに関係なく、同じ目的をカバーします。

ただし、BIOSと(U)EFIの違いを超えて、BootMgrでは「起動の選択」を行うことができますが、WinLoadは起動方法を知っている特定のオペレーティングシステムを起動します。

WinLoadが存在すると予想される環境の量によっては、WinLoadを直接呼び出すことができる場合があります。 MichaelBrownのwimbootはBootMgrPE [1]を直接呼び出すため、WinLoadがより多くの環境を必要とする場合を除いて、WinLoadを直接呼び出すことができます。あなたはそれを試すことができます!

[1] GRUB4DOSおよびSyslinuxのchain.c32が呼び出すことができるBootMgrと混同しないでください。そのBootMgrには、埋め込まれたBootMgrPEを呼び出す方法を知っているスタブが含まれています。

10
osolmaz

あなたの元の質問に答えるために、いいえ。 Windowsは、独自のブートローダー(UEFIインストールの場合はbootmgfw.efi)を経由せずにロードすることはできません。これは、Windowsがbootmanagerが存在し、winload.efiを呼び出すことを想定しているためです。それが起こらない場合は、問題を修正するまでWindowsがクラッシュします。これには多くの理由があります(実用的で無知です)。ほとんどの場合、Microsoftがすべてのもの(OSのロード、回復環境のロード、疑似pre-os環境など)を処理するためにブートマネージャーを作成したためです。現在、健全性の類似性を実現する唯一の方法は、Grub-efiを使用してロードをチェーンすることです。

5
ChrisR.

UEFIファームウェアのブートオプションのリストにWindowsEFIブートローダーを追加する必要があります。そうすれば、次のいずれかを選択できます。

  1. GRUB2をロードするか、
  2. windowsブートローダーをロードする必要があります

その時点で、DVDドライブ、外付けハードドライブ、ネットワークブートなどの追加オプションも表示されます。 UEFIブートローダーは通常、\EFI/boot/efi/)パーティションにあります。 Windowsを正しくインストールせずにWindowsハードドライブイメージをコピーしたばかりなので、現在のマシンのEFIパーティションに適切なブートローダーが含まれていない可能性があります。したがって、

  1. ブートローダーをEFIパーティションにコピーします
  2. GRUB2と一緒にブートオプションとしてWindowsを追加します

その後、BIOSで起動順序を変更するだけで、起動するOSを選択できるようになります。私のラップトップで、 F12 ロードするブートローダーを選択するためのメニューが表示されます。

これらの手順では、 efibootmgr を使用し、 このチュートリアル の手順に従います。

Linuxを使用している場合は、対応するファイルbootmgfw.efi\EFI\Microsoft\Boot\bootmgfw.efiまたは/boot/efi/Microsoft/Boot/bootmgfw.efiの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)が、ブートローダーの名前が「WindowsBootManager」または「RedHatEnterprise Linux」でない限り、システムが起動を拒否する既知のバグのある製品を出荷していることに注意してください。

PCを起動すると、次のように表示されます(起動プロセス中に対応するキーを押したままにした場合)。

Windows Boot Manager
ubuntu
USB CD
USB FDD
ATAPI CD
ATA HDD2

(etc.)

windowsのbcdeditはこれを示しています:

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
2
jmiserez

インストールは任意の順序で実行できます。つまり、GNU/Linuxをインストールしてから、Windowsをインストールするか、その逆です。

すべてのオペレーティングシステムをインストールした後、次の手順を実行してください。

  1. ここから「ブート修復ディスク」を入手してください。 http://sourceforge.net/projects/boot-repair-cd/

  2. そのライブブータブルUSBペンドライブを作成します(pendrivelinux.comの手順)

  3. または、ISOファイルをCDに書き込みます。

  4. これを起動して、画面の指示に従います。インストールされているすべてのオペレーティングシステムを含むGRUB)が再インストールされます。

ではごきげんよう。

0
Raju Devidas