Saya menghabiskan semua kemarin dengan penelitian, dan akhirnya bisa membuat boot Windows XP. Seharusnya agak mirip untuk OS lain juga. Tapi operasinya adalah segalanya tetapi tidak sepele.
Karena ini operasi yang berbahaya, saya sarankan mencadangkan data berharga Anda.
Inilah langkah-langkahnya:
Persiapan
Dalam hal Windows XP Anda harus membuatnya melupakan pengaturan disk dan partisi disk saat ini, jadi Anda harus menghapus semua nilai dari kunci HKEY_LOCAL_MACHINE / MountedDevices pada mesin virtual sebelum migrasi. Kernel akan membangunnya kembali pada reboot berikutnya. Pada mesin virtual Linux, ini berarti memperbaiki fstab setelah migrasi.
Memasang gambar VDI
Anda tidak bisa hanya menyalin seluruh VDI ke partisi, karena mengandung MBR juga. Anda hanya perlu menyalin partisi virtual, jadi pertama-tama Anda harus menemukan cara untuk memasang VDI.
Anda membutuhkan nbd
driver dan qemu-nbd
perintah. Di Ubuntu ada dalam qemu-kvm
paket.
Pertama memuat driver nbd:
# modprobe nbd
Ini seharusnya membuat beberapa nbd
perangkat masuk /dev
.
Kemudian pasang VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Ini harus membuat /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
dll untuk semua partisi virtual. Ini dapat dipasang seperti perangkat biasa.
Memigrasi partisi
Gunakan dd
untuk itu, unmount kedua partisi sebelum operasi:
# dd -if=<nbd_device> -of=<real_partition>
misalnya.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Operasi dd
diam, ini mungkin memakan waktu beberapa menit, bahkan setengah jam. Selama operasi Anda dapat membuka terminal dan gunakan fdisk -l
untuk melihat semua berjalan dengan baik.
MEMPERBARUI:
Rupanya nbd bukanlah solusi yang sangat mudah. Ini dapat menyebabkan I / O error dan membuat dd gagal. Apalagi usaha selanjutnya gagal dengan segera. Anda juga dapat mencoba membuat VMDK disk mentah dengan perintah ini (di bawah linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Anda harus berada dalam disk
grup untuk membuatnya berfungsi. Kemudian tambahkan vmdk ini ke mesin virtual sebagai hard drive sekunder, kemudian gunakan Live Linux ISO ke dd
partisi.
Memperbaiki sektor boot partisi NTFS
Ini adalah bagian peretasan.
Kami hampir siap, tetapi Windows XP tidak bisa boot, karena kami perlu mengatur jumlah sektor tersembunyi dari sistem file pada offset 0x1C
. Ini pada dasarnya sejumlah sektor sebelum partisi NTFS. Kita bisa mendapatkan nomor ini dari fdisk -ul
perintah. The start
bidang negara keluaran yang sektor partisi diberikan dimulai pada, yang pada dasarnya adalah jumlah sektor sebelum partisi. Jadi dapatkan nomor dari sana, konversikan ke heksadesimal menggunakan gcalctool misalnya.
Buka partisi dengan hexedit
, seperti ini:
# hexedit /dev/sda4
Kemudian tulis jumlah sektor tersembunyi dalam urutan endian kecil di 1C
offset. Endiean kecil berarti: 0xABCDEFGH
akan GH EF CD AB
. Jika nomor hexa lebih pendek dari 8 digit, awali dengan nol.
Setelah selesai, simpan dan keluar (Ctrl + X).
Menyiapkan GRUB
Anda harus memberi tahu GRUB untuk mem-boot langsung partisi itu, untuk GRUB tambahkan entri menu berikut:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Di mana (hdX, Y)
mengidentifikasi partisi. X adalah 0 untuk harddisk default, 1 untuk /dev/sda
, 2 untuk /dev/sdb
dll. Y adalah nomor partisi. 0 untuk /dev/sda1
, 1 untuk /dev/sda2
, dll.
Ini juga harus mirip untuk GRUB2, tetapi menggunakan sintaks yang sedikit berbeda untuk entri menu.
Sentuhan terakhir
Partisi NTFS baru siap untuk boot. Tetapi Anda masih membutuhkan beberapa peretasan untuk mencapai desktop Windows XP. Sistem lain mungkin memerlukan peretasan yang berbeda. Pertama, boot.ini perlu diperbaiki.
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
Setel nomor parisi yang sesuai. Saya menginstalnya di / dev / sda4. Jadi nomor partisi harus 3.
Anda mungkin perlu memperbaiki entri MountedDevices di registri jika Windows macet tepat sebelum layar masuk.
Registri <path to windows>/system32/config/system
dapat Anda lihat dengan chntpw
. Ini bisa menjadi masalah jika huruf drive sistem Anda tidak C. Karena chntpw
kemampuan menulis registri sangat terbatas, Anda harus mundur dan menggunakan hexeditor, seperti ghex2 untuk memperbaikinya. Anda perlu menemukan \DosDevices\C:
dan mengganti C dengan huruf drive yang berbeda, F
dalam kasus saya.
Setelah ini, Anda harus dapat mencapai desktop, sekarang Anda perlu mencari semua driver, tetapi ini di luar cakupan tutorial ini.
Sumber
Memindahkan Windows XP ke partisi yang berbeda
Pasang VDI di linux