- GRUB seringkali mengalami kerusakan setelah perubahan partisi, instalasi sistem lain, atau pembaruan, tetapi hampir selalu dapat dipulihkan.
- Konsol GRUB itu sendiri memungkinkan Anda untuk menemukan /boot/grub, memuat kernel secara manual, dan melakukan booting tanpa bergantung pada LiveCD.
- Setelah sistem berhasil dijalankan, sangat penting untuk menginstal ulang dan memperbarui GRUB dari Linux untuk mencegah kegagalan terulang kembali.
- Dalam kasus yang lebih serius, metode yang menggunakan LiveUSB, chroot, dan alat seperti Boot-Repair menawarkan perbaikan yang lebih mendalam.
Jika Anda pernah menyalakan komputer dan, alih-alih melihat logo sistem operasi, Anda malah disambut dengan layar hitam dan pesan seperti "error: no such device" atau "grub rescue ," Anda pasti tahu betapa paniknya perasaan itu. Tiba-tiba, sepertinya Anda kehilangan seluruh sistem, harus memformatnya, dan data Anda berisiko... tetapi kenyataannya, dalam kebanyakan kasus, hal itu dapat diperbaiki tanpa harus menggunakan tindakan drastis seperti itu.
Kabar baiknya adalah, meskipun tampaknya ini masalah serius, memperbaiki GRUB tanpa LiveCD sepenuhnya mungkin dilakukan menggunakan konsol GRUB itu sendiri, asalkan kerusakan disk tidak parah. Dengan sedikit kesabaran, beberapa perintah yang tepat, dan pemahaman tentang apa yang terjadi di balik layar, Anda dapat memulai ulang sistem Linux Anda, menginstal ulang pengelola boot, dan mempersiapkannya untuk reboot di masa mendatang.

Sebelum kita mulai mengetik dengan cepat, penting untuk memahami peran GRUB dalam proses booting komputer Anda. GRUB 2 adalah pengelola boot yang digunakan oleh sebagian besar distribusi GNU/Linux modern: biasanya diinstal di MBR atau di bagian atas partisi dan bertanggung jawab untuk menampilkan menu dengan sistem operasi yang tersedia dan memuat kernel Linux dengan parameter yang sesuai.
Pengelola boot ini bergantung pada file yang biasanya berada di direktori /boot/grub instalasi Anda: modul, file konfigurasi, citra kernel, initrd, dll. Jika direktori ini menjadi tidak dapat diakses, dipindahkan, rusak, atau berganti disk tanpa sepengetahuan GRUB, Anda akan mulai melihat kesalahan seperti "no such device," "unknown filesystem," atau prompt grub rescue> yang menakutkan.
Penyebab umum rusaknya pengelola (manajer) cukup dikenal: menginstal Windows setelah Linux dan menimpa MBR , mengutak-atik partisi (mengubah ukuran, memindahkan, menghapus, membuat yang baru) dengan alat seperti GParted atau yang serupa, atau bahkan pembaruan kernel atau sistem yang, karena suatu alasan, meninggalkan referensi yang tidak konsisten dalam konfigurasi GRUB.
Selain itu, beberapa pengguna lebih memilih untuk menginstal /boot pada partisi terpisah , praktik umum dalam konfigurasi tingkat lanjut atau lingkungan di mana sisa disk akan dienkripsi. Dalam kasus ini, setiap perubahan pada partisi tersebut atau nomor disk-nya dapat menyebabkan GRUB tidak dapat menemukan modul dan konfigurasinya sendiri.
Jenis Kesalahan GRUB dan Mode Konsol
Ketika GRUB mengalami kegagalan, biasanya tidak langsung hilang: biasanya akan menampilkan semacam konsol atau menu penyelamatan yang dapat Anda gunakan untuk melakukan booting sistem secara manual. Perilaku ini sedikit berbeda tergantung pada tingkat keparahan masalah dan versi GRUB yang terpasang.
Di banyak distribusi Linux, Anda akan melihat bahwa sistem mencoba memuat GRUB dan akhirnya mengalami crash. sebuah perintah dengan teks grub rescue>Mode ini cukup terbatas, tetapi memungkinkan Anda untuk menjalankan beberapa perintah kunci seperti ls, set o insmod, cukup untuk menemukan partisi yang benar dan memaksa pemuatan modul Linux.
Dalam kasus lain, Anda akan melihat menu GRUB normal (daftar sistem operasi), tetapi upaya booting akan gagal, atau menu akan tampak rusak. Dari situ, Anda dapat menekan tombol 'c' untuk masuk ke baris perintah GRUB lengkap, yang jauh lebih ampuh daripada mode penyelamatan, dengan jangkauan perintah yang lebih luas.
Pada instalasi lama, beberapa sistem masih menggunakan GRUB Legacy (bukan GRUB 2), seperti versi tertentu dari CentOS 5/6 atau distribusi lama lainnya. Dalam kasus ini, sintaks perintah sedikit berubah, tetapi ide umumnya sama: temukan direktori /boot, beri tahu GRUB di mana direktori root-nya berada, dan muat kernel dan initrd secara manual.
Cara memperbaiki GRUB tanpa LiveCD menggunakan mode penyelamatan
Ketika komputer tidak dapat menemukan pengelola boot yang dikonfigurasi dengan benar, cukup umum untuk melihat pesan seperti “Error: no such device” diikuti oleh “grub rescue>” . Ini berarti GRUB telah berhasil berjalan, tetapi tidak tahu di mana file konfigurasinya atau modul yang dibutuhkannya berada.
Dalam skenario ini, Anda memiliki penerjemah perintah mini yang memungkinkan Anda untuk menemukan partisi, menemukan /boot/grub, dan memuat kernel secara manual . Prosesnya mungkin terdengar panjang, tetapi cukup sistematis.
Daftar disk dan partisi yang tersedia
Langkah pertama adalah mencari tahu disk dan partisi mana yang dilihat GRUB di mesin Anda. Untuk melakukan ini, pada prompt grub rescue> , ketik:
ls
Perintah tersebut akan menampilkan sesuatu yang mirip dengan (hd0) (hd0,1) (hd0,2) (hd0,3) (hd1) (hd1,1) (hd1,2). Masing-masing hdX mewakili hard drive yang berbeda: hd0 akan menjadi cakram fisik pertama, hd1 yang kedua.dan seterusnya. Varian dengan koma, seperti (hd0,1), menunjukkan partisi bernomor pada disk tersebut.
Tergantung pada komputer Anda, Anda mungkin melihat satu disk seperti (hd0) dengan dua atau tiga partisi, atau beberapa disk: (hd0,1) (hd1,1) (hd1,5) (hd2,1) (hd3,1) . Bagaimanapun, tujuannya sekarang sederhana: buka setiap partisi sampai Anda menemukan partisi yang berisi direktori /boot/grub.
Temukan partisi menggunakan /boot/grub
Untuk memeriksa isi partisi, kita gunakan lagi. ls tetapi menambahkan nama partisi dan garis miring di belakangnya. Misalnya: periksa isi Ini akan membantu Anda mengidentifikasi apakah itu yang benar.
ls (hd0,1)/
Jika partisi tersebut memiliki sistem file yang dikenali GRUB, maka akan ditampilkan daftar direktori: Anda akan melihat nama-nama seperti bin, dll., home, boot, root , dll. Dalam hal ini, partisi tersebut bisa jadi root (/) Anda atau partisi terpisah dari /boot, tergantung pada struktur yang Anda miliki saat menginstal sistem. Jika daftar tersebut menunjukkan sistem file yang dikenali GRUB , Anda berada di jalur yang benar.
Jika saat menjalankan perintah sebelumnya Anda melihat direktori bernama boot , Anda dapat menelusuri lebih dalam dan memeriksa apakah direktori tersebut berisi folder grub:
ls (hd0,1)/boot/grub
Saat Anda menemukan daftar file yang menyertakan modul seperti linux.mod atau file GRUB umum lainnya, Anda telah menemukan partisi yang Anda cari . Jika tidak ada yang muncul atau Anda mendapatkan kesalahan, teruslah mencoba partisi lain: ls (hd0,2)/ , ls (hd1,1)/ , dan seterusnya, sampai Anda menemukan yang tepat.
Beri tahu GRUB di mana letak file Anda.
Setelah partisi yang benar diidentifikasi, GRUB perlu diberi tahu di mana modul dan konfigurasinya berada . Mari kita asumsikan kita telah menemukan bahwa /boot berada di (hd0,1). Langkah selanjutnya adalah mengatur prefiks:
set prefix=(hd0,1)/boot/grub
Dengan instruksi ini, pengelola sistem akan mengetahui bahwa file pendukungnya terletak di jalur tersebut. Kita juga perlu memberi tahu pengelola sistem partisi root mana yang akan digunakan untuk menemukan kernel dan data sistem lainnya:
set root=(hd0,1)
Penting untuk menulis pasangan tersebut dengan benar. (disk, partisi) dan selalu gunakan garis miring di akhir. / saat kita mencantumkan konten dengan lsPerlu diingat juga bahwa tata letak keyboard konsol GRUB biasanya Amerika, jadi tanda kurung dan tombol garis miring mungkin tidak sesuai dengan yang Anda lihat tercetak di atasnya. Sebaiknya pastikan atur awalan pastikan benar sebelum mencoba memuat modul.
Muat modul GRUB dan kernel Linux.
Setelah awalan dikonfigurasi, langkah selanjutnya adalah memaksa pemuatan modul GRUB Linux . Di banyak panduan, Anda akan melihat sesuatu seperti:
insmod (hd0,1)/boot/grub/linux.mod
Dalam banyak sistem modern, modul yang sesuai mungkin adalah... normal.mod atau yang lain, tetapi idenya sama: jika Anda tidak yakin dengan nama pastinya, gunakan perintah ls (hd0,1)/boot/grub Untuk menampilkan daftar file, pilih modul yang sesuai berdasarkan versi GRUB Anda. Fungsi dari insmod Ini melibatkan pemuatan modul yang diperlukan untuk melanjutkan proses booting. Harap dicatat bahwa insmod Instruksi inilah yang sebenarnya mengintegrasikan modul ke dalam loader.
Selanjutnya Anda harus melakukannya memuat citra kernel Linux menunjukkan jalurnya di dalam sistem file. Contoh startup: linux /boot/vmlinuz-4.13.3-generic root=/dev/sda1
Nama kernel yang tepat akan berbeda-beda di mesin Anda (mungkin saja...). vmlinuz-2.6.32-23-generik, vmlinuz-6.1.0-10-amd64 atau versi lainnya). Anda dapat menggunakan, sekali lagi, ls /boot Untuk melihat gambar apa saja yang tersedia, pilih yang terbaru. Yang penting jangan sampai lupa parameternya. root=/dev/sdXn dengan partisi root yang benar.
Untuk menghindari kebingungan dengan kesamaan antara konvensi penamaan GRUB dan Linux, perlu diingat bahwa hd0 sesuai dengan /dev/sda, hd1 dengan /dev/sdb, hd2 dengan /dev/sdc , dan seterusnya. Format nomor partisi juga berubah: (hd0,1) menjadi /dev/sda1, (hd1,2) menjadi /dev/sdb2, dan seterusnya.
Dalam beberapa kasus, setelah memuat citra kernel, disarankan untuk memuat citra initrd (disk RAM awal) jika distribusi Anda membutuhkannya. Perintah tipikalnya adalah:
initrd /initrd.img
Sama seperti kernel, Anda dapat memeriksa file initrd mana yang tersedia dengan ls / o ls /boot dan gunakan tombol tab untuk melengkapi nama secara otomatis dan menghindari kesalahan ejaan.
Nyalakan sistem dan instal ulang GRUB dari Linux.
Setelah kernel dan initrd dimuat, Anda hanya perlu memberi tahu GRUB untuk memulai proses boot . Untuk melakukan ini, cukup ketik:
Arrancar: boot
Jika semuanya berjalan lancar, kernel akan mengambil alih kendali, sistem operasi akan melakukan booting seperti biasa, dan Anda akan dapat masuk ke sistem Linux Anda. Pada titik ini, Anda telah berhasil menyelamatkan situasi tanpa memerlukan LiveCD, tetapi masih ada satu langkah penting: menginstal ulang GRUB untuk mencegahnya rusak lagi pada saat reboot berikutnya.
Setelah masuk ke dalam sistem, buka terminal dengan hak akses superuser (root atau menggunakan sudo) dan jalankan: grub-install /dev/sdX
di mana /dev/sdX adalah disk (bukan partisi) tempat Anda ingin menempatkan boot manager, misalnya /dev/sda atau /dev/sdb jika Anda berada di disk yang berbeda. Ingat bahwa Anda tidak perlu menentukan nomor partisi di sini: perintah ini akan menulis boot manager ke MBR atau area boot dari seluruh disk.
Di banyak distribusi berbasis Debian atau Ubuntu, sangat disarankan juga untuk membuat ulang file konfigurasi GRUB untuk memastikan GRUB mendeteksi semua sistem yang terpasang dengan benar. Anda dapat melakukan ini menggunakan:
Lari: update-grub o update-grub2
Dan, jika Anda juga ingin memperbarui citra boot awal, perbarui initramfs dengan:
Perintah: update-initramfs -u
Dalam kasus lain, masalah dengan GRUB tidak begitu parah dan Anda memang melihat menu boot , tetapi beberapa sistem tidak dapat melakukan booting, muncul kesalahan saat memilih entri tertentu, atau Anda hanya curiga bahwa menu tersebut salah dikonfigurasi.
Dalam kasus ini, ketika Anda melihat menu GRUB saat menghidupkan komputer, Anda dapat menekan tombol panah arah (atas atau bawah) untuk menghentikan hitungan mundur booting otomatis, lalu tekan tombol c untuk mengakses baris perintah lengkap.
Dari konsol canggih itu, Perintah-perintahnya pada dasarnya sama. dibandingkan dalam mode penyelamatan, tetapi Anda akan memiliki lebih banyak alat untuk memeriksa sistem. Misalnya, Anda dapat menggunakan ls untuk menampilkan daftar disk dan partisi, set untuk melihat dan memodifikasi variabel lingkungan GRUB, insmod untuk memuat modul tambahan atau bahkan perintah seperti cat untuk membaca isi file teks.
Dengan mengikuti skema yang sama, pertama-tama Anda akan menentukan disk dan partisi mana yang Anda miliki dengan:
ls
dan Anda akan melihat output dengan tipe (hd0) (hd0,msdos1) (hd0,msdos5) atau (hd0,1) (hd1,1) (hd1,5) (hd2,1) , tergantung pada apakah tabel partisi Anda adalah MBR (msdos) atau GPT, dan jumlah disk yang ada di komputer.
Kemudian Anda akan memeriksa setiap partisi dengan perintah seperti:
ls (hd0,msdos1)/
sampai Anda menemukan direktori boot dan di dalamnya folder grub . Setelah ditemukan, Anda akan mengulangi proses pengaturan prefix dan root dengan:
set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)
Dari situ, Anda akan mencari kernel yang tersedia dengan mencantumkan isi dari /boot:
/daftar boot: ls /boot
dan Anda akan memilih salah satunya untuk dimuat:
linux /boot/vmlinuz-6.1.0-10-amd64 root=/dev/sda1
Sesuaikan versi kernel dan partisi root dengan kasus spesifik Anda. Ingat pemetaan disk: hd0 → /dev/sda, hd1 → /dev/sdb, hd2 → /dev/sdc , dll. Anda dapat menggunakan tombol TAB untuk melengkapi jalur dan nama file secara otomatis.
Terakhir, Anda akan memuat initrd jika diperlukan dan menjalankan perintah tersebut. booting Untuk memulai sistem. Setelah masuk, operasi yang perlu dilakukan sama seperti pada skenario sebelumnya: Instal ulang GRUB pada disk dan perbarui konfigurasinya. menggunakan grub-install /dev/sda y update-grub.
Memperbaiki GRUB pada sistem dengan GRUB Legacy
Meskipun sebagian besar distribusi Linux telah mengadopsi GRUB 2 saat ini, Anda masih dapat menemukan mesin lama atau sistem tertentu yang menggunakan GRUB Legacy . Antarmuka dalam kasus ini sedikit berbeda, tetapi konsep dasarnya tetap sama: Anda dapat menggunakan shell bootloader interaktif untuk memulai ulang sistem.
Saat startup, GRUB klasik ini biasanya memungkinkan akses baris perintah Anda dengan menekan tombol tertentu (seringkali tombol c atau kuncinya e (untuk mengedit entri). Setelah berada di prompt, Anda memiliki perintah seperti find yang sangat berguna.
Misalnya, jika Anda ingin menemukan direktori /boot yang berisi image kernel dan initrd, Anda dapat menggunakan:
perintah pencarian: find /boot/grub/stage1 atau rute serupa
Tergantung pada apakah /boot adalah partisi terpisah. atau jika berada di dalam root, jalurnya akan menjadi /boot atau sederhana / dengan subfolder lainnya. Saat Anda menemukan partisi yang benar, GRUB Legacy biasanya menampilkan sesuatu seperti ini: (hd0,0) atau pasangan disk/partisi lain yang dapat Anda gunakan kembali.
Selanjutnya, Anda perlu menentukan root GRUB dengan perintah seperti ini:
Contoh akar: root (hd0,0)
dan beri tahu di mana kernel dan initrd berada. Sekali lagi, Anda biasanya tidak perlu mengetik nama file lengkap, karena tombol TAB akan melengkapi secara otomatis dan membantu Anda menghindari kesalahan pengetikan pada jalur yang panjang.
Untuk melakukan penyempurnaan lebih lanjut, Anda dapat menggunakan perintah cat untuk membaca file konfigurasi GRUB (misalnya, /boot/grub/menu.lstdan memeriksa perangkat mana yang terpasang di direktori root, parameter kernel apa yang dilewatkan, dll. Ini adalah cara yang sangat praktis untuk Salin konfigurasi yang sama yang digunakan sistem saat berfungsi dengan benar..
Terakhir, ketika Anda memiliki garis-garis tersebut akar, inti e initrd Untuk daftar, cukup jalankan perintahnya. boot untuk memboot sistem. Setelah masuk, langkah terakhir adalah menginstal ulang GRUB dari dalam Linux itu sendiri dengan grub-install pada disk yang bersangkutan, memastikan Anda tidak perlu mengulangi proses manual pada saat memulai ulang berikutnya.
Metode umum lainnya (menggunakan LiveCD, chroot, dan Boot-Repair)
Sejauh ini, kita telah melihat bagaimana cara mengatasi situasi tersebut hanya menggunakan konsol GRUB , tanpa menggunakan cara eksternal apa pun. Namun, ada baiknya juga mengetahui metode klasik dengan LiveCD/LiveUSB dan alat grafis, karena dalam beberapa kasus kerusakannya sangat luas sehingga booting dari sistem yang dapat di-boot adalah satu-satunya pilihan.
Teknik yang umum digunakan pada distribusi berbasis Debian dan Ubuntu adalah dengan melakukan booting dari LiveCD atau LiveUSB (misalnya, image Ubuntu, Linux Mint, Debian Live, dll.), memasang partisi root dari sistem yang rusak, juga memasang /boot jika itu adalah partisi terpisah, dan kemudian melakukan chroot ke sistem file tersebut untuk menginstal ulang GRUB seolah-olah kita beroperasi dari instalasi itu sendiri.
Secara garis besar, prosesnya terdiri dari mengidentifikasi partisi dengan fdisk -l, tentukan apa akar permasalahannya (misalnya, / Dev / sda2) dan yang merupakan partisi boot jika ada (misalnya, / Dev / sda7Kemudian, komponen-komponen tersebut dirakit dengan:
Memasang partisi (misalnya):sudo mount /dev/sda2 /mntsudo mount /dev/sda7 /mnt/boot (jika Anda memiliki file /boot terpisah)
dan pemasangan bind mount dari /dev, /dev/pts, /proc dan /sys dilakukan di dalam /mnt:
Dudukan pengikat:sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Dari sini, Anda dapat mengakses sistem yang terpasang menggunakan:
Masuk dengan: sudo chroot /mnt
Dan dari dalam, Anda dapat menjalankan grub-install yang mengarah ke disk:
Instalasi dari chroot: grub-install --boot-directory=/boot/ --recheck /dev/sda
untuk memuat ulang pengelola boot ke MBR atau area yang setara, diikuti dengan:
Hasilkan konfigurasi: grub-mkconfig -o /boot/grub/grub.cfg
untuk membuat ulang file konfigurasi. Setelah keluar dari chroot dengan exit dan mulai ulang komputer (sudo reboot), biasanya Menu GRUB muncul kembali seperti biasa..
Opsi lain yang sangat nyaman bagi pengguna yang lebih suka menghindari terminal adalah alat Boot-Repair , yang dapat diinstal di lingkungan Ubuntu live dan menawarkan antarmuka grafis yang mampu mendeteksi instalasi sistem operasi dan memperbaiki GRUB hampir secara otomatis . Cukup jalankan alat tersebut, pilih "perbaikan yang direkomendasikan," dan biarkan alat tersebut menganalisis dan menulis ulang bootloader.
Meskipun solusi berbasis LiveCD atau utilitas eksternal ini sangat praktis, keuntungan menguasai teknik yang telah kita lihat di awal adalah Anda tidak bergantung pada ketersediaan drive USB atau disk . Anda dapat menggunakan konsol GRUB itu sendiri dalam banyak situasi, terutama ketika masalahnya "hanya" karena pengelola boot telah kehilangan referensi yang benar ke partisi tempat /boot berada.
Dengan semua yang telah disebutkan, jelas bahwa GRUB yang rusak tidak selalu berarti sistem hilang : Anda memiliki alat di bootloader itu sendiri, di baris perintah, dan di lingkungan Live untuk menemukan partisi yang benar, memuat kernel secara manual, memboot GNU/Linux Anda, dan menginstal ulang pengelola boot sehingga berfungsi seperti baru lagi.