Boot Process di Windows 7


Sudah lama tidak menulis di blog sehubungan dengan pekerjaan sehari-hari sebagai programmer.  Sekarang setelah beralih pekerjaan dari programmer menjadi dosen, aku punya banyak waktu untuk menulis dan mengikuti perkembangan IT.  Mulai tanggal 20 September 2010 nanti, aku akan membimbing kelas pemograman Java dan C#.  Soal pemograman Java, tidak ada masalah, karena selama ini aku selalu mengikuti perkembangannya.  Tapi bagaimana dengan C#?  Aku baru saja men-install Visual Studio 2010 dan menemukan .NET Framework sudah memasuki versi 4.  Bahkan sudah ada yang namanya F#!!! Fuih, harus update teknologi lagi…

Aku akan mulai dengan menulis artikel yang ringan terlebih dahulu. Pengalaman yang melelahkan tapi memberikan inspirasi menarik ini aku temui saat men-install lebih dari satu Windows 7 (bajakan versi Mangga Dua) di komputer-ku. Selesai men-install kedua Windows 7, aku menambahkan sebuah partisi Linux UBuntu, dengan harapan boot loader GRUB dapat men-boot Windows 7 yang ada.

Tapi apa yang terjadi?  Windows 7 pertama dapat dijalankan dengan lancar, tetapi Windows 7 kedua hanya bisa terdiam setelah menampilkan logo jendela khas Windows.  Kenapa bisa begitu?  Padahal pada zamannya Windows XP, hal seperti ini tidak pernah terjadi!

Aku mulai dengan mempelajari bagaimana cara kerja boot process di Windows 7.  Memang berbeda dari Windows XP.  MBR Windows 7 akan mencari dan menjalankan Windows Boot Manager (Bootmgr).  Setelah itu, Bootmgr akan membaca isi Boot Configuration Data (BCD).  Oleh sebab itu, aku tidak menemukan lagi boot.ini di Windows 7, melainkan BCD.  Selain itu, aku tidak dapat men-edit BCD ini dengan notepad.  Aku harus menggunakan tools bawaan Windows 7 yang disebut bcdedit.exe.  Aku dapat menjalankannya dengan mengetik “cmd” di search-box, kemudian menekan tombol Ctrl+Shift+Enter untuk menjalankan Command Prompt dalam modus administrator.  Jika BCD harus menjalankan partisi Windows 7, dia akan mulai dengan menjalankan Ntoskrnl.exe dan Hal.dll, me-load drivers, kemudian menjalankan Windows Session Manager (Smss.exe), yang kemudian menjalankan Windows Start-Up Application (Wininit.exe), yang pada akhirnya menjalankan Local Security Authority (Lsass.exe) dan Services (Services.exe).

Tapi bagaimanapun juga, aku hanya perlu mengatur GRUB untuk menjalankan Bootmgr di masing-masing partisi Windows 7 dan selanjutnya tidak ada masalah ‘kan?  Memang seharusnya begitu, tapi ternyata ada satu hal yang belum aku perhitungkan!! Alur eksekusi boot di atas berlaku jika yang aku install adalah Windows 7 asli!!!

Seperti yang diketahui, para pembajak Windows 7 memanfaatkan celah System Locked Preinstallation (SLP). Untuk instalasi OEM dalam skala besar, Windows 7 mendukung aktifasi tanpa harus terhubung ke Internet. Sebagai gantinya, Windows 7 akan memeriksa kode teks yang tersimpan di BIOS .  Jika kode di BIOS ini cocok dengan yang diharapkan Windows 7, maka tidak dibutuhkan aktifasi lagi!  BIOS memang tersimpan dalam ROM yang memiliki resiko besar jika harus di-update. Tapi BIOS akan di-load ke memori RAM, dan saat berada di RAM, programmer (atau hacker) bebas untuk menambahkan kode dalam SLIC  table.

Pada versi bajakan yang kutemui, cracker menambahkan boot loader GRUB4DOS yang sudah disetting untuk men-emulasi tabel SLIC sebelum menjalankan Windows 7.  Btw, GRUB4DOS adalah boot loader yang mirip seperti GRUB di Linux. Kenapa aku tidak tahu kalau ada bootloader ekstra saat menjalankan Windows 7?  Hal ini karena setting timeout-nya yang “0” sehingga tidak ada menu ekstra yang muncul saat menjalankan Windows 7.  Jika ingin masuk ke dalam console GRUB4DOS ini, aku dapat menekan tombol “R” berulang kali pada saat akan menjalankan Windows 7.

Sayangnya, konfigurasi GRUB4DOS di versi bajakan yang aku pakai mengandaikan hanya ada satu partisi Windows 7 dan akan selalu memakai Windows 7 yang di partisi yang pertama kali ditemui.  Untuk mengatasinya, aku perlu mengubah konfigurasi GRUB4DOS.  Di Linux, konfigurasi dapat diubah dengan meng-edit file menu.lst. Demikian juga di GRUB4DOS, aku dapat mengatur agar ia membaca konfigurasi di C:\menu.lst, atau aku dapat hardcode langsung kode konfigurasi di file C:\grldr (ini adalah isi kode GRUB4DOS yang akan dibaca oleh boot-sector).  Sebagai contoh, aku memakai konfigurasi berikut untuk Windows 7 di partisi kedua (hd0,2):

emulateslic
root (hd0,2)
chainloader /bootmgr
boot

Syntax konfigurasinya mirip seperti GRUB2, demikian juga dengan penomoran partisi yang diawali dengan angka 1 (bukan angka 0 lagi seperti di GRUB konvensional). Setelah itu, aku tidak menemukan masalah lagi saat akan menjalankan Windows 7 yang berada di partisi kedua.

Perihal Solid Snake
I'm nothing...

6 Responses to Boot Process di Windows 7

  1. achoun mengatakan:

    Keren pak…:)

  2. Kakang Dadap mengatakan:

    wah…. setelah gugling berhari hari ahirnya menemukan praktisi yg (ternyata telah ) melakukan persis seperti yg sedang ku lakukan.
    hanya saja saya mengalami masalah windowsnya jadi trial kalo mbrnya saya ganti dengan grun dan loading bootmrg lewat chain loader.
    di crack juga nggak ngefek.
    bantuin donk..

  3. solidsnake99 mengatakan:

    Saya juga memakai GRUB2.. Karena GRUB2 di-install di MBR, sementara GRUB4DOS (crack) di-install di boot record setiap partisi, seharusnya tidak ada masalah.
    Hanya saja perlu sedikit diatur di command GRUB2-nya agar memanggil bootrecrod GRUB4DOS, misalnya:

    set root=’hd0,1′
    chainloader +1
    boot

    Perintah “chainloader +1” di atas akan menyebabkan GRUB2 mengerjakan boot record di partisi pertama. Jika partisi pertama sudah di-crack, maka GRUB4DOS akan dikerjakan.

  4. ghielz mengatakan:

    mohon bantuannya nih,..laptop saya jadi gini, gak bisa booting. yang muncul pertama kali saat laptop dinyalakan “chainloader /bootmgr
    error 15: file not found
    press any key to continue…”

    • Solid Snake mengatakan:

      Hal ini mungkin terjadi setelah perubahan/pergeseran partisi, atau file C:\bootmgr dihapus oleh user.
      Bila terjadi perubahan partisi, sesuaikan nilai “root” yang ada. Misalnya, pada konfigurasi saya yang di atas:
      root (hd0,2)
      chainloader /bootmgr
      Nilai root(hd0,2) menunjukkan saya menginstall Windows 7 bajakan di partisi kedua. Jika bukan partisi kedua, melainkan partisi ketiga, ganti menjadi (hd0,3). Dan seterusnya.

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: