Bagaimana cara membuat disk virtual dengan sistem file case-sensitive pada Windows 7?

6

Saya tidak peduli sistem file mana tepatnya, saya hanya perlu path file untuk bekerja dengan cara case-sensitive.

Mungkin perilaku yang mirip dengan berbagi samba di kotak Linux yang memiliki sensitivitas huruf dihidupkan. Itu akan sempurna, kecuali bahwa saya perlu disk untuk disimpan secara lokal.

Apakah ada driver / alat untuk itu?

Saya sudah mencoba beberapa driver ext2 untuk Windows yang tidak berfungsi untuk tujuan ini :( ( http://www.fs-driver.org/ dan http://www.fs-driver.org/ )

Ivarpoiss
sumber
Ini adalah mundur dari DOS di mana nama file tidak peka huruf besar-kecil, dan MS-Windows dibuat agar kompatibel dengan fitur yang mudah digunakan ini. Sayangnya, jika NTFS tiba-tiba beralih menjadi case-sensitive, maka banyak hal akan gagal (dan OS mungkin tidak bisa boot sama sekali) karena Anda akan dapat menemukan variasi case-sensitive di seluruh Windows Registry (mis. , C: / WINDOWS /, C: / Windows, C: / windows, dll.) Dan dalam berbagai file konfigurasi (dan mungkin beberapa hal yang sulit dikodekan juga). Windows dan banyak aplikasi akan memerlukan beberapa pekerjaan besar untuk mendukung ini untuk drive C: setidaknya.
Randolf Richardson
Lihat posting ini saya pikir ini mungkin bisa membantu Anda. superuser.com/questions/266110/…
samack
Itulah yang sebenarnya saya tanyakan: Bagaimana cara menghindari penanganan file NTFS yang peka terhadap kasus global pada Windows :) Jadi saya akan memerlukan beberapa alat sandboxy, sistem file yang dapat diinstal atau sesuatu seperti itu. Seperti driver ext2 di atas sana. Satu-satunya persyaratan adalah mereka harus menghormati huruf ketika mengidentifikasi file.
Ivarpoiss

Jawaban:

4

Jawaban sederhananya adalah tidak. Jawaban panjangnya adalah ...

NTFS memang menyimpan nama file dengan cara case-sensitive (NTFS dapat memiliki README.txt dan readme.txt dalam direktori yang sama), dan bahkan Windows filemanager dapat secara internal mengelola permintaan case-sensitif untuk nama file melalui syscalls NtOpenFile / NtCreateFile.

Sayangnya untuk Anda, fungsi Win32 CreateFile (digunakan di mana-mana termasuk oleh fopen) akan memanggil NtCreateFile secara internal menggunakan flag OBJ_CASE_INSENSITIVE yang akan berarti bahwa semua aplikasi yang menggunakan CreateFile akan melihat sistem file case-case Anda dengan case-insensitive. Dalam praktiknya ini berarti bahwa semua aplikasi akan melihat sistem file Anda dengan cara case-insensitive terlepas dari apakah sistem file Anda sebenarnya case-sensitive di bawah tenda.

Satu-satunya cara yang dapat saya pikirkan bagi Anda untuk secara praktis memaksakan sensitivitas huruf adalah dengan menulis driver-filter yang akan menghapus flag OBJ_CASE_INSENSITIVE dari permintaan syscall yang masuk yang kemudian akan memungkinkan NTFS, EXT2 atau sistem file internal apa pun yang Anda harus berperilaku secara default , peka huruf besar-kecil.

SecurityMatt
sumber
1

Dari dalam Windows, ini mungkin, tetapi Anda harus dapat menulis C.

NTFS sebenarnya menyimpan nama sebagai case sensitif (untuk mendukung subsistem POSIX). Namun, NTFS sebenarnya tidak mendukung fungsi case sensitif itu sendiri. Mengingat NT pada awalnya ditulis sebagai pesaing langsung untuk UNIX, ini tidak mengejutkan.

http://support.microsoft.com/kb/100108

http://blogs.msdn.com/b/sfu/

http://www.netbsd.org/docs/pkgsrc/platforms.html#interix

surfasb
sumber
0

Sepertinya satu-satunya cara adalah menginstal Linux tervirtualisasi dan membagikan drive VM ke Windows.

Saya sudah mencari di Internet untuk solusi yang sama, terutama untuk checkout repositori GIT dari sistem Linux yang memiliki file hanya berbeda dalam kasus (jangan berkhotbah mengapa mereka ada di sana - itu di luar kendali saya). Tetapi sepertinya tidak ada cara yang relatif mudah untuk melakukan ini singkat dari menulis subsistem Anda sendiri atau sangat mengintegrasikan ke subsistem Interix (sekarang layanan Unix).

adib
sumber