web-dev-qa-db-ja.com

BCDEditを使用してWindowsインストールをデュアルブートする方法

Windowsの異なるインストール間でデュアルブートをセットアップするために必要なbcdeditコマンドは何ですか?5

バックグラウンド

最近、Windows 8を別のハードドライブにインストールしました1。 Windows 8がインストールされたので、デュアルブートでWindows 7に戻ります。

私は2つ持っています2 ハードドライブ:

Windows partition manager screenshot

そのため、Windowsを含むパーティションを持つ2つのディスクがあることがわかります。

  • Windows 7\\PhysicalDisk0(パーティション03
  • Windows 8\\PhysicalDisk2(パーティション1)

私がどのように理解しようとしているのは、bcdeditを使用して、Windowsを起動するものに別のWindowsインストールがあることを指示する方法です。

ここでbcdeditを実行すると、現在の構成が表示されます。

C:\WINDOWS\system32>bcdedit

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
integrityservices       Enable
default                 {current}
resumeobject            {ce153eb7-3786-11e2-87c0-e740e123299f}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \WINDOWS\system32\winload.exe
description             Windows 8
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {ce153eb9-3786-11e2-87c0-e740e123299f}
integrityservices       Enable
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \WINDOWS
resumeobject            {ce153eb7-3786-11e2-87c0-e740e123299f}
nx                      OptIn
bootmenupolicy          Standard
hypervisorlaunchtype    Auto

WindowsブートマネージャーWindowsブートローダーの違いについて ドキュメント が見つかりません

ドキュメンテーション

Bcdeditにはいくつかのドキュメントがあります。

ただし、バイナリブート構成データの編集方法については説明しません。

guessをしなければならなかった場合、Windows Boot ManagerはBIOSに何を指示するかprogram実行する必要があります。そのプログラムは、ユーザーにブートの選択肢を提供します。 Windowsブートローダーは、特定のブートchoiceになります。 Windowsの特定のインストール。

その場合は、新しいWindowsブートローダーエントリを作成する必要があります。

これは、/createパラメーターを使用する場合があることを意味します。

/作成

新しいブートエントリを作成します。

bcdedit[/storefilename] /create[id] /d description[/application apptype| /inherit[apptype] | /デバイスの継承| /device]

だから私は次の構文を想定しています:

>bcdedit /create /d "The old Windows 7" /application osloader

applicationは次のタイプのいずれかです。

Apptype     Description
BOOTSECTOR  The boot sector application
OSLOADER    The Windows boot loader
RESUME      A resume application

残念ながら、osloaderに関する唯一のドキュメントは "The Windows boot loader"です。私はそれが1台のハードドライブ上のWindows 8Windows 7別の。

/createがブートローダーである場合のその他の可能なパラメーター

>bcdedit /create /D "Windows Vista" /device "The Quick Brown Fox"

残念ながら、/deviceのドキュメントはありません:

/デバイス

オプション。 idが既知の識別子に設定されていない場合、新しいブートエントリを追加のデバイスオプションエントリとして指定するために使用されるオプション。

idを既知の識別子に設定しなかったため、/ device "に設定する必要があります新しいブートエントリを追加のデバイスオプションエントリとして指定するには」。私はそれらすべての言葉を知っています。彼らはすべて英語です。しかし、それが何を言っているのかわかりません。その順序でそれらの言葉は無意味に思えます。

だから私は幾分屈です。 BCDEditを使用しようとしてハードドライブを破壊したMicrosoftのダン・ストルツ

BCDEditで遊んでマシンにホースをかけたときに特に役立つコンテンツは見つかりませんでした。特に/ setコマンドのOSDeviceなどに詳細があれば、この投稿は大丈夫だったでしょう。したがって、マシンを修正したら、ソリューションを文書化し、情報は here ... です。

つまり、Microsoftの男がBCDEditを使用して自分のBCDを編集する方法すらわからない場合、どのようなチャンスがありますか?

ボーナスリーディング

脚注

  • 1 Windows 8インストーラーはWindows 7のインストールに損傷を与えるため、インストール中に "main"ハードドライブを取り外すことにしました。これは、Windows 8インストーラーが既存のWindows 7インストールを検出しなかったwhyの詳細な説明です。通常、インストーラーはデュアルブートに必要なエントリを自動的に作成します。私が質問している理由が重要であることではありません。
  • 2 本当に3つのドライブがありますが、3つ目は単なる大容量ストレージです。 3台目のハードドライブの存在は、問題とは無関係です。スクリーンショットに3つのハードドライブがある理由を誰かが知りたい場合にのみ言及しますが、2つしか言及していません。
  • 3  "zero"でパーティションの番号付けを勝手に開始しました。パーティションの番号がゼロから始まることを意味するものではありません。どのパーティション、およびWindowsのインストールがどのフォルダーにあるかを知らずにブートローダーがどのように機能するかがわからないため、パーティションについてのみ説明します。
  • 4 私はBCDEditについて尋ねています。私はVisual BCD Editorを試しました。それはvisualBCDエディターのようです。つまり、GUIですが、それでもBCDEditと同じ用語を使用しており、BCDが文書化していないのと同じ知識が必要です。
  • 5 簡単にするために、デュアルブートするWindowsのインストールはすべてWindows Vista以降であり、BCDEditおよびバイナリブートローダーと互換性があると仮定します。別の方法では、古いntloaderの複雑さを詳しく調べる必要があります。 Linuxのデュアルブートについても質問しません。または、仮想ハードドライブ(vhd)イメージから起動する方法。同じマシンの既存のハードドライブ上のWindowsの最新バージョン。
29
Ian Boyd

これは "Background"の前の質問に対する直接的な答えではありませんが、2つ(それ以上)のWindows Vistaとそれ以降のOSを起動するためのローダーエントリを作成するための代替解決策を示します。 ビジュアルBCDで使用される用語に関する批評家についての以下の私の2番目の答えも参照してください。

ガイド、デバイス、オブジェクト、要素、および何も、何も、何もしない。

私の経歴(興味がなければスキップして以下の解決策に進んでください):

Visual BCD Editorを実装しました。

実装プロセスの間、私はbcdeditとWMI BCDプロバイダインタフェース(プログラミングインタフェース、C++、C#で使用することができます)で利用可能なすべてのソースを読まなければなりませんでした。マイクロソフトからのドキュメントは本当に貧弱です。

BCDにはオブジェクト(ローダー、設定、デバイス要素)があります。依存関係があるにもかかわらず、オブジェクト間の接続についての文書はありません。

Windows 7にはBCDオブジェクトの140(!)要素(プロパティ)があります。私はいくつかの要素の意味を知りません - 単にドキュメントはありません。

Windows 8には新しい要素があります - 私は今総数が180(!!)に近づいていると思います。ドキュメンテーションはありません。

一方、BCDを操作するための2つの非常に強力なユーティリティがあります:bcdbootとreagentc。

bcdboot - デフォルトローダーもBCDとブート環境全体を作成/修正します。

reagentc - 修復環境のインストール/削除を行います(winre.wim)

どちらのツールもあまり文書化されていません。

代替案:

Windows Vista以降のWindows OS用のローダーを作成できるbcdbootのみを使用するので、bcdeditを使用する必要はほとんどありません。つまり、デュアル/マルチブートシステム用のブート環境を作成した最新のものよりも早いOS用のローダーを作成します。

あなたがWindows 8にいると仮定して:

1。 bcdboot f:\ windows(これは問題の画像のようにWindows 7に対応します)

2。 bcdboot c:\ windows(これはWindows 8にマップされます)

完了しました!

ブートプロセスに関するマイクロソフトの基本的なルール:ブート環境(およびBCD)は常に[最初のディスク+アクティブパーティション]にあるべきです。 (写真上 - ディスク2 => BIOS起動シーケンスの最初のディスク!)

最後になりましたが、MBRとPBR(マスタとパーティションのブートレコード)を書き込むためのbootsectユーティリティがあります。これはWindows 8で標準になりました(以前はWinREでのみ利用可能でした)。

そのため、bootsectとbcdbootのみを使用して、デュアルブートシステム用のすべてのブートエンティティを作成/修正できます。

Vista以降の起動プロセスは、Microsoft.comでも多くのインターネットサイトで非常によく説明されていると思います。

注:

Windows BCDに関する最高のサイトの1つは、 Geoff Chappellのサイト です。Microsoft.comよりも詳細な情報があります。興味のあるユーザーはそこに非常に有用な情報とbcdeditドキュメントに関するいくつかの重要なメモを見つけることができます。

16
snayob

Windowsを再インストールするようにC:ドライブをフォーマットしたときに、マスターブートレコードが削除され、Windows 7インストーラがそれを復元できませんでした。 Visual BCD EditツールのようなGUI bcdeditツールを使用できますが、bcdedit consolプログラムに簡単なコマンドを実行できるのに何かをインストールする必要があるのはなぜですか?多くのオンラインヘルプファイルを検索した後、私はbcdeditをあきらめて、ここで答えがdigressionsで埋められているのを見つけました。 2番目のパーティションのブートエントリを作成するには、bcdbootを使用する必要があります。

C:\ Windowsにいると仮定します。

1。 bcdboot e:\ windows

2。 bcdboot c:\ windows

再起動すると、Windows 7の2つのエントリを含むWindowsブートメニューが表示されます。C:\ Windowsで起動するエントリを選択した場合は、このパーティションのエントリの名前を次のように変更できます。

bcdedit/set {current}の説明 "Windows 7(Partition 1)"

これにより、起動時にOSが起動メニューのデフォルトエントリになります。

bcdedit/default {current}

これにより、起動時のデフォルトのOSが起動メニューの最初の項目になります。

bcdedit/displayorder {デフォルト}/addfirst

あるいは、起動時にOSを起動メニューの最初の項目にすることもできます。

bcdedit/dispalyorder {current}/addfirst

今すぐ再起動し、 "Windows 7"というラベルの付いたブートメニューの2番目の項目を選択します。 E:\ Windowsで起動したら、起動時に起動したOSの名前を変更します。

bcdedit/set {current}の説明 "Windows 7(Partition 2)"

ブートメニューが正常に動作することをテストし、OSがインストールされていないパーティションにbcdデータを保存します。

bcdedit/export D:\ Saved_BCD_Settings\SavedBCD

後で台無しにした場合は、次のコマンドでbcdブートメニューを復元できます。

bcdedit/import D:\ Saved_BCD_Settings\SavedBCD

9
Motorcycleboy

Microsoftがbcdeditに使用しているのと同じ用語をVisual BCDで使用することについての、元の質問での批評家に対するいくつかのメモ

BCDの概念はマイクロソフトによって開発されました。それはそれ自身の専門用語で来ます。私はそれを変えることができるとは思わない。私はそれを拡張することしかできません。

マイクロソフトは、BCDへのアクセス/編集に2つの方法を提供しています。

  1. bcdedit.exeを使用する - コマンドラインインターフェイス
  2. BCD WMIプロバイダインタフェース - プログラムインタフェース

どちらのインタフェースもBCDのオブジェクトと要素について話しています。これは、他の人間分野と同様にプログラミング/コンピュータでも使用されている一般的な概念です。私たちは、世界や宇宙を表現するために物、性質、関係の用語を使う哲学にさえ進むことができました。

BCD WMIプロバイダへのアクセスは、プログラマがBCD内のすべてのオブジェクトと要素にアクセスしてそれらを自由に操作できるようにするため、より柔軟です。

ビジュアルBCDは、BCD WMIプロバイダインタフェースをフルに活用し、regedit.exeを使用してWindowsレジストリにアクセスするのと同じ方法でアクセスを実装します。さらに、このツールは2つの主な作業を自動化します - ローダーの作成とデュアルブート修復このようなワンクリック自動機能を提供するツールは他にありません。私はこれが新しい用語と抽象の新しいレベルであると言うでしょう。マイクロソフトが作成した基本を変更することはせず、その上にのみ構築できます。

初心者ユーザーはボタンをクリックするだけで、複雑な操作が行われます。背景は必要ありません。 あなたがインストールしたWindowsのバージョンの数さえ知る必要はありません - 対応するローダーがまだBCDに存在しない場合、ツールはそれらすべてを見つけてそれらのローダーを作成しようとします - 使用されている用語 - "不足しているWindowsローダーを作成する" - 英語を話す人は誰でもそのような操作を理解/クリック/確認できたと思います私が間違っている ?

BCDのオブジェクトと要素の複雑さは、LinuxとUnixのような外国のOSと同様により新しい、そしてより古いWindows OSをブートすることをカバーする概念として自然です。

BCDの最も複雑な部分はデバイスの概念です。パーティションデバイス、RAMディスクデバイス、ファイルデバイス、デバイスの場所を見つけます - それを理解するためにしばらく時間を費やす必要があります。これは通常のWindowsユーザーのためのものではないと思います。フォーラムはディスクパーティションに関する質問でいっぱいです。これははるかに複雑ではないトピックです。たとえば、多くのWindowsユーザーは、プライマリパーティションと論理パーティションの違いについてさえ知りません。デュアル/マルチブートをしたい場合は、パーティションについて知っておく必要があります。セカンドハウスを建てたいのなら土地を買わなければなりません。

BCDの概念はVista以降も同じです。Windows7/8では新しい要素のみが定義されています。

私は、Windowsがすでにこのインターフェースを実装しているため、BCDのレジストリ構造が選択されていると考えています。これは、長年にわたって機能することが証明されている信頼性の高いトランザクションインターフェースです。一般的なWindowsレジストリの概念が良い、または悪い概念であれば、別のトピックです。

よりユーザーフレンドリーなインターフェースを作成するのはプログラマー/開発者次第です。私は同じインターフェイスを与えることから始めました - bcdeditと同等のGUI - 後でインターフェイスは使用パターンに基づいてより高いレベルで抽象化することができます。 BCDの構造化ビューはすでに実装されています。これは基本的な抽象化レイヤです。

次の抽象化レベルは、このトピックがマイクロソフトでカバーされていないため、オブジェクト間の関係に集中することです。簡単な作業ではありません。新しい用語は抽象化されています。

5
snayob

ブートボリュームを設定するにはBCDEdit /setコマンドが必要です。次に、BCDEdit /displayorderコマンドを呼び出して、Windows Boot Managerのオペレーティングシステムメニューにエントリを追加します。

bcdedit/set {ntldr}デバイスの起動

他のOSのパーティションや次のコマンドも識別します

bcdedit/set {ntldr}デバイスパーティション= C:

次の行はエントリをメニューに追加することで起動可能にします。

bcdedit/displayorder {ntldr}/addlast

新しいエントリがブートメニューに表示されることを確認するには、コマンドbcdedit /enum ACTIVEを実行してWindows Legacy OS Loaderエントリを探します。

/createコマンドは、ブートローダエントリにMicrosoft以外のOSを追加するために使用されます。

これに関するさらなる情報については、あなたはこれを読むことができます ソース記事


Windowsブートローダとブートマネージャの違い」についてのご質問について

から ウィキペディア

Windows NTの起動プロセスは、コンピュータがWindowsブートローダー(Microsoft Windowsを見つけて起動する役割を担うWindowsオペレーティングシステムの一部)を見つけると開始します。 IA-32またはx 64システムでは、ブートローダーはWindowsブートマネージャー(BOOTMGR)と呼ばれます。しかし、Windows Vista以前では、ブートローダはNTLDRでした。

technet もご覧ください。


ビジュアルBCDエディタ はWindows bcdeditユーティリティの高度なGUIバージョンです。

これは、Windows 7/Vistaのブート構成データ(BCD)ストアの完全編集を実装する最初のGUIツールです。

ビジュアルBCDエディタのダウンロードページ

ツールの修復オプションを試してみてください。

3
avirk

上記の回答のいくつかには誤った情報が含まれているため、古いものの回答に追加したいと思います。おそらく動作しますが、外部プログラム、またはそれを行うためのbcdbootは必要ありません。参考のため、正しい情報は次のとおりです。

初めての場合はクイックBCDバックグラウンド

BCDはWindowsのブート構成です。これには多数のセクションが含まれ、各セクションは名前(「説明」と呼ばれる)と、「{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}」のような識別子で識別されます。

いくつかの「よく知られた識別子」があり、bcdeditはできる限り代わりにこれらを有用に使用します(/v(verbose)/enum)のオプション。 「{bootmgr}」、「{memdiag}」のように表示されます。これらは完全な識別子の短縮名にすぎませんが、操作は簡単です。どちらでも使用できます。

次のコマンドを使用して、これらのセクションを一覧表示できます(「すべて」はオプションですが、完全なリストは表示されません):bcdedit /enum all

典型的な出力:

C:\Windows\system32>bcdedit /enum

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {92b1a1b2-c023-11e3-b3f1-ec4d94108574}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {92b1a1b0-c023-11e3-b3f1-ec4d94108574}
nx                      OptIn

同様に、デバイスの識別を容易にするために、\Device\HarddiskVolume2などの形式を使用しますが、割り当てられている場合、文字( "C:")でパーティションを認識します。

/enum allによって生成されるリストは、オプションのファームウェアブートマネージャーセクションで始まります(マザーボードにEFIがある場合)。その省略名は"{fwbootmgr}"です。最初のEFIブート選択を制御します(通常のWindowsブートマネージャーを使用するか、特定のデバイスを使用するか)。通常、{fwbootmgr}が存在する場合は無視できます。

その下には"Windows Boot Manager"(識別子"{bootmgr}")があります。これはあなたが使用するものです。これには、基本メニューの設定または起動時に取得するその他の設定が含まれます(Windowsブートマネージャーが動作しており、最初にBCDを検出できる場合)。

{bootmgr}の下には、任意の数の「Windowsブートローダー」セクションおよび場合によっては他のセクションがあり、それぞれが1つのアクションまたはブートオプションを制御します。

Bcdeditを使用したデュアルブートのセットアップ(他に何も必要ありません)

デュアルブートするには、bcdeditに/copyに既存の既知の正常なWindowsブートローダー最初のOSのエントリを指定します。

  • /copyは既存のエントリをコピーします
  • {current}は、コピーするエントリの識別子です。現在のブートアイテムへのショートカットです。それがデュアルブートしたいものでない場合は、必要なものに正しい識別子を使用してください。各エントリの説明テキストは、必要なものを見つけるのに役立ちます。
  • /d "Description for copied entryは新しいアイテムの説明になります

そのエントリのコピーを作成し、指定された説明を与え、コピーを与えた新しい識別子で応答します:

bcdedit /copy {current} /d "Copy of my current Windows Boot Loader"

The entry was successfully copied to {5599a3fc-e4ee-11e7-a5f3-c86000d0b92a}.

これにより、適切な名前の独立したエントリが作成されます。次に、何をすべきかを伝える必要があります。最近のOSではほとんど何も変更されていないため、デバイスとosdeviceをWin7パーティションに設定するだけで、おそらく動作します。必要に応じて、Win7を通常どおり起動したときに/ enumの出力を確認し、予想されるエントリをコピーします。ただし、通常は、「Q」のように一時的に2番目のOSに文字を割り当てるだけで十分です。コマンドはbcdedit /set {NEW_IDENTIFIER} device partition=Q:または何かで、osdeviceでも同じです。 bcdeditはドライブ文字を整理します。以下を参照してください。 bcdで使用された一時ドライブ文字は削除できます。

次に、それをbcdedit /displayorder {NEW_ID} /addlastを使用して{bootmgr}のエントリのリストに追加します。そして、決定的に-bcdにbcdedit /set {bootmgr} displaybootmenu Yesを使用してブートメニューを表示するように指示します。

できた.

注-BCDで「奇数」または「間違った」ドライブ文字を使用しても安全です。/enumの出力にもそれらが含まれている場合は安全です。

明確にするために、新しいデバイスが「C:」である必要があるときにQ:(またはそれが何であれ)として識別されることを心配する必要はありません。 bcdeditは、文字ではなくハードドライブIDを保存します。それは純粋にQ:を受け入れて表示することです。デバイスに文字がある場合、簡単にするために、デバイスIDの代わりにデフォルトで文字が表示されます。これを確認するには、DISKPARTまたはDISKMGMT.MSCの2番目のOSから文字を削除または割り当てると、/ enumの出力はすぐに\ Deviceに戻ります。実際には正しいハードドライブIDが保存されており、起動に使用すると、Windowsはそのデバイスを検出します。この文字は簡単のため、実際には保存されません。

2
Stilez

コメントの中で繰り返されている著者の特定の質問に答えて(それは同じことを達成するためのbcdedit.exeシーケンスに関する最初の質問とは異なりますが):

それはあなたが別のWindowsインストールを閲覧することを可能にし、それがあなたのためにそれを追加することを可能にすることを除いて、おそらくmsconfigと同じくらい単純な何か。

EasyBCD はまさにあなたが探しているものです(個人的な使用のために無料です)。これはWindows用の視覚的なデュアルブートマネージャツールで、新しいWindowsエントリを追加するのはあなたがそれを記述したのと全く同じように ポイントアンドクリックで行われます

EasyBCDオンラインにはたくさんのリソースがあるので、ここですべてを繰り返すことはしません。基本的にEasyBCDはbcdedit.exeの複雑さをまとめ、それを独自のブートローダモジュールで拡張して、Linux、BSDなどの他の(より新しいまたはより古い)バージョンのWindowsとのデュアルブートをセットアップできるようにします。

完全な開示:私はEasyBCDの主要な著者です。

2