Lệnh nào để chuyển đổi cài đặt BIOS Ubuntu sang EFI / UEFI mà không cần sửa chữa khởi động trên phần cứng khởi động đơn?


35

Cài đặt chế độ BIOS tình cờ

Tôi có phần cứng Intel 64 bit với tiện ích thiết lập UEFI. Ubuntu 14.04.1 LTS đã được cài đặt làm hệ điều hành duy nhất trên ổ đĩa duy nhất được đính kèm. Vô tình Ubuntu đã được cài đặt ở chế độ BIOS / CSM / kế thừa.

Chuyển đổi sang UEFI

Mặc dù sau này khi tìm hiểu về UEFI, mục tiêu là thay đổi cài đặt Ubuntu hiện tại này để khởi động (nhanh hơn) thông qua EFI / UEFI. Tôi vẫn muốn có một số loại - 2 giây hiển thị - menu khởi động cho phép tôi vào tiện ích thiết lập UEFI. Do đó, tôi nghĩ rằng tôi cần sử dụng Grub (không thể sử dụng cuống khởi động EFI) và hỗ trợ GOP yêu cầu Grub phiên bản 1.99 trở lên . Tôi đã phân vùng lại ổ đĩa bằng Live CD và chèn phân vùng 200 MiB EFI vào đầu ổ đĩa và đánh dấu phân vùng định dạng fat16 đó là loại id 0xEF.

Trước:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Sau:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Xin vui lòng không sửa chữa khởi động

Wiki cộng đồng Ubuntu đề nghị sử dụng sửa chữa khởi động để chuyển đổi Ubuntu sang chế độ EFI . Tôi không muốn sử dụng GUI hoặc cài đặt bất kỳ gói bổ sung nào và tôi không muốn bất kỳ dữ liệu nào được gửi vô tình đến pastebin.com và vì tôi muốn biết chính xác những gì sẽ được thay đổi, tôi không muốn sử dụng Boot-sửa chữa .

Dưới mui xe

Cố gắng tìm ra những gì sửa chữa khởi động thực sự làm, tôi tìm thấy đoạn trích này:

Boot-Repair sẽ chuyển đổi cài đặt BIOS sang UEFI bằng cách gỡ cài đặt grub-pc và cài đặt grub-efi, nếu gpt phân vùng.

nguồn: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

So sánh cài đặt chế độ UEFI

Cài đặt Ubuntu 14.04.1 sạch trong chế độ UEFI tạo phân vùng EFI 512 MiB Fat32 được định dạng. Phân vùng có chứa một thư mục /EFI/ubuntu, bao gồm 4 file: grub.cfg, grubx64.efi, MokManager.efishimx64.efi. Grub.cfg chứa:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid trỏ đến UUID của phân vùng cài đặt Linux, trong phần so sánh này, cài đặt UEFI Linux được cài đặt phân vùng / dev / sda2 (so với sda1 trong cài đặt chế độ BIOS) .

Không tìm thấy sự cố phần mềm Asrock tiềm năng nào

Có CSM vẫn bị vô hiệu hóa trong phần sụn và sử dụng cài đặt Ubuntu chế độ UEFI sạch. Thay đổi kích thước phân vùng 512 MiB EFI thành 200 MiB bằng CD Live và gpartedkết quả là định dạng của nó thay đổi từ FAT32 sang FAT16. Chương trình cơ sở Asrock P1.50 (được gọi không chính xác là BIOS bởi AMI trong thông báo khởi động "Ngày BIOS") vẫn có thể khởi động vào chế độ UEFI Ubuntu: UEFI + FAT16 = ok .
Chuyển đổi bảng phân vùng từ GPT sang MBR (msdos) bằng cùng một lệnh đầu cuối Live CD gdiskvà các lệnh của nó r g p wcũng dẫn đến Ubuntu có thể khởi động UEFI trên ổ đĩa được phân vùng MBR: UEFI + MBR = ok .

Câu hỏi

Điều này có nghĩa là các lệnh duy nhất tôi cần thực hiện - từ bản cài đặt Ubuntu cũ và theo thứ tự này - là:

# apt-get install grub-efi
# apt-get remove grub-pc

? Hoặc là cần thiết hơn để được thực hiện?


1
Tôi vẫn sẽ sử dụng sửa chữa khởi động. Bạn cho rằng bạn cần phải cài đặt các gói ... Tôi tin rằng bạn đã sai. Xem: Askubfox.com/questions/226061/ Mạnh
Rinzwind

@Rinzwind Tôi không thể sử dụng sửa chữa khởi động vì không có GUI trong cài đặt Ubuntu hiện tại (chỉ dành cho bảng điều khiển) và ubfox-14.04.1-desktop-amd64.iso không khởi động khi được đặt làm thiết bị khởi động USB UEFI đầu tiên trong Asrock H81 Pro BTC P1.50 Tiện ích thiết lập UEFI.
Sao lưu chuyên nghiệp

1
Boot-Repair không phải là gui, nhưng bash với một trong những add in khiến nó thích gui hơn. Với phiên bản mới hơn của tên gói Ubuntu đã thay đổi một chút, bây giờ nó là grub-efi-amd64 hoặc grub-efi-amd64 đã ký, tôi nghĩ vậy. Có thể là do họ muốn phát hành bộ tải khởi động UEFI 32 bit mà tên đã thay đổi. Phiên bản Chroot, lưu ý bạn cũng đã cài đặt grub & tạo grub.cfg. Askubfox.com/questions/53578/ trộm
oldfred

@oldfred Boot-Repair phụ thuộc vào gui: thực thi apt-get install boot-repaircài đặt máy chủ Ubuntu này, kết quả là có tới 250 MB GTK giống như phụ thuộc boot-Repair muốn cài đặt. Và thực thi boot-repairlệnh aftwerwards thất bại. Bản cập nhật của việc đặt tên grub-efi mới hơn thực sự hữu ích.
Sao lưu chuyên nghiệp

Nếu là Asrock, hãy đảm bảo bạn không có ổ đĩa hoặc ổ đĩa DVD được kết nối với các cổng Asmedia. Họ không có tài xế. Tốt hơn là chỉ có ổ đĩa phân vùng gpt nếu khởi động trong UEFI. Rodbooks.com/gdisk/hy điều.html
oldfred

Câu trả lời:


40

Bắt đầu một đĩa CD trực tiếp Ubuntu Linux (14.04) ở chế độ UEFI. Trong trường hợp thiết bị khởi động USB, hãy tắt "Khởi động nhanh" trong UEFI.

Mở cửa sổ đầu cuối ( Ctrl+ Alt+ T)

Để xác minh rằng bạn thực sự đang chạy trong chế độ UEFI, hãy sử dụng lệnh bash này:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

Đầu ra kết quả phải là:

UEFI

Trong trường hợp nó nói BIOS, khởi động lại vào phần sụn của bạn và sửa tùy chọn thiết bị khởi động.

Để thực hiện chuyển đổi BIOS sang EFI / UEFI, hãy nhập các lệnh sau:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Mặc dù kết thúc bằng thông báo lỗi:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

lần khởi động lại tiếp theo đã hiển thị " ubfox " trong phần sụn của menu tùy chọn khởi động và khởi động lại bàn điều khiển như trước đây, ngoại trừ việc khởi động ở chế độ efi:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

Trong trường hợp có sự cố xảy ra, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi có thể giúp ích.


Điều này giúp tôi nâng cấp ổ cứng và chuyển đổi sang GPT / UEFI / SecureBoot mà không cần cài đặt lại. Cảm ơn bạn. Một lưu ý: Tôi cần grub-efi-amd64-signedgói để tránh phải làm phiền với việc vô hiệu hóa SecureBoot trong UEFI BIOS của tôi.
Robie Basak

Bây giờ là năm 2018 và vấn đề này với EFI tôi vẫn còn tồn tại. thậm chí efi boot đã được cài đặt nhưng cuối cùng tôi vẫn ở trong grub cli. Tôi từ bỏ trên Ubuntu.
Abhishek Dujari

Điều này làm việc cho tôi theo Ubuntu 19.10. Tôi đã khởi động USB trực tiếp bằng EFI và tôi đã thêm phân vùng 200 MB loại FAT32 cho EFI vào cuối đĩa.
Joey Adams

1

Điều này làm việc cho tôi quá với một thay đổi nhỏ. Mặc dù mạng đã hoạt động nhưng tôi không thể lấy "apt-get install grub-efi-amd64" để tìm bất kỳ máy chủ gói nào.

Tôi đã khắc phục điều này bằng cách khởi động ở chế độ BIOS một lần cuối cùng và cài đặt grub-efi-amd64.

Sau đó tôi có thể làm theo các quy trình ở đây ngoại trừ việc bỏ qua "apt-get install grub-efi-amd64".


1

Điều chỉnh nhỏ:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Làm xong.


Bạn có thể giải thích lý do tại sao bạn đề xuất những thay đổi này từ câu trả lời của OP không? Xin vui lòng không trả lời bình luận; chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
G-Man nói 'Phục hồi Monica'
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.