Đây là cách tôi khắc phục lỗi Windows không hiển thị trong menu khởi động kép

Tác giả Starlink, T.M.Một 23, 2025, 10:38:23 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Đôi khi số lượng nhân viên phụ trách hệ điều hành không đủ.

Nếu gần đây bạn thiết lập cấu hình khởi động kép với Windows và Linux, bạn có thể đã gặp phải vấn đề tương tự như tôi: Windows không hiển thị dưới dạng tùy chọn trong menu GRUB. Tôi sẽ chỉ cho bạn cách tôi giải quyết vấn đề này (và lý do kỹ thuật đằng sau).


Cụ thể hơn, tôi đã cài đặt CachyOS trên một ổ đĩa riêng biệt với ổ đĩa Windows 11 của mình. Tôi đã cài đặt nhiều bản phân phối Linux khác nhau trên ổ đĩa này nhiều lần, và menu khởi động thường hoạt động bình thường. Tùy chọn khởi động Windows 11 của tôi tự động hiện ra mà không cần tôi phải làm gì cả. Tuy nhiên, trong trường hợp này, tôi phải thực hiện thêm một vài bước nữa mới có thể khởi động được.

Nếu khi khởi động máy tính, bạn không thấy bất kỳ menu khởi động nào, trước tiên bạn cần tìm hiểu cách làm cho menu GRUB xuất hiện.

1. Tại sao Windows không hiển thị trong GRUB

Hóa ra, các bản cài đặt GRUB hiện nay thường bị tắt os-prober, và đó là lý do Windows không xuất hiện. Nếu bạn chưa biết, os-prober là một gói cho phép GRUB tự động nhận dạng các hệ điều hành khác được cài đặt trên PC của bạn. Khi bị tắt, GRUB sẽ không thể nhận dạng Windows nếu không có sự can thiệp thủ công.

Nguyên nhân là do người dùng không tin tưởng gói os-prober. Các nhà phát triển bản phân phối GRUB đã chọn tắt os-prober như một biện pháp phòng ngừa bảo mật từ năm 2021, khi nhà phát triển Canonical Julian Andres Klode nêu lý do tắt os-prober trong Ubuntu. Họ nói rằng, "os-prober vốn không an toàn vì nó mount tất cả các phân vùng trên ổ đĩa của bạn bằng grub-mount để kiểm tra xem có hệ điều hành nào khác không." Mặc dù các bản vá đã được phát hành kể từ đó, nhiều người vẫn không tin tưởng nó.

Bạn có thể dễ dàng bật lại os-prober nếu muốn. Tuy nhiên, việc nên hay không còn tùy thuộc vào tình huống của bạn. Tôi không chuyên tư vấn an ninh mạng nếu không nắm rõ mô hình mối đe dọa của bạn, ít nhất là vậy.

Riêng tôi, tôi thấy thoải mái khi bật lại os-prober vì nghiên cứu của tôi cho thấy hầu hết các vấn đề đều liên quan đến giải pháp thay thế Secure Boot, và tôi đã tắt Secure Boot trên máy tính của mình. Một lần nữa, quyết định lựa chọn nào là an toàn nhất là tùy thuộc vào bạn. Vì vậy, tôi sẽ chỉ cho bạn hai lựa chọn khác nhau, trong đó một lựa chọn là tránh hoàn toàn os-prober.

2. Tùy chọn dễ dàng: Kích hoạt os-prober

Nếu bạn cảm thấy tự tin khi bật os-prober do những tác động về bảo mật, bạn có thể thực hiện bằng cách chỉnh sửa cấu hình GRUB mặc định. Thông thường, bạn có thể tìm thấy tệp cấu hình tại /etc/default/grub, vì vậy việc chỉnh sửa tệp sẽ yêu cầu mở tệp bằng trình soạn thảo văn bản bạn chọn và với quyền quản trị. Để chỉnh sửa tệp bằng nano, tôi đã sử dụng lệnh này:

Mã nguồn [Chọn]
sudo nano /etc/default/grub
Cuộn qua tệp cho đến khi bạn tìm thấy dòng có nội dung #GRUB_DISABLE_OS_PROBER=false. Bỏ chú thích bằng cách xóa ký hiệu #.

Đó là tất cả những gì bạn cần làm để kích hoạt os-prober, ngoài việc lưu tệp. Trong nano, bạn thực hiện việc này bằng cách nhấn Ctrl+o rồi Enter để xác nhận tên tệp, sau đó nhấn Ctrl+x để thoát nano. Đừng quên cập nhật GRUB, như tôi sẽ giải thích sau.

4. Tùy chọn an toàn hơn: Thêm Windows theo cách thủ công dưới dạng mục menu

Một lựa chọn khác an toàn hơn nhưng phức tạp hơn một chút là bỏ qua bước bật os-prober và thay vào đó tự thêm Windows vào menu khởi động của GRUB.

Để thực hiện việc này, trước tiên bạn cần biết hệ thống Linux của bạn đặt phân vùng EFI của Windows ở đâu. Bạn có thể tìm ra điều này bằng cách chạy lệnh sau, lệnh này sẽ liệt kê tất cả các ổ đĩa và mục đích sử dụng của chúng :

Mã nguồn [Chọn]
sudo dfisk -l

Tôi thấy trên ổ đĩa Windows của mình có một thiết bị có nhãn "EFI System" nằm tại /dev/nvme0n1p1. Tôi sẽ sao chép địa chỉ đó và chuẩn bị sẵn cho lệnh blkid sau, lệnh này sẽ hiển thị UUID của thiết bị, thông tin mà chúng ta cần cho mục khởi động tùy chỉnh:

Mã nguồn [Chọn]
sudo blkid /dev/nvme0n1p1

Tìm giá trị UUID trong dấu ngoặc kép và ghi lại. Sau đó, chúng ta sẽ chỉnh sửa 40_customtệp GRUB, cho phép thêm các mục khởi động tùy chỉnh vào GRUB. Tôi đang sử dụng nano để làm điều này, nhưng bạn có thể sử dụng trình soạn thảo văn bản ưa thích của mình.

Mã nguồn [Chọn]
sudo nano /etc/grub.d/40_custom
Dán khối mã sau vào, sau đó thay thế your-Windows-EFI-partition-UUIDbằng UUID mà bạn tìm thấy.

Mã nguồn [Chọn]
menuentry "Windows" --class windows --class os {
   insmod ntfs
   search --no-floppy --set=root --fs-uuid your-Windows-EFI-partition-UUID
   ntldr /bootmgr
}

Ngoài ra, hãy lưu ý rằng bạn có thể thay đổi văn bản bên trong dấu ngoặc kép theo sau "menuentry" thành bất kỳ nội dung nào bạn muốn mục khởi động Windows của mình hiển thị.

4. Dù bằng cách nào, hãy nhớ cập nhật GRUB

Sau khi thay đổi tệp cấu hình mặc định GRUB hoặc thêm mục khởi động tùy chỉnh, đừng quên tạo lại cấu hình GRUB. Quá trình này thực sự giúp các thay đổi của bạn có hiệu lực. Thành thật mà nói, tôi cũng đã quên mất điều này khi tắt os-prober và bối rối khi Windows không xuất hiện sau khi khởi động lại.

Để đơn giản hóa mọi việc, một số bản phân phối có sẵn các bí danh (alias) để cập nhật GRUB, chẳng hạn như update-grub. Bạn có thể thử chạy bí danh đó trước (dưới dạng sudo), nhưng nếu không được, bạn luôn có thể cập nhật thủ công bằng lệnh này:

Mã nguồn [Chọn]
sudo grub-mkconfig -o /boot/grub/grub.cfg
Đợi quá trình tái tạo hoàn tất, sau đó thử khởi động lại. Bạn sẽ thấy Windows, cùng với bất kỳ hệ điều hành nào khác bạn đã cài đặt, trong menu khởi động GRUB.

5. Hãy cân nhắc thay thế GRUB để tránh sự cố

Nếu bạn lo ngại về lỗ hổng bảo mật của os-prober và không muốn chỉnh sửa menu GRUB thủ công, thì tôi khuyên bạn nên tìm hiểu các trình quản lý khởi động thay thế.

Ví dụ, bạn có thể thay thế GRUB bằng systemd-boot, mặc dù nó không hỗ trợ BIOS cũ (so với UEFI). Bạn cũng có thể cân nhắc Clover Bootloader, ban đầu được thiết kế cho Hackintosh và hỗ trợ cả UEFI lẫn BIOS. Một lựa chọn khác mang lại trải nghiệm tương tự như trình quản lý khởi động của macOS là rEFInd.