Apakah ada cara bersih untuk mendapatkan akses eksklusif ke partisi fisik di bawah Windows?

11

Saya mencoba, di bawah Windows 7, untuk menjalankan mesin virtual dengan VMWare Player dari OS yang diinstal pada partisi fisik. Namun, ketika saya mem-boot mesin virtual, VMWare Player mengatakan bahwa ia tidak dapat mengakses drive fisik untuk menulis.

Ini tampaknya menjadi masalah yang diakui secara umum di komunitas VMWare, karena Windows Vista memperkenalkan fitur keamanan baru yang meyakinkan yang membuatnya tidak mungkin untuk menulis ke drive mentah tanpa mendapatkan akses eksklusif terlebih dahulu.

Saya telah menelusuri masalah ini dan menemukan beberapa solusi. Namun, bersih yang tampaknya hanya bekerja pada disk fisik secara keseluruhan, dan bukan pada partisi.

Jadi saya akan dibiarkan dengan solusi kotor . Singkatnya, itu campur tangan dengan MBR untuk menghapus jejak partisi yang akan digunakan, membuat Windows melupakannya, kemudian mengembalikan MBR sehingga kita dapat meluncurkan VM.

Saya tidak yakin ingin melakukan itu. Apakah ada cara untuk membiarkan VMWare mendapatkan akses eksklusif ke partisi tanpa mengharuskan saya untuk membatalkannya? Apa yang saya cari, saya kira, adalah cara untuk menempatkan hanya partisi offline daripada seluruh drive fisik.


Lebih banyak info terkait dengan hadiah.

Saya memiliki pengaturan dual-boot: Mac OS adalah sistem operasi utama saya, dan saya telah menginstal Windows juga. Sebanyak yang saya bisa menjalankan Windows di mesin virtual jika saya tidak ingin reboot, saya ingin dapat menjalankan Mac OS di mesin virtual ketika saya di bawah Windows.

Tujuan saya adalah menjalankan partisi Mac OS utama saya dari VMWare di Windows, sama seperti saya menjalankan Windows dari VMWare Fusion. (Karena ini adalah OS utama saya, saya tidak berencana untuk menambal kernel atau apa pun untuk membuatnya bekerja di mesin virtual.) Saya membuat mesin virtual dari VMWare Fusion (karena memiliki jenis VM "Mac OS X Server" VM ) kemudian memindahkannya ke Windows dan memodifikasinya dari VMWare Player. Tampaknya hampir berfungsi, karena OS sampai ke layar memuat dan kemudian VM mati karena tidak dapat mengakses \\.\PhysicalDrive0.

Virtual Box gagal lebih keras, karena ia memulai Mac OS dalam mode verbose dan crash sangat cepat (tetapi tampaknya dapat mengakses partisi), jadi saya pikir akan lebih mudah untuk mendapatkan VMware mengakses partisi saya daripada membuat Virtual Box dijalankan Itu.

Di sisi hukum, saya akan menjalankan satu salinan Mac OS X pada satu mesin berlabel Apple, jadi saya baik-baik saja.

zneak
sumber
Masalah menarik. Apakah itu berfungsi jika Anda membuat partisi kosong dan tidak diformat?
nhinkle
@nhinkle Saya tidak punya ruang partisi cadangan yang bisa saya uji dengan di drive internal saya. Namun, dari apa yang saya baca, tampaknya Windows akan mengunci setiap partisi yang dapat dikenali; dan saya dapat mengonfirmasi bahwa itu masih akan mengunci mereka yang tidak memiliki titik mount juga.
zneak
@ zneak: Saya telah menggunakan TrueCrypt di masa lalu untuk mengatasi pembatasan Windows. Karena memiliki driver disk sendiri, mungkin dapat menulis ke disk. Mengapa Anda tidak mencoba membuat partisi menjadi disk virtual TrueCrypt?
harrymc
@harrymc saya belum mencoba. Apakah saya perlu mengenkripsi partisi Mac OS saya?
zneak
Anda harus membuat volume TrueCrypt pada partisi (kehilangan semua konten). Ini mungkin membantu untuk menunjukkan caranya, tetapi lihat juga bantuan TrueCrypt.
harrymc

Jawaban:

5

Saya telah menemukan hanya satu solusi yang mungkin, menggunakan im disk driver virtual gratis bersama dengan devio (akses dan akuisisi remote drive). Karena imdisk adalah driver kernel, ia mungkin dapat menulis ke partisi. Sayangnya, karena devio berfungsi dalam mode pengguna, saya tidak terlalu yakin apakah pendekatan ini akan berhasil untuk Anda.

devio dapat memperoleh partisi fisik dan menerbitkannya di jaringan. Sebagai contoh:

devio -r 9000 \\.\PhysicalDrive0 2

tidak mempublikasikan dari disk pertama partisi kedua pada port TCP 9000, dan akan menunggu koneksi pada port ini. Nonaktifkan firewall lebih baik saat menguji ini, dan jalankan devio sebagai administrator.

Untuk mendefinisikan partisi yang diterbitkan ini sebagai hard disk baru dan berdiri sendiri, gunakan:

imdisk -a -t proxy -o ip -f 127.0.0.1 -m R:

yang menggunakan localhost akan membuat hard disk baru bernama R yang bukan partisi apa pun. Anda sekarang dapat mencoba apakah Anda dapat menggunakan hard disk R nyata dalam mesin virtual VMware.

Pendekatan ini dijelaskan secara rinci dalam Devio: Akses dan akuisisi drive jarak jauh .

Jika ini tidak berhasil, Anda harus:

  1. Terima solusi berbahaya yang mengubah MBR.
  2. Tinggalkan menggunakan MacOS dalam Win7 sebagai VM, menggunakan file di partisi Mac melalui aplikasi Windows (dengan masalah karakter end-of-line).
  3. Gunakan produk Sistem File Virtual, seperti ELDOS Callback File System , meskipun saya ragu bahwa masalah ini bernilai bagi Anda beberapa ribu dolar.
  4. Tinggalkan Windows 7 dan turunkan ke XP.
  5. Ubah sumber imdisk sehingga sebagai driver kernel akan membuat disk pura-pura langsung pada partisi fisik, tanpa perlu devio.
harrymc
sumber
Jika dilakukan dengan benar, mengedit MBR seharusnya tidak menimbulkan ancaman terlalu besar. Bahkan jika itu menjadi rusak, itu bukan partisi OS utama, jadi siapa yang peduli? Anda dapat dengan mudah memperbaikinya!
Terobosan
@Breakthrough Saya pikir Anda melewatkan fakta bahwa kedua OS berada pada disk yang sama.
zneak
@zneak: Saya pikir @Breakthrough benar - ada beberapa program yang dapat menyimpan dan mengembalikan MBR dalam keadaan darurat.
harrymc
Juga, hanya sebagai catatan, VMWare sayangnya tidak dapat menggunakan drive virtual dari imdisk.
zneak
Itu benar, karena ImDisk tidak mendaftar dengan benar dengan NT Mount Manager menggunakan IOCTL_MOUNTMGR_CREATE_POINT kode kontrol; melainkan secara langsung membuat tautan simbolik untuk huruf drive, dan tentu saja kernel tidak menganggap itu sebagai volume yang sah. Saya sudah mencoba membuatnya bekerja sebelumnya, tetapi saya belum banyak berhasil. (Itu alasan yang sama mengapa Anda tidak dapat menggunakan volume ImDisk untuk, katakanlah, memasang VHD.)
user541686
2

Itu tergantung pada seberapa putus asa Anda membuat ini bekerja, tetapi saya akan mengatakan bahwa itu mungkin, dengan "hanya" dua "mudah" (baca: brutal) langkah-langkah:

  1. Tulis driver untuk memintas batasan yang ditetapkan oleh Windows, menggunakan bendera (semi -?) Yang didokumentasikan SL_FORCE_DIRECT_WRITE.

  2. Kaitkan CreateFiledan / atau WriteFilepanggil dari VMWare menggunakan pustaka seperti EasyHook (saya bilang itu mudah!) Untuk berkomunikasi dengan file secara manual dengan driver Anda, mungkin berkomunikasi dengan driver menggunakan DeviceIoControl.

Sebenarnya tidak terdengar seburuk itu, jika Anda tahu di mana mencari informasi untuk melewati batasan ... Saya sendiri sudah mengaitkan aplikasi seperti Nero untuk memeriksa IOCTL_SCSI_PASS_THROUGHpanggilan sehingga saya bisa membuat perpustakaan CD burner saya sendiri, dan ini tidak akan terlalu sulit; menulis driver akan menjadi bagian yang lebih sulit, tetapi dapat dikelola.


Edit:

Saya kira Anda sudah menemukan ini, tetapi struktur yang perlu Anda modifikasi disebut FLT_IO_PARAMETER_BLOCK untuk IRP_MJ_READ. Tidak yakin seberapa mudahnya, tetapi seharusnya tidak terlalu sulit.

pengguna541686
sumber
Terdengar menyenangkan. Saya akan memeriksa besok.
zneak
@ zneak: Jika Anda melihat jawaban saya, imdisk adalah driver disk virtual open-source yang tersedia, yang hampir sesuai dengan yang Anda inginkan.
harrymc
@Mehrdad Saya memiliki masalah yang sangat mirip, dapatkah Anda membantu saya? CreateFile: "Akses ditolak" bahkan dengan hak istimewa Administrator - Win7
Ali