Được rồi. Vài ngày trước, chúng ta nói về laptop bị hỏng của tôi và việc khôi phục instance KDE neon trong setup eight-boot Windows-and-Linux. Như kết quả, các distro không boot vì được cấu hình mount partition không tồn tại. Điều này xảy ra vì Linux system mới dùng cách marking device dưới tối ưu, với chuỗi UUID vô nghĩa, unreadable cho con người, thay vì số đơn giản.
Vâng, chúng ta cần fix instance Windows 10 cũng. Ở đây, vấn đề hơi tương tự. Windows 10 bắt đầu boot, rồi có message về diagnosing PC, automatic repair — và sau đó, như dự đoán, automatic repair fail. Trong bài trước, chúng ta đã xác định partition Windows 10 khỏe, toàn bộ data còn đó, nên tôi không muốn reset hay gì. Để tôi chỉ cách tôi graceful fix vấn đề annoying này.
Vấn đề chi tiết
Màn hình recovery console xanh nhạt của Windows 10 hiện:
The automatic repair couldn't repair your PC.
Press "Advanced Options" to try other options to repair your PC or "Shut Down" to turn off your PC.
Log file: C:\Recovery\WindowsRE\Winre.wim\System32\Logfiles\Srt\SrtTrail.txt.
Như một techie tốt, tôi quyết định best course là vào advanced options, start command line prompt, navigate đến log file và đọc nội dung. Trừ file đó không có. Chúng ta sẽ explore ngay.
Lúc này, tôi nghĩ recent system image recovery test tôi làm có thể partially hoặc wholly responsible cho vấn đề. Vậy có lẽ Windows 10 bootloader cần fix. Tôi doubtful, đặc biệt vì tôi dùng Linux bootloader control sequence, nhưng để eliminate the obvious, tôi thử simple bootloader fix:
bootrec.exe /rebuildbcd
bootrec.exe /fixmbr
bootrec.exe /fixboot
Tôi gặp vấn đề ngay. Chạy command từ Windows 10 USB thumb drive, nó find nothing. Lại có lý do, chúng ta sẽ đến. Chạy từ recovery console, nó find one, nhưng reference D:\ drive thay vì C:\, và khi thử add entry, command than không complete operation:
The system cannot find the path specified.
Và command cuối cho error:
Access is denied.
Thực tế log file nên ở C:\ mà không có, và bootrec.exe tìm thấy OS ở D:\ khiến tôi nghĩ drive letters có thể không assigned đúng, và tôi cần fix đó. Vậy vào solution.
Giải pháp 1
Tôi launch diskpart tool từ cmd. Đây là disk manager tool bạn thường dùng trong Windows, nghĩa là GUI đẹp. Ở đây cần dùng command-line commands. Nếu không chắc làm gì, gõ ? để xem options/flags. Trước tiên, check volume letters.
diskpart
list volumes
Trong ví dụ tôi, nhận ra C:\ drive assigned sai. Tôi đổi đó. Nếu letter C: đã taken, cần hai bước: trước assign drive holding sang letter free, rồi assign drive đúng. Ví dụ (bỏ qua số thực tế, vì unique tùy setup):
select volume 2
assign letter=(gì đó không phải C):
select volume 5
assign letter=C:
Tôi quay lại chạy bootrec.exe, và tiến triển, nhưng hệ thống vẫn không boot.
Giải pháp 2
Lúc này, tôi chắc chắn vấn đề không phải bootloader. Vì vậy đến bước tiếp theo trong boot process. Trong trường hợp này, boot image, nằm trên partition EFI. Có lẽ, vì lý do nào đó, file này bị corrupt, và cần rebuild.
Tôi boot vào recovery console, chạy diskpart lại, nhưng giờ có hai bước. Đầu tiên, map volume đúng sang C:\. Thứ hai, đảm bảo làm việc với partition EFI. Chú ý kỹ drive letter. Nếu sợ mess up, bạn select volume, assign letter mới, rồi rebuild boot image. Nếu letter đúng, skip bước này.
diskpart
list volumes
# select partition corresponds to C:
select volume X
assign letter=C:
# select EFI partition (FAT32, with boot flag và thường hidden)
select volume Y
assigned letter=F:
exit
Tôi chọn F cho EFI. Bạn chọn letter nào cũng được. Giờ bước repair boot image:
bcdboot.exe C:\Windows /s F: /f UEFI
Chúng ta có gì ở đây? Chạy bcdboot như sau:
- Source — khởi tạo system partition bằng BCD files từ C:\Windows.
- /s — chỉ định letter của system (EFI) partition.
- /f — chỉ định firmware type.
Cả /s và /f đều optional. Check technical reference để chi tiết.
Sau bước này xong, tôi reboot, và Windows 10 launch ngon, mọi thứ intact. Tất cả distro Linux khác chạy, GRUB2 untouched, không mất data.
Kết luận
Tôi thấy bài tập này frustrating, nhưng cũng rather enjoyable. Khi nói đến deep technical stuff, Windows hành xử y hệt Linux. Và nó cũng equally vague và non-resilient khi nói đến system boot errors. Tôi wonder tại sao automatic repair không làm được những gì tôi làm. Không có gì special hoặc magic trong chuỗi bước tôi lấy. Cũng, logs không dễ accessible. Tại sao không cho user đọc chúng ngay trên màn hình lỗi đầu tiên?
Vấn đề khác là, khi có discrepancies về cách hệ thống expect things — như drive letters, bạn bỗng nhiên gặp chục vấn đề khác chỉ distract bạn. Giải pháp không quá khó, nhưng bạn lãng phí thời gian troubleshooting nonsense. Đó là modern software cho bạn. Vâng, tôi hy vọng tôi đã clarify ever so slightly những gì bạn có thể làm nếu multi-boot, và gặp vấn đề start Windows 10. Nếu data intact, bắt đầu simple, và đi qua boot sequence, step by step. Về philosophy, nó giống Linux. Tương lai không hồng hào, vì vậy tận hưởng cái technical freedom nhỏ bé bạn còn có trước khi tất cả trở thành abstract nightmare.
Cheers.