Jumat, 30 Mei 2014

Kompilasi & Install Grub2 untuk USB Boot Mandiri

Jadi ceritanya kita pengin bikin USB bootable pakai Grub2, tapi tanpa ribet pakai installer otomatis. Kenapa? Karena installer bawaan Grub biasanya malah nyoba nge-boot OS tempat dia dijalankan, bukan fokus ke flashdisk kita. Jadi kalau dipaksa, hasilnya sering zonk.

Cara Kerja Singkat

Grub2 di mode BIOS basically pakai dua bagian utama:

  • boot.img → ini kayak MBR (sector pertama flashdisk).
  • core.img → duduk setelah MBR, isinya kernel Grub plus modul-modul penting.

Nah, modul ini bisa kamu masukin langsung ke core.img, atau tinggal load dari filesystem USB. Tapi biar simpel, kita pilih modul basic aja buat start.

Langkah Build di Linux

git clone git://git.savannah.gnu.org/grub.git
cd grub
./autogen.sh
./configure --disable-nls
make -j2
  

Setelah kompilasi, kamu bakal nemuin boot.img, kernel.img dan sekumpulan modul .mod di folder grub-core/.

Bikin core.img

core.img ini dibentuk pakai grub-mkimage. Misalnya kita mau support FAT, NTFS, dan exFAT:

cd grub-core/
../grub-mkimage -v -O i386-pc -d. -p\(hd0,msdos1\)/boot/grub \
biosdisk part_msdos fat ntfs exfat -o core.img
  

Ingat, pastikan ukuran core.img nggak lebih dari 32 KB - 512 byte, biar aman sama tool partisi jadul yang masih pakai boundary track.

Tulis ke USB

Bikin dulu satu partisi (FAT/FAT32/NTFS/exFAT) di USB, lalu copy boot.img & core.img pakai dd:

dd if=boot.img of=/dev/sdX bs=440 count=1
dd if=core.img of=/dev/sdX bs=512 seek=1
  

(Ganti /dev/sdX sesuai device USB kamu).

Tambahin Modul Wajib

Salin modul-modul berikut ke /boot/grub/i386-pc/ di USB:

  • boot.mod
  • bufio.mod
  • crypto.mod
  • extcmd.mod
  • gettext.mod
  • normal.mod
  • terminal.mod

Test Config

Buat /boot/grub/grub.cfg di USB:

insmod echo
set timeout=5

menuentry "test" {
    echo "hello world!"
}
  

Kalau semua oke, USB kamu bakal bisa boot dengan Grub2 dan jalanin config itu.

Catatan Akhir

Kalau ketemu error grub_isprint not found, itu tandanya versi modul sama kernel Grub beda. Solusinya: pastikan semua modul & kernel berasal dari source yang sama waktu build.

Label: , , , , , , ,

<< Beranda