Làm cách nào tôi có thể thay đổi / chuyển đổi ổ đĩa Ubuntu MBR sang GPT và khởi động Ubuntu từ EFI?


65

Gần đây tôi đã nâng cấp PC, Bo mạch chủ mới của tôi (ASUS M5A99X EVO) sử dụng UEFi thay vì tùy chọn MBR thông thường.

Tôi có bản cài đặt Ubuntu 11.10 mà tôi đã làm khi có phần cứng trước đây (MSI MS 7267), một mình Ubuntu khởi động tốt và Windows 7 cũng vậy, tuy nhiên Windows 7 đang sử dụng UEFI (GPT) khởi động trong khi Ubuntu đang sử dụng MBR.

Tôi có các HĐH của mình trong các ổ riêng biệt, để GRUB2 không bị thay thế bởi Windows Bootloader và viceversa, như tôi đã nói cả hai HĐH đều tự khởi động tốt, nhưng để làm được thì tôi phải ngắt kết nối một ổ trong trường hợp này là ổ Ubuntu nó ngăn Windows tải.

Bây giờ câu hỏi của tôi là, Làm cách nào tôi có thể thay đổi / chuyển đổi ổ đĩa của Ubuntu để thay vì sử dụng MBR, nó sử dụng GPT và cho phép Windows khởi động?.

Tốt nhất là không cài đặt lại toàn bộ hệ thống hoặc mất bất kỳ dữ liệu nào.

Và nếu tôi xóa sạch ổ đĩa, Làm cách nào tôi có thể cài đặt Ubuntu trong GPT, UEFI, bất kể đó là chế độ nào?.

Tôi đã sử dụng gdisk để chuyển đổi từ MBR sang GPT, nhưng bây giờ Ubuntu không thể khởi động giống như grub chỉ không bắt đầu.

Tôi đã cài đặt lại hệ điều hành và ổ đĩa hiện là GPT theo mặc định tuy nhiên grup-pcvẫn đang được sử dụng thay vì grub-efi.

Làm cách nào tôi có thể khởi động Ubuntu từ EFI?.


Hy vọng rằng điều này sẽ giúp bạn Rodbooks.com/gdisk/boote.html .
Một

Câu trả lời:


113

Mục lục:

  1. Thuật ngữ
  2. Chuyển đổi
  3. Định cấu hình (+ Khởi động kép)

Thuật ngữ

BIOS = Hệ thống đầu vào / đầu ra cơ bản

(U) EFI = (Hợp nhất) Giao diện phần mềm mở rộng

MBR = Bản ghi khởi động chính

Bảng phân vùng GPT = GUID

UEFI / EFI / BIOS = Giao diện phần sụn

MBR / GPT = Làm thế nào máy tính biết (trên mỗi đĩa cứng) phân vùng nào trên ổ đĩa và cách khởi động từ chúng.

UEFI / BIOS

Một giao diện firmware là cách mà các firmware (phần mềm bên trong thiết bị) và hệ điều hành tương tác với nhau. Nó khởi chạy phần cứng sau đó chạy hệ điều hành và đảm bảo rằng trình điều khiển hệ điều hành có thể vận hành phần cứng.

BIOS là giao diện phần sụn thông thường đã được sử dụng. UEFI là một giao diện mới hơn có một số tính năng, chẳng hạn như nhanh hơn, có GUI và có thể khởi động card mạng và nhận địa chỉ IP. UEFI thay thế EFI. (Những người đang phát triển EFI thấy rằng có những người khác đang làm điều gì đó tương tự và vì vậy đã tham gia cùng họ, mang theo ý tưởng của EFI với họ. Điều này sau đó đã trở thành UEFI).

Một BIOS yêu cầu bộ tải khởi động phải ở đầu đĩa, tuy nhiên UEFI sử dụng phân vùng cho việc này và có thể chọn trong số nhiều bộ tải khởi động để sử dụng.

MBR / GPT + GRUB

Các MBR là một phần của mã vào đầu đĩa có chứa một bộ nạp khởi động (đối với BIOS), cũng như các bản đồ phân vùng và định danh đĩa độc đáo.

Để cài đặt GRUB vào đĩa có MBR, GRUB đặt một chương trình nhỏ trong MBR để tải phần còn lại của GRUB từ một phần khác của đĩa. (Điều này được thực hiện vì MBR quá nhỏ để chứa tất cả GRUB). Không gian được chọn là không gian giữa MBR và phân vùng đầu tiên, thường tồn tại.

GPT là một tiêu chuẩn cho cách thức các partitons được chỉ định. Nó có MBR 'bảo vệ', tuy nhiên điều này chỉ để cho phép các máy tính dựa trên BIOS khởi động và dừng các công cụ chỉ biết về MBR khi cố gắng dọn rác GPT. Nó có thể có

(Cách xử lý GPT tùy thuộc vào việc nó khởi động bằng BIOS (hay hệ thống UEFI ở chế độ mô phỏng BIOS) hay UEFI. Tôi sẽ tập trung vào UEFI vì nó liên quan đến câu hỏi).

Bộ tải khởi động cho các hệ điều hành được lưu trữ trong một phần gọi là EFI System Partiton, được định dạng (thường) với FAT32. Đây là nơi GRUB được cài đặt.

Chuyển đổi

Đầu tiên...

Chúng tôi đang chơi xung quanh với bảng phân vùng, vì vậy đảm bảo an toàn là không thể. Đó là một hoạt động rủi ro. Tuy nhiên, phương pháp không nên mất dữ liệu.

Những người khác gặp phải điều này: Không sử dụng trên Apple Mac.

Hiện nay...

Bạn sẽ cần phải làm điều này trên một đĩa CD trực tiếp (hoặc một bản cài đặt linux khác được cài đặt vào một đĩa khác.)

Khi xử lý các đĩa GPT, chúng ta cần sử dụng chương trình nhận biết GPT. 'GPT fdisk' là một công cụ tốt để sử dụng và những gì tôi sẽ sử dụng. Nó có thể được gọi gptfdiskhoặc gdisktùy thuộc vào phân phối (Ubuntu gọi nó gdisk). Chia tay (và Gparted) cũng là nhận thức của GPT, vì vậy có thể 'an toàn' được sử dụng với các đĩa GPT.

Để chuyển đổi bạn cần:

  1. Thay đổi kích thước phân vùng để phù hợp với dữ liệu GPT và phân vùng hệ thống EFI.
  2. Chuyển đổi đĩa và thêm phân vùng
  3. Cài đặt GRUB vào phân vùng hệ thống EFI.

1) Thay đổi kích thước phân vùng

Sử dụng parted(dòng lệnh) hoặc gparted(GUI) để thay đổi kích thước phân vùng đầu tiên và cuối cùng. Phần đầu tiên nên có khoảng 200MiB trước nó và phân vùng cuối cùng sẽ có 1MiB đến 2MiB (một trong hai sẽ làm) được kết thúc.

2) Chuyển đổi đĩa

Chạy

gdisk /dev/sdx

thay đổi thiết bị bạn muốn chuyển đổi là /dev/sdx.

Nó sẽ cho bạn biết rằng nó sẽ chuyển đổi bảng partiton.

GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************


Command (? for help): 

Bây giờ thêm một phân vùng mới, làm cho nó thuộc loại 'hệ thống EFI'. Nó sẽ tìm không gian trống ngay từ đầu (tôi đề xuất một số số ngành thấp như 34) và tự động sử dụng tất cả không gian trống. Các ví dụ sử dụng ổ flash USB 4GB với 1 phân vùng đã có trên đó, được thay đổi kích thước theo như trên.

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-7831518, default = 34) or {+-}size{KMGTP}: 
Information: Moved requested sector from 34 to 2048 in
order to align on 2048-sector boundaries.
Use 'l' on the experts' menu to adjust alignment
Last sector (2048-421887, default = 421887) or {+-}size{KMGTP}: 
Current type is 'Linux/Windows data'
Hex code or GUID (L to show codes, Enter = 0700): L
0700 Linux/Windows data    0c01 Microsoft reserved    2700 Windows RE          
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8301 Linux reserved        8e00 Linux LVM           
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
af04 AppleTV recovery      be00 Solaris boot          bf00 Solaris root        
bf01 Solaris /usr & Mac Z  bf02 Solaris swap          bf03 Solaris backup      
bf04 Solaris /var          bf05 Solaris /home         bf06 Solaris alternate se
bf07 Solaris Reserved 1    bf08 Solaris Reserved 2    bf09 Solaris Reserved 3  
bf0a Solaris Reserved 4    bf0b Solaris Reserved 5    c001 HP-UX data          
c002 HP-UX service         ef00 EFI System            ef01 MBR partition scheme
ef02 BIOS boot partition   fd00 Linux RAID            
Hex code or GUID (L to show codes, Enter = 0700): ef00
Changed type of partition to 'EFI System'

Bây giờ bạn sẽ có phân vùng EFI.

Command (? for help): p
Disk /dev/sdd: 7831552 sectors, 3.7 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 669247F2-37F7-4797-98F9-9CE56F7EA8C8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7831518
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1          421888         7829503   3.5 GiB     0700  Linux/Windows data
   2            2048          421887   205.0 MiB   EF00  EFI System

Sau đó thoát gdisk

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y
OK; writing new GUID partition table (GPT).
The operation has completed successfully.

Bây giờ sử dụng Gparted (hoặc dòng lệnh mkfs.vfat) để định dạng phân vùng là FAT32.

3) Cài đặt GRUB

Điều này đi kèm với ít sự đảm bảo rằng phần trước như tôi đã không tự mình thử nó.

Tôi không chắc chắn về bước này, vì vậy tôi sẽ đoán bằng cách sử dụng hướng dẫn của RAOF :

Để chuyển sang grub-efi bạn muốn

  1. Tìm phân vùng EFI của bạn; gắn kết nó trong / boot / efi. Thêm cái này vào / etc / fstab¹
  2. Cài đặt gói grub-efi
  3. Chuyển mức ưu tiên khởi động BIOS của bạn từ UEFI và Legacy sang UEFI (hoặc một tùy chọn tương tự)

Bạn nên tìm ra phiên bản grub-efi nào để cài đặt

ioreg -l -p IODeviceTree | grep firmware-abi

Nếu nó nói EFI32cài đặt grub-efi-ia32gói, nếu nó nói EFI64 cài đặt grub-efi-amd64gói. Bạn có thể cài đặt các gói với

sudo apt-get install <package name>

Điều này có thể sẽ chỉ hoạt động nếu bạn đã khởi động ở chế độ EFI.

Nếu nó không hoạt động, bạn có thể thử các hướng dẫn từng bước này (trong phần "Cài đặt GRUB2 trong (U) hệ thống EFI") sau khi grub-efiđược cài đặt.

Định cấu hình (+ Khởi động kép)

Nếu hướng dẫn của RAOK hoạt động, bạn sẽ có thể thêm dòng sau vào /etc/grub.d/40_custom

menuentry "Windows 7" {
        set root='(hd0,gpt1)'
        chainloader /EFI/microsoft/bootmgfw.efi
}

Nó giả định rằng Windows được hd0GRUB công nhận . Nó có thể cần phải được thay đổi hd1để làm việc.

Bây giờ chạy

update-grub

để cập nhật tập tin cấu hình.

Tài liệu tham khảo và đọc thêm

Tôi đã sử dụng một số nguồn.


WOah, cảm ơn bạn! .. nhưng tôi vẫn bị kẹt khi cài đặt grub-efi vào ổ đĩa, tôi đã cài đặt lại hệ điều hành và tạo ổ đĩa GPT, nhưng nó vẫn sử dụng grub-pc chứ không phải grub-efi.
Uri Herrera

Nếu bạn có tùy chọn (vì tôi không sở hữu bất kỳ thiết bị UEFI nào, tôi bị tê liệt nghiêm trọng về khả năng trợ giúp), bạn cần khởi động CD trực tiếp ở chế độ UEFI chứ không phải chế độ BIOS / MBR.
Portablejim

Làm thế nào về việc gỡ bỏ grub-pcvà cài đặt grub-efitrong khi ở cd trực tiếp (trước khi bạn có thể cài đặt?)?
Portablejim

1
Wow, điều này làm việc hoàn hảo, cảm ơn bạn! Tôi vừa mới di chuyển cài đặt song song Fedora 25 và Windows 10 từ MBR + BIOS sang GPT + UEFI mà không cần cài đặt lại bất cứ thứ gì. Tôi đã thực hiện các bước 1 và 2 từ thanh USB Fedora 25 Live được khởi động bằng UEFI. Đối với bước 3, tôi đã sử dụng chroot để truy cập hệ thống hiện tại của mình từ hệ thống Live như được mô tả trong wiki.ubfoxusers.de/GRUB_2/Reparatur/#chroot-Methode . Tôi đã gỡ cài đặt grub2, cài đặt grub2-efi và grub2-efi-mô-đun và cài đặt lại shim rõ ràng (không cài đặt lại shim, menu Grub sẽ không xuất hiện). Cuối cùng ...
Philipp Hartwig

2
Để cài đặt GRUB, tôi chỉ cần khởi động USB trực tiếp và sử dụng sửa chữa khởi động. Askubfox.com/questions/226061/NH Cảm ơn vì bài đăng này!
jbrock

9

Câu trả lời này không đầy đủ; Tôi đã không kiểm tra bất kỳ điều này. Không thể ăn bất kỳ dữ liệu nào của bạn, nhưng bạn đã được cảnh báo!

Những gì tôi đoán đang xảy ra ở đây là BIOS của bạn được ưu tiên khởi động từ MBR cũ, do đó, UEFI Windows 7 cũ kém đang bị bỏ qua.

Một trong những điều tốt đẹp về UEFI là bạn không còn phải lo lắng về việc Windows ghi đè GRUB; cả hai nên cùng tồn tại độc đáo trên phân vùng EFI. Do đó, một lựa chọn sẽ là chuyển sang grub-efi. Lưu ý: Tôi không chắc liệu có grub-efihiểu các phân vùng kiểu MSDOS hay không ; Tôi nghĩ rằng nó làm. Nếu không, điều này sẽ không khởi động được và bạn sẽ cần LiveCD để khôi phục. Trong thực tế, có một LiveCD tiện dụng nào!

Để chuyển sang grub-efibạn muốn

  1. Tìm phân vùng EFI của bạn; gắn kết nó vào /boot/efi. Thêm phần này vào /etc/fstab¹
  2. Cài đặt grub-efigói
  3. Chuyển mức ưu tiên khởi động BIOS của bạn từ UEFI and Legacysang UEFI only(hoặc một tùy chọn tương tự)

Điều đó sẽ khiến bạn phải cài đặt Ubuntu khởi động UEFI. Nếu không, hãy khởi động LiveCD đáng tin cậy của bạn (hoặc đĩa CD cài đặt thay thế Ubuntu - Tùy chọn Khắc phục sự cố hệ thống bị lỗi là những gì bạn sau ☺), chroot vào hệ thống của bạn và cài đặt grub-pclại.


: Chi tiết hơn cho bước này: Bạn sẽ cần tìm nhân Linux gọi phân vùng hệ thống EFI của bạn là gì. Đây sẽ là một cái gì đó giống như /dev/sda2, /dev/sdb3hoặc such². Sau đó, bạn sẽ cần phải tạo /boot/efithư mục và thêm một dòng vào /etc/fstab. Nếu phân vùng EFI của bạn là /dev/sdb3, thì bạn sẽ thêm dòng sau:

/dev/sdb3    /boot/efi    vfat    defaults    0    1

Khi bạn chạy, sudo mount /boot/efibạn sẽ thấy /boot/eficó chứa một EFIthư mục, với thư mục con cho Windows 7.


²: Vì bạn đã có nhiều ổ đĩa cứng, nên tìm ra UUID của phân vùng, vì nó sẽ ổn định khi thêm / xóa ổ cứng trong khi /dev/sda2tên không được bảo đảm không thay đổi. Điều này có thể được thực hiện sau khi bạn đã hoàn thành việc thiết lập mọi thứ khác.

Bạn có thể tìm UUID bằng cách nhìn vào /dev/disk/by-uuid. Ví dụ: tôi nhận được:

$ ls /dev/disk/by-uuid -lah
total 0
drwxr-xr-x 2 root root 100 Dec  5 09:12 .
drwxr-xr-x 6 root root 120 Dec  5 09:12 ..
lrwxrwxrwx 1 root root  10 Dec  5 09:12 27fae347-4c7f-45cb-92d6-5f3d410599a1 -> ../../sda3
lrwxrwxrwx 1 root root  10 Dec  5 09:12 4405-64C8 -> ../../sda1
lrwxrwxrwx 1 root root  10 Dec  5 09:12 5243e250-8da5-4fea-aa63-61466022661d -> ../../dm-0

Trong trường hợp của tôi, tôi biết /dev/sda1là phân vùng hệ thống EFI của tôi, vì vậy tôi có

UUID=4405-64C8  /boot/efi       vfat    defaults        0       1

trong tôi /etc/fstab.


Nếu Windows 7 khởi động từ EFI, thì nó sẽ đặt bộ tải khởi động của nó trong phân vùng EFI - vì vậy bạn phải có một. Điều này sẽ không thể nhìn thấy ở bất cứ đâu trong hệ thống tập tin Ubuntu tiêu chuẩn. Bạn sẽ cần tìm nó với một cái gì đó giống như Disk utilitychương trình. Cho đến khi bạn tìm thấy và gắn phân vùng EFI của mình, grub-efibạn sẽ không thể làm việc - nó cần phải gắn bộ tải khởi động của nó vào phân vùng hệ thống EFI.
RAOF

Vẫn không thể khởi động vào Ubuntu, tôi đã thêm các dòng vào fstab bằng cách sử dụng một livecd và cũng đã tạo thư mục efi trong / boot nhưng dường như nó không có tác dụng gì.
Uri Herrera

Bây giờ bạn đã có phân vùng EFI được gắn kết, bạn cần chạy sudo grub-installsudo update-grubđể thực sự cài đặt và thiết lập GRUB trên phân vùng EFI. Bạn sẽ cần phải làm điều này sau khi chroot vào cài đặt của bạn (bởi vì nó cần biết những điều về cài đặt trên ổ cứng của bạn). Nếu bạn cần giúp đỡ làm điều đó tôi có thể thêm chi tiết vào câu trả lời.
RAOF

Có, vui lòng thêm cách chroot vào cài đặt của tôi và cài đặt lại grub.
Uri Herrera

Tôi đã làm theo các hướng dẫn ở đây, nhưng tôi gặp vấn đề với phân vùng EFI mới. Khi tôi cố cài đặt bản xem trước windows 10, trình cài đặt đã gặp lỗi này: "Windows phát hiện ra rằng phân vùng hệ thống EFI được định dạng là NTFS. Định dạng phân vùng hệ thống EFI là FAT32 và khởi động lại cài đặt" Tôi có thể giải quyết vấn đề bằng cách sử dụng công cụ Diskpart đi kèm với trình cài đặt windows, bằng cách xóa phân vùng EFI đầu tiên và tạo một phân vùng khác với create partition efi. Để biết thông tin về Diskpart, hãy xem technet.microsoft.com/en-us/l Library / cc766465% 28WS.10% 29.aspx
Tác nhân gây bệnh

2

Tôi có các HĐH của mình trong các ổ riêng biệt, để GRUB2 không bị thay thế bởi Windows Bootloader và ngược lại

Đó là lý tưởng, vì vậy bạn có thể có ít nhất một phân vùng chính trong bảng phân vùng.

Bây giờ câu hỏi của tôi là, Làm cách nào tôi có thể thay đổi / chuyển đổi ổ đĩa của Ubuntu để thay vì sử dụng MBR, nó sử dụng GPT và cho phép Windows khởi động?

Bạn không phải chuyển đổi MBR sang GPT để khởi động UEFI, chỉ cần tạo phân vùng FAT chính, cài đặt grub-efi-amd64-bingói và làm theo hướng dẫn trong Thêm một ESP vào bản cài đặt hiện có với MBR sẽ hoạt động với các bản phát hành Ubuntu hiện tại.


1
Câu trả lời dưới đánh giá. Windows chắc chắn yêu cầu khởi động BIOS GPT + UEFI hoặc MBR +, nhưng Linux cho phép kết hợp và kết hợp có thể tải chuỗi đĩa khác hoặc khởi động trực tiếp bootmgr của Windows 7.
Tim G

@timg Điều này có thể đúng sau thực tế nhưng thật không may nếu bạn đang thiết lập Windows 10 từ đầu thì trình cài đặt sẽ không cho phép bạn tiếp tục mà không có khối lượng GPT, nếu bạn đã khởi động EFI.
Merk

@Merk Oh, tôi sử dụng bộ cài đặt của Windows một cách khác nhau: Shift-F10 mang đến cho bạn một dòng lệnh và bạn có thể diskpart, dism /apply-imagethì bcdboot(tùy chọn thêm về cả những dĩ nhiên) để làm cho nó cài đặt MBR hoặc GPT bất kể thế nào bạn khởi động.
Tim G

1

Để bổ sung cho câu trả lời của Portablejim (điều thực sự giúp tôi chuyển đổi từ MBR sang GPT, cảm ơn!), Bạn có thể sử dụng Boot-Repair để cài đặt lại grub. Nó hoạt động như một cơ duyên để sửa chữa khởi động của tôi sau khi tôi không hoàn thành bước 3 và một lần nữa khi cài đặt Windows 10 làm cho tùy chọn khởi động linux biến mất.


Tôi có một đĩa chỉ có Ubuntu và sử dụng Boot-Repair vì bước 3 hoạt động như một cơ duyên!
Rael Gugelmin Cunha
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.