Selasa, 16 September 2014

Catatan Santai: Compile Grub4DOS di MinGW

Beberapa waktu lalu chenall sempat commit beberapa patch yang aku kirim, tujuannya biar compile Grub4DOS di MinGW bisa lebih gampang. Nah, biar nggak lupa, aku tulis aja catatan singkat ini buat yang mau coba compile Grub4DOS langsung di Windows. Sebagian step ini juga aku contek dari panduan RMPrepUSB, jadi anggap aja ini versi ringkas plus pengalaman pribadi.

Langkah Awal

  1. Install Git for Windows (msys-git) kalau belum punya.
  2. Download MinGW32 installer (mingw-get-setup.exe) dari situs resminya.
  3. Pasang dengan opsi default (boleh ubah folder tujuan kalau mau).
  4. Di layar pilihan package, centang:
    • mingw-developer-toolkit
    • mingw-base
    • msys-base
  5. Klik menu Installation → Apply Changes, lalu Apply.

Setting PATH untuk Git

Buka file etc\profile di folder C:\MinGW\msys\1.0\. Kalau Git terinstall di C:\Program Files (x86)\Git, ubah bagian PATH jadi:

if [ $MSYSTEM == MINGW32 ]; then
  export PATH=".:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Git/bin:$PATH"
else
  export PATH=".:/usr/local/bin:/bin:/mingw/bin:/c/Program Files (x86)/Git/bin:$PATH"
fi

Tujuannya biar shell kamu bisa manggil git. Kalau pakai klien Git lain, bagian ini bisa dilewati.

Tambahan Tools

  • nasm: download dari situs resmi, ekstrak, lalu copy nasm.exe ke C:\MinGW\msys\1.0\bin.
  • upx: download dari mirror ini, ekstrak, lalu copy upx.exe ke C:\MinGW\msys\1.0\bin.

Persiapan MinGW

  1. Buka msys.bat di folder C:\MinGW\msys\1.0\.
  2. Jalankan:
    /postintall/pi.sh
  3. Terima semua opsi default.
  4. Upgrade/downgrade gcc:
    mingw-get upgrade gcc=4.6.2-1
    mingw-get install mpc=0.8.1-1

    Kenapa harus gcc 4.6.2? Karena versi 4.7 ke atas bikin grldr gagal jalan (freeze di boot).

Clone dan Compile Grub4DOS

  1. Clone source terbaru dari GitHub:
    git clone https://github.com/chenall/grub4dos.git
  2. Pindah ke foldernya:
    cd grub4dos
  3. Generate configure dan Makefile:
    ./autogen.sh
  4. Compile:
    make

Kalau semua lancar, hasilnya ada di stage2 berupa grldr dan grldr.mbr. Itu yang kamu butuhkan.

Catatan Penting: Jangan pernah langsung jalankan ./configure di MinGW, karena pasti gagal. Pastikan pakai ./autogen.sh atau ./bootstrap.sh.

Kompilasi di Linux

Kalau kamu lebih nyaman di Linux, sebenarnya lebih gampang. Contohnya di Debian 7.7.0 x64:

aptitude install gcc glibc-devel.i686 gcc-multilib make autotools autoconf git nasm upx
git clone https://github.com/chenall/grub4dos.git
cd grub4dos
./autogen.sh
make

Biasanya hasil compile di Linux ukurannya lebih kecil dibanding yang di MinGW, tapi fungsinya tetap sama.

Itu aja catatan singkatnya. Semoga membantu kalau kamu pengen coba build Grub4DOS langsung dari source.

Sabtu, 13 September 2014

Visual Studio 2013 Jadi Gratis, Serius!

Beberapa waktu lalu, Microsoft bikin kejutan dengan merilis Visual Studio 2013 Community Edition yang bisa dibilang sekarang sudah jadi gratis. Iya, gratis. Kamu bisa cek langsung di sini: Visual Studio Community.

Sebelum lanjut, coba kita bahas dulu sedikit tentang aturan mainnya. Jadi di bagian lisensi ada beberapa poin penting:

  • Individual license: kalau kamu developer independen, bebas pakai software ini untuk bikin dan ngetes aplikasi kamu, baik untuk dijual atau tujuan lain.
  • Organization license: kalau kamu bagian dari organisasi, ada beberapa ketentuan:
    • Boleh dipakai tanpa batas user untuk proyek open source dengan lisensi OSI-approved.
    • Boleh dipakai untuk kegiatan pendidikan, pelatihan, atau riset akademis.
    • Kalau tidak termasuk kategori di atas, selama organisasinya bukan perusahaan besar (enterprise), maksimal 5 orang bisa pakai secara bersamaan.
    • Kalau sudah level enterprise (lebih dari 250 PC/user atau pendapatan lebih dari 1 juta USD per tahun), hanya boleh untuk open source dan pendidikan.

Artinya apa? Artinya kalau kamu kerja di perusahaan pun, kamu sah-sah aja install dan pakai Visual Studio Community Edition untuk proyek open source. Bahkan kalau ada IT department yang melarang kamu install Visual Studio buat kontribusi ke open source, sebenarnya mereka melanggar hukum. Jadi hak itu memang ada di tangan kamu.

Satu-satunya situasi di mana kamu nggak bisa pakai adalah kalau lagi bikin aplikasi closed source untuk perusahaan. Tapi ya jujur aja, siapa sih yang masih tertarik bikin yang begitu? Hehe.

Makin Mudah Buat Kontribusi ke Open Source

Dengan adanya ini, kamu nggak perlu ribet lagi kalau mau recompile, debug, atau kontribusi ke proyek open source kayak rufus, libusb, atau libwdi/Zadig. Tinggal install Visual Studio 2013 Community Edition, dan langsung tancap gas.

Offline Installer

Buat kamu yang pengen simpan instalernya supaya bisa dipakai offline, ada caranya juga. Jalankan installer dengan perintah:

vs_community.exe /layout

Cuma ya, siap-siap aja karena download dan ruang yang dipakai bakal sekitar 8 GB. Lumayan gede sih, tapi worth it kalau kamu sering reinstall atau kerja di tempat dengan internet terbatas.

Jadi intinya, Visual Studio 2013 Community Edition ini benar-benar bikin hidup developer lebih gampang. Tinggal manfaatin aja sebaik mungkin, terutama buat yang mau belajar, eksperimen, atau kontribusi ke dunia open source.

Label: , ,

Sabtu, 31 Mei 2014

Balikin EFI NVRAM Boot Entries dengan rEFInd & Rufus

Jadi gini, kadang setelah reinstall Windows, entri boot EFI yang udah kita susun rapi-rapi buat multiboot Linux, Windows, atau EFI shell tiba-tiba ilang entah kemana. Ribet banget kan kalau harus bikin ulang manual. Untungnya ada cara gampang buat balikin semuanya pakai rEFInd + Rufus.

Step 1: Bikin USB rEFInd

  • Download dulu ISO rEFInd terbaru (pakai versi CD-R image).
  • Extract ISO-nya, lalu bikin USB bootable pakai Rufus.
  • Di Rufus pilih "GPT partition scheme for UEFI computer" biar cocok sama sistem UEFI.

Step 2: Boot ke EFI Shell

  • Boot komputer dalam mode UEFI, masuk BIOS, lalu pilih USB rEFInd tadi.
  • Begitu muncul menu rEFInd, pilih opsi "Start EFI shell".

Step 3: Cek Entri Boot

Di dalam shell, ketik:

bcfg boot dump

Kalau entri lama kamu hilang, ya itu normal gara-gara Windows ngehapusnya. Sekarang waktunya kita balikin.

Step 4: Cari Partisi EFI

Cari disk yang ada partisi EFI kamu dengan perintah:

dir fs0:\efi

Kalau nggak ketemu di fs0:, coba cek fs1:, fs2:, dll. Bisa juga pakai map buat lihat semua disk/partisi yang terdeteksi.

Step 5: Tambahin Lagi Entri Boot

Misalnya partisi EFI ada di fs0: dan file rEFInd kamu ada di \EFI\refind\refind_x64.efi, jalankan:

bcfg boot add 0 fs0:\EFI\refind\refind_x64.efi rEFInd

Itu bakal bikin entri boot baru di urutan pertama dengan label rEFInd.

Step 6: Konfirmasi

Ketik lagi:

bcfg boot dump

Pastikan entri barunya udah ada. Kalau ada entri aneh/duplikat, bisa hapus pakai:

bcfg boot rm #

Step 7: Reboot & Beres

Cabut USB, restart, dan kalau semua bener, sistem kamu udah bisa boot normal lewat rEFInd lagi.

Catatan

Pastikan kamu pakai versi rEFInd terbaru, soalnya nggak semua EFI shell punya perintah bcfg. Kalau shell-nya jadul, bisa jadi perintah itu nggak ada.

Label: , , , , , ,

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: , , , , , , ,