ในบทความนี้ เราจะเรียนรู้ วิธีซ่อมแซม Windows bootloader บนคอมพิวเตอร์สมัยใหม่ ที่ใช้ UEFI แทน BIOS และตารางพาร์ติชัน GPT (แทน MBR) การเสียหายของ Windows bootloader อาจเกิดขึ้นหลังจากติดตั้ง OS ที่สอง (ในการตั้งค่า Dual Boot) การดำเนินการไม่ถูกต้องระหว่างการกู้คืน Windows การลบข้อมูลบนพาร์ติชันที่ซ่อนอยู่ ซอฟต์แวร์ร้าย (ไวรัส รैनซ์มแวร์ ฯลฯ) และเหตุผลอื่นๆ
บทความนี้ให้คำแนะนำทีละขั้นตอนสำหรับการกู้คืน bootloader ที่เสียหายหรือถูกลบบน Windows 10 และ Windows 8.1 บนคอมพิวเตอร์ที่ทำงานในโหมด UEFI native (non-legacy) คู่มือนี้จะช่วยได้หาก Windows ไม่สามารถบูทได้เนื่องจากไฟล์การกำหนดค่าการบูท \EFI\Microsoft\Boot\BCD หายไปหรือเสียหาย
The boot configuration data for your PC is missing: EFI\Microsoft\Boot\BCD
คอมพิวเตอร์ที่ติดตั้ง Windows 10 ในโหมด UEFI native จะบูทไม่ได้หาก EFI bootloader เสียหาย เมื่อพยายามบูทคอมพิวเตอร์ จะเกิดข้อผิดพลาด BSOD (Blue Screen of Death) ดังนี้:
The boot configuration data for your PC is missing or contains errors. File :\EFI\Microsoft\Boot\BCD Error code: 0xc000000f
หรือ:
Error code: 0xc000014c

ข้อผิดพลาดนี้บ่งชี้ว่าการกำหนดค่าการบูทของ Windows - Boot Configuration Data (BCD) ถูกทำลายหรือถูกลบไปหมด หากคุณพยายามซ่อมแซม bootloader บนคอมพิวเตอร์ UEFI โดยใช้เครื่องมือ bcdedit คุณจะได้รับข้อผิดพลาดแบบนี้:
The boot configuration data store could not be found. The requested system device cannot be found.
ข้อเท็จจริงคือ หาก Windows 10 ถูกติดตั้งในโหมด UEFI native บนดิสก์ GPT แล้ว Windows 10 EFI bootloader (Windows Boot Manager) จะจัดเก็บ Boot Manager และการกำหนดค่า BCD บน hidden EFI volume แยกต่างหาก (ขนาด 100 MB ด้วยระบบไฟล์ FAT32) เครื่องมือ bcdedit ไม่เห็นพาร์ติชัน EFI นี้ และไม่สามารถจัดการการกำหนดค่า bootloader บนมันได้
หากคอมพิวเตอร์บูทด้วยหน้าจอสีดำพร้อมข้อความ "Operating System not found" น่าจะเป็นเพราะ Windows bootloader ถูกลบไปหมด โปรดปฏิบัติตามคำแนะนำในลิงก์
การกู้คืน Windows Bootloader แบบอัตโนมัติ
ขั้นตอนการซ่อมแซม bootloader แบบอัตโนมัติที่ใช้ใน Windows Recovery Environment (WinRE) มักจะไม่มีประโยชน์ในกรณีเช่นนี้ แต่ก็คุ้มค่าที่จะลอง:
- พยายามบูทอุปกรณ์ของคุณจากแผ่นกู้คืนหรือสื่อติดตั้ง Windows 10;
- บนหน้าจอการติดตั้ง คลิก Restore System;
- จากนั้นเลือก Troubleshooting -> Startup Repair และเลือก OS ที่คุณต้องการพยายามกู้คืน bootloader;

- แต่ผลลัพธ์ส่วนใหญ่จะเป็นลบ:
Automatic Repair couldn't repair your PC
การใช้ BCDBoot เพื่อซ่อมแซม EFI Bootloader ใน Windows 10 แบบมืออาชีพ
มาเริ่มขั้นตอนการกู้คืน EFI Windows bootloader บนคอมพิวเตอร์ UEFI แบบมืออาชีพกัน
เพื่อซ่อมแซมการกำหนดค่า bootloader (BCD) คุณต้องบูทจากสื่อติดตั้ง Windows 10 ต้นฉบับ (หรือแผ่นกู้คืน หรือ USB flash drive ที่บูทได้ UEFI) หลังจากบูทเข้าสู่สภาพแวดล้อมกู้คืน คุณต้องเปิดคำสั่งบรรทัด: เลือก System Restore -> Troubleshooting -> Command Prompt)
คุณสามารถรัน Command Prompt ได้หากคุณมีเฉพาะสื่อติดตั้ง Windows ในมือ บนหน้าจอแรกของการติดตั้ง Windows (เมื่อเลือกภาษาและรูปแบบคีย์บอร์ด) กดชุดปุ่ม Shift+F10 (หรือ Shift+Fn+F10 บนบางรุ่นแล็ปท็อป)

ใน Command Prompt ที่เปิดขึ้น ให้รันเครื่องมือจัดการดิสก์โดยพิมพ์คำสั่ง:
diskpart
แสดงรายการดิสก์บนคอมพิวเตอร์:
list disk
ในขั้นตอนนี้ สิ่งสำคัญที่สุดคือการระบุประเภทตารางพาร์ติชันบนดิสก์ที่ติดตั้ง Windows: MBR หรือ GPT จุดสำคัญคือ EFI bootloader ใช้ได้เฉพาะกับดิสก์ที่มีตารางพาร์ติชัน GPT
หากดิสก์มีเครื่องหมายดอกจัน (*) ในคอลัมน์ Gpt แสดงว่าใช้ตารางพาร์ติชัน GPT หากไม่มี ใช้ MBR

หากดิสก์ของคุณใช้ตารางพาร์ติชัน GPT ให้ทำตามขั้นตอนด้านล่างในคำแนะนำเพื่อซ่อมแซม Windows EFI bootloader
หากคุณมีตารางพาร์ติชัน MBR บนดิสก์ คำแนะนำนี้จะไม่ทำงานกับคอมพิวเตอร์ของคุณ น่าจะเป็นคอมพิวเตอร์ที่ใช้ BIOS หรือเปิดใช้งานตัวเลือก Legacy/Compatibility Support Mode (CSM) ในการตั้งค่า UEFI
บนดิสก์ MBR Windows bootloader จะจัดเก็บอยู่บนพาร์ติชัน System Reserved แยกต่างหาก ไม่ใช่บนพาร์ติชัน EFI (ในทุกกรณี อย่าแปลงตารางพาร์ติชัน MBR เป็น GPT จนกว่าคุณจะซ่อมแซม Windows bootloader เรียบร้อย!!) ให้ใช้คู่มืออื่นในการกู้คืน BCD bootloader บนดิสก์ MBR (Master Boot Record)
เลือกดิสก์ที่ติดตั้ง Windows (หากมีฮาร์ดดิสก์เพียงตัวเดียวในระบบ ดัชนีควรเป็น 0):
sel disk 0
แสดงรายการพาร์ติชันและโวล्यูมบนดิสก์:
list partition
list volume

ในตัวอย่างนี้ คุณเห็นว่าพาร์ติชัน EFI boot (ระบุได้ง่ายจากขนาด 100 MB และระบบไฟล์ FAT32 มักมีป้ายกำกับ System EFI) มีดัชนีพาร์ติชัน 2 (หรือ Volume 5 ที่มีป้ายกำกับ Hidden) พาร์ติชันหลักที่ติดตั้ง Windows ด้วยระบบไฟล์ NTFS (อาจเป็น Windows 10 หรือ Windows 8.1) คือ Volume 2 ต้องมีพาร์ติชัน MSR (Microsoft System Reserved) ขนาด 16 MB สำหรับ Windows 10 (หรือ 128 MB สำหรับ Windows 8.1) ด้วย
หากคุณไม่มีพาร์ติชัน EFI หรือ MSR แยกต่างหาก คุณสามารถสร้างใหม่ด้วยตนเองได้ ตรวจสอบบทความ Restoring deleted EFI and MSR system partitions
กำหนดตัวอักษรไดรฟ์ K: ให้กับโวล्यูม EFI ที่ซ่อนอยู่:
select volume 1
assign letter K:
ควรมีข้อความว่าตัวอักษรไดรฟ์ถูกกำหนดให้กับพาร์ติชัน EFI เรียบร้อยแล้ว:
DiskPart is successfully assigned the drive letter or mount point.
ปิด diskpart:
exit
ไปที่ไดเรกทอรี bootloader บนโวล्यูมที่ซ่อนอยู่:
cd /d K:\efi\microsoft\boot\
ในกรณีนี้ K: คือตัวอักษรไดรฟ์ที่กำหนดให้กับพาร์ติชัน EFI ข้างต้น หากไดเรกทอรี \EFI\Microsoft\Boot\ หายไป (ข้อผิดพลาด The system cannot find the path specified) ลองคำสั่งต่อไปนี้:
cd /d K:\Boot\
หรือ
cd /d K:\ESD\Windows\EFI\Microsoft\Boot\
ในจุดนี้ คำแนะนำหลายแห่งแนะนำให้รันคำสั่งต่อไปนี้ ซึ่งควรเขียนทับ boot record ของพาร์ติชัน ค้นหา Windows ที่ติดตั้ง และเพิ่มลงใน BCD:
bootrec /fixboot
bootrec /scanos
bootrec /rebuildbcd
หรือแม้แต่:
bootrec /FixMbr (การกู้คืน MBR record สำหรับดิสก์ GPT ดูแปลก)
คำสั่งทั้งหมดนี้ใช้ได้เฉพาะกับดิสก์ MBR หากคอมพิวเตอร์ของคุณบูทในโหมด UEFI แล้ว จะต้องใช้ตารางพาร์ติชัน GPT (เช่นในกรณีของเรา) ดังนั้น เมื่อคุณรันคำสั่ง bootrec คุณจะเห็นข้อผิดพลาด: access is denied
เพื่อซ่อมแซม boot records บนพาร์ติชัน EFI คุณต้องใช้เครื่องมือ BCDBoot เครื่องมือ BCDBoot ช่วยให้คุณกู้คืนไฟล์ bootloader บนพาร์ติชันระบบโดยการคัดลอกจากไดเรกทอรีระบบบนพาร์ติชัน Windows การกำหนดค่า BCD bootloader จะถูกสร้างใหม่โดยใช้ไฟล์ %WINDIR%\System32\Config\BCD-Template
ใช้คำสั่ง attrib เพื่อลบแอตทริบิวต์ hidden, read-only, และ system จากไฟล์ BCD:
attrib BCD -s -h -r
ลบไฟล์การกำหนดค่า BCD ปัจจุบันโดยการเปลี่ยนชื่อ (จะเก็บการกำหนดค่าบูทเก่าไว้เป็นสำรอง):
ren BCD BCD.bak
โดยใช้ยูทิลิตี้ bcdboot.exe คุณต้องสร้าง BCD store ใหม่โดยการคัดลอกไฟล์ UEFI boot environment ไปยังพาร์ติชันบูทจากไดเรกทอรี Windows:
bcdboot C:\Windows /l en-us /s k: /f ALL
- C:\Windows – คือพาธไปยังไดเรกทอรีที่ติดตั้ง Windows 10;
- /f ALL – หมายถึงคุณต้องการคัดลอกไฟล์ Windows Boot Environment รวมถึงสำหรับคอมพิวเตอร์ UEFI และ BIOS (ความสามารถในการบูทในระบบ UEFI และ BIOS) หากต้องการคัดลอกเฉพาะ EFI bootloader ให้ใช้คำสั่ง /f UEFI;
- /l en-us — คือประเภทของ system locale โดยค่าเริ่มต้นใช้ en-us – English (USA);
- /c – นี่คือตัวเลือก BCDBoot ใหม่ใน Windows 10 ที่อนุญาตให้เขียนทับ boot records ที่มีอยู่ (รวมถึง debugsettings) ใช้ตัวเลือกนี้เพื่อข้ามการตั้งค่าบูทเก่าและสร้างการกำหนดค่า BCD ที่สะอาด;
- /v – ใช้เพื่อเปิดใช้งานการแสดงผลแบบ verbose ของ BCDBoot
เคล็ดลับ หากคุณใช้ Windows 10 เวอร์ชันที่ถูกปรับภาษาท้องถิ่น คำสั่งจะแตกต่างออกไป ตัวอย่างเช่น สำหรับเวอร์ชัน Windows สหราชอาณาจักร ให้ใช้คำสั่งต่อไปนี้
bcdboot c:\Windows /l en-uk /s K: /f ALL
Windows 10 ดัทช์:
bcdboot c:\Windows /l nl-NL /s K: /f ALL
Windows 10 เยอรมัน:
bcdboot c:\Windows /l de-DE /s K: /f ALL
ตอนนี้ หากคุณรันคำสั่ง bcdedit คุณจะเห็นดังนี้:
ควรมีรายการปรากฏในส่วน Windows Boot Manager ที่มีพาธเต็มไปยังไฟล์ UEFI boot (\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI) ในตัวอย่างนี้อยู่บนโวล्यูม 2 (partition=\Device\HarddiskVolume2)

ข้อผิดพลาดที่เป็นไปได้:
- BFSVC Error: Could not open the BCD template store. status – [c000000f] – ตรวจสอบว่าคำสั่งที่ป้อนถูกต้องและว่าคุณติดตั้ง Windows เวอร์ชันที่ปรับภาษาท้องถิ่นหรือไม่ ในกรณีนี้คุณต้องระบุรหัสภาษาท้องถิ่นที่ถูกต้อง เครื่องมือ bcdboot คัดลอกไฟล์เทมเพลต BCD จากโฟลเดอร์ \Windows\System32\Config หากเทมเพลต BCD ในโฟลเดอร์นี้เสียหายหรือถูกลบ ลองตรวจสอบความสมบูรณ์ของไฟล์ระบบแบบออฟไลน์โดยใช้เครื่องมือ
sfc.exe(คุณต้องการแผ่นติดตั้ง Windows – ไดรฟ์ D :):sfc /scanow /OFFBOOTDIR=C:\ /OFFWINDIR=D:\WINDOWS - BFSVC Error: Error copying boot files from Last Error = 0x570 – ลองตรวจสอบไดรฟ์ด้วยคำสั่ง:
CHKDSK K: /F - BFSVC Error: Failed to set element application device. Status = [c000000bb] – ตรวจสอบพาร์ติชัน EFI และ Windows 10 ด้วย
chkdsk.exeตรวจสอบว่าแอตทริบิวต์ hidden และ system ของไฟล์ BCD ถูกลบแล้ว ลบออก:
attrib -s -h \EFI\Microsoft\Boot\BCD
del \EFI\Microsoft\Boot\BCD

- Failure when initializing library system volume – ตรวจสอบให้แน่ใจว่าคุณใช้พาร์ติชัน FAT32 ที่ถูกต้องพร้อม EFI (คุณอาจมีพาร์ติชันที่คล้ายกันหลายพาร์ติชัน)
ตอนนี้คุณต้องรีสตาร์ทคอมพิวเตอร์และถอดสื่อบูทออก จากนั้น Windows Boot Manager จะปรากฏในรายการอุปกรณ์ที่บูทได้ โดยคุณสามารถเลือกระบบปฏิบัติการที่ต้องการบูทได้ EFI bootloader และการกำหนดค่า BCD ของคุณได้รับการกู้คืนสำเร็จแล้ว!