WinBTRFS adalah driver Windows untuk sistem file linux generasi berikutnya. Implementasi dari awal, tidak ada kode dari kernel Linux, dan harus mengerjakan versi apa pun dari Windows XP dan seterusnya. Ini juga dimasukkan sebagai bagian dari reactos sistem operasi gratis.
Jika sistem file BTRFS Anda ada di perangkat RAID perangkat lunak MD yang dibuat oleh Linux, Anda juga akan memerlukan WinMD agar ini muncul di bawah Windows.
Lihat juga Quibble, bootloader eksperimental yang memungkinkan Windows untuk boot dari BTRFS, dan NTFS2BTRFS, alat yang memungkinkan konversi sistem file NTFS di tempat.
Pertama, penafian:
Anda menggunakan perangkat lunak ini dengan risiko Anda sendiri. Saya tidak bertanggung jawab atas kerusakan apa pun yang mungkin terjadi pada sistem file Anda. Seharusnya cocok untuk penggunaan sehari-hari, tetapi pastikan Anda mengambil cadangan.
Segala sesuatu di sini dirilis di bawah GNU Lesser General Public License (LGPL); Lihat lisensi file untuk info lebih lanjut. Anda didorong untuk bermain dengan kode sumber seperti yang Anda inginkan, dan saya akan menghargai catatan ([email protected]) jika Anda menemukan sesuatu yang bagus.
Lihat di akhir dokumen ini untuk detail hak cipta kode pihak ketiga yang termasuk di sini.
mkbtrfs.exe dan ubtrfs.dllfree_space_cache )Untuk menginstal driver, unduh dan ekstrak rilis terbaru, klik kanan btrfs.inf, dan pilih Install. Pengemudi ditandatangani, jadi harus bekerja di luar kotak pada versi modern Windows.
Jika Anda menggunakan Windows 10 atau 11 dan memiliki boot aman diaktifkan, Anda mungkin harus membuat perubahan registri agar driver dimuat - lihat di bawah. Lebih mudah meskipun hanya mematikan boot aman di BIOS Anda, kecuali jika Anda memiliki kebutuhan khusus untuk itu. Ingatlah bahwa Windows 11 Soft-membutuhkan boot aman untuk diinstal, tetapi akan bekerja dengan baik dengan kata penutupnya.
WinBTRFS juga tersedia pada manajer paket berikut:
choco install winbtrfs
scoop bucket add nonportable
scoop install winbtrfs-np -g
Jika Anda ingin menghapus instalasi, dari Command Prompt Run:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf
Anda mungkin perlu memberikan jalur lengkap ke btrfs.inf.
Anda juga dapat pergi ke Device Manager, menemukan "BTRFS Controller" di bawah "Volume Penyimpanan", klik kanan dan pilih "Uninstall". Centang kotak centang untuk menghapus pemasangan driver juga, dan biarkan Windows reboot sendiri.
Jika Anda perlu menghapus instalan melalui registri, buka regedit dan tetapkan nilai hklm system currentControlset services btrfs mulai ke 4, untuk menonaktifkan layanan. Setelah reboot, Anda kemudian dapat menghapus tombol BTRFS dan menghapus C: Windows System32 Drivers btrfs.sys.
Untuk dikompilasi dengan Visual C ++ 2019, buka direktori dan biarkan CMake melakukan hal itu. Jika Anda menginstal Windows DDK dengan benar, itu seharusnya berfungsi.
Untuk dikompilasi dengan GCC di Linux, Anda akan memerlukan pengaturan kompiler silang, untuk i686-w64-mingw32 atau x86_64-w64-mingw32 . Buat direktori build, lalu gunakan mingw-x86.cmake atau mingw-amd64.cmake sebagai file cmake toolchain untuk menghasilkan makefile Anda.
Pemetaan pengguna disimpan dalam kunci registri HKLM System CurrentControlset Services BTRFS Mappings. Buat DWORD dengan nama Windows Sid Anda (misalnya S-1-5-21-1379886684-2432464051-424789967-1001), dan nilai Linux UID Anda (mis. Ini akan mulai berlaku saat pengemudi dimuat.
Anda dapat menemukan SID Anda saat ini dengan menjalankan wmic useraccount get name,sid .
Demikian pula, pemetaan grup disimpan di bawah grupmappings. Entri default memetakan grup pengguna Windows ke GID 100, yang biasanya "pengguna" di Linux. Anda juga dapat menentukan SIDS pengguna di sini untuk memaksa file yang dibuat oleh pengguna untuk menjadi bagian dari grup tertentu. Bendera Setgid juga berfungsi seperti di Linux.
Perhatikan bahwa proses yang berjalan di bawah token kontrol akses pengguna membuat file sebagai builtin administrators SID (S-1-5-32-544), melainkan sebagai akun pengguna.
Pengemudi akan melewati metadata Linux ke versi LXSS terbaru, tetapi Anda harus memberi tahu Windows bahwa Anda ingin melakukan ini. Dari prompt bash di windows, edit /etc/wsl.conf agar terlihat seperti berikut:
[automount]
enabled = true
options = "metadata"
mountFsTab = false
Ini kemudian akan mulai berlaku saat Anda reboot. Ya, Anda harus dapat chroot ke instalasi Linux yang sebenarnya, jika Anda mau.
File DLL shellbtrfs.dll menyediakan antarmuka GUI, tetapi juga dapat digunakan dengan rundll32.exe untuk melakukan beberapa tugas dari baris perintah, yang mungkin berguna jika Anda ingin menjadwalkan sesuatu untuk dijalankan secara berkala.
Ingatlah bahwa Rundll32 tidak memberikan mekanisme untuk mengembalikan kode kesalahan apa pun, sehingga salah satu dari perintah ini dapat gagal secara diam -diam.
rundll32.exe shellbtrfs.dll,CreateSubvol <path>
rundll32.exe shellbtrfs.dll,CreateSnapshot <source> <destination>
rundll32.exe shellbtrfs.dll,ReflinkCopy <source> <destination> Ini juga menerima wildcard, dan sejumlah file sumber.
Perintah berikut membutuhkan berbagai hak istimewa, dan karenanya harus dijalankan sebagai administrator untuk bekerja:
rundll32.exe shellbtrfs.dll,SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file> -p dan -c flags adalah btrfs send di linux. Anda dapat menentukan sejumlah subvolume klon.
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
Di halaman rilis, ada file zip untuk diunduh yang berisi PDB. Atau Anda dapat mencoba server simbol http://symbols.burntcomma.com/ - di windbg, atur jalur simbol Anda ke sesuatu seperti ini:
symsrv*symsrv.dll*C:symbols*http://msdl.microsoft.com/download/symbols;symsrv*symsrv.dll*C:symbols*http://symbols.burntcomma.com
Pengemudi mengasumsikan bahwa semua nama file dikodekan dalam UTF-8. Ini harus menjadi default pada sebagian besar pengaturan saat ini - jika Anda tidak menggunakan UTF -8, mungkin ada baiknya melihat untuk mengonversi file Anda.
Untuk versi Windows 10 yang lebih baru, Microsoft memperkenalkan persyaratan yang lebih berat untuk penandatanganan, yang tampaknya tidak tersedia untuk pengemudi sumber terbuka.
Untuk mengatasi hal ini, buka HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy di Regedit, buat nilai DWORD baru yang disebut UpgradedSystem dan diatur ke 1, dan reboot.
Atau Anda selalu bisa mematikan boot aman di pengaturan BIOS Anda.
Ini adalah sesuatu yang hardcoded Microsoft ke LXSS, mungkin untuk menghentikan orang menyentuh sistem mereka dengan menjalankan mkdir /mnt/c/WiNdOwS .
Dengan ekstensi shell diinstal, klik kanan drive di Explorer, klik Properties, dan buka tab BTRFS. Harus ada tombol yang memungkinkan Anda mengubah huruf drive.
Di Regedit, cobalah menghapus entri yang relevan di HKEY_LOCAL_MACHINESYSTEMMountedDevices , kemudian reboot.
Gunakan program baris perintah yang disertakan mkbtrfs.exe. Kami tidak dapat menambahkan BTRFS ke kotak dialog Windows sendiri, sayangnya, karena daftar sistem file telah hardcoded. Anda juga dapat menjalankan format /fs:btrfs , jika Anda tidak perlu mengatur opsi khusus BTRFS.
Jika kotak dialog format Windows menolak untuk muncul, coba jalankan format.com dengan bendera /fs, misalnya format /fs:ntfs D: .
Synology tampaknya menggunakan LVM untuk perangkat bloknya. Sampai seseorang menulis driver LVM untuk Windows, Anda kurang beruntung.
Thecus menggunakan serangan MD Linux untuk perangkat bloknya. Anda perlu menginstal WinMD juga.
Pastikan Anda memasang KB3033929. Atau pertimbangkan untuk menginstal dari ISO "escrow" yang mencakup semua pembaruan.
Perangkat lunak membaca sistem file Paragon dikenal untuk menonaktifkan Automount. Nonaktifkan atau uninstall Paragon, kemudian mengaktifkan kembali Automount dengan menjalankan diskpart dan mengetik automount enable .
Pada versi yang sangat lama dari Windows (XP, Server 2003?), Windows mengabaikan partisi Linux sepenuhnya. Jika ini masalahnya untuk Anda, cobalah menjalankan fdisk di Linux dan ubah jenis partisi Anda dari 83 ke 7.
Tidak ada pemetaan antara model izin Windows dan POSIX, mereka terlalu berbeda untuk ini praktis. Jika ini mengganggu Anda, Anda dapat membuat Windows ACL pada file yang tidak ingin Anda edit.
v1.9 (2024-03-15):
v1.8.2 (2023-01-10):
v1.8.1 (2022-08-23):
v1.8 (2022-03-12):
v1.7.9 (2021-10-02):
v1.7.8.1 (2021-06-13):
v1.7.8 (2021-06-09):
inode_cache telah digunakanv1.7.7 (2021-04-12):
v1.7.6 (2021-01-14):
v1.7.5 (2020-10-31):
v1.7.4 (2020-08-23):
v1.7.3 (2020-05-24):
v1.7.2 (2020-04-10):
v1.7.1 (2020-03-02):
v1.7 (2020-02-26):
case=dirv1.6 (2020-02-04):
v1.5 (2019-11-10):
v1.4 (2019-08-31):
v1.3 (2019-06-10):
v1.2.1 (2019-05-06):
v1.2 (2019-05-05):
v1.1 (2018-12-15):
v1.0.2 (2018-05-19):
v1.0.1 (2017-10-15):
V1.0 (2017-09-04):
free_space_cache )V0.10 (2017-05-02):
btrfs checkV0.9 (2017-03-05):
V0.8 (2016-12-30):
btrfs fi usageV0.7 (2016-10-24):
raid56 )V0.6 (2016-08-21):
V0.5 (2016-07-24):
V0.4 (2016-05-02):
V0.3 (2016-03-25):
btrfs checkV0.2 (2016-03-13):
CcCopyReadV0.1 (2016-02-21):
WinBTRFS memiliki tiga tingkat pesan debug: kesalahan dan fixmes, peringatan, dan jejak. Versi rilis driver hanya menampilkan kesalahan dan fixmes, yang login melalui DbgPrint . Anda dapat melihat pesan-pesan ini melalui Microsoft Program DebugView, tersedia di https://technet.microsoft.com/en-gb/sysinternals/debugview.
Jika Anda ingin melaporkan masalah, itu akan sangat membantu jika Anda juga dapat melampirkan log debug penuh. Untuk melakukan ini, Anda perlu menggunakan versi debug dari pengemudi; Salin file di debug x64 atau debug x86 ke x64 atau x86. Anda juga perlu mengatur entri registri di HKLM System CurrentControlset Services btrfs:
DebugLogLevel (DWORD): 0 untuk tidak ada pesan, 1 untuk kesalahan dan fixmes, 2 untuk peringatan juga, dan 3 untuk semuanya benar -benar, termasuk jejak.LogDevice (String, Opsional): Perangkat serial yang ingin Anda output, seperti DeviceSerial0 . Ini mungkin hanya berguna pada mesin virtual.LogFile (String, Opsional): File yang ingin Anda output, jika LogDevice tidak diatur. Ingatlah ini adalah nama file kernel, jadi Anda harus mengawali dengan " ?? " (mis., " ?? C: btrfs.log"). Mungkin tidak perlu dikatakan, tetapi jangan menyimpan ini pada volume yang digunakan pengemudi itu sendiri, atau Anda akan menyebabkan loop yang tak terbatas. Driver akan membuat subkey di registri di bawah HKLM System CurrentControlset Services BTRFS untuk setiap sistem file yang dipasang, dinamai berdasarkan UUID -nya. Jika Anda tidak yakin UUID mana yang merujuk pada volume mana, Anda dapat memeriksa menggunakan btrfs fi show di Linux. Anda dapat menambahkan opsi pemasangan per-volume ke subkey ini, yang akan berlaku saat reboot. Jika nilai diatur dalam tombol di atas ini, itu akan menggunakan ini secara default.
Ignore (DWORD): Atur ini ke 1 untuk memberi tahu driver agar tidak mencoba memuat sistem file ini. Dengan bendera Readonly , ini mungkin berlebihan.
Readonly (DWORD): Atur ini ke 1 untuk memberi tahu driver untuk tidak mengizinkan penulisan ke volume ini. Ini setara dengan bendera ro di Linux.
Compress (DWORD): Setel ini ke 1 untuk memberi tahu driver untuk menulis file sebagai dikompres secara default. Ini setara dengan bendera compress di Linux.
CompressForce (DWORD): Atur ini ke 1 untuk memaksa kompresi, yaitu mengabaikan nocompress inode flag dan bahkan mencoba kompresi file yang tidak dapat dimampatkan. Ini bukan ide yang bagus, tetapi setara dengan bendera compress-force di Linux.
CompressType (DWORD): Atur ini ke 1 untuk lebih memilih kompresi Zlib, 2 untuk lebih memilih kompresi LZO, atau 3 untuk lebih memilih kompresi ZSTD. Standarnya adalah 0, yang menggunakan kompresi ZSTD atau LZO jika bendera Incompat diatur, dan Zlib sebaliknya.
FlushInterval (DWORD): Interval dalam detik antara flush metadata. Standarnya adalah 30, seperti di Linux - parameter disebut commit di sana.
ZlibLevel (DWORD): Angka antara -1 dan 9, yang menentukan berapa banyak waktu CPU yang dihabiskan untuk mencoba mengompres file. Anda mungkin ingin mengutak -atik ini jika Anda memiliki CPU cepat tetapi disk lambat, atau sebaliknya. Standarnya adalah 3, yang merupakan nilai hard-coded di Linux.
MaxInline (DWORD): Ukuran maksimum yang akan diizinkan untuk file "inline", yaitu yang disimpan dalam metadata. Standarnya adalah 2048, yang juga merupakan default pada versi modern Linux - parameter disebut max_inline di sana. Ini akan dipotong ke nilai maksimum, yang kecuali Anda telah mengubah ukuran simpul Anda akan menjadi tempat teduh di bawah 16 kb.
SubvolId (QWord): ID subvolume yang akan kita coba pasang sebagai akar. Jika tidak ada, parameter ini akan diabaikan secara diam -diam. ID subvolume dapat ditemukan di lembar properti Inode; Itu ada di hex di sana, sebagai lawan desimal pada alat Linux. Standarnya adalah apa pun yang telah ditetapkan melalui btrfs subvolume set-default ; atau, gagal itu, subvolume 5. Parameter setara pada Linux disebut subvolid .
SkipBalance (DWORD): Setel ke 1 untuk memberi tahu pengemudi untuk tidak mencoba melanjutkan keseimbangan yang berjalan ketika sistem terakhir ditenagai. Standarnya adalah 0. Parameter yang setara di Linux adalah skip_balance .
NoPNP (DWORD): Berguna untuk debugging saja, ini memaksa volume untuk muncul daripada mengeksposnya melalui metode plug and play yang biasa.
ZstdLevel (DWORD): Level Kompresi ZSTD, Default 3.
NoTrim (DWORD): Atur ini ke 1 untuk menonaktifkan dukungan trim.
AllowDegraded (DWORD): Atur ini ke 1 untuk memungkinkan pemasangan volume yang terdegradasi, yaitu satu dengan perangkat yang hilang. Anda sangat disarankan untuk tidak mengaktifkan ini kecuali Anda perlu.
NoRootDir (DWORD): Jika Anda telah mengubah subvolume default Anda, baik secara asli atau dengan opsi registri, akan ada direktori tersembunyi yang disebut $ root yang menunjuk ke tempat root biasanya berada. Tetapkan nilai ini ke 1 untuk mencegah penampilan ini.
NoDataCOW (dword): Setel ini ke 1 untuk menonaktifkan copy-on-write untuk file baru. Ini setara dengan bendera nodatacow di Linux.
Saya menghargai umpan balik yang Anda miliki, positif atau negatif: [email protected].
Kode ini berisi bagian dari perangkat lunak berikut:
Hak Cipta (C) 1995-2017 Jean-Loup Gailille dan Mark Adler
Perangkat lunak ini disediakan 'Aib adanya', tanpa garansi tersirat atau tersirat. Dalam hal apa pun penulis tidak akan bertanggung jawab atas segala kerusakan yang timbul dari penggunaan perangkat lunak ini.
Izin diberikan kepada siapa pun untuk menggunakan perangkat lunak ini untuk tujuan apa pun, termasuk aplikasi komersial, dan untuk mengubahnya dan mendistribusikannya secara bebas, tunduk pada pembatasan berikut:
WinBtrfs berisi bagian -bagian dari versi awal LZO, yang merupakan hak cipta 1996 Markus Oberhumer. Versi modern dilisensikan di bawah GPL, tetapi ini dilisensikan di bawah LGPL, jadi saya percaya tidak apa -apa untuk digunakan.
Hak Cipta (C) 2016-sekarang, Facebook, Inc. Semua hak dilindungi undang-undang.
Redistribusi dan penggunaan dalam bentuk sumber dan biner, dengan atau tanpa modifikasi, diizinkan dengan ketentuan bahwa kondisi berikut dipenuhi:
Redistribusi kode sumber harus mempertahankan pemberitahuan hak cipta di atas, daftar kondisi ini dan penafian berikut.
Redistribusi dalam bentuk biner harus mereproduksi pemberitahuan hak cipta di atas, daftar kondisi ini dan penafian berikut dalam dokumentasi dan/atau bahan lain yang disediakan dengan distribusi.
Baik nama Facebook maupun nama -nama kontributornya tidak dapat digunakan untuk mendukung atau mempromosikan produk yang berasal dari perangkat lunak ini tanpa izin tertulis sebelumnya.
Perangkat lunak ini disediakan oleh pemegang hak cipta dan kontributor "sebagaimana adanya" dan setiap jaminan tersirat atau tersirat, termasuk, tetapi tidak terbatas pada, jaminan tersirat dari dapat diperjualbelikan dan kebugaran untuk tujuan tertentu ditolak. Dalam hal apa pun pemegang atau kontributor hak cipta tidak akan bertanggung jawab atas kerusakan langsung, tidak langsung, insidental, khusus, teladan, atau konsekuensial (termasuk, tetapi tidak terbatas pada, pengadaan barang atau layanan pengganti; hilang Disarankan tentang kemungkinan kerusakan tersebut.
https://github.com/blake2/blake2 (domain publik)
https://github.com/amosnier/sha-2 (domain publik)