วิธีใช้ BCDEdit เพื่อติดตั้ง Windows บูตคู่


29

อะไรคือbcdeditคำสั่งที่จำเป็นในการตั้งค่าการบู๊ตคู่ระหว่างการติดตั้ง Windows ที่แตกต่างกัน? 5

พื้นหลัง

ผมเพิ่งติดตั้ง Windows 8 บนฮาร์ดไดรฟ์แยกต่างหาก1 ตอนนี้ติดตั้ง Windows 8 แล้วฉันต้องการบูตดูอัลกลับไปเป็น Windows 7

ฉันมีฮาร์ดไดรฟ์2 ตัวสองตัว:

ภาพหน้าจอตัวจัดการพาร์ติชัน Windows

ดังนั้นคุณจะเห็นได้ว่าฉันมีดิสก์สองตัวพร้อมกับพาร์ติชันที่มี Windows:

  • Windows 7 : \\PhysicalDisk0(พาร์ติชัน 0 3 )
  • 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

ฉันไม่สามารถหาใด ๆเอกสารเกี่ยวกับความแตกต่างระหว่างBoot Windows ผู้จัดการและของ Windows Boot Loader

เอกสาร

มีเอกสารบางอย่างเกี่ยวกับBcdedit:

แต่พวกเขาไม่ได้อธิบายวิธีแก้ไขข้อมูลการกำหนดค่าเริ่มต้นระบบแบบไบนารี

ถ้าผมจะคิดว่าผมจะคิดว่าBoot Windows ผู้จัดการสั่งให้ BIOS สิ่งที่โปรแกรมมันควรจะทำงาน โปรแกรมนั้นจะให้ชุดตัวเลือกการบูตแก่ผู้ใช้ ซึ่งทำให้Windows Boot Loaderเป็นตัวเลือกการบูตเฉพาะซึ่งแสดงถึงการติดตั้ง Windows โดยเฉพาะ

หากเป็นกรณีนี้ฉันจะต้องสร้างรายการWindows Boot Loaderใหม่

หมายความว่าฉันอาจต้องการใช้/createพารามิเตอร์:

/สร้าง

สร้างรายการบูตใหม่:

bcdedit [/ ชื่อร้านค้า ] / สร้าง [ id ] / d คำอธิบาย [/ application apptype | / สืบทอด [ apptype ] | / สืบทอดอุปกรณ์ | / อุปกรณ์ ]

ดังนั้นฉันคิดว่าไวยากรณ์ของ:

>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คือ"บูตของ Windows" ฉันไม่เห็นวิธีการที่สามารถแยกความแตกต่างระหว่างWindows 8กับฮาร์ดไดรฟ์ตัวหนึ่งและWindows 7ในอีกอันหนึ่งได้

พารามิเตอร์ที่เป็นไปได้อื่น ๆ เมื่อ/createบูตโหลดเดอร์คือ

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

น่าเสียดายที่เอกสารขาดหายไปสำหรับ/device:

/ อุปกรณ์

ไม่จำเป็น. หาก id ไม่ได้ถูกตั้งค่าเป็นตัวระบุที่รู้จักกันดีตัวเลือกที่ใช้เพื่อระบุรายการบูตใหม่เป็นรายการตัวเลือกอุปกรณ์เพิ่มเติม

เนื่องจากผมไม่ได้ตั้งidตัวบ่งชี้ที่รู้จักกันดีผมต้องตั้ง/ อุปกรณ์เพื่อ"ตัวเลือกที่จะใช้ในการระบุรายการเริ่มต้นระบบใหม่เป็นตัวเลือกอุปกรณ์เพิ่มเติมรายการ" ฉันรู้ทุกคำเหล่านั้น; พวกเขาเป็นภาษาอังกฤษทั้งหมด แต่ฉันไม่รู้ว่ามันกำลังพูดอะไร คำเหล่านั้นตามลำดับนั้นดูไร้สาระ

ดังนั้นฉันค่อนข้างจะใจแคบ ฉันไม่ต้องการเป็นDan Stolts จาก Microsoft ผู้ทำลายฮาร์ดไดรฟ์ของเขาที่พยายามใช้ BCDEdit :

ฉันพบว่าไม่มีเนื้อหาใดที่มีประโยชน์เป็นพิเศษเมื่อฉันซ่อนเครื่องด้วยการเล่นกับ BCDEdit โพสต์นี้จะได้รับ ok ถ้ามีรายละเอียดมากขึ้นโดยเฉพาะอย่างยิ่งใน / OSDevice ชุดคำสั่งอื่น ๆ ดังนั้นเมื่อผมได้รับเครื่องของฉันคงฉันเอกสารการแก้ปัญหาและข้อมูลที่นี่ ...

ฉันหมายถึงถ้าคนที่แต่งตัวประหลาด Microsoft ไม่สามารถแม้แต่จะคิดวิธีการใช้ BCDEdit เพื่อแก้ไข BCD ของเขาแล้วฉันจะมีโอกาสอะไรบ้าง?

การอ่านโบนัส

เชิงอรรถ

  • 1เนื่องจากตัวติดตั้ง Windows 8 อาจทำให้การติดตั้ง Windows 7 ของฉันเสียหายฉันจึงตัดสินใจถอดฮาร์ดไดรฟ์"หลัก"ของฉันระหว่างการติดตั้ง ซึ่งเป็นคำอธิบายที่ยืดยาวเกี่ยวกับสาเหตุที่ตัวติดตั้ง Windows 8 ไม่พบการติดตั้ง Windows 7 ที่มีอยู่ โดยปกติตัวติดตั้งจะสร้างรายการที่ต้องการโดยอัตโนมัติสำหรับดูอัลบูต ไม่ว่าเหตุผลที่ฉันถามคำถามนั้นสำคัญ
  • 2จริงๆมีสามไดรฟ์ แต่ที่สามเป็นเพียงการจัดเก็บข้อมูลจำนวนมาก การมีอยู่ของฮาร์ดไดรฟ์ตัวที่ 3 นั้นไม่เกี่ยวข้องกับคำถาม ฉันพูดถึงมันในกรณีที่มีคนอยากรู้ว่าทำไมภาพหน้าจอมีฮาร์ดไดรฟ์ 3 ตัวเมื่อฉันพูดถึงสองเท่านั้น
  • 3ฉันเริ่มหมายเลขพาร์ติชันโดยไม่ได้ตั้งใจที่"ศูนย์" ; ไม่ได้หมายความว่าพาร์ติชันจะถูกกำหนดหมายเลขเริ่มต้นที่ศูนย์ ฉันพูดถึงพาร์ติชั่นเท่านั้นเพราะฉันไม่เห็นว่าบูทโหลดเดอร์ทำงานได้อย่างไรโดยไม่ทราบว่ามีพาร์ติชั่นใดและโฟลเดอร์ใดติดตั้ง Windows อยู่
  • 4ฉันถามเกี่ยวกับ BCDEdit ฉันพยายามภาพ BCD แก้ไข ดูเหมือนว่าจะเป็นโปรแกรมแก้ไข BCD ภาพ กล่าวคือมันเป็น GUI แต่ยังคงใช้คำศัพท์เดียวกันกับ BCDEdit และต้องการความรู้เดียวกับที่ BCD ไม่ได้จัดทำเอกสาร
  • 5เพื่อความง่ายเราจะสมมติว่าการติดตั้ง Windows ทั้งหมดฉันต้องการบูตดูอัลระหว่างเป็น Windows Vista หรือใหม่กว่าทำให้เข้ากันได้กับ BCDEdit และไบนารีบูตโหลดเดอร์ทั้งหมด ntloaderทางเลือกที่จะต้องมีการขุดคุ้ยความซับซ้อนของเดิม ฉันไม่ได้ถามเกี่ยวกับการบูทคู่กับ Linux หรือวิธีบู๊ตเป็นอิมเมจ Virtual Hard Drive (vhd) Windows รุ่นทันสมัยบนฮาร์ดไดรฟ์ที่มีอยู่ในเครื่องเดียวกัน

คำตอบ:


16

นี่ไม่ใช่คำตอบที่ตรงกับคำถามก่อนหน้า "เบื้องหลัง" แต่ชี้ไปที่โซลูชันทางเลือกสำหรับการสร้างรายการโหลดเดอร์สำหรับการบูต Windows Vista สองระบบ (ขึ้นไป) และระบบปฏิบัติการใหม่กว่า โปรดดูคำตอบที่สองของฉันด้านล่างเกี่ยวกับนักวิจารณ์เกี่ยวกับคำศัพท์ที่ใช้ใน Visual BCD

ไม่มี guids, อุปกรณ์, วัตถุ, องค์ประกอบและ blah, blah, blah

พื้นหลังของฉัน (ข้ามหากไม่สนใจและไปที่วิธีการแก้ปัญหาด้านล่าง):

ฉันใช้ตัวแก้ไข BCD ของ Visual

ในระหว่างกระบวนการติดตั้งนั้นฉันต้องอ่านแหล่งข้อมูลที่มีอยู่ทั้งหมดบน bcdedit และ WMI BCD Provider interface (อินเตอร์เฟสการเขียนโปรแกรมสามารถใช้กับ C ++, C #) เอกสารจาก Microsoft นั้นแย่มาก

ใน BCD มีวัตถุ (ตัวโหลดการตั้งค่าองค์ประกอบของอุปกรณ์) ไม่มีเอกสารเกี่ยวกับการเชื่อมต่อระหว่างวัตถุแม้จะมีการอ้างอิง

มีองค์ประกอบ (คุณสมบัติ) มากกว่า 140 รายการ (คุณสมบัติ) ของวัตถุ BCD ใน Windows 7 ฉันไม่ทราบความหมายขององค์ประกอบบางอย่าง - ไม่มีเอกสารประกอบเลย

ใน Windows 8 มีองค์ประกอบใหม่ - ฉันเดาว่าตอนนี้จำนวนทั้งหมดกำลังเข้าใกล้ 180 (!!) ไม่มีเอกสาร

ในทางตรงกันข้ามมียูทิลิตี้ที่ทรงพลังสองอย่างสำหรับจัดการ BCD: bcdboot และ reagentc

bcdboot - สร้าง / แก้ไขตัวโหลดเริ่มต้นเช่นกัน BCD และสภาพแวดล้อมการบูตโดยรวม!

reagentc - ติดตั้ง / ยกเลิกการติดตั้งสภาพแวดล้อมการกู้คืน (winre.wim)

เครื่องมือทั้งสองยังไม่มีเอกสารที่ดีนัก

ทางเลือกอื่น ๆ :

แทบจะไม่จำเป็นต้องใช้ bcdedit เหมือนกับการใช้ bcdboot เพียงอย่างเดียวที่คุณสามารถสร้างตัวโหลดสำหรับ Windows Vista และ Windows OS ใหม่กว่า - คุณสร้างตัวโหลดสำหรับระบบปฏิบัติการที่เก่าที่สุดกว่ารุ่นล่าสุดและ voila ที่คุณสร้างสภาพแวดล้อมการบูตสำหรับระบบบูตคู่ / มัลติ

สมมติว่าคุณอยู่ใน Windows 8:

1. bcdboot f: \ windows (แผนที่นี้ใช้กับ Windows 7 ตามภาพที่เป็นปัญหา)

2. bcdboot c: \ windows (แม็พนี้เป็น Windows 8)

เสร็จแล้ว!

กฎพื้นฐานของ Microsoft สำหรับกระบวนการบูต: สภาพแวดล้อมการบูต (และ BCD) ควรอยู่ใน [ดิสก์แรก + พาร์ติชันที่ใช้งานอยู่] เสมอ (ในภาพ - ดิสก์ 2 => ดิสก์ตัวแรกในลำดับการบูต BIOS!)

สุดท้าย แต่ไม่ท้ายสุดมียูทิลิตีbootsectสำหรับการเขียน MBR และ PBR (บันทึกการบูตหลักและพาร์ติชัน) - ตอนนี้เป็นมาตรฐานใน Windows 8 (ใช้ได้เฉพาะใน WinRE ก่อนหน้านี้)

ดังนั้นการใช้ bootsect และ bcdboot เอนทิตีการบูตทั้งหมดสำหรับระบบการบู๊ตคู่สามารถสร้าง / แก้ไขได้

ฉันคิดว่ากระบวนการบูทสำหรับ Vista และต่อมาได้รับการอธิบายเป็นอย่างดีในเว็บไซต์อินเทอร์เน็ตหลายแห่งแม้ใน Microsoft.com

บันทึก:

หนึ่งในเว็บไซต์ที่ดีที่สุดเกี่ยวกับ Windows BCD คือเว็บไซต์ของ Geoff Chappell - มีข้อมูลโดยละเอียดมากกว่าใน Microsoft.com ผู้ใช้ที่สนใจสามารถค้นหาข้อมูลที่มีประโยชน์และมีหมายเหตุสำคัญเกี่ยวกับเอกสาร bcdedit


9

เมื่อฉันฟอร์แมตไดร์ฟ C: เพื่อติดตั้ง Windows ใหม่มาสเตอร์บูตเรคคอร์ดถูกลบและตัวติดตั้ง Windows 7 ไม่สามารถกู้คืนได้ ฉันสามารถใช้เครื่องมือ GUI bcdedit เช่นเครื่องมือแก้ไข BCD ของ Visual แต่ทำไมฉันต้องติดตั้งบางอย่างเมื่อมีคำสั่งง่ายๆในโปรแกรมคอนโซล bcdedit ที่สามารถทำงานได้หรือไม่ หลังจากค้นหาไฟล์ช่วยเหลือออนไลน์มากมายฉันเลิกกับ bcdedit และพบคำตอบที่นี่ฝังอยู่ใน digressions ในการสร้างรายการบูตสำหรับพาร์ติชันที่สองคุณต้องใช้bcdboot

สมมติว่าคุณอยู่ใน C: \ Windows:

1. bcdboot e: \ windows

2. bcdboot c: \ windows

เมื่อคุณรีบูทคุณจะเห็นเมนูการบู๊ตของ Windows ที่มีสองรายการสำหรับ Windows 7 หากคุณเลือกรายการที่บู๊ตใน C: \ Windows คุณสามารถเปลี่ยนชื่อรายการสำหรับพาร์ติชันนี้ได้ด้วย:

คำอธิบาย bcdedit / set {current} "Windows 7 (Partition 1)"

สิ่งนี้ทำให้ระบบปฏิบัติการบูทเมื่อเริ่มต้นเป็นรายการเริ่มต้นในเมนูบู๊ต:

bcdedit / default {ปัจจุบัน}

นี่เป็นการวางระบบปฏิบัติการเริ่มต้นไว้ที่รายการแรกในเมนูบู๊ต

bcdedit / displayorder {default} / addfirst

หรือคุณสามารถสร้างระบบปฏิบัติการเมื่อเริ่มต้นรายการแรกในเมนูบู๊ต:

bcdedit / dispalyorder {current} / addfirst

ตอนนี้รีบูตและเลือกรายการที่สองในเมนูการบู๊ตซึ่งควรจะมีข้อความว่า "Windows 7" เมื่อบูทเป็น E: \ Windows จะเปลี่ยนชื่อ OS ที่บูทเมื่อเริ่มต้น:

คำอธิบาย bcdedit / set {current} "Windows 7 (Partition 2)"

ทดสอบว่าเมนูการบู๊ตทำงานเป็นปกติและบันทึกข้อมูล bcd ไปยังพาร์ติชันที่ไม่มีระบบปฏิบัติการติดตั้งอยู่:

bcdedit / ส่งออก D: \ Saved_BCD_Settings \ SavedBCD

หากคุณเลอะในภายหลังคุณสามารถกู้คืนเมนูการบูต bcd ด้วย:

bcdedit / นำเข้า D: \ Saved_BCD_Settings \ SavedBCD


Motorcycleboy ของฉันคุณเพิ่งจะทำซ้ำคำตอบของฉันให้เมื่อเดือนที่แล้ว -1
snayob

@snayob ฉันให้ความสำคัญกับคำตอบของคุณ (+1) แต่ Motorcycleboy จะให้รายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งหลังจากที่สร้าง bootentries ตอนนี้สิ่งที่ขาดหายไปในการอภิปรายทั้งหมดนี้คือสิ่งที่คำสั่งเทียบเท่าbcdeditสำหรับbcdboot e:\windows(ดูที่นี่สำหรับคำถาม)
Davor Josipovic

ฉันไม่คิดว่ามีคำสั่ง bcdedit ที่เทียบเท่าสำหรับ "bcdboot e: \ windows" เนื่องจากสำเนา bcdboot และซ่อมแซมสภาพแวดล้อมการบูตทั้งหมด (bootmgr + \ boot folder + repair BCD + เพิ่มรายการสำหรับระบบปฏิบัติการที่ระบุ)
snayob

{current}ไม่สำเร็จ.
โอเรียนท์

5

หมายเหตุบางประการเกี่ยวกับนักวิจารณ์ในคำถามดั้งเดิมเกี่ยวกับการใช้คำศัพท์เดียวกันใน Visual BCD เนื่องจาก Microsoft ใช้สำหรับ bcdedit

แนวคิดของ BCD ได้รับการพัฒนาโดย Microsoft มันมาพร้อมกับคำศัพท์ของตัวเอง ฉันไม่คิดว่าฉันสามารถเปลี่ยนแปลงได้ ฉันสามารถขยายได้เท่านั้น

Microsoft ให้สองวิธีในการเข้าถึง / แก้ไข BCD:

  1. ใช้ bcdedit.exe - อินเตอร์เฟสบรรทัดคำสั่ง
  2. BCD WMI Provider interface - อินเตอร์เฟสแบบเป็นโปรแกรม

อินเทอร์เฟซทั้งสองพูดคุยเกี่ยวกับวัตถุและองค์ประกอบ BCD นี่เป็นแนวคิดทั่วไปที่ใช้รวมถึงการเขียนโปรแกรม / คอมพิวเตอร์เช่นเดียวกับในพื้นที่ของมนุษย์อื่น ๆ เราสามารถไปได้แม้กระทั่งปรัชญาซึ่งใช้คำศัพท์ของวัตถุคุณสมบัติและความสัมพันธ์เพื่ออธิบายโลกและจักรวาล

การเข้าถึงผู้ให้บริการ BCD WMI มีความยืดหยุ่นมากขึ้นเนื่องจากจะทำให้โปรแกรมเมอร์มีความเป็นไปได้ในการเข้าถึงวัตถุและองค์ประกอบทั้งหมดใน BCD และดำเนินการกับพวกเขาได้อย่างอิสระ

Visual BCD ใช้ BCD WMI Provider Interface อย่างเต็มรูปแบบและใช้วิธีการเดียวกับที่เราใช้ในการเข้าถึงรีจิสทรีของ Windows โดยใช้ regedit.exe นอกจากนี้ยังมีเครื่องมืออัตโนมัติสองงานหลัก - การสร้างและการซ่อมแซมรถตักอัลบูต ไม่มีเครื่องมืออื่นใดที่มีฟังก์ชั่นอัตโนมัติคลิกเดียวเช่นนั้น ฉันจะพูดนี้เป็นคำศัพท์ใหม่และระดับใหม่ของนามธรรม ฉันจะไม่เปลี่ยนฐานที่ Microsoft สร้างขึ้นฉันสามารถสร้างได้เท่านั้น

ผู้ใช้มือใหม่เพียงคลิกปุ่มและดำเนินการอย่างซับซ้อน! ไม่จำเป็นต้องมีพื้นหลัง! คุณยังไม่จำเป็นต้องรู้ว่าคุณติดตั้ง Windows กี่เวอร์ชัน - เครื่องมือพยายามค้นหาทั้งหมดแล้วสร้างตัวโหลดสำหรับพวกเขาหากตัวตักที่สอดคล้องกันนั้นไม่มีอยู่ใน BCD - คำศัพท์ที่ใช้ - "สร้างตัวโหลด Windows ที่ขาดหายไป" - I คิดว่าทุกคนที่พูดภาษาอังกฤษสามารถเข้าใจ / คลิก / ยืนยันการดำเนินการดังกล่าวหรือฉันผิด

ความซับซ้อนของวัตถุและองค์ประกอบใน BCD นั้นเป็นธรรมชาติเนื่องจากแนวคิดครอบคลุมการบูทระบบปฏิบัติการ Windows รุ่นใหม่และรุ่นเก่ารวมถึงระบบปฏิบัติการต่างประเทศเช่น Linux, Unix เป็นต้นนอกจากนี้ยังเป็นแนวคิดทั่วไปสำหรับการบูต MBR และการบู๊ต EFI บนอุปกรณ์ที่หลากหลาย

ส่วนที่ซับซ้อนที่สุดของ BCD เป็นแนวคิดอุปกรณ์ คุณมีอุปกรณ์พาร์ติชันอุปกรณ์ ramdisk อุปกรณ์ไฟล์ค้นหาอุปกรณ์ - คุณต้องใช้เวลาทำความเข้าใจกับมันและฉันไม่คิดว่านี่เป็นของผู้ใช้ Windows ปกติ ฟอรัมเต็มไปด้วยคำถามเกี่ยวกับพาร์ติชั่นดิสก์ซึ่งเป็นหัวข้อที่ซับซ้อนน้อยกว่ามาก ผู้ใช้ Windows หลายคนไม่รู้เกี่ยวกับความแตกต่างระหว่างพาร์ติชันหลักและโลจิคัลเช่น คุณต้องรู้เกี่ยวกับพาร์ติชั่นถ้าคุณต้องการบูตคู่ / มัลติ คุณต้องซื้อที่ดินถ้าคุณต้องการสร้างบ้านหลังที่สอง

แนวคิด BCD เหมือนกันตั้งแต่ Vista - องค์ประกอบใหม่เท่านั้นที่ถูกกำหนดใน Windows 7/8

ฉันคิดว่าโครงสร้างรีจิสทรีสำหรับ BCD ได้รับเลือกเนื่องจาก Windows ใช้อินเทอร์เฟซนี้แล้วและเป็นอินเทอร์เฟซการทำธุรกรรมที่เชื่อถือได้ซึ่งพิสูจน์แล้วว่าทำงานได้นานหลายปี หากแนวคิดเกี่ยวกับรีจิสทรีของ Windows โดยทั่วไปเป็นสิ่งที่ดีหรือแนวคิดที่ไม่ดีเป็นหัวข้ออื่น

มันขึ้นอยู่กับโปรแกรมเมอร์ / ผู้พัฒนาเพื่อสร้างส่วนต่อประสานกับผู้ใช้ที่เป็นมิตรมากขึ้น ฉันเริ่มต้นด้วยการให้อินเทอร์เฟซเดียวกัน - GUI ที่เทียบเท่ากับ bcdedit - ต่อมาอินเทอร์เฟซสามารถถูกทำให้เป็นนามธรรมในระดับที่สูงขึ้นตามรูปแบบการใช้งาน มีการนำมุมมองที่มีโครงสร้างของ BCD มาใช้แล้ว นี่คือเลเยอร์นามธรรมที่เป็นพื้นฐาน

ระดับต่อไปของสิ่งที่เป็นนามธรรมจะให้ความสำคัญกับความสัมพันธ์ระหว่างวัตถุต่าง ๆ โดยที่ไมโครซอฟท์ไม่ได้ครอบคลุมหัวข้อนี้ ไม่ใช่เรื่องง่าย คำศัพท์ใหม่มาพร้อมกับนามธรรม


ฉันเข้าใจว่า BCD หุ้มระบบที่ทรงพลังมากพร้อมกับตัวเลือกที่ซับซ้อนมากมาย ในทางกลับกันฉันคิดว่าฉันมีคำถามง่าย ๆ ที่มีผู้คนมากมายถามมาหลายปี - แต่ไม่สามารถแก้ไขได้ "ฉันมีWindowsตรงนี้และอีกอันWindowsตรงนั้นฉันจะบูตระหว่างพวกเขาได้อย่างไร" แทนที่จะเป็นแบบฝึกหัดเต็มรูปแบบเกี่ยวกับตัวเลือกทั้งหมดของ BCDEdit ฉันหวังว่าคำสั่งที่สามารถแก้ไขปัญหานี้ได้ (ดูเหมือนง่าย) บางทีเกือบจะเป็นเรื่องง่ายเหมือนmsconfigยกเว้นมันให้คุณเรียกดูการติดตั้ง Windows อื่นและมันจะเพิ่มให้คุณ
เอียนบอยด์

ฉันต้องบอกว่าเครื่องมือของคุณทรงพลังมากกว่า EasyBCD
Milind R

3

คุณต้องมีBCDEdit /setคำสั่งสำหรับกำหนดค่าปริมาณการบูต จากนั้นเพิ่มรายการในเมนูระบบปฏิบัติการ Windows Boot Manager โดยการเรียกBCDEdit /displayorderคำสั่ง

bcdedit / set การบูตอุปกรณ์ {ntldr}

มันจะระบุพาร์ติชันระบบปฏิบัติการอื่นหรือคำสั่งต่อไปนี้เช่นกัน

bcdedit / set {ntldr} พาร์ทิชันอุปกรณ์ = C:

บรรทัดต่อไปนี้ทำให้รายการบูตได้โดยเพิ่มลงในเมนู

bcdedit / displayorder {ntldr} / addlast

คุณสามารถตรวจสอบว่ารายการใหม่จะปรากฏบนเมนูการบู๊ตโดยการรันคำสั่งbcdedit /enum ACTIVEและค้นหารายการ Windows Legacy OS Loader

หมายเหตุ : /createคำสั่งใช้เพื่อเพิ่มระบบปฏิบัติการที่ไม่ใช่ของ Microsoft เพื่อบูตรายการโหลดเดอร์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถอ่านบทความต้นฉบับนี้


เกี่ยวกับคำถามของคุณเกี่ยวกับ " ความแตกต่างระหว่าง Windows Boot loader และ Boot manager "

จากวิกิพีเดีย

กระบวนการเริ่มต้นของ Windows NT เริ่มต้นขึ้นเมื่อคอมพิวเตอร์ค้นหาตัวโหลดการบูต Windows ซึ่งเป็นส่วนหนึ่งของระบบปฏิบัติการ Windows ที่รับผิดชอบในการค้นหา Microsoft Windows และเริ่มต้นทำงาน บนระบบ IA-32 หรือ x64 บูตโหลดเดอร์ชื่อ Windows Boot Manager (BOOTMGR) อย่างไรก็ตามก่อนหน้า Windows Vista บูตโหลดเดอร์คือ NTLDR

ดูเพิ่มเติมได้ที่TechNet


Visual BCD Editorเป็นยูทิลิตี้ Windows bcdedit ขั้นสูงสำหรับ GUI

เป็นเครื่องมือ GUI แรกที่ใช้การแก้ไขแบบเต็มของ Windows 7 / Vista Boot Configuration Data (BCD) store

หน้าดาวน์โหลดสำหรับเครื่องมือแก้ไข BCD แบบวิชวล

ลองตัวเลือกการซ่อมแซมในเครื่องมือ


เกี่ยวกับWindows Boot Manager : Windows Boot Manager นั้นเป็นระบบปฏิบัติการขนาดเล็กที่ควบคุมประสบการณ์การบู๊ตของคุณและช่วยให้คุณสามารถเลือกแอพพลิเคชั่นสำหรับบู๊ต มีแอพพลิเคชั่นสำหรับบู๊ตต่างๆ (ตัวอย่างเช่น Windows Boot Loader) และแต่ละแอพพลิเคชั่นนั้นต่างกัน ตัวอย่างเช่นแอปพลิเคชัน Windows Boot Loader โหลด Windows [... ] ตัวอย่างเช่นหากคุณติดตั้ง Win7 สองรุ่นในพาร์ติชั่นต่างกันคุณจะเห็นรายการ Windows Boot Loader สองรายการ (นำมาจากที่นี่ )
Davor Josipovic

3

แม้ว่าเก่าแล้วฉันต้องการเพิ่มคำตอบเพราะคำตอบหลายข้อข้างต้นมีข้อมูลที่ไม่ถูกต้อง อาจใช้งานได้ แต่คุณไม่จำเป็นต้องมีโปรแกรมภายนอกหรือแม้แต่bcdbootทำ สำหรับการอ้างอิงข้อมูลที่ถูกต้องมีดังนี้:

พื้นหลัง BCD อย่างรวดเร็วหากยังใหม่อยู่

BCD คือการกำหนดค่าการบูต Windows ประกอบด้วยส่วนต่าง ๆ มากมายแต่ละชื่อที่ระบุ (เรียกว่า "คำอธิบาย") และตัวระบุที่มีลักษณะดังนี้: "{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}"

มี "ตัวระบุที่รู้จักกันดี" อยู่หลายตัวและ bcdedit จะใช้สิ่งเหล่านี้อย่างเป็นประโยชน์แทนซึ่งสามารถทำได้ (เว้นแต่คุณจะใช้ตัวเลือก/v (verbose)ด้วย/enum) มีลักษณะดังนี้: "{bootmgr}", "{memdiag}" เหล่านี้เป็นเพียงชื่อชวเลขสำหรับตัวระบุแบบเต็ม แต่ใช้งานได้ง่ายกว่า คุณสามารถใช้อย่างใดอย่างหนึ่ง

คุณสามารถแสดงรายการส่วนเหล่านี้มีคำสั่งดังต่อไปนี้ (ที่ "ทุกคน" เป็นตัวเลือก 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 Boot Manager ทำงานและสามารถหา BCD ได้ตั้งแต่แรก)

ด้านล่าง {bootmgr} คือส่วนใด ๆ ของ "Windows Boot Loader" และส่วนอื่น ๆ ที่เป็นไปได้แต่ละอันควบคุมการกระทำหนึ่งหรือตัวเลือกการบูต

การตั้งค่าบูตคู่โดยใช้ bcdedit (คุณไม่ต้องการอะไรอีกแล้ว)

หากต้องการดูอัลบูทคุณต้องบอก bcdedit ให้ทราบถึง/copyรายการดี ๆ ของWindows Boot Loaderที่มีอยู่แล้วสำหรับระบบปฏิบัติการเครื่องแรกของคุณ

  • /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}.

ที่สร้างรายการอิสระด้วยชื่อที่ถูกต้องตอนนี้คุณต้องบอกว่าจะทำอย่างไร เนื่องจากแทบจะไม่มีการเปลี่ยนแปลงใด ๆ ในระบบปฏิบัติการล่าสุดคุณสามารถตั้งค่าอุปกรณ์และ osdevice เป็นพาร์ติชัน Win7 ของคุณและอาจใช้งานได้ หากจำเป็นให้ดูที่ผลลัพธ์ของ / enum เมื่อคุณบูตเข้าสู่ Win7 ตามปกติและคัดลอกรายการที่ดูเหมือนว่าจะคาดหวัง แต่โดยปกติแล้วมันก็เพียงพอที่จะกำหนดตัวอักษรให้กับระบบปฏิบัติการที่สองของคุณชั่วคราวเช่น "Q" แล้วคำสั่งคือ: bcdedit /set {NEW_IDENTIFIER} device partition=Q:หรืออะไรบางอย่างและเหมือนกันสำหรับosdeviceหรืออะไรบางอย่างและเหมือนกันสำหรับbcdedit จะเรียงลำดับตัวอักษรของไดรฟ์ดูด้านล่าง คุณสามารถลบอักษรระบุไดรฟ์ชั่วคราวเมื่อมีการใช้งานใน bcd

ถัดไปเพิ่มเข้าไปในรายการของรายการใน {bootmgr} การใช้bcdedit /displayorder {NEW_ID} /addlastและ - crucially - บอก bcd เพื่อแสดงเมนูการบูตโดยใช้bcdedit /set {bootmgr} displaybootmenu Yesบอกเพื่อแสดงเมนูบูตใช้

เสร็จสิ้น

หมายเหตุ - มีความปลอดภัยในการใช้อักษรระบุไดรฟ์ "แปลก" หรือ "ผิด" ใน BCD และปลอดภัยหากเอาต์พุตของ / enum มีอยู่ด้วย

เพื่อความชัดเจนคุณไม่ต้องกังวลว่าอุปกรณ์ใหม่ของคุณจะถูกระบุว่าเป็น Q: (หรืออะไรก็ตาม) เมื่อมัน "ควรเป็น C:" bcdedit เก็บ ID ฮาร์ดไดรฟ์ไม่ใช่ตัวอักษร การยอมรับและแสดงคำถามอย่างเดียวล้วนเป็นประโยชน์ หากอุปกรณ์มีตัวอักษรมันจะแสดงตัวอักษรตามค่าเริ่มต้นแทน ID อุปกรณ์เพื่อความสะดวกของคุณ คุณสามารถดูสิ่งนี้ได้โดยการลบหรือกำหนดจดหมายจากระบบปฏิบัติการที่ 2 ใน DISKPART หรือ DISKMGMT.MSCand ผลลัพธ์ของ / enum จะเปลี่ยนกลับเป็น \ Device แทนทันที จริง ๆ แล้วมันบันทึกรหัสฮาร์ดไดรฟ์ที่ถูกต้องและเมื่อใช้ในการบูต Windows จะพบอุปกรณ์นั้น - ตัวอักษรนั้นใช้งานง่ายและไม่เคยบันทึกจริง


คุณ{0743bb44-fda6-11e3-90c8-e3ee27f3aec6}มาจากไหน คุณคัดลอก{current} Windows Boot Loaderแล้ว สิ่งอื่น ๆ ที่คุณทำสำเนาคืออะไร? (ไม่ใช่ตัวจัดการการบูตของ Windowsฉันถือว่า)
Ian Boyd

ขอขอบคุณ. ฉันยืนยันได้ว่ามันใช้งานได้เช่น Windows 10 เวอร์ชั่น 1903 (รุ่น 18362) ฉันมีอิมเมจของพาร์ติชัน Windows 10 OS NTFS ฉันคืนค่าพาร์ติชันบนเครื่องอื่นฉันเริ่มระบบใหม่จากสื่อการติดตั้งไปยัง Windows Recovery และกำหนดตัวอักษรไดรเวอร์โดยใช้ diskpart จากนั้นสำเนา bcdedit / สำเนาของ {default} (ไม่ใช่ {current} ใน WinRE) และ bcdedit / ชุดอุปกรณ์และ osdevice ไปยังไดรฟ์ใหม่ เมื่อรีบูทฉันได้รับเลือกให้ใช้งาน OS และมันรีบูตอิมเมจเก่าได้ดี มันเป็น Windows 10 ซึ่งเป็นการบูทที่ยืดหยุ่นมากโดยไม่คำนึงถึงการเปลี่ยนแปลง HW ที่สมบูรณ์
Marko Kohtala

2

เพื่อตอบคำถามเฉพาะของผู้เขียนตามที่กล่าวย้ำในความคิดเห็น (แม้ว่ามันจะแตกต่างจากคำถามเริ่มต้นของเขาเกี่ยวกับbcdedit.exeลำดับที่จะบรรลุเหมือนกัน):

บางทีเกือบจะเป็นเรื่องง่ายเหมือน msconfig ยกเว้นมันให้คุณเรียกดูการติดตั้ง Windows อื่นและมันจะเพิ่มให้คุณ

EasyBCDเป็นสิ่งที่คุณต้องการอย่างแท้จริง (ฟรีสำหรับใช้ส่วนตัว) จะเป็นเครื่องมือที่ผู้จัดการอัลบูตภาพสำหรับ Windows และการเพิ่มรายการใหม่ Windows อยู่กับจุดและคลิกตรงตามที่คุณเล่าว่า

มีทรัพยากรมากมายบน EasyBCD ออนไลน์ดังนั้นฉันจะไม่ทำซ้ำทุกสิ่งที่นี่ โดยทั่วไปแล้ว EasyBCD จะสรุปความซับซ้อนของbcdedit.exeและขยายออกด้วยโมดูล bootloader ของตัวเองเพื่อให้คุณสามารถตั้งค่า dual-boots กับ Windows (รุ่นใหม่หรือเก่ากว่า) รุ่นอื่น ๆ รวมถึง Linux, BSD และอื่น ๆ

การเปิดเผยแบบเต็ม: ฉันเป็นผู้เขียนหลักของ EasyBCD


-1
bcdedit
bcdboot
bcdedit /create

สิ่งนี้สามารถชี้ไปที่ไฟล์เช่นไฟล์. vhd แต่สร้างขึ้นเป็นพาร์ติชัน diskpart และเริ่มต้นและเชื่อมต่อหรือติดตั้งได้ทันทีและรีบูตเป็นระบบปฏิบัติการ ระบบปฏิบัติการสามารถซ่อนอยู่ภายในพาร์ติชันอื่น สามารถซ่อนพาร์ติชันอื่นภายในพาร์ติชันและระบบปฏิบัติการอื่นภายในได้ เมื่อคุณเรียกใช้bcdeditเพื่อชี้ไปยังไฟล์. vhd อื่นไม่ว่าจะอยู่ที่ไหนก็ตาม มันโหลดขึ้น ผู้สอนของฉันแสดงสิ่งนี้ในชั้นเรียน แต่ล้มเหลวหรือปฏิเสธที่จะให้คำอธิบายbcdeditเพิ่มเติม แต่มันทำงานเพื่อซ่อนและใช้งานระบบปฏิบัติการที่ทำงานได้อย่างสมบูรณ์

  1. bcdboot e:\windows
  2. bcdboot c:\windows
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.