Bagaimana cara grub efi loader menemukan direktori grub.cfg dan boot yang benar?

9

Seperti yang saya pahami, bios uefi memuat grub.efi dari partisi efi. Ini sekarang memuat banyak modul grub dan file konfigurasi dari direktori / boot.

Tetapi bagaimana cara grub menemukan perangkat yang tepat di mana partisi boot berada? Di grub legacy, Anda biasanya menginstal grub ke partisi tertentu, menggunakan

# grub-install --root-directory=/dev/sda

Jadi cukup jelas di mana ia akan mencari direktori boot. Bagaimana grub-efi mengetahui perangkat yang benar?

pengguna128063
sumber
seperti yang saya mengerti, konfigurasi untuk lokasi kernel ada di partisi efi.
Joe
Jelas informasi tersebut harus ada di partisi efi, tetapi Anda tidak pernah benar-benar menentukannya kapan saja (seperti dulu) ketika menginstal grub.
user128063
dalam file .efi yang dihasilkan saat Anda menjalankan grub-efi
Joe

Jawaban:

9

Setelah menggunakan ghex untuk memeriksa file "BOOTX64.EFI" di partisi efi, saya menemukan baris ini.

search.fs_uuid a43d1f11-6ebe-477d-8be3-321a33bc37f9 root hd2,gpt4 
set prefix=($root)'/boot/grub'

Ini menunjukkan bahwa informasi untuk lokasi grub (partisi boot) telah disematkan oleh grub2-instal ke dalam file BOOTX64.EFI yang dihasilkan untuk sistem.

Grub2 kemudian dieksekusi oleh loader EFI dan Anda mendapatkan antarmuka grub untuk memilih sistem operasi (kernel) untuk boot atau kernel default dimuat.

Hanya untuk sedikit memperluas: ".EFI" file adalah jenis aplikasi seperti yang dapat dijalankan oleh subsistem UEFI. Dimaksudkan untuk digunakan untuk mem-boot sistem dan menyediakan tempat yang nyaman untuk menjalankan perlindungan eksekusi dan program tipe anti-virus.

Mereka menempatkan extensible di "Unified Extensible Firmware Interface"

Joe
sumber
Akan menarik untuk melihat apakah Anda dapat menambal file ini dan mengubah konfigurasi Anda dan uuid's dan masih bisa boot tanpa menginstal ulang Grub
Joe
Aneh, saya tidak dapat menemukannya. Direktori ubuntu efi saya memiliki grub.cfg (dalam ascii) dengan awalan dan informasi root di dalam id. Tapi direktori archlinux efi saya hanya memiliki grubx64.efi yang tidak memiliki tanda perintah root dan awalan yang Anda sebutkan bahkan ketika saya membacanya di ghex.
user128063
Tidak di ubuntu.efi mencari boot.efi. partisi efi memiliki folder. Disebut efi dan di dalamnya disebut folder boot.
Joe
Folder efi memiliki beberapa binari efi, satu untuk windows, satu untuk ubuntu dan sebagainya. Nama file efi tidak relevan. Alasan saya tidak dapat menemukan baris uuid adalah karena partisi root saya adalah partisi lvm. Ini menyimpan lvmid saja!
user128063
1
Oh, maaf saya salah membaca posting Anda sebelumnya. Stackexchange memotong posting Anda sebelumnya di bagian di mana Anda menggambarkan sistem Anda. Deskripsi Anda adalah gambar bootloader (grub) tunggal (BOOTX64.EFI) yang mem-boot dua sistem operasi sejauh yang saya tahu. Berikut adalah beberapa kemungkinan lainnya: 1) steamo juga dapat memiliki bootloader sendiri, yang mana ia akan memiliki file EFI sendiri di partisi efi. 2) Anda memiliki sistem boot hybrid EFI-legacy tempat bootloader uap disimpan di MBR. Anda dapat melihat bootorder efi digunakan sudo efibootmgr -vpada gentoo, tapi saya yakin Anda tahu ini
user128063