Đầu tiên, điều quan trọng là bạn hiểu chế độ khởi động của mình. Máy tính hiện đại có thể khởi động theo một trong hai cách:
- BIOS - Đây là cách khởi động cũ, được sử dụng trên hầu hết các máy tính được giới thiệu trước năm 2011. Máy tính hiện đại hỗ trợ khởi động chế độ BIOS thông qua một tính năng gọi là Mô-đun hỗ trợ tương thích (CSM), còn gọi là "hỗ trợ khởi động chế độ kế thừa" hoặc một thuật ngữ tương tự. Do đó, phương pháp này có thể được gọi bằng ba tên: BIOS, CSM hoặc di sản. Nó liên quan đến mã bộ tải khởi động 16 bit được chia nhỏ trong Bản ghi khởi động chính (MBR) và nhiều nơi khác. Đây là một phương pháp khởi động không phù hợp nhưng trưởng thành và hầu hết các trang web không đề cập rõ ràng đến chế độ khởi động mô tả khởi động chế độ BIOS. Tuy nhiên, nếu máy tính của bạn đi kèm với Windows 8 trở lên, rất có thể nó không sử dụng phương pháp khởi động này.
- EFI / UEFI - Đây là chế độ khởi động riêng cho hầu hết các máy tính được giới thiệu từ giữa năm 2011 và nó hoàn toàn khác với khởi động ở chế độ BIOS, vì vậy bạn nên bỏ qua mọi lời khuyên rõ ràng về việc khởi động ở chế độ BIOS, hoặc bất cứ điều gì không đề cập đến chế độ khởi động (vì nó có thể đã cũ hoặc được viết bởi một người không biết sự khác biệt). Một ngoại lệ: Thật khó hiểu, nhiều người, và thậm chí các nhà sản xuất máy tính, gọi EFI của họ là "BIOS". Thực hành này tạo ra rất nhiều nhầm lẫn.
Vì bạn đề cập đến Windows 10, rất có thể máy tính của bạn dựa trên EFI và khởi động ở chế độ EFI. Tôi sẽ tiến hành theo giả định đó. Nếu điều này là không chính xác, bỏ qua phần còn lại của câu trả lời này.
Để khởi động đĩa nội bộ ở chế độ EFI, HĐH thường lưu trữ bộ tải khởi động dưới dạng tệp trên Phân vùng hệ thống EFI (ESP) trên đĩa. Tên tệp này có thể là bất cứ điều gì hợp pháp, nhưng đối với Ubuntu, nó sẽ EFI/ubuntu/shimx64.efi
lần lượt ra mắt EFI/ubuntu/grubx64.efi
. Trình cài đặt hệ điều hành đăng ký tên của trình tải khởi động với trình quản lý khởi động tích hợp của EFI, lưu trữ tên đó trong NVRAM. Nếu EFI hoạt động chính xác (không phải tất cả), điều này dẫn đến một quá trình khởi động hoạt động.
Rắc rối với quá trình này, như được áp dụng cho một đĩa di động, là ba lần:
- Trình cài đặt Ubuntu sẽ cài đặt GRUB thành "ESP" - nhưng bạn có thể có sẵn nhiều ESP (gần như chắc chắn là một trên đĩa cứng và có thể một trên ổ USB). Kiểm soát nơi cài đặt GRUB có thể khó khăn. Nó không được thực hiện bằng cách sử dụng tùy chọn được đánh dấu với tiêu đề rõ ràng về nơi cài đặt GRUB. Thay vào đó, chỉ có thể thực hiện (AFAIK) từ tùy chọn cài đặt "Something Else" bằng cách đánh dấu ESP bạn muốn sử dụng làm "phân vùng khởi động EFI" hoặc "Phân vùng hệ thống EFI" (tên này phụ thuộc vào phiên bản Ubuntu).
- Nếu bạn cài đặt GRUB vào ESP trên ổ USB, thì khi bạn tháo ổ USB, EFI có thể nhận thấy rằng nó có mục nhập bộ tải khởi động đã đăng ký không hợp lệ và xóa mục đó. Nhiều EFI làm điều này và điều đó có nghĩa là nếu bạn cài đặt GRUB vào một ổ đĩa ngoài và sau đó rút phích cắm ra, bạn sẽ mất khả năng khởi động từ đĩa đó, ngay cả khi bạn cắm lại đĩa.
- Cách Ubuntu định cấu hình GRUB khiến nó dựa vào các tệp cấu hình có trong
/boot/grub
thư mục Ubuntu , điều này không có khả năng nằm trên ESP. Do đó, nếu Ubuntu cài đặt GRUB vào ESP trên đĩa bên trong của bạn, bạn sẽ tránh được sự cố đầu tiên nhưng gặp phải sự cố khác vì khi bạn khởi động với ổ USB bị ngắt kết nối, GRUB sẽ khởi chạy và không thể tìm thấy các tệp cấu hình của nó. Kết quả là một grub>
dấu nhắc sẽ làm bí ẩn hầu hết người dùng.
Có một số giải pháp cho những vấn đề này, bao gồm:
- Cài đặt thủ công GRUB cho tên tệp dự phòng trên đĩa ngoài - Trình cài đặt hệ điều hành khởi động bằng cách sử dụng tên tệp dự phòng của
EFI/BOOT/bootx64.efi
. Nếu bạn sao chép Shim (mà ra mắt GRUB) để tên tập tin này (bằng cách sao chép EFI/ubuntu
để EFI/BOOT
trên ESP và sau đó đổi tên shimx64.efi
để bootx64.efi
ởEFI/BOOT
), phần sụn của bạn sẽ có thể khởi chạy GRUB dựa trên USB của bạn giống như trình cài đặt Ubuntu. Điều này sẽ khắc phục cả hai vấn đề tôi vừa xác định, nhưng bạn sẽ cần sử dụng trình quản lý khởi động tích hợp của máy tính để chọn hệ điều hành nào sẽ khởi động. Trình quản lý khởi động tích hợp này có phạm vi từ không thể sử dụng đến có thể chấp nhận được, vì vậy đây có thể là một giải pháp có thể chấp nhận được. Bạn cũng có thể cần phải điều chỉnh thứ tự khởi động sau khi bạn cài đặt Ubuntu để ngăn nó khởi chạy GRUB từ ESP của đĩa bên trong hoặc ESP của đĩa bên ngoài theo mặc định.
- Đặt một
/boot
phân vùng trên đĩa bên trong của bạn - Nếu bạn cài đặt GRUB vào đĩa bên trong, thì bạn cũng có thể đặt một /boot
phân vùng trên đĩa bên trong. Điều này sẽ cho phép GRUB hoạt động bình thường trên tất cả các bốt; tuy nhiên, tùy chọn Ubuntu sẽ xuất hiện mọi lúc, ngay cả khi rút đĩa USB. Điều này có thể là không mong muốn, đặc biệt nếu Ubuntu là mặc định. Ngoài ra, giải pháp này có nghĩa là ổ USB ngoài của bạn sẽ chỉ có khả năng khởi động trên máy tính mà bạn đã chuẩn bị. Nếu bạn muốn có thể sử dụng đĩa đó trên các máy tính khác, bạn nên tránh giải pháp này.
- Sử dụng một trình quản lý khởi động thông minh hơn - Một khởi động quản lý cung cấp cho bạn một lựa chọn hệ điều hành để khởi động, trong khi một boot loader tải một kernel vào bộ nhớ. GRUB thực hiện cả hai công việc và trình quản lý khởi động tích hợp của EFI chỉ thực hiện công việc đầu tiên. Có các trình quản lý khởi động khác có sẵn, một số trình quản lý có thể giúp bạn tránh các sự cố tôi đã xác định. Ví dụ, rEFInd của riêng tôi , nếu được cài đặt vào ESP của đĩa bên trong và tạo chương trình khởi động mặc định, sẽ phát hiện và hiển thị tùy chọn Ubuntu nếu và chỉ khi GRUB hoặc nhân Linux xuất hiện - nghĩa là khi ổ USB được cắm trong. Bằng cách đặt
default_selection
tùy chọn trongrefind.conf
một cách thích hợp, bạn có thể định cấu hình rEFInd để tự động khởi động Ubuntu nếu ổ USB Ubuntu của bạn được cắm và khởi động thẳng vào Windows nếu ổ USB Ubuntu không được cắm. Câu trả lời của tôi cho câu hỏi này cung cấp thêm chi tiết về loại cấu hình này, mặc dù trên Mac chứ không phải PC.
Với bất kỳ may mắn nào, một trong những cách tiếp cận này sẽ giúp bạn đứng dậy và chạy.