Getting to Know#
What is efibootmgr?#
Menurut definisi (atau deskripsi) dari paket tersebut di repo Archlinux, efibootmgr adalah aplikasi user space di linux yang bertugas untuk melakukan modifikasi pada EFI boot manager.1
Jadi, kalau linux kita tidak bisa booting dengan normal (misalnya, opsi bootloader tidak muncul di GRUB atau bahkan boot entry tidak muncul di boot menu BIOS komputer), kita tidak perlu buru-buru khawatir dan langsung install ulang seluruh sistem linux kita, tapi kita bisa cek terlebih dahulu, barangkali kita bisa memperbaiki bootloader-nya via efibootmgr.
UEFI vs Legacy#
efibootmgr hanya dapat digunakan untuk melakukan manajemen bootloader berbasis UEFI, bukan Legacy.Apa itu UEFI dan Legacy? Apa bedanya?
Legacy BIOS#
Legacy BIOS (Basic Input Output System) adalah sebuah software (firmware) yang tersimpan di motherboard komputer kita dan bertugas untuk melakukan booting dan membangkitkan sistem operasi kita.2 Akan tetapi, Legacy BIOS adalah software lama (sudah ada sejak 1980-an) dan hanya akan kompatibel untuk menjalankan OS (Operating System) lama juga.
Berikut adalah beberapa kelebihan Legacy BIOS:3
- Kompatibilitas dengan perangkat keras lama.
- Mudah digunakan dan diatur.
- Tidak memerlukan konfigurasi yang kompleks.
Sementara berikut ini adalah kekurangan Legacy BIOS:
- Cara membaca disk pake MBR (Master Boot Record).
- Terbatas dalam mengenali kapasitas penyimpanan (maksimal di 2TB).
- Tidak mendukung fitur keamanan modern seperti Secure Boot.
- Tidak dapat digunakan pada sistem operasi 64-bit.
UEFI#
Seperti BIOS, UEFI (Unified Extensible Firmware Interface) yang sudah dikembangkan sejak tahun 2005 adalah firmware modern untuk menggantikan Legacy BIOS. Seperti BIOS juga, UEFI adalah software paling pertama yang akan dijalankan begitu kita menekan tombol power di komputer kita sehingga dia kemudian akan melakukan proses booting dan membangunkan sistem operasi kita.2
Beberapa kelebihan UEFI:3
- Cara membaca disk dengan GPT (GUID Partition Table).
- Dapat mengenali kapasitas penyimpanan lebih besar dari 2TB.
- Mendukung fitur keamanan modern seperti Secure Boot.
- Dapat digunakan pada sistem operasi 64 bit.
- Lebih cepat dan efisien dalam proses booting.
Namun, ada juga beberapa kekurangan UEFI:
- Tidak kompatibel dengan perangkat keras (hardware) lama.
- Memerlukan konfigurasi yang (sedikit) lebih kompleks.
- Tidak semua sistem operasi mendukung UEFI.
Jadi, berikut adalah kesimpulan perbandingan Legacy BIOS vs UEFI.4
| Aspek | Legacy BIOS | UEFI |
|---|---|---|
| Partition table | MBR | GPT |
| Limit disk | 2TB | Jauh lebih besar |
| Limit partition | 4 primary | Praktis unlimited |
| Mode CPU | 16-bit real mode | 32/64-bit |
| Lokasi bootloader | MBR (sector pertama disk) | File .efi di ESP |
| Data boot entry | Ga ada konsep ini | Tersimpan di NVRAM motherboard |
| Keamanan | Gak ada | Secure Boot |
| Kecepatan boot | Lebih lambat | Lebih cepat |
Installation#
Berikut adalah cara meng-install efibootmgr di beberapa sistem operasi UNIX/Linux:
| Distro | Command |
|---|---|
| Debian/Ubuntu | sudo apt install -y efibootmgr |
| Arch Linux | sudo pacman -Sy efibootmgr |
| Fedora | sudo dnf install efibootmgr |
| Opensuse | sudo zypper install efibootmgr |
Notes: FreeBSD sudah meng-include-kan
efibootmgrpada saat proses instalasi FreeBSD itu sendiri. Jadi, kita bisa langsung menggunakannya jika diperlukan tanpa perlu meng-install paket tersebut terlebih dahulu.
NixOS:
Masukkan baris berikut di file konfigurasi (/etc/nixos/configuration.nix):
environment.systemPackages = [
pkgs.efibootmgr
];Atau jika menggunakan nix-shell:
nix-shell -p efibootmgr Usage#
Prerequisites#
Sebelum menggunakannya, pastikan kita sudah memenuhi beberapa persyaratan berikut:
- Bootable USB (saya sarankan Archlinux).
- Di menu BIOS komputer, boot ke USB tersebut.
- Mount partisi sistem yang ingin diperbaiki bootloader-nya.
mount /dev/sdXn /mnt # mount partisi root
mount /dev/sdXm /mnt/boot # mount partisi boot yang terdapat EFI di dalamnya- Chroot ke sistem tersebut.
arch-chroot /mntBerikut adalah beberapa kasus yang memungkinkan kita menggunakan efibootmgr:
Check bootloader#
Langkah paling pertama setelah berhasil melakukan chroot ke sistem adalah melihat apakah bootloader-nya masih ada di ESP (EFI System Partition):
ls -l /boot/EFI/ # atau /efi/EFI/ tergantung mount point loDari sini, muncul 2 kemungkinan:
- File bootloader (grub/systemd-boot) masih ada.
- File bootloader (grub/systemd-boot) hilang.
Kita bahas satu persatu.
1. Bootloader exists.#
Kalau file grub/systemd-boot masih ada di situ, berarti masalahnya hanya di entri NVRAM-nya aja, bukan bootloader-nya hilang. Solusinya, kita hanya perlu membuat ulang entrinya ke NVRAM.
Berikut adalah perintah untuk me-reinstall entri ke NVRAM:
efibootmgr -c -d /dev/sdX -p Y -L "Arch Linux" -l '\EFI\grub\grubx64.efi'Keterangan:-c: membuat entri baru (create).-d: men-specify disk yang terdapat partisi EFI.Y: nomor urutan partisi dari ESP di disk.-L: memberikan label / nama entri.-l: men-specify file loader (biasanya berekstensi .efi).
Contoh penggunaan:
# melihat daftar partisi disk
lsblk
# output lsblk
nvme0n1 259:0 0 953.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
├─nvme0n1p2 259:2 0 200G 0 part /
├─nvme0n1p3 259:3 0 20G 0 part
├─nvme0n1p4 259:4 0 16M 0 part
└─nvme0n1p5 259:5 0 200G 0 part
# melihat bootloader
eza -lT --level 2 /boot/EFI
# output
drwxr-xr-x - root 27 Apr 09:41 ├── grub
.rwxr-xr-x 160k root 17 Jun 20:07 │ └── grubx64.efi
drwxr-xr-x - root 16 Jun 19:06 └── Microsoft
drwxr-xr-x - root 16 Jun 19:06 ├── Boot
drwxr-xr-x - root 16 Jun 19:10 └── Recovery
# me-reinstall entri ke NVRAM
efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Arch Linux" -l '\EFI\grub\grubx64.efi'Kemudian, kita bisa lihat apakah entri-nya sudah terpasang atau belum:
efibootmgr
# atau
efibootmgr -vKemudian, cari entri dengan nama seperti label yang sudah kita berikan tadi (Arch Linux).
2. Bootloader lost#
Kalau file grub/systemd-boot hilang, artinya bootloader memang perlu dipasang lagi juga. Solusinya, kita install bootloader-nya terlebih dahulu, baru kemudian buat entri di NVRAM.
Pertama, kita perlu meng-install ulang bootloader-nya terlebih dahulu:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfgBtw, saya juga pernah menulis sedikit tentang modifikasi GRUB di artikel berikut:
Baru kemudian kita memasang kembali entri bootloader tersebut ke NVRAM:
efibootmgr -c -d /dev/sdX -p Y -L "Arch Linux" -l '\EFI\grub\grubx64.efi'Keterangan:-c: membuat entri baru (create).-d: men-specify disk yang terdapat partisi EFI.Y: nomor urutan partisi dari ESP di disk.-L: memberikan label / nama entri.-l: men-specify file loader (biasanya berekstensi .efi).
Kemudian, kita bisa lihat apakah entri-nya sudah terpasang atau belum:
efibootmgr
# atau
efibootmgr -vKemudian, cari entri dengan nama seperti label yang sudah kita berikan tadi (Arch Linux).
NVRAM Entry Modif#
Perhatikan bagian BootOrder dari output perintah:
efibootmgr
# atau
efibootmgr -vSebab, kita bisa mengetahui berada di urutan berapakah entri linux kita (Arch Linux). Urutan ini penting karena UEFI akan memilih siapa yang akan dibangkitkan pertama kali berdasarkan urutan tersebut.

Misalnya, di komputer saya, entri “Arch Linux” saya berada di urutan pertama (abaikan nomornya, fokus pada urutan yang berada di BootOrder).
Jika kita misalnya mau menukar urutannya:
efibootmgr -o 0001,0002Keterangan:-o: boot order (urutan booting)
Maka, nanti, sistem operasi / device dengan nomor entri 0001 akan berada di urutan pertama, sementara 0002 akan berada di urutan kedua. Begitu seterusnya (jika kita memiliki lebih dari dua sistem operasi / device).
Sekian.
Terima kasih sudah membaca.
Sampai jumpa di artikel saya yang lain!




