grubBagi yang terbiasa dengan urusan kernel di linux, apalagi oldies developer hehehe so pasti sangat2 terbiasa dengan yang namanya boot loader, apalagi dengan yang lamanya “LILO” aka Linux Loader. Namun distro-disto baru sejak digunakannya kernel 2.6 sudah mengganti boot loadernya dengan namanya GRUB.

Secara naluriah manusia datangnya sesuatu yang baru kadang membuat ‘defensif’ sendiri, pada awalnya datangnya GRUB belum bisa diterima secara langsung, terutama oleh SAYA :D

Maklumlah saya termasuk orang yang agak2 gaptek terhadap hal-hal baru :D, awal2 kedatangan grub, saya replace sama LILO, hehehee, apalagi beberapa bulan yang lalu waktu upgrade kernel yang menggunakan filesystemnya LVM, grub membuat masalah dengan saya, grub-install cannot accept on LVM ! &#$%@@$@$!$^$% caci maki, sumpah serapah ke grub rasanya tak terbantahkan yang membuat saya terpaksa datang ke lokasi server.

Namun terlepas dari kekurangannya itu, ada hal yang membuat saya ngeblog soal grub tersebut, yaitu kemampuan grub untuk select old kernel jika current kernel fail atau kernel panic. Halah akhirnya ketemu hal yang membuat saya senang dengan GRUB !

Hal ini pasti sangat membantu jika anda adalah seorang “remoker” (remote worker) hehehe

Berikut adalah langkah-langkahnya untuk memboot grub pada current kernel dan JIKA gagal grub akan memboot pada kernel default yang sudah kita tentukan :

Step 1: Jika kernel anda diletakkan pada posisi 0, maka PASTIKAN default=1 (atau kernel nomer lain pilihan anda yang sudah pasti bisa untuk memboot)

vi /boot/grub/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.24)
root (hd0,0)
kernel /vmlinuz-2.6.24.img ro root=/dev/VolGroup00/LogVol00 rhgb quiet panic=5
initrd /initrd-2.6.24.5.img
title CentOS (2.6.18-53.1.21.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-53.1.21.el5
module /vmlinuz-2.6.18-53.1.21.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-53.1.21.el5xen.img
title CentOS (2.6.18-8.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-8.el5
module /vmlinuz-2.6.18-8.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-8.el5xen.img

Step 2: Tambahkan panic=5 di ujung line misalnya: kernel /vmlinuz-2.6.26.2 seperti ini

title CentOS (2.6.24-grsec)
root (hd0,0)
kernel /vmlinuz-2.6.24.img ro root=/dev/VolGroup00/LogVol00 rhgb quiet panic=5
initrd /initrd-2.6.24.5.img

label panic=5 membuat kernel reboot setelah 5 detik, jika terjadi kernel panic

Step 3: Pastikan grub hanya meload sekali kernel terbaru, jikalau terjadi kernel panic

grub
savedefault - -default=0 - -once
quit

Step 4: Reboot dan berharaplah kernel anda berjalan dengan baik ;)

shutdown -r now

Sambil menunggu server anda kembali, di workstration anda dapat melakukan ping ke server untuk mengecek status on server . Tergantung masing2 server, bisa

Step 5: Jika server sudah up, ssh-lah ke server dan cek versi kernel:

uname -r

Anda harusnya mendapatkan versi kernel 2.6.24-grsec sebagai hasilnya
Jika anda masih mendapatkan hasil dari uname -r berupa versi kernel yang lama, maka kemungkinan waktu boot tadi kernel baru anda terjadi KERNEL PANIC.

Step 6: Jika upgrade kernel berhasil maka langkah selanjutnya kita dapat mengeset kernel baru itu sebagai default, editlah grub.conf

vi /boot/grub/grub.conf

Jika kernel baru ada di kelompok pertama di list kernel maka gantilah default=0. Simpan dan cobalah restart server anda !

Selamat mencoba!