Perintah mana untuk mengonversi instalasi BIOS Ubuntu ke EFI / UEFI tanpa perbaikan boot pada perangkat keras boot tunggal?

35

Instal mode BIOS tidak disengaja

Saya memiliki perangkat keras Intel 64-bit dengan utilitas pengaturan UEFI. Ubuntu 14.04.1 LTS diinstal sebagai satu-satunya sistem operasi pada satu-satunya drive yang terpasang. Secara tidak sengaja Ubuntu diinstal dalam mode BIOS / CSM / legacy.

Konversikan ke UEFI

Selagi belajar tentang UEFI, tujuannya adalah mengubah instalasi Ubuntu yang ada menjadi (lebih cepat) melakukan booting melalui EFI / UEFI. Saya masih ingin memiliki semacam - 2 detik ditampilkan - menu boot yang memungkinkan saya untuk masuk ke utilitas pengaturan UEFI. Karena itu saya pikir saya perlu menggunakan Grub (tidak dapat menggunakan rintisan boot EFI) dan dukungan GOP memerlukan Grub versi 1.99 atau lebih tinggi . Saya telah mempartisi ulang drive menggunakan Live CD dan memasukkan partisi 200 MiB EFI di awal drive dan menandai bahwa partisi fat16 diformat sebagai tipe id 0xEF.

Sebelum:

# 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

Setelah:

   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

Tolong, jangan boot-perbaikan

Wiki komunitas Ubuntu menyarankan untuk menggunakan boot-repair untuk Mengubah Ubuntu menjadi mode EFI . Saya tidak ingin menggunakan GUI, atau menginstal paket tambahan, dan saya tidak ingin ada data yang secara tidak sengaja dikirim ke pastebin.com dan karena saya ingin tahu apa yang akan diubah secara tepat, saya tidak ingin gunakan Boot-repair .

Dibawah tenda

Mencoba mencari tahu apa yang sebenarnya dilakukan perbaikan-boot, saya menemukan cuplikan ini:

Boot-Repair akan mengonversi instalasi BIOS ke UEFI dengan menghapus instalan grub-pc, dan menginstal grub-efi, jika gpt dipartisi.

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

Perbandingan pemasangan mode UEFI

Instalasi Ubuntu 14.04.1 yang bersih dalam mode UEFI menciptakan partisi EFI 512 MiB Fat32 yang diformat. Partisi yang berisi satu direktori /EFI/ubuntu, yang berisi 4 file: grub.cfg, grubx64.efi, MokManager.efidan shimx64.efi. Grub.cfg berisi:

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

Search.fs_uuid menunjuk ke UUID dari partisi instalasi Linux, dalam perbandingan ini instalasi UEFI Linux menginstal partisi / dev / sda2 (versus sda1 dalam instalasi mode BIOS) .

Tidak ada potensi masalah firmware Asrock yang ditemukan

CSM masih dinonaktifkan di firmware dan menggunakan mode UEFI bersih instalasi Ubuntu. Mengubah ukuran partisi 512 MiB EFI menjadi 200 MiB menggunakan Live CD dan gpartedmenghasilkan pemformatan yang berubah dari FAT32 ke FAT16. Firmware Asrock P1.50 (salah menyebut BIOS oleh AMI dalam pesan boot "BIOS date") masih dapat boot ke mode UEFI Ubuntu: UEFI + FAT16 = ok .
Mengubah tabel partisi dari GPT ke MBR (msdos) menggunakan perintah terminal Live CD yang sama gdiskdan perintahnya r g p wjuga menghasilkan Ubuntu UEFI yang dapat di-boot pada drive yang dipartisi MBR: UEFI + MBR = ok .

Pertanyaan

Apakah ini berarti bahwa satu-satunya perintah yang saya perlu lakukan - dari instal Ubuntu lama dan dalam urutan ini - adalah:

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

? Atau lebih perlu dilakukan?

Pro Backup
sumber
1
Saya masih akan menggunakan perbaikan boot. Anda menganggap Anda perlu menginstal paket ... Saya yakin Anda salah. Lihat: askubuntu.com/questions/226061/…
Rinzwind
@Rinzwind Saya tidak bisa menggunakan boot-repair karena tidak ada GUI di instalasi Ubuntu saat ini (hanya konsol) dan ubuntu-14.04.1-desktop-amd64.iso tidak bisa boot ketika ditetapkan sebagai perangkat booting UEFI USB pertama di Asrock H81 Pro BTC P1.50 Utilitas pengaturan UEFI.
Pro Backup
1
Boot-Repair bukan gui, tetapi bash dengan salah satu add in yang membuatnya lebih seperti gui. Dengan versi yang lebih baru dari nama paket Ubuntu telah sedikit berubah, sekarang grub-efi-amd64 atau grub-efi-amd64 ditandatangani, saya pikir. Mungkin karena mereka ingin merilis boot loader UEFI 32 bit yang namanya diubah. Versi chroot, perhatikan Anda juga telah menginstal grub & membuat grub.cfg. askubuntu.com/questions/53578/…
oldfred
@oldfred Boot-Repair tergantung pada gui: mengeksekusi apt-get install boot-repairpada instalasi server Ubuntu ini, menghasilkan 245MB GTK seperti dependensi yang ingin diinstal perbaikan boot. Dan menjalankan boot-repairperintah setelah gagal. Pembaruan penamaan grub-efi yang lebih baru sangat membantu.
Pro Backup
Jika Asrock, pastikan Anda tidak memiliki drive atau drive DVD yang terhubung ke port Asmedia. Mereka tidak memiliki driver. Lebih baik hanya memiliki drive dipartisi gpt jika boot di UEFI. rodsbooks.com/gdisk/hybrid.html
oldfred

Jawaban:

40

Mulai CD Linux Ubuntu (14.04) dalam mode UEFI. Dalam hal perangkat boot USB, nonaktifkan "Boot Cepat" di UEFI.

Buka jendela terminal ( Ctrl+ Alt+ T)

Untuk memverifikasi bahwa Anda benar-benar berjalan dalam mode UEFI, gunakan perintah bash ini:

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

Output yang dihasilkan harus:

UEFI

Jika dikatakan BIOS, reboot ke firmware Anda dan koreksi preferensi perangkat boot.

Untuk melakukan konversi BIOS ke EFI / UEFI masukkan perintah ini:

$ 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

Meskipun berakhir dengan pesan kesalahan:

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

reboot berikutnya sudah menunjukkan " ubuntu " di firmware menu pilihan boot, dan boot ke konsol seperti sebelumnya, kecuali untuk sekarang boot dalam mode 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

Jika terjadi kesalahan, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi mungkin membantu.

Pro Backup
sumber
Ini membantu saya memutakhirkan hard drive saya dan mengkonversi ke GPT / UEFI / SecureBoot tanpa menginstal ulang. Terima kasih. Satu catatan: Saya membutuhkan grub-efi-amd64-signedpaket untuk menghindari kekacauan dengan menonaktifkan SecureBoot di UEFI BIOS saya.
Robie Basak
Sekarang tahun 2018 dan masalah dengan EFI ini saya masih gigih. bahkan boot efi diinstal tetapi saya berakhir di grub cli. Saya menyerah di Ubuntu.
Abhishek Dujari
Ini bekerja untuk saya di bawah Ubuntu 19.10. Saya mem-boot USB langsung dengan EFI, dan saya menambahkan partisi 200MB jenis FAT32 untuk EFI di akhir disk saya.
Joey Adams
1

Ini bekerja untuk saya juga dengan satu perubahan kecil. Meskipun jaringannya berfungsi, saya tidak bisa mendapatkan "apt-get install grub-efi-amd64" untuk menemukan server paket mana pun.

Saya menyiasati hal ini dengan mem-boot dalam mode BIOS untuk terakhir kalinya dan menginstal grub-efi-amd64.

Saya kemudian bisa mengikuti prosedur di sini dengan pengecualian menghilangkan "apt-get install grub-efi-amd64".

WallyZ
sumber
1

Koreksi kecil:

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

Selesai

Daniel Jean
sumber
Bisakah Anda menjelaskan mengapa Anda menyarankan perubahan ini dari jawaban OP? ... ... ... ... Tolong jangan menanggapi dalam komentar; edit  jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.
G-Man Mengatakan 'Reinstate Monica'