GRUB atau Grand Unified Bootloader merupakan suatu paket bootloader yang menyediakan pilihan sistem operasi atau konfigurasi kernel (versi) yang terinstall di dalam partisi suatu disk dan hendak dijalankan (boot) oleh seorang user. Berikut contoh tampilan grub.

x3

Pada dokumentasi artikel ini akan disampaikan tahapan proses recovery grub yang error, hilang, rusak dikarenakan kondisi tertentu, mulai dari urutan partisi, bootloader, atau lainnya. Sebelum merujuk kepada tahapan dan prosesnya. Perlu dicatat, pastikan dapat mengakses data disk yang tentu menyimpan informasi konfigurasi boot di dalam partisinya, yaitu dengan menggunaakn beberapa altrenatif, pertama bisa menggunakan rescure mode centos, livemode CD/DVD installer centos atau liveusb untuk kemudian selanjutnya login ke dalam sistem disk yang mengalami error grub tersebut menggunaakan chroot /mnt/sysimage.

Urutan Disk dalam Grub

Setiap perangkat disk baik itu IDE, SATA ataupun SCSI, Hardisk Drive, SSD, SAS Disk akan terdeteksi penamaan serta urutan yang sama, yaitu hd atau sd. Contoh penaamaan serta urutannya adalah sebagai berikut.

(hd0) = Urutan disk pertama = /dev/sda
(hd1) = Urutan disk kedua = /dev/sdb
(hd0,0) = Urutan disk pertama partisi pertama = /dev/sda1
(hd1,1) = Urutan disk kedua partisi kedua = /dev/sdb2

Dan urutan disk serta urutan partisi seterusnya menyesuaikan dengan banyaknya hardisk serta kondisi partisi di masing masing komputer atau server.

Kondisi Disk dan Partisi

Diasumsikan bahwa kondisi sebelum proses reinstall grub, user sudah berada pada kondisi login terhadap server via chroot /mnt/sysimage baik melalui rescue mode atau liveusb centos atau live CD/DVD dan diasumsikan (sebagai contoh) bahwa server hanya memiliki satu disk (hdd) beserta dengan partisi /boot didalamnya. Berikut kondisi partisi hardisk server beserta dengan informasi penggunaan disk file sistemnya.

# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000390a6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          50      313572   83  Linux
/dev/sda2              51        1723    10493056   83  Linux
/dev/sda3            1724       10083    52433920   83  Linux
/dev/sda4           10084       77867   425141248    5  Extended
/dev/sda5           10084       18443    52433892   83  Linux
/dev/sda6           18444       20116    10493028   83  Linux
/dev/sda7           20117       21454     8391908   82  Linux swap / Solaris
/dev/sda8           21455       46533   157295460   83  Linux
/dev/sda9           46534       77867   196526820   83  Linux
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.8G  1.4G  7.9G  16% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sda9       185G   60M  175G   1% /backup
/dev/sda1       289M   69M  205M  26% /boot
/dev/sda8       148G  779M  140G   1% /home
/dev/sda6       9.8G   24M  9.3G   1% /tmp
/dev/sda5        50G  4.9G   42G  11% /usr
/dev/sda3        50G  566M   47G   2% /var

Selanjutnya ketik perintah grub untuk masuk terhadap mode grub sebelum proses reinstall grub.

grub

Kemudian setelahnya akan dihadapkan pada tampilan mode grub berikut.

Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub>

Reinstall Grub

Setelah masuk kedalam mode grub, selanjutnya lakukan proses pencarian lokasi partisi /boot/grub yang hendak diproses reinstall grub.

grub> find /grub/stage1

Hasilnya sebagai berikut.

find /grub/stage1
 (hd0,0)

Dapat diketahui bahwa file konfigurasi grub berada di bawah /boot yang berada di dalam partisi (hd0,0) atau /dev/sda1 sesuai dengan kondisi satu hardisk drive server beserta dengan partisinya. Kondisi dari hasil pencarian menyesuaikan dengan lokasi /boot atas urutan hardisknya. Selanjutnya kondisikan partisi grub manakah yang hendak di reinstall menggunakan perintah berikut.

grub> root (hd0,0)

Hasilnya adalah sebagai berikut.

Filesystem type is ext2fs, partition type 0x83

Selanjutnya lakukan reinstall grub menggunakan perintah setup pada lokasi hardisk pertama mengingat bahwa lokasi partisi /boot/grub tersebut berada di urutan disk pertama atau (hd0).

grub> setup (hd0)

Jika kondisi reinstall berhasil maka akan tertampil sukses sebagai berikut.

Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.

Apabila telah berhasil, maka sudah dapat keluar dari mode grub.

grub> quit

Tahapan dan proses resintall grub pada lokasi hardisk pertama (hd0) atau /dev/sda dimana lokasi /boot berada di partisi pertamanya atau (hd0,0) atau /dev/sda1 telah berhasil. Selanjutnya pengecekan file konfigurasi grub untuk memastikan bahwa pada saat prompt grub tampil makan dapat membaca opsi kernel image sistem operasi.

more /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/sdb2
#          initrd /initrd-[generic-]version.img
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=c43cbe3e-809a-4fc8-971f-56b0350d4eeb nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF
-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-431.el6.x86_64.img

Karena kondisi server adalah hanya memiliki satu hardisk beserta dengan kernel image yang telah terinstall dan tersimpan di dalam /boot partisi /dev/sda1 maka pastikan file konfigurasi membaca partisi /boot atau /dev/sda1 atau (hd0,0) sesuai dengan urutan partisi grub.
Kondisi /boot tersebut hanya terinstall dan memiliki satu konfigurasi kernel image sistem operasi yang dapat dipilih atau dijalankan pada saat startup server yaitu kernel versi 2.6.32-431.el6.x86_64 saja.

Selanjutnya simpan (save) file konfigurasi grub tersebut dan silahkan dilakukan test reboot server.
Terkait dengan detail file konfigurasi grub dapat merujuk pada artikel wiki centos https://wiki.centos.org/HowTos/GrubInstallation tersebut.