LFCS: Cara Mengonfigurasi dan Memecahkan Masalah Grand Unified Bootloader (GRUB) - Bagian 13


Karena perubahan terbaru dalam tujuan ujian sertifikasi LFCS yang berlaku mulai 2 Februari 2016, kami menambahkan topik yang diperlukan ke seri LFCS yang dipublikasikan di sini. Untuk mempersiapkan ujian ini, Anda sangat dianjurkan untuk mengikuti seri LFCE juga.

Pada artikel ini kami akan memperkenalkan Anda pada GRUB dan menjelaskan mengapa boot loader diperlukan, dan bagaimana hal itu menambah fleksibilitas pada sistem.

Proses boot Linux dari saat Anda menekan tombol daya komputer hingga Anda mendapatkan sistem yang berfungsi penuh mengikuti urutan tingkat tinggi berikut:

  1. 1. Proses yang dikenal sebagai POST (Power-On Self Test) melakukan pemeriksaan keseluruhan pada komponen perangkat keras komputer Anda.
  2. 2. Ketika POST selesai, kendali diteruskan ke boot loader, yang kemudian memuat kernel Linux ke dalam memori (bersama dengan initramfs ) dan menjalankannya. Boot loader yang paling banyak digunakan di Linux adalah GRand Unified Boot loader, atau disingkat GRUB.
  3. 3. Kernel memeriksa dan mengakses perangkat keras, lalu menjalankan proses awal (umumnya dikenal dengan nama umum “init ”) yang kemudian menyelesaikan boot sistem dengan memulai jasa.

Di Bagian 7 dari seri ini (“SysVinit, Upstart, dan Systemd ”) kami memperkenalkan sistem dan alat manajemen layanan yang digunakan oleh distribusi Linux modern. Anda mungkin ingin meninjau artikel itu sebelum melanjutkan lebih jauh.

Memperkenalkan GRUB Boot Loader

Dua versi GRUB utama (v1 terkadang disebut GRUB Legacy dan v2) dapat ditemukan di sistem modern, meskipun sebagian besar distribusi menggunakan v2 secara default di versi terbarunya. Hanya Red Hat Enterprise Linux 6 dan turunannya yang masih menggunakan v1 hingga saat ini.

Oleh karena itu, kami akan fokus terutama pada fitur v2 dalam panduan ini.

Terlepas dari versi GRUB, boot loader memungkinkan pengguna untuk:

  1. 1). memodifikasi cara sistem berperilaku dengan menentukan kernel berbeda yang akan digunakan,
  2. 2). memilih antara sistem operasi alternatif untuk melakukan booting, dan
  3. 3). menambahkan atau mengedit stanza konfigurasi untuk mengubah opsi boot, antara lain.

Saat ini, GRUB dikelola oleh proyek GNU dan didokumentasikan dengan baik di situs web mereka. Anda dianjurkan untuk menggunakan dokumentasi resmi GNU saat membaca panduan ini.

Saat sistem melakukan booting, Anda akan disajikan layar GRUB berikut di konsol utama. Awalnya, Anda diminta untuk memilih antara kernel alternatif (secara default, sistem akan boot menggunakan kernel terbaru) dan diperbolehkan memasukkan baris perintah GRUB (dengan c) atau edit opsi boot (dengan menekan tombol e).

Salah satu alasan mengapa Anda mempertimbangkan untuk melakukan booting dengan kernel yang lebih lama adalah perangkat keras yang dulunya berfungsi dengan baik dan mulai “bertindak ” setelah peningkatan versi (lihat tautan ini di AskUbuntu forum misalnya).

Konfigurasi GRUB v2 dibaca saat boot dari /boot/grub/grub.cfg atau /boot/grub2/grub.cfg, sedangkan GRUB v2/boot/grub/grub.conf atau /boot/grub/menu.lst digunakan di v1. File-file ini TIDAK untuk diedit dengan tangan, tetapi dimodifikasi berdasarkan konten /etc/default/grub dan file yang ditemukan di dalam /etc/grub.d.

Di CentOS 7, berikut file konfigurasi yang dibuat saat sistem pertama kali diinstal:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Selain dokumentasi online, Anda juga dapat menemukan manual GNU GRUB dengan menggunakan info sebagai berikut:

info grub

Jika Anda tertarik secara khusus pada opsi yang tersedia untuk /etc/default/grub, Anda dapat langsung mengaktifkan bagian konfigurasi:

info -f grub -n 'Simple configuration'

Dengan menggunakan perintah di atas, Anda akan mengetahui bahwa GRUB_TIMEOUT mengatur waktu antara saat layar awal muncul dan booting otomatis sistem dimulai kecuali terganggu oleh pengguna. Ketika variabel ini diatur ke -1, booting tidak akan dimulai sampai pengguna membuat pilihan.

Ketika beberapa sistem operasi atau kernel diinstal pada mesin yang sama, GRUB_DEFAULT memerlukan nilai integer yang menunjukkan entri OS atau kernel mana di layar awal GRUB yang harus dipilih untuk boot secara default. Daftar entri dapat dilihat tidak hanya di layar splash yang ditunjukkan di atas, tetapi juga menggunakan perintah berikut:

Di CentOS dan openSUSE:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg

Di Ubuntu:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg

Pada contoh yang ditunjukkan pada gambar di bawah, jika kita ingin boot dengan versi kernel 3.10.0-123.el7.x86_64 (entri ke-4), kita perlu menyetel GRUB_DEFAULT ke 3 (entri diberi nomor internal yang diawali dengan nol) sebagai berikut:

GRUB_DEFAULT=3

Salah satu variabel konfigurasi GRUB terakhir yang menarik perhatian adalah GRUB_CMDLINE_LINUX, yang digunakan untuk meneruskan opsi ke kernel. Opsi yang dapat diteruskan melalui GRUB ke kernel didokumentasikan dengan baik di file Parameter Kernel dan di bootparam man 7.

Opsi saat ini di server CentOS 7 saya adalah:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"

Mengapa Anda ingin mengubah parameter kernel default atau memberikan opsi tambahan? Secara sederhana, mungkin ada saatnya Anda perlu memberi tahu kernel parameter perangkat keras tertentu yang mungkin tidak dapat ditentukan sendiri, atau mengganti nilai yang dapat dideteksi.

Hal ini terjadi pada saya belum lama ini ketika saya mencoba Vector Linux, turunan dari Slackware, di laptop saya yang berumur 10 tahun. Setelah instalasi, ia tidak mendeteksi pengaturan yang tepat untuk kartu video saya jadi saya harus memodifikasi opsi kernel yang melewati GRUB agar dapat berfungsi.

Contoh lainnya adalah ketika Anda perlu membawa sistem ke mode pengguna tunggal untuk melakukan tugas pemeliharaan. Anda dapat melakukan ini dengan menambahkan kata single ke GRUB_CMDLINE_LINUX dan melakukan boot ulang:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"

Setelah mengedit /etc/defalt/grub, Anda perlu menjalankan update-grub (Ubuntu) atau grub2-mkconfig -o /boot/grub2/grub. cfg (CentOS dan openSUSE) setelahnya untuk memperbarui grub.cfg (jika tidak, perubahan akan hilang saat boot).

Perintah ini akan memproses file konfigurasi boot yang disebutkan sebelumnya untuk memperbarui grub.cfg. Metode ini memastikan perubahan bersifat permanen, sedangkan opsi yang diteruskan melalui GRUB pada saat boot hanya akan bertahan selama sesi saat ini.

Memperbaiki Masalah GRUB Linux

Jika Anda menginstal sistem operasi kedua atau jika file konfigurasi GRUB Anda rusak karena kesalahan manusia, ada beberapa cara agar sistem Anda kembali normal dan dapat melakukan booting lagi.

Di layar awal, tekan c untuk mendapatkan baris perintah GRUB (ingat bahwa Anda juga dapat menekan e untuk mengedit opsi boot default), dan gunakan bantuan untuk menampilkan opsi boot yang tersedia. perintah di prompt GRUB:

Kami akan fokus pada ls, yang akan mencantumkan perangkat dan sistem file yang diinstal, dan kami akan memeriksa apa yang ditemukannya. Pada gambar di bawah ini kita dapat melihat ada 4 harddisk (hd0 hingga hd3).

Hanya hd0 yang tampaknya telah dipartisi (sebagaimana dibuktikan dengan msdos1 dan msdos2, dengan 1 dan 2 adalah nomor partisi dan msdos adalah skema partisi).

Sekarang mari kita periksa partisi pertama pada hd0 (msdos1) untuk melihat apakah kita dapat menemukan GRUB di sana. Pendekatan ini akan memungkinkan kita untuk mem-boot Linux dan menggunakan alat tingkat tinggi lainnya untuk memperbaiki file konfigurasi atau menginstal ulang GRUB sama sekali jika diperlukan:

ls (hd0,msdos1)/

Seperti yang bisa kita lihat di area yang disorot, kita menemukan direktori grub2 di partisi ini:

Setelah kita yakin bahwa GRUB berada di (hd0,msdos1), mari beri tahu GRUB di mana menemukan file konfigurasinya dan kemudian perintahkan untuk mencoba meluncurkan menunya:

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal

Lalu di menu GRUB, pilih salah satu entri dan tekan Enter untuk melakukan booting menggunakan entri tersebut. Setelah sistem di-boot, Anda dapat mengeluarkan perintah grub2-install /dev/sdX (ganti sdX dengan perangkat yang ingin Anda instal GRUB-nya). Informasi booting kemudian akan diperbarui dan semua file terkait dipulihkan.

grub2-install /dev/sdX

Skenario lain yang lebih kompleks didokumentasikan, bersama dengan perbaikan yang disarankan, dalam panduan Mengatasi Masalah GRUB2 Ubuntu. Konsep yang dijelaskan di sana juga berlaku untuk distribusi lain.

Ringkasan

Pada artikel ini kami telah memperkenalkan Anda pada GRUB, menunjukkan di mana Anda dapat menemukan dokumentasi baik online maupun offline, dan menjelaskan cara menangani skenario ketika sistem berhenti melakukan booting dengan benar karena masalah terkait bootloader.

Untungnya, GRUB adalah salah satu alat yang paling baik didokumentasikan dan Anda dapat dengan mudah menemukan bantuan baik di dokumen yang diinstal atau online menggunakan sumber daya yang telah kami bagikan di artikel ini.

Apakah Anda memiliki pertanyaan atau komentar? Jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah. Kami menantikan kabar dari Anda!