Tahun IV, Nomor 19, April 2002

GRUB, Boot Loader Pengganti LILO 

Home
Halaman Muka
 

Tips Menginstal Software dari Source
 

 

Hendri Andriani

Linux Red Hat 7.2 dilengkapi option menggunakan LILO atau GRUB Loader? Bagi newbie seperti saya ini tentu bingung, apa sih GRUB itu? Bagaimana cara menggunakannya? Apa kelebihannya dibandingkan LILO? Setelah saya cari sana sini mengenai keterangan tentang GRUB itu, ternyata GRUB memiliki kemampuan yang ekstra lebih dan konfigurasi yang lebih mudah dibandingkan dengan LILO yang selama ini kita pakai sebagai defaultnya distribusi Linux pada umumnya. 

GRUB, Grand Unified Boot Loader, seperti LILO, dapat memboot sistem Linux anda, menjaga dan merawat booting dan loading pada kernel anda. GRUB memiliki banyak feature dan lebih mudah dipakai, reliabel dan fleksibel dibandingkan dengan LILO. Dengan berbekal pengetahuan dasar LILO dan partisi disk maka anda dapat mengikuti cara penggunaan GRUB ini dengan baik. 
Selain Linux, GRUB juga dapat memboot Sistem Operasi yang lain, seperti NetBSD, OpenBSD, GNU HURD, DOS, Windows 95, 98, Me, NT, dan 2000. Meskipun membooting sebuah Sistem Operasi merupakan pekerjaan yang biasa dan tidak menarik, pekerjaan itu sebenarnya cukup penting. Jika Boot Loader anda tidak bekerja dengan baik, anda dapat terkunci / terjebak di sistem anda (tidak bisa booting). 
Bagi saya, GRUB adalah Boot Loader yang handal, sebagai contoh GRUB dapat membaca kernel Linux langsung dari partisi minix, FAT, ext2, atau Reiserfs. Daripada saya panjang lebar menjelaskan kelebihan-kelebihan GRUB dan membandingkannya dengan LILO ada baiknya akan kita mulai cara penggunaan GRUB ini. 

Saya akan mulai dengan OS Linux yang saat ini masih memakai LILO dan belum menginstall GRUB sama sekali. Kita dapat mendownload tarball GRUB yang versi terbaru di ftp://alpha.gnu.org/gnu/grub. Pada saat penulisan artikel ini saya menggunakan GRUB versi  0.5.96.1 (grub-0.5.96.1.tar.gz). Jangan takut untuk menginstallnya, boot records anda tidak akan berubah. Kita akan mengkompile dan menginstall GRUB seperti program lain pada umumnya.Kita dapat membuat bootdisk GRUB, sekali lagi jangan khawatir. Saya  akan memberitahu sebelum kita melakukan apa saja yang dapat mengubah proses boot. 
Saya akan meletakkan  source code dan mengkompilenya di direktori /tmp,  lalu menginstall semuanya di direktori /usr. Sebagai root, ketikkan perintah sebagai berikut : 
# cd /tmp 
# tar xzvf /direktori/tarball/grub/berada/grub-0.5.96.1.tar.gz 
# cd grub-0.5.96.1 
# ./configure -prefix=/usr 
# make 
# make install 
Sekarang GRUB telah terinstall dan kita akan memulainya dengan menempatkan boot loader pada sebuah disket.

•Membuat Bootdisk 
Untuk membuat bootdisk, kita akan menggunakan beberapa langkah yang sederhana. Pertama kita akan membuat sebuah file sistem ext2 pada sebuah disket yang akan digunakan, setelah itu kita mount ke sistem dan copy beberapa file GRUB ke disket dan kemudian menjalankan program ``GRUB'' yang menjaga semua setting pada boot records disket. 
Masukkan disket kosong, kemudian ketikkan perintah berikut: 
# mke2fs /dev/fd0 
yang berarti membuat (memformat) file sistem ext2 pada disket tersebut. Tampilannya seperti Gambar 1.

Gambar 1. Memformat disket dengan filesystem ext2.

Sekarang kita akan membuat beberapa direktori dan mengcopy file-file kritis (yang sudah terinstall pada saat GRUB terinstall) 
# mkdir /mnt/floppy/boot/ 
# mkdir /mnt/floppy/boot/grub/ 
Kemudian copy file stage1 dan stage2 yang ada pada direktori /usr/share/grub/i386-redhat/ (jika pada saat menginstall Red Hat 7.2 memilih opsi GRUB Loader) dan di /usr/share/grub/i386-pc/ (jika tadi menginstall langsung dari tarball GRUB) 
# cp /usr/share/grub/i386-redhat/stage1 /mnt/floppy/boot/grub 
# cp /usr/share/grub/i386-redhat/stage2 /mnt/floppy/boot/grub 
Tinggal selangkah lagi kita akan mendapatkan bootdisk yang bekerja dengan baik. 
Ketika anda menginstall sesuai instruksi di atas dari sebuah tar ball GRUB, maka program yang menarik yang bernama grub ini terletak di direktori /usr/sbin/grub. Program ini sangat menarik, karena pada faktanya program ini menyerupai fungsi yang sama seperti GRUB Boot Loader. Ya! Meskipun Linux sudah berjalan, anda dapat menjalankan GRUB, dan dapat melakukan pekerjaan/perintah dan interface yang sama ketika anda menggunakan GRUB Boot disk atau menginstallkan GRUB pada MBR di Hard Disk anda. 
Kita akan menggunakan program grub tersebut untuk men set up boot sector pada boot disk kita. Jalankan grub, maka akan keluar tampilan sebagai berikut... 
  
# /usr/sbin/grub 
  
GRUB version 0.90 (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> 
  
Versi di atas tergantung pada versi GRUB yang terinstall di sistem. Jika kita menginstall dengan tarball kita akan menjumpai perbedaan versi (Contoh tarball ini versi 0.5.96.1). Jika kita memilih opsi pada saat menginstall Red Hat 7.2 maka versi GRUB menggunakan versi 0.90, seperti yang kita lihat di atas. 
grub> --> Merupakan grub command prompt / grub console.
Jika pada grub console kita ketikkan:
grub> root (fd0) 
maka akan keluar tampilan informasi sebagai berikut 
  
Filesystem type is ext2fs, using whole disk 
yang berarti Filesystem pada device fd0 (/dev/fd0) atau floppy semua isinya menggunakan filesystem ext2. Perintah ``root'' tadi meminta GRUB untuk melihat stage1 dan stage2 pada device fd0, yang pada defaultya GRUB melihat di direktori boot/grub/ pada partisi disk yang anda sebutkan (yakni pada device fd0).
Kita baru saja mengcopy file-file tersebut pada direktori yang tepat. Kemudian kita akan meminta GRUB untuk menginstall Boot Records pada disket floppy kita dengan menggunakan perintah ``setup (device)'' pada console GRUB. 
grub> setup (fd0) 
maka tampilan yang keluar:
  
Checking if "/boot/grub/stage1" exists... yes 
Checking if "/boot/grub/stage2" exists... yes 
Checking if "/boot/grub/e2fs_stage1_5" exists... no 
Running "install /boot/grub/stage1 d (fd0) /boot/grub/stage2 p /boot/grub/grub .conf "... succeeded Done. 
  
Kemudian ``quit'' pada console GRUB untuk keluar. Dengan demikian kita sudah mempunyai Boot Disk GRUB yang akan kita ``mainkan'' untuk bereksperimen lebih lanjut :-). 
grub> quit 
Ketika anda akan menggunakan GRUB sebagai Boot Loader anda, pertama pastikan anda tahu di partisi mana anda menyimpan kernel Linuxnya dan nama partisi yang berisi filesistem root ``/''. Juga pastikan anda melihat konfigurasi LILO sebelumnya, seperti beberapa argumen yang di butuhkan untuk mempassingkan argumen tersebut ke kernel, seperti  ``append = ide-scsi'' untuk mengemulasikan keberadaan cdwriter sebagai scsi, dan argumen - argumen lainnya. Jika kita sudah mengetahui segala informasi ini, kita akan tenang memulainya. 

•Memulai GRUB 
Untuk memulai GRUB, kita akan men-shutdown komputer, dan memboot dari boot disk yang tadi telah kita buat. Tetapi jika anda ingin menjalankannya dari sistem yang telah berjalan. Anda dapat menjalankan perintah grub seperti di atas, semua akan berjalan sama, tetapi anda tidak akan memboot apa pun dari sini (karena berada pada Sistem Linux yang berjalan). 
Ketika Memboot dari bootdisk yang kita buat sebelumnya, GRUB akan mencari informasi dari BIOS dan mencari file yang telah kita copy kan ke bootdisk sebelumnya. Tampilannya akan sama seperti yang kita jalankan di atas: 
  
GRUB version 0.90 (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> 
  
Seperti yang anda lihat semua sama seperti diatas, tetapi kita akan memboot Sistem Linux anda dari sini. 
Pada Linux, ketika kita berbicara tentang ``root'' filesystem, kita akan langsung menunjuk ke partisi Linux utama (/). Tapi, GRUB mempunyai definisi sendiri tentang partisi ``root''. Partisi ``root'' GRUB adalah partisi yang menyimpan kernel Linux anda. Ini mungkin atau bukan file sistem root ``biasa'' yang anda punya. Pada contohnya, pada Gentoo Linux kita mempunyai partisi kecil, yang terpisah untuk menyimpan Kernel Linux dan informasi - informasi Booting. Kita membiarkan partisi ini tidak di-mount, jadi tidak akan berantakan jika secara tidak sengaja atau sengaja sistem ini tiba-tiba crashes atau mereboot ulang. 
Sekarang kita berada di GRUB, kita akan menunjukkan lokasi partisi root. Ketika kita memasuki partisi root maka GRUB akan memountnya dengan option read-only, jadi dapat mengload Kernel Linux dari sana. Satu hal yang benar-benar fantastis pada GRUB adalah GRUB dapat membaca partisi FAT, minix, ext2, FFS dan Reiserfs. 
Ketikan perintah root pada GRUB, 
grub> root ( 
Tekan tombol TAB, GRUB akan mengisi kemungkinan partisi hardisk yang anda miliki. Jika anda memiliki beberapa partisi dimulai dari hd0 (bukan /dev/hda seperti biasanya). Jika anda hanya mempunyai satu hardisk maka GRUB akan mengisinya dengan ``hd0''. Jika anda memiliki lebih dari satu Harddisk silakan pilih Harddisk yang ada kernel linuxnya, contohnya ``hd0'' diikuti dengan tanda koma ``,'' di sebelahnya. Sampai di sini jangan tekan [Enter] ! 
grub> root (hd0, 
Kemudian tekan [Tab] untuk melihat kemungkinan partisi yang anda punya dalam hardisk tersebut. 
grub> root (hd0, [Tab] 
  
Possible partitions are: 
Partition num: 0, Filesystem type is ext3fs, partition type 0x83 
Partition num: 1, Filesystem type unknown, partition type 0x82 
Partition num: 2, Filesystem type unknown, partition type 0x7 
Partition num: 4, Filesystem type is reiserfs, partition type 0x83 
Partition num: 5, Filesystem type is GNU HURD, partition type 0x63 
  
Tentu tampilannya akan berbeda sesuai dengan Partisi Harddisk yang anda miliki. Pada Linux, biasanya partisi ke 5 dari Harddisk adalah hda5, tetapi pada GRUB didefinisikan lain yakni (hd0,4). GRUB menggunakan penamaan/pelabelan harddisk dan partisinya dimulai dari 0, bukan a atau 1.
Kita akan memboot Harddisk yang berisikan Kernel Linux, sebagai contohnya pada partisi ke -5, 
grub> root (hd0, 0) [Enter] 
Filesystem type is ext3fs, partition type 0x83 
Kemudian tentukan letak dari kernel tersebut. Anda meletakkannya sesuai dengan letak kernel Linux. 
grub> kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/hda5 
Berarti kernel tersebut bernama vmlinuz-2.4.7-10 dan berada pada direktori /boot, dengan mounting read-only untuk partisi root ``/'' yang ada di /dev/hda5.
Anda dapat menambahkan parameter kernel anda seperti ``root=/dev/hda5'' dan ``mem=256''. 
Catatan: parameter kernel ``root='' penting didefinisikan untuk menunjukkan root filesystem anda. 
Anda telah me-mount root filesystem dan meload kernel Linux anda. Saatnya anda memboot kernel linux anda, dengan menggunakan perintah sederhana``boot''. 
grub> boot 
dan proses boot Linux akan mulai. 
File Konfigurasi GRUB (grub.conf ) ada di direktori /boot/grub/. Berikut contoh isi file 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/hda5 
# initrd /initrd-version.img 
#boot=/dev/hda 
default=0 
timeout=10 
splashimage=(hd0,0)/grub/splash.xpm.gz 
title Red Hat Linux (2.4.7-10) 
•root (hd0,0) 
•kernel /vmlinuz-2.4.7-10 ro root=/dev/hda5 
•initrd /initrd-2.4.7-10.img 
  
File tersebut dibuat pada saat instalasi dengan Anaconda Installer dari Red Hat 7.2.
Jika semua berjalan dengan baik, anda akan dapat meload distribusi Linux anda dengan BootDisk GRUB. GRUB  merupakan boot loader yang harus diperhitungkan, karena anda dapat mengkonfigurasi secara dinamik / berubah-ubah sesuai keinginan anda. Selanjutnya akan penulis tunjukkan cara untuk membuat Menu Loader GRUB daripada anda mengetikkan 3 baris perintah GRUB. Namun sebelum itu mari kita memperdalam pengetahuan kita tentang cara kerja GRUB. 

•Cara Kerja GRUB 
Untuk mensetup boot floppy, kita melakukan 2 hal, pertama kita mengkopi 2 files dari direktori /usr/share/grub/i386-redhat/ ke /boot/grub/ floppy yang berfilesystem ext2 dan menjalankan program setup dari GRUB.
grub> setup (fd0) 
GRUB menginstall loader``stage1'' ke boot record pada floppy dan juga mengkonfigurasikan ``stage1'' untuk mengload ke ``stage2'' langsung dari file sistem ext2. Sebenarnya GRUB melakukan ini dengan membuat sebuah list yang terdiri dari blok-blok ke floppy yang berisikan data ``stage2''. Jadi ``stage1'' tidak perlu tahu apapun tentang filesistem ext2 untuk me-load ``stage2''. 
Bagaimanapun juga, dalam beberapa kasus GRUB menginstall loader ``stage1.5'' ke boot record setelah menginstall ``stage1''. Loader ``stage1.5'' spesial ini akan membuat ``stage2'' dapat di Load tanpa menggunakan blocklist yang kuno/lama (primitive blocklist), tetapi dengan menggunakan pendekatan standard berbasis path yang lebih fleksibel. Kemampuan ini yang dimiliki GRUB untuk mengenali struktur filesystem secara langsung yang dapat membuat GRUB lebih powerfull dibanding LILO. Jika terjadi Defraksi pada filesystem di bootdisk, secara langsung, stage1 (berkat ext2 stage1.5) dapat menemukan stage2. Hal ini yang tidak dapat dilakukan oleh LILO, karena LILO sangat tergantung pada file map.  Files map ini harus dijalankan ulang setiap kali anda memperbaharui kernel anda, atau memindahkan sesuatu secara fisik / kasar pada disk, walaupun pathnya tidak berubah. 
Anda akan heran sekaligus kagum jika bootdisk anda dibuat dengan file sistem FAT selain dengan file sistem ext2. Ya! itu dapat dilakukan, karena pada saat kita menjalankan ``setup (fd0)'' GRUB akan menginstallkan ``stage1.5'' yang sesuai dengan tipe filesystem pada root. Bahkan jika tidak ada tempat untuk ``stage1.5'', GRUB dapat meload stage2 dengan cara berbalik ke pendekatan kuno block-list. 

•Menginstall GRUB pada Harddisk 
Nah kita sudah membuat bootdisk floppy GRUB, bagaimana jika kita ingin menginstallnya di harddisk? Caranya sangat sederhana, pertama kita tentukan di mana partisi root GRUB ditempatkan, kemudian buat direktori /boot/grub/ pada partisi root GRUB. Ingat partisi root GRUB tidak sama definisinya dengan partisi root pada Linux. Setelah itu kopikan file stage1 dan stage2 ke direktori /boot/grub/. Sebagai contoh jika direktori /boot/grub/ diletakkan di /dev/hda4 maka root di set ke ``(hd0, 3)'' 
grub> root (hd0, 3) 
Sekarang tinggal putuskan apakah GRUB akan ditempatkan di MBR? Jika ya, maka taruh GRUB di seluruh disk tanpa partisi, sebagai contohnya di hd0 (/dev/hda), maka jalankan perintah berikut: 
grub> setup (hd0) 
Jika anda menginstallnya di partisi lain, tinggal disebutkan di partisi mana, misalnya pada partisi hda5, 
grub> setup (hd0, 4) 
Sekarang GRUB telah terinstall. Jika anda memboot sistem anda maka akan keluar tampilan konsole GRUB (Jika anda menaruhnya di MBR) seperti contoh yang di atas, sekarang kita tinggal membuat menu boot agar anda tidak mengetikkan baris perbaris perintah di atas. 

•Membuat Menu GRUB 
Untuk membuat menu boot pada GRUB, kita hanya membuat file teks biasa yang bernama menu.lst dan di letakkan di direktori /boot/grub/ di antar file stage1 dan stage1, berikut contoh file menu.lst.
default=0 
timeout=10 
splashimage=(hd0,0)/grub/splash.xpm.gz 
title Red Hat Linux (2.4.7-10) 
root (hd0,0) 
kernel /vmlinuz-2.4.7-10 ro root=/dev/hda5 
initrd /initrd-2.4.7-10.img 
  
title Windows 2000 
root (hd0, 3) 
chainloader +1 
  
Pada Red Hat 7.2, file menu.lst di-link ke file grub.conf. 
Berikut penjelasan file boot menu GRUB di atas: 
Baris pertama, Default boot mana yang akan dijalankan (dimulai dari 0 berikutnya 1, 2 dan seterusnya) . Baris kedua, waktu memilih, jika lewat dari waktu yang ditetapkan, akan dipilih defaultnya. Baris ketiga (splashimage) untuk tampilan boot loader semacam wallpaper, yang dapat juga diganti dengan perintah ``color'' sesuai selera, contohnya: 
color white/blue blue/red 
yang akan menghiasi tampilan menu GRUB .
Baris berikutnya merupakan Boot Linux, sesuai dengan parameter-parameternya, root partisinya dan sebagainya... Juga dapat menggunakan initrd (initial root disk). 
Baris terakhir, chainloader ini bekerja dengan memboot (boot record) Windows 2000 sendiri pada partisi hda2 dan membootnya. Ini yang disebut loading dengan tehnik rantai, GRUB akan meload ke partisi boot record yang dituju dan memboot sistem dari sana. Tehnik ini berjalan dengan baik di versi Windows dan DOS apa saja. 
Anda tidak perlu menginstall ulang GRUB untuk mengupdate kernel / mengganti versi kernel yang baru atau mengganti lokasi partisi anda. Anda hanya perlu mengubah file menu.lst. Hanya ada beberapa kondisi jika GRUB perlu di install ulang, pertama jika anda akan menggantikan filesistem pada partisi root GRUB, misalnya dari ext2 ke reiserfs, kedua jika menggantikan file stage1 dan stage2 ke versi terbaru. 

•Tips Ringan GRUB 
GRUB dapat membuat bootdisk sekaligus sebuah disket penyelamat (rescue disk). Jika kernel pada harddisk anda secara sengaja / tidak sengaja rusak atau terhapus, anda dapat memanggil kernelnya di boot disk anda dan sistem akan berjalan dengan baik. Caranya dengan mengkopi kernel anda ke floppy bootdisk GRUB 
# mount /dev/fd0 /mnt/floppy 
# cp /path/direktori/bzImage /mnt/floppy/boot/ 
# umount /mnt/floppy 
Sekarang disket anda berisikan kernel Linux, sehingga anda dapat membootnya dalam konsole GRUB dengan cara: 
grub> root (fd0) 
grub> kernel /boot/bzImage root=/dev/hda5 
grub> boot 
Pada parameter kernelnya, partisi root ditunjukkan ke partisi root yang ada pada Harddisk. 

Referensi 
http://www.gnu.org/software/grub 

Hendri Andriani <c4c3m_shadow@yahoo.com>

| Tips Menginstal Software dari Source  |

Email : jakarta@jakarta.linux.or.id


| Home | Halaman Muka
 © 1999-2002  ELEKTRO Online
All Rights Reserved.
Last modified on :