2012-11-28 00:37:29 +0000 2012-11-28 00:37:29 +0000
32
32

BCDEditを使ってWindowsをデュアルブートするには?

5

背景

最近、Windows 8 を別のハードドライブにインストールしました1。

背景

Windows 8を最近別のハードドライブにインストールしました1。

2台のハードドライブを持っています。

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

2つのハードドライブがあります。

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

私が考えているのは、\PhysicalDisk2を使って、Windowsを起動するものに、そこに別のWindowsがインストールされていることを指示する方法です。

bcdeditを実行すると、現在の設定が表示される。

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

Windows Boot ManagerWindows Boot Loader の違いについての documentation が見つかりません。

ドキュメント

bcdeditについてのドキュメントがあります。

しかし、バイナリブート設定データの編集方法は説明されていません。

私が推測するに、WindowsブートマネージャがBIOSにどのプログラムを実行すべきかを指示しているのではないかと思います。このプログラムはユーザにブートの選択肢を与えます。Windows Boot Loaderは、Windowsの特定のインストールを表す特定のブート選択**であることになります。

もしそうなら、新しい Windows Boot Loader エントリを作成する必要があります。

/create

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

bcdedit [/ store filename] / create [id] / d description [/ application apptype | / inherit [apptype] | / inherit DEVICE | / device ] ].

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

の構文を想定しています。

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

ここで Bcdedit は以下のいずれかのタイプになります。

残念ながら、/create についてのドキュメントは “The Windows boot loader” だけです。これでは、あるハードドライブにある Windows 8 と別のハードドライブにある Windows 7 を区別することができるとは思えません。

0x1&

残念ながらapplicationのドキュメントはありません。

/device

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

osloader をよく知られた識別子に設定していないので、/device“新しいブートエントリを追加のデバイスオプションエントリとして指定するために使用されるオプション” に設定しなければなりません。これらの単語はすべて英語なので知っています。しかし、何を言っているのかさっぱりわかりません。

なので、何となく困っています。BCDEdit を使おうとしてハードディスクを破壊した Microsoft の Dan Stolts 氏のようにはなりたくありません。

BCDEdit を弄ってマシンをハシゴしてみても、特に参考になるコンテンツは見つかりませんでした。この投稿は、特に/setコマンドOSDeviceなど、もっと詳細に書かれていれば大丈夫だったと思います。というわけで、私のマシンが直ってから、解決策を文書化してみました。

つまり、マイクロソフトの人がBCDEditを使って自分のBCDを編集する方法を理解できないなら、私にチャンスがあるのでしょうか?

ボーナスリーディング

脚注

  • 1 Windows 8 のインストーラーが Windows 7 のインストールにダメージを与えてしまうので。私はインストール中に “メイン” ハードドライブのプラグを抜くことにしました。これは、Windows 8 のインストーラが既存の Windows 7 のインストールを検出しなかった理由についての長文の説明です。通常、インストーラは自動的にデュアルブートに必要なエントリを作成しています。この質問をしている理由は重要ではありません。
  • 2 本当に3台のドライブがありますが、3台目はただのバルクストレージです。3台目のハードドライブの存在は質問とは無関係です。私が言及しているのは2台だけなのに、なぜスクリーンショットには3台のハードドライブがあるのか知りたい人がいる場合のために言及しているだけです。
  • 3 私は任意に“0”からパーティションの番号を付け始めました。私がパーティションについて言及しているのは、Windows のインストールがどのパーティションとどのフォルダにあるのかを知らずに、ブートローダがどのようにして仕事をするのかがわからないからです。
  • 4 BCDEditについて質問です。ビジュアルBCDエディタ**を試してみました。どうやらvisualBCDエディタのようです。つまりGUIですが は BCDEdit と同じ用語を使い、BCD が文書化していないのと同じ知識を必要とします。
  • 5 簡単にするために、デュアルブートしたい Windows のインストールはすべて Windows Vista 以降で、BCDEdit とバイナリブートローダと互換性があると仮定します。そのためには、古い /create の複雑な仕組みを掘り下げていく必要があります。また、私は Linux へのデュアルブートや仮想ハードドライブ (vhd) イメージへのブート方法について尋ねているのではありません。同じマシンの既存のハードドライブ上のWindowsの最新バージョンだけです。

回答 (7)

16
16
16
2012-11-28 10:16:25 +0000

これは、"Background “の前の質問への直接の回答ではありませんが、Windows Vista以降のOSを2つ(またはそれ以上)起動するためのローダーエントリを作成するための代替ソリューションを指しています。**

ガイド、デバイス、オブジェクト、エレメント、要素などはありません。

私の背景 (興味のない方は飛ばして下の解答へ):

私はVisual BCD Editorを実装したことがあります。

実装の過程で、bcdeditとWMI BCD Providerインターフェース(プログラミングインターフェース、C++やC#で使用可能)に関する入手可能な全てのソースを読まなければなりませんでした。マイクロソフトのドキュメントは本当にお粗末です。

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

Windows 7のBCDオブジェクトの要素(プロパティ)は140以上(!)あります。いくつかの要素の意味がわかりません。

Windows 8 には新しい要素があります。ドキュメントがない。

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

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

reagentc - リカバリー環境(winre.wim)のインストール/アンインストール

どちらのツールもあまりよく知られていません。

代替案:

bcdboot だけで Windows Vista 以降の Windows OS 用のローダを作成できるので、bcdedit はほとんど必要ありません - 最新の OS 用のローダよりも初期の OS 用のローダを作成します。

あなたが Windows 8 の場合:

1. bcdboot f:\windows* (問題の写真のように Windows 7 に対応)

2. bcdboot c:\windows (Windows 8 に対応)

*Done ! *

** ブートプロセスの基本的な Microsoft ルールです。ブート環境(とBCD)は常に[最初のディスク+アクティブパーティション]にあるべきです。(図 - Disk 2 => BIOSブートシーケンスの最初のディスク ! )

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

だから、bootsect と bcdboot だけを使えば、デュアルブートシステムのすべてのブートエンティティを作成/修正することができます。

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

注:

Windows BCDに関する最高のサイトの一つは Geoff Chappell’s site - そこにはMicrosoft.comよりも詳細な情報があります。興味のあるユーザはそこで非常に有用な情報や、bcdeditのドキュメントに関する重要な注意事項を見つけることができます。

10
10
10
2013-03-07 10:54:28 +0000

Windowsを再インストールするためにC:ドライブをフォーマットしたら、マスターブートレコードが削除されてしまい、Windows 7のインストーラが復元に失敗しました。Visual BCD EditツールのようなGUIのbcdeditツールを使うこともできましたが、bcdeditには簡単なコマンドがあるはずなのに、なぜ何かをインストールしなければならないのでしょうか?オンラインのヘルプファイルを検索した結果、bcdeditをあきらめてしまいましたが、ここに答えがありました。2番目のパーティションのブートエントリを作成するには、bcdbootを使用しなければなりません。

C:\Windowsの場合:

  1. bcdboot e:\windows
  2. bcdboot c:\windows 再起動すると、Windows 7 の 2 つのエントリを含む Windows ブートメニューが表示されます。C:\Windows に起動するエントリを選択すると、このパーティションのエントリの名前を次のように変更できます。
  3. bcdedit /set {current} description "Windows 7 (Partition 1)" これにより、起動時に起動する OS がブートメニューのデフォルトのエントリになります。
  4. bcdedit /default {current} これは起動時のデフォルト OS をブートメニューの最初の項目にします。bcdedit /displayorder {default} /addfirst あるいは、起動時の OS をブートメニューの最初の項目にすることもできます。
  5. bcdedit /dispalyorder {current} /addfirst ここで再起動して、ブートメニューの 2 番目の項目を選択します。E:\Windows に起動したら、起動時に起動した OS の名前を変更します。
  6. bcdedit /set {current} description "Windows 7 (Partition 2)" ブートメニューが正常に動作することを確認し、bcd データを OS がインストールされていないパーティションに保存します。
  7. bcdedit /export D:\Saved_BCD_Settings\SavedBCD 後で失敗した場合は、bcd のブートメニューを復元することができます。
  8. bcdedit /import D:\Saved_BCD_Settings\SavedBCD
5
5
5
2012-12-02 01:36:13 +0000

**BCDの概念はマイクロソフトが開発したもので、独自の用語が付属しています。独自の用語が付属しています。私はそれを変更することはできないと思います。私はそれを拡張することができるだけです。

マイクロソフトはBCDにアクセス/編集するために以下の2つの方法を提供しています:

  1. bcdedit.exeを使用する - コマンドラインインターフェース
  2. BCD WMI Provider インターフェース - プログラマティックインターフェース

どちらのインターフェースも BCD オブジェクトと要素について話します。これは、他の人間の領域と同様に、プログラミングやコンピュータでも使用される一般的な概念です。世界や宇宙を記述するためにオブジェクト、特性、関係性の用語を使用する哲学にまで行くことができます。

BCD WMI プロバイダへのアクセスは、プログラマが BCD 内のすべてのオブジェクトや要素にアクセスして自由に操作できる可能性を与えてくれるので、より柔軟性があります。

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

初心者はボタンをクリックするだけで複雑な操作が実行されます! バックグラウンドは必要ありません。ツールはすべてのWindowsバージョンを検索し、対応するローダがBCDに存在しない場合には、それらのローダを作成しようとします - 使用されている用語 - “Create missing Windows loaders ” - 英語を話す人なら誰でもこのような操作を理解/クリック/確認できると思いますが、私が間違っているのでしょうか?

BCD のオブジェクトや要素が複雑なのは当然です。さらに、これは様々なデバイス上での MBR ブートや EFI ブートのための一般的な概念です。

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

BCDの概念はVista以降も同じで、Windows 7/8では新しい要素が定義されているだけです。

BCD用のレジストリ構造は、Windowsがすでにこのインターフェースを実装しており、長年にわたって動作することが証明されている信頼性の高いトランザクションインターフェースであるために選択されていると思います。Windowsのレジストリの概念が一般的に良いか悪いかは別の話題です。

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

次の抽象化レベルは、オブジェクト間の関係に集中することでしょう。これは簡単な作業ではありません。抽象化には新しい用語がつきものです。

3
3
3
2017-12-19 10:14:27 +0000

古いですが、上記の回答のいくつかは間違った情報を含んでいるので、私は回答に追加したいと思います。これらはおそらく動作しますが、確かに外部プログラムやbcdbootさえも必要ありません。参考までに、正しい情報は以下の通りです。

初めての場合はクイック BCD の背景

BCD は Windows のブート設定です。これには多数のセクションが含まれており、それぞれのセクションには名前(これを “description "と呼びます)と以下のような識別子が付けられています。”{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}“.

「よく知られた識別子」がいくつかありますが、bcdedit は可能な限りこれらを代わりに使います (/v/enum (verbose) オプションを使っていない限り)。これらは以下のようになります。”{bootmgr}“, ”{memdiag}“. これらは完全な識別子の略記名に過ぎませんが、作業しやすくなっています。どちらを使っても構いません。

以下のコマンドでこれらのセクションをリストアップすることができます (「all」はオプションですが、これを指定しないと完全なリストは表示されません): bcdedit /enum all.

典型的な出力。

C:\Windows\system32>bcdedit /enum all

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 ブートマネージャ ” (識別子 “{bootmgr}” ) があります。これはあなたが作業するものです。これには、基本メニューや起動時に表示されるその他の設定が含まれています(Windows ブートマネージャが動作していて、BCD を最初に見つけることができる場合)。

{bootmgr} の下には “Windows Boot Loader” セクションがいくつもあります。

bcdedit を使ったデュアルブートの設定 (他に何も必要ありません)

デュアルブートするには、最初の OS 用の既知の Windows Boot Loader エントリを /copy にするように bcdedit に指示します。

  • /copy 既存のエントリをコピーするには
  • {current} はコピーしたいエントリの identifier です。これは、現在のブートアイテムのショートカットです。デュアルブートしたい項目でない場合は、正しい識別子を使ってください。各エントリの説明文を見れば、コピーしたいものを見つけるのに役立ちます。
  • /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も同じです。テンポラリドライブレターは一度bcdで使ったものを削除してもいいですね。

次に、bcdedit /displayorder {NEW_ID} /addlast を使って{bootmgr}のエントリリストに追加し、重要なのは、bcdedit /set {bootmgr} displaybootmenu Yes を使ってブートメニューを表示するように bcd に指示することです。

これで完了です。

注意 - BCD で「奇数」や「間違った」ドライブ文字を使っても問題ありませんし、/enum の出力にそれらが含まれていても問題ありません。

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

3
3
3
2012-11-28 02:57:24 +0000

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

bcdedit /set {ntldr} デバイスブート

他の OS のパーティションを識別するか、以下のコマンドも同様に

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

以下の行でメニューに追加することで、エントリをブート可能な状態にします

bcdedit /displayorder {ntldr} (Windows ブートマネージャ) /bcdedit /enum ACTIVE コマンド /create を実行して Windows Legacy OS Loader エントリを探すことで、新しいエントリがブートメニューに表示されることを確認できます。

注意 . *0x6& コマンドは、ブートローダエントリに Microsoft 以外の OS を追加するために使用します。 *

これについての詳細はこちらの ソース記事


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

wikipedia

Windows NTの起動プロセスは、コンピュータがWindowsブートローダを見つけたときに開始されます。IA-32 や x64 システムでは、ブートローダは Windows ブートマネージャ (BOOTMGR) と呼ばれています。ただし、Windows Vista より前では、ブートローダは NTLDR です。

technet


Visual BCD Editor は Windows bcdedit ユーティリティの高度な GUI 版です。

Windows 7/Vista ブート設定データ(BCD)ストアの完全編集を実装した初のGUIツールです。 ダウンロードページ 視覚的なBCDエディタのための [ ダウンロードページ ]0x3&。

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

2
2
2
2013-09-29 04:16:20 +0000

コメントで繰り返し述べられている筆者の具体的な質問に対する回答です (同じことを達成するための bcdedit.exe シーケンスに関する彼の最初の質問とは異なりますが)。

おそらく msconfig とほぼ同じくらい簡単なものではないでしょうか。 EasyBCD は、まさにあなたが探しているものです(個人的には無料)。これはWindows用のビジュアルなデュアルブートマネージャツールで、新しいWindowsエントリを追加するのはポイントアンドクリックで、 あなたが説明した通り です。

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

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

-1
-1
-1
2017-11-17 00:12:31 +0000
bcdedit
bcdboot
bcdedit /create

これは.vhdファイルのようなファイルを指し示すことができますが、パーティションディスクパートとして作成され、初期化されてアタッチされたり、その場でマウントされてOSとして再起動されたりします。OSは別のパーティションの中に隠すことができます。 別のパーティションは別のパーティションの中に隠して、その中にOSを入れることができます。 bcdeditを実行すると、どこにあっても別の.vhdファイルを指すようになります。ロードされてしまいます。私のインストラクターは授業でこれを見せてくれたが、bcdeditの別の説明に失敗したり、拒否したりした。しかし、これは完全に機能するOSを隠して動作させるために動作します。

1.bcdboot e:\windows 2. bcdboot c:\windows