Thêm danh sách Windows 10 vào GRUB OS


29

Gần đây tôi có một máy tính từ trường học. Nó đi kèm với Windows 8.1 được cài đặt. Sau đó, tôi đã cài đặt một bản sao khác của Windows 8.1 (vì vậy nó sẽ sử dụng giấy phép Windows Pro tích hợp) và nâng cấp nó lên Windows 10. Sau đó tôi đã cài đặt Ubuntu cùng với cả Windows 8 và 10.

Lưu ý rằng tôi đã tạo một phân vùng ext2 255 MB riêng cho / boot.

Bây giờ, khi tôi khởi động máy tính, lần đầu tiên tôi thấy một dấu nhắc GRUB (tôi đã bỏ dấu nhắc grub 'vì tôi thích nó như vậy) với các tùy chọn Windows 8 và Ubuntu. Tuy nhiên, không có tùy chọn Windows 10. Nếu tôi chọn Ubuntu, máy tính sẽ khởi động vào Ubuntu. Tuy nhiên, nếu tôi chọn tùy chọn Windows 8, thì tôi sẽ được gửi đến bộ tải khởi động Windows, sau đó nó cung cấp cho tôi các tùy chọn để khởi động Windows 8 hoặc Windows 10. (Tuy nhiên, đến thời điểm này, máy tính đã tải kernel và tất cả Rõ ràng Microsoft đã hiểu nhầm khái niệm về bộ tải khởi động và quyết định rằng điều đó có nghĩa là "khởi động thực tế toàn bộ hệ thống trước khi thực sự hiển thị bộ tải khởi động". Microsoft điển hình.)

Làm cách nào để tôi có thể vô hiệu hóa bộ tải khởi động Windows và thêm tùy chọn Windows 10 vào GRUB? EDIT: Ai đó đã trả lời bảo tôi tắt bộ tải khởi động Windows. Tuy nhiên, tôi vẫn không biết cách thêm Windows vào danh sách GRUB OS. Bất cứ ai có thể giúp đỡ với điều này?

EDIT 2: Sau khi gỡ bỏ Windows 10 khỏi bộ tải khởi động Windows bằng EasyBCD, có vẻ như, sau một vài lần khởi động lại, nó sẽ tiếp tục tự ẩn và Windows 10 sẽ xuất hiện trở lại. Tuy nhiên, sau đó tôi đã xóa Windows 10 khỏi danh sách các HĐH trong msconfig và dường như nó vẫn bị xóa.

Tuy nhiên, tôi VẪN không quản lý để Windows 10 xuất hiện trong GRUB. Như thể GRUB đơn giản là không phát hiện ra nó.

Ngoài ra, tôi sẽ đặt câu hỏi này để mọi người thấy nó - tôi đã thử sử dụng boot-repair, tuy nhiên, nó KHÔNG giúp được gì.


1
@ daltonfury42 Ngừng tin tưởng nếu bạn không nghe hoặc không hiểu các yêu cầu của OP là gì! Đề xuất một công cụ chủ yếu giải quyết các vấn đề phổ biến trong các thiết lập khởi động kế thừa điển hình, đối với các cài đặt UEFI không điển hình với các yêu cầu đặc biệt là sai lệch và phản tác dụng.
LiveWireBT

2
@LiveWireBT Tôi rất xin lỗi. Tôi thấy câu trả lời của bạn. Tôi đã xóa nhận xét của mình (và ngừng tin tưởng: P). Cảm ơn!
daltonfury42

1
Tôi nghĩ rằng tôi sẽ chỉ xóa toàn bộ phân vùng Windows 10 và chuyển nó sang VM, dù sao đi nữa.
Hitechcomputergeek

Thành thật không chắc chắn tại sao mọi người vẫn ủng hộ điều này, vì IMO không phải là một câu hỏi hay. Tuy nhiên, năm nay tôi đã giải quyết vấn đề này theo một cách khác - bằng cách chuyển đổi từ MBR sang GPT và UEFI boot. Về cơ bản, tôi đã chuyển đổi sơ đồ phân vùng thành GPT, thay đổi kích thước phân vùng Windows, thêm Phân vùng hệ thống EFI và đặt rEFInd trên đó và tạo Windows BCD bằng đĩa cài đặt Windows. Bây giờ hệ thống khởi động bằng UEFI boot, giúp chơi với HĐH dễ dàng hơn. Trái với những gì internet nói, không quá khó để chuyển đổi cài đặt Windows từ BIOS sang UEFI, nhưng điều đó cũng không dễ dàng.
Hitechcomputergeek

1
Đối với bất kỳ ai trong tương lai muốn làm điều gì đó như thế này và muốn gắn bó với BIOS - tôi tin rằng câu trả lời nằm trong Windows BCD. Tôi tin rằng bản cài đặt Windows 10 không có bộ tải khởi động hoặc BCD phù hợp hoặc thứ gì đó và thực sự không có khả năng khởi động độc lập. Nếu được thực hiện đúng cách, tôi có linh cảm rằng GRUB sẽ bắt đầu tự động tìm phân vùng Windows 10.
Hitechcomputergeek

Câu trả lời:


25

Sử dụng:

sudo update-grub
sudo grub-install /dev/[BOOT PARTITION eg. Sda6]

các lệnh trong thiết bị đầu cuối của Ubuntu, có lẽ nó sẽ giải quyết vấn đề của bạn.

Bằng lệnh này, hệ thống sẽ tự động phát hiện các cài đặt Windows của bạn và thêm chúng vào danh sách GRUB.


2
Điều này đã không làm việc không may. Nó dường như không phát hiện phân vùng Windows 10.
Hitechcomputergeek

1
Trên thực tế, tôi đã gặp vấn đề tương tự với hệ thống của mình (có windows 10 và ubfox 14.04), và nó đã được giải quyết bằng lệnh này.
Neel Shah

Lệnh nào đã giải quyết nó, update-grubhay grub-install? Và bạn có một phân vùng khởi động / riêng biệt? Có một điều là tôi có một phân vùng khởi động riêng trên tôi nghĩ nó thực sự là sda6.
Hitechcomputergeek

Thực hiện hai lệnh đó (rõ ràng) đã không giải quyết được nó.
Hitechcomputergeek

7
sudo update-grubđã làm nó.
thameera

21

Đôi khi os-prober là sai.

Nhìn vào UUID của phân vùng Windows 10 của bạn, ví dụ:

sudo blkid /dev/sda2

Sau đó chỉnh sửa /etc/grub.d/40_customvà ở cuối tệp thêm:

menuentry "Windows 10" --class windows --class os {
   insmod ntfs
   search --no-floppy --set=root --fs-uuid $your_uuid_here$
   ntldr /bootmgr
}

Đừng quên thay đổi UUID.

Và cuối cùng cập nhật tập tin cấu hình grub của bạn:

sudo update-grub

Nguồn


2
đáng lưu ý rằng đối với windows 10, thông thường phân vùng đầu tiên KHÔNG phải là hệ thống Windows, (ví dụ sdb2 là chính xác và sdb1 là KHÔNG) Điều này là do cách windows 10 được lưu trữ trên đĩa trong khi cài đặt và phân vùng dành riêng cho hệ thống hoặc sửa chữa hệ thống luôn là đầu tiên). Grub thường không tìm thấy phân vùng thứ hai nếu cái đầu tiên trên đĩa đã cung cấp một cái gì đó có khả năng khởi động. cách dễ nhất để tìm UUID chính xác là tìm phân vùng lớn nhất thông qua sudo fdisk -lvà khớp nó với kết quả của blkid.
janmyszkier

9

Giải pháp này cung cấp một mục thích hợp trong menu grub2 và tải chuỗi trực tiếp vào Windows 10 mà không cần tham khảo BIOS. Nó xuất phát từ https://ihaveabackup.net/article/grub2-entry-for-windows-10-uefi vì vậy tôi khẳng định không có tín dụng. Thật là nhẹ nhõm khi tìm một giải pháp làm việc

Tóm lại, chỉnh sửa /etc/grub.d/40_custom và thêm:

menuentry 'Windows 10' {
    search --fs-uuid --no-floppy --set=root CC66-4B02
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Để tìm UUID cho dòng --set = root (ví dụ CC66-4B02), bạn sử dụng sudo fdisk -l để xác định phân vùng EFI sau đó sudo blkid / dev / sda1 (hoặc bất cứ điều gì) để tìm UUID của phân vùng EFI . Lưu ý đó không phải là phân vùng Windows mà là phân vùng EFI bạn cần. Khi bạn đã lưu chỉnh sửa, hãy chạy sudo update-grub để tạo tệp /boot/grub/menu.cfg và sau đó khởi động lại để kiểm tra.


Tôi đoán lệnh sudo / dev / sda1 phải là sudo blkid / dev / sda1
makapuf 25/03/18

@makapuf - bạn hoàn toàn đúng, cảm ơn bạn. Đã sửa.
peterthevicar

Tôi đã làm theo hướng dẫn chính xác đó và tôi nhận được "Lỗi: Không tìm thấy phân vùng" khi tôi cố gắng khởi động mục nhập. Khi gắn phân vùng, có vẻ như "EFI / Microsoft / Boot / bootmgfw.efi" không tồn tại trên phân vùng đó.
Xerus

8

sử dụng ứng dụng này EasyBCD cho windows http://neosmart.net/ EASBCD / tải xuống phiên bản miễn phí và cài đặt nó.

Khi bạn mở nó, bạn sẽ thấy một mục cho windows 8 và một cho windows 10.

xóa các mục của windows 8 và bạn sẽ thấy ổn.

Cập nhật sau khi thực hiện các bước trên, quay lại Ubuntu,

mở terminal bằng cách nhấn ctrl+ alt+T

sau đó sao chép các lệnh này sang lệnh này lần lượt

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair

và bằng cách này, bạn sẽ cài đặt một công cụ gọi là boot-Repair.

mở sửa chữa khởi động từ dash và bạn sẽ nhận được cửa sổ này

nhập mô tả hình ảnh ở đây

chọn sửa chữa đề nghị và làm theo các bước.

Lưu ý rằng bạn phải kết nối Internet khi sử dụng sửa chữa khởi động.


1
@Hitechcomputergeek nếu bạn cần thêm trợ giúp, hãy cho tôi biết tôi sẽ khởi động vào windows và làm cho bạn một số ảnh chụp màn hình.
RonnieDroid

Điều đó có thêm Windows 10 vào GRUB không? (Hãy để tôi đoán: không) Tôi muốn có thể truy cập cả ba hệ điều hành từ GRUB và điều đó chỉ giải quyết được một phần của vấn đề.
Hitechcomputergeek

Tôi đã cập nhật câu hỏi để hỏi cách thêm Windows 10 vào danh sách GRUB OS. Tôi đã nâng cao câu trả lời của bạn vì nó đã khắc phục được một phần của vấn đề, nhưng vì tôi vẫn cần thêm Windows 10 vào GRUB, nên tôi chưa chấp nhận câu trả lời.
Hitechcomputergeek

2
Ngoài ra, tôi nhận thấy bạn nói để mở Boot Repair từ dấu gạch ngang, nhưng dòng sudo apt-get install -y boot-repair && boot-repairnày đã mở nó rồi.
Hitechcomputergeek

1
Bạn cũng có thể sử dụng công cụ này trong "chế độ thử nghiệm của ubfox (chế độ cd trực tiếp)" nơi bạn có thể cài đặt, chạy và sử dụng nó sau khi kết nối với internet hoặc vợ.
Alamjit Singh

4

Theo như tôi hiểu câu hỏi của bạn, bạn có hai cài đặt Windows khác nhau trên một hoặc nhiều ổ cứng và bạn không muốn trình tải Windows cản trở hoặc quản lý cả hai cài đặt Windows. Tôi nhớ rằng có thể trên các thiết lập cũ để khởi động trực tiếp kernel Windows từ Grub (tôi có thể sai ở đây) nhưng tôi chưa thể làm điều này trên các thiết lập UEFI. Có hai cấu hình bộ tải khởi động Windows độc lập có thể được gọi từ Grub một cách độc lập sẽ rất gần với những gì bạn đang tìm kiếm.

Nó đi kèm với Windows 8.1 được cài đặt.

Tôi sẽ giả định rằng đây là một máy tính có khả năng UEFI.

  1. Vui lòng kiểm tra xem máy tính có thực sự có khả năng UEFI không (tôi sẽ xóa câu trả lời của tôi nếu không) và tự làm quen với sự khác biệt giữa BIOS và UEFI ( các chế độ khởi động khác nhau , efibootmgr, các bảng phân vùng khác nhau, phân vùng hệ thống EFI (ESP), bộ tải EFI Sầu).
  2. Sau đó kiểm tra xem tất cả các hệ điều hành được cài đặt trong chế độ UEFI và kiểm tra rằng bạn có một bảng phân vùng GPT. Bạn có thể sử dụng Windows dismđể sao lưu và khôi phục phân vùng thành bố cục bảng phân vùng mới và sử dụng dấu nhắc lệnh từ phương tiện cài đặt Windows mới nhất để cài đặt lại bộ tải khởi động, chi tiết hơn về điều này trong điểm tiếp theo.
    • Vì bạn đã được đề nghị thử nhiều công cụ khác không giải quyết được vấn đề của mình, bạn phải hoàn nguyên các thay đổi này về tình trạng nguyên sơ, nếu không, điều này sẽ ngày càng khó hiểu hơn. Xin lỗi vì điều đó. :
  3. Bạn có thể sử dụng câu trả lời của tôi từ Cách khởi động Windows 8 từ phân vùng MBR cũ trong chế độ UEFI qua GRUB?
    • Câu trả lời này không cài đặt cấu hình bộ tải khởi động Windows độc lập thông qua bcdbootở một vị trí khác mà Grub sẽ gọi nó. Để thuận tiện, tôi đã chọn phân vùng gốc Windows. Bạn sẽ cần phải làm điều này cho mọi cài đặt Windows, để mọi cài đặt Windows có cái riêng và sẽ chỉ tự khởi động (làm sạch các menu khởi động Windows riêng lẻ khỏi các mục khác).
    • Hãy nhớ rằng bạn cần tạo một mục nhập riêng cho mỗi cài đặt Windows mà bạn muốn khởi động /etc/grub.d/40_customvà làm theo các hướng dẫn và giải thích về UUID, phân vùng và bảng phân vùng.
    • Có thể vô hiệu hóa mọi tính năng bán thông minh phát hiện các HĐH khác nhau như OS-prober trong Grub ( GRUB_DISABLE_OS_PROBER) hoặc khắc phục sự cố khởi động với Windows hoặc sửa chữa khởi động (hoặc dọn dẹp thủ công sau khi chúng).

Lưu ý: Yêu cầu của bạn là có thể quản lý tất cả các hệ điều hành với Grub, tuy nhiên với UEFI, thuật ngữ "dualboot" truyền thống gần như trở thành một cách gọi sai. UEFI cho phép cùng tồn tại một số bộ tải khởi động trên ESP và bạn có thể chọn cái nào để khởi động (nếu chúng đã được đăng ký trong phần sụn UEFI và phần sụn của nhà sản xuất không thực hiện việc bảo trợ như chỉ khởi động Windows). Điều đáng buồn ở đây là chỉ có rất ít người có thể nghĩ về việc cài đặt nhiều hơn một phiên bản (độc lập) của Windows , Linux hoặc một bản phát hành Ubuntu trên một máy tính(hoặc một ổ cứng được sử dụng với một số máy tính và khởi động một bản cài đặt khác nhau của cùng một bản phát hành HĐH trên mỗi máy tính). Hầu hết điều này đã có thể, nhưng các cơ chế trong Windows và Ubuntu (Fedora, Cấm) rõ ràng chọn ghi đè lên những gì trong không gian tên của chúng theo giả định sai lầm rằng chỉ có thể có một.

(Tôi khởi động Windows8 / 10, Ubuntu, Ubuntu LTS và Fedora trên một máy tính và đã sửa lại vài lần với việc khởi động UEFI theo các yêu cầu khác nhau.)


1
Tôi không sử dụng Windows. Nhưng có ai đã thử sao chép / EFI / Windows sang / EFI / Windows10 và / hoặc / EFI / Windows8 và chỉnh sửa từng BCD chỉ dành cho phiên bản đó chưa? Và sau đó trong UEFI tạo các mục nhập cho mỗi. Nếu điều đó hoạt động từ UEFI thì grub có thể chuỗi trực tiếp đến từng cái.
oldfred

@oldfred Đó là thứ tôi muốn chỉ đến ở phần dưới và thậm chí có thể có một tham số bcdbootđể chỉ định thư mục đích khác, nhưng tôi không chắc. Việc tải chuỗi các nhị phân EFI khác chỉ từ một ESP đơn giản hóa rất nhiều 40_customvà làm cho nó ít bị lỗi hơn, bạn đã đúng với điều đó. Tôi nghĩ rằng tôi đã tập trung quá nhiều vào các kịch bản đa ổ cứng (trong trường hợp đó bạn vẫn có thể bảo bcdboot khởi động Windows trên hdd2 từ ESP trên hdd1, tôi nghĩ vậy). m (
LiveWireBT

Các máy tính là UEFI có khả năng, nhưng tôi thành thật không có ý tưởng wtf là với các phân vùng ngay bây giờ. Trường đã cài đặt hình ảnh Windows 8 tùy chỉnh và mặc dù nó đang sử dụng UEFI và Secure Boot (Tôi tin rằng BIOS được cấu hình để cho phép cả UEFI và khởi động kế thừa ngay bây giờ; tôi nhớ vô hiệu hóa Secure Boot), bản thân đĩa cứng được định dạng bằng MBR. Ở đây, có một ảnh chụp màn hình: imgur.com/1vDS4jf (Vâng, tôi dự định sớm thay đổi kích thước một loạt các phân vùng.) Ngoài ra, bản thân Ubuntu (từ grepping dmesg) dường như không được bắt đầu ở chế độ EFI, nhưng Tôi không biết nếu bản thân GRUB có thể
Hitechcomputergeek

@Hitechcomputergeek Các chương trình chụp màn hình một msdos / MBR bảng phân vùng với một partition mở rộng và không có phân vùng EFI. Như tôi đã nói trước đó, bạn nên có GPT và bạn có thể sử dụng dismcho các phân vùng Windows.
LiveWireBT

được bắt đầu như UEFI, nhưng sau đó khởi động các hệ điều hành khác không phải là UEFI hoặc một cái gì đó. UEFI khó hiểu. EDIT: GRUB không được bắt đầu như UEFI. Tôi không biết chuyện gì đã xảy ra với Windows gốc. Trên thực tế, khi nghĩ về nó, tôi đoán có thể nó không phải là UEFI ngay từ đầu. Tôi cho rằng đó là vì về cơ bản là không thể vào được BIOS vì điều ngủ đông của Windows 8, trừ khi bạn khởi động nó lần đầu tiên, sau đó nhấn "Khởi động lại", THÌ đã cố gắng vào BIOS. Tôi chưa cần phải làm điều đó một lần nữa kể từ khi cài đặt Ubuntu (và GRUB).
Hitechcomputergeek

2

Chỉ cần đăng nhập vào hệ điều hành Ubuntu của bạn, mở một thiết bị đầu cuối:

sudo update-grub

khởi động lại

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.