Winbtrfsは、次世代Linux Filesystem BtrfsのWindowsドライバーです。ゼロからの再実装では、Linuxカーネルからのコードが含まれておらず、Windows XP以降の任意のバージョンで動作するはずです。また、無料のオペレーティングシステムReactosの一部として含まれています。
Linuxによって作成されたMDソフトウェアRAIDデバイスにBTRFS Filesシステムがある場合、Windowsの下に表示するにはWinmDも必要です。
また、btrfsからWindowsが起動できるようにする実験的なブートローダーであるQuibble、およびNTFSファイルシステムのインプレース変換を可能にするツールであるNTFS2BTRFも参照してください。
まず、免責事項:
あなたはあなた自身の責任でこのソフトウェアを使用します。私はあなたのファイルシステムに与える可能性のある損害について一切責任を負いません。日々の使用に適しているはずですが、とにかくバックアップを取得してください。
ここのすべては、GNU Lesser General Public License(LGPL)の下でリリースされています。詳細については、ファイルライセンスを参照してください。ソースコードを使用するようにプレイすることをお勧めします。
このドキュメントの最後に、ここに含まれるサードパーティコードの著作権の詳細については、参照してください。
mkbtrfs.exeおよびubtrfs.dllを使用した新しいファイルシステムの作成free_space_cache )ドライバーをインストールするには、最新リリースをダウンロードして抽出し、btrfs.infを右クリックして、インストールを選択します。ドライバーが署名されているので、最新のバージョンのWindowsで箱から出して作業する必要があります。
Windows 10または11を使用して安全なブーツを有効にしている場合は、ドライバーをロードするためにレジストリを変更する必要がある場合があります。以下を参照してください。特定の必要性がない限り、BIOSの安全なブーツをオフにするのは簡単です。 Windows 11は、インストールするセキュアなブーツをソフトリクエートするが、オフになった状態で正常に動作することに注意してください。
Winbtrfsは、次のパッケージマネージャーでも利用できます。
choco install winbtrfs
scoop bucket add nonportable
scoop install winbtrfs-np -g
コマンドプロンプトの実行からアンインストールしたい場合は:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf
btrfs.infへの完全なパスを与える必要があるかもしれません。
また、デバイスマネージャーに移動したり、「ストレージボリューム」の下で「BTRFSコントローラー」を見つけたり、右クリックして「アンインストール」を選択したりすることもできます。チェックボックスをチェックしてドライバーもアンインストールし、Windows自体を再起動します。
レジストリを介してアンインストールする必要がある場合は、regeditを開いてhklm system currentControlset services btrfs btrfs start 4に設定して、サービスを無効にします。再起動した後、BTRFSキーを削除してc: windows system32 drivers btrfs.sysを削除できます。
Visual C ++ 2019をコンパイルするには、ディレクトリを開き、Cmakeにそのことをさせます。 Windows DDKを正しくインストールしている場合は、機能するだけです。
LinuxでGCCをコンパイルするには、 i686-w64-mingw32またはx86_64-w64-mingw32のいずれかについて、クロスコンパイラのセットアップが必要です。ビルドディレクトリを作成し、 mingw-x86.cmakeまたはmingw-amd64.cmakeをCmake Toolchainファイルとして使用してMakeFileを生成します。
ユーザーマッピングは、レジストリキーhklm system currentControlset services btrfs マッピングに保存されます。 Windows Sidの名前(S-1-5-21-13798886684-2432464051-424789967-1001)とLinux UIDの値(1000)を使用してDWORDを作成します。次回はドライバーがロードされると実施されます。
wmic useraccount get name,sidを実行することで、現在のSIDを見つけることができます。
同様に、グループマッピングはグループマッピングの下に保存されます。デフォルトのエントリは、WindowsのユーザーグループをGID 100にマッピングします。これは通常Linuxの「ユーザー」です。ここでユーザーSIDを指定して、ユーザーが作成したファイルを特定のグループに属するように強制することもできます。 SetGidフラグはLinuxのようにも機能します。
ユーザーアクセスコントロールトークンの下で実行されるプロセスは、ユーザーアカウントとしてむしろ、Builtin Administrators SID(S-1-5-32-544)としてファイルを作成することに注意してください。
ドライバーは、Linuxメタデータを最近のLXSSのバージョンにパススルーしますが、Windowsにこれを行うことを知らせる必要があります。 WindowsのBashプロンプトから、 /etc/wsl.confを編集して、次のようになります。
[automount]
enabled = true
options = "metadata"
mountFsTab = false
次に再起動するときに有効になります。はい、必要に応じて、実際のLinuxのインストールにクルートできるはずです。
dllファイルshellbtrfs.dllはGUIインターフェイスを提供しますが、rundll32.exeで使用するためにコマンドラインからいくつかのタスクを実行することもできます。
rundll32はエラーコードを返すメカニズムを提供しないため、これらのコマンドのいずれかが静かに失敗する可能性があることに注意してください。
rundll32.exe shellbtrfs.dll,CreateSubvol <path>
rundll32.exe shellbtrfs.dll,CreateSnapshot <source> <destination>
rundll32.exe shellbtrfs.dll,ReflinkCopy <source> <destination>これはワイルドカード、および任意の数のソースファイルも受け入れます。
次のコマンドにはさまざまな特権が必要であるため、管理者として実行する必要があります。
rundll32.exe shellbtrfs.dll,SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file> -pおよび-cフラグは、 btrfs sendとおりです。任意の数のクローンサブボリュームを指定できます。
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
[リリース]ページには、PDBを含むダウンロードするzipファイルがあります。または、シンボルサーバーhttp://symbols.burntcomma.com/を試すことができます。
symsrv*symsrv.dll*C:symbols*http://msdl.microsoft.com/download/symbols;symsrv*symsrv.dll*C:symbols*http://symbols.burntcomma.com
ドライバーは、すべてのファイル名がUTF-8でエンコードされていると想定しています。これは、最近のほとんどのセットアップでデフォルトである必要があります - UTF -8を使用していない場合は、おそらくファイルの変換を検討する価値があります。
Windows 10の後のバージョンでは、Microsoftは署名のためのより厄介な要件を導入しましたが、これはオープンソースドライバーが利用できないようです。
これを回避するには、 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicyに移動し、 UpgradedSystemと呼ばれる新しいdword値を作成し、1に設定して再起動します。
または、BIOS設定のセキュアなブーツをいつでもオフにすることができます。
これはmkdir /mnt/c/WiNdOwSを実行することでシステムをホートする人々を止めるために、MicrosoftがLXSSにハードコードされたものです。
シェルエクステンションがインストールされたら、エクスプローラーのドライブを右クリックし、[プロパティ]をクリックし、[BTRFS]タブに移動します。ドライブ文字を変更できるボタンがあるはずです。
regeditで、 HKEY_LOCAL_MACHINESYSTEMMountedDevicesで関連するエントリを削除してから再起動してみてください。
含まれているコマンドラインプログラムmkbtrfs.exeを使用します。残念ながら、ファイルシステムのリストがハードコードされているため、Windows独自のダイアログボックスにBTRFを追加することはできません。 BTRFS固有のオプションを設定する必要がない場合は、 format /fs:btrfsを実行することもできます。
[Windowsのフォーマット]ダイアログボックスが表示されない場合は、 /fsフラグを使用してFormat.comを実行してみてください。たとえば、 format /fs:ntfs D:
Synologyは、ブロックデバイスにLVMを使用しているようです。誰かがWindowsのLVMドライバーを書くまで、あなたは運が悪いです。
Thecusは、ブロックデバイスにLinuxのMD RAIDを使用しています。 WINMDもインストールする必要があります。
KB3033929がインストールされていることを確認してください。または、すべての更新を含む「エスクロー」ISOからインストールすることを検討してください。
Paragonのファイルシステム読み取りソフトウェアは、Automountを無効にすることが知られています。パラゴンを無効にしたり、アンインストールしたり、 diskpartを実行してAutomount automount enableを入力して自動車を再度に再度解除したりします。
Windows(XP、Server 2003?)の非常に古いバージョンでは、WindowsはLinuxパーティションを完全に無視します。これが当てはまる場合は、Linuxでfdiskを実行し、パーティションタイプを83から7に変更してみてください。
WindowsとPosixの許可モデルの間にマッピングはありませんが、これが実用的ではないほど異なっています。これが気になる場合は、編集したくないファイルにWindows ACLを作成できます。
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が使用されていたときの破損の問題を修正しましたv1.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=dirオプションセットの場合、lxssのディレクトリの作成を修正しましたv1.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 checkではピックアップされなかった範囲refsの順序付けに関する問題を修正しましたv0.9(2017-03-05):
v0.8(2016-12-30):
btrfs fi usageに相当しますV0.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 checkに表示される「誤ったローカルバックカウント」メッセージを修正しましたv0.2(2016-03-13):
CcCopyRead内のデッドロックを修正しましたv0.1(2016-02-21):
Winbtrfsには、エラーとFixmes、警告、トレースの3つのレベルのデバッグメッセージがあります。ドライバーのリリースバージョンには、 DbgPrintを介してログを記録するエラーとFixmesのみが表示されます。これらのメッセージは、https://technet.microsoft.com/en-gb/sysinternals/debugviewで入手可能なMicrosoftプログラムDebugViewを介して表示できます。
問題を報告したい場合は、完全なデバッグログを添付することもできれば、非常に役立ちます。これを行うには、ドライバーのデバッグバージョンを使用する必要があります。デバッグ x64またはdebug x86のファイルをx64またはx86にコピーします。また、hklm system currentControlset services btrfsにレジストリエントリを設定する必要があります。
DebugLogLevel (dword):0メッセージなし、エラーとfixmesの場合は1、警告についても2、トレースを含む絶対に3つ。LogDevice (string、optional): DeviceSerial0など、出力するシリアルデバイス。これはおそらく仮想マシンでのみ役立ちます。LogFile (string、optional): LogDeviceが設定されていない場合、出力するファイル。これはカーネルのファイル名であることに留意してください。したがって、「 ?? 」(「 ?? c: btrfs.log ")で接頭する必要があります。おそらく言うまでもありませんが、ドライバー自体が使用しているボリュームにこれを保存しないでください。または、無限のループを引き起こします。 ドライバーは、UUIDにちなんで名付けられた各マウントされたファイルシステムのhklm system currentControlset services btrfsの下でレジストリにサブキーを作成します。どのUUIDがどのボリュームを参照しているかがわからない場合は、Linuxでbtrfs fi showを使用して確認できます。このサブキーにボリュームあたりのマウントオプションを追加できます。これは、再起動に有効になります。この上のキーで値が設定されている場合、デフォルトでこれを使用します。
Ignore (DWORD):これを1に設定して、このファイルシステムのロードを試みないようにドライバーに指示します。 Readonlyフラグでは、これはおそらく冗長です。
Readonly (dword):これを1に設定して、このボリュームに書き込みを許可しないようにドライバーに指示します。これは、Linuxのroフラグに相当します。
Compress (DWORD):これを1に設定して、デフォルトで圧縮されているようにファイルを書き込むようにドライバーに指示します。これは、Linuxのcompressフラグに相当します。
CompressForce (DWORD):これを1に設定して圧縮を強制します。つまり、 nocompress Inodeフラグを無視し、非圧縮ファイルの圧縮を試みます。これは良い考えではありませんが、Linuxのcompress-forceフラグに相当します。
CompressType (DWORD):これを1に設定してZLIB圧縮を好むように、2を好むようにLZO圧縮を好むか、3、またはZSTD圧縮を好むように3を設定します。デフォルトは0です。これは、非型フラグが設定されている場合はZSTDまたはLZO圧縮を使用し、それ以外の場合はZLIBが使用されます。
FlushInterval (DWORD):メタデータフラッシュ間の数秒の間隔。 Linuxのように、デフォルトは30です - パラメーターはそこでcommitと呼ばれます。
ZlibLevel (dword):-1〜9の間で、ファイルを圧縮しようとしてCPU時間がどれだけ費やされるかを決定します。高速のCPUがあるが、遅いディスクがある場合、またはその逆もある場合は、これをいじりたいと思うかもしれません。デフォルトは3で、これはLinuxのハードコーディング値です。
MaxInline (dword):「インライン」ファイル、つまりメタデータに保存されているファイルに許可される最大サイズ。デフォルトは2048です。これは、Linuxの最新バージョンのデフォルトでもあります。パラメーターはmax_inlineと呼ばれます。最大値にクリップされます。これは、ノードサイズを変更しない限り、16 kb未満のシェードになります。
SubvolId (qword):ルートとしてマウントしようとするサブボリュームのID。存在しない場合、このパラメーターは静かに無視されます。サブボリュームIDは、iNodeプロパティシートにあります。 Linuxツールの小数とは対照的に、それはそこにあるヘックスです。デフォルトは、 btrfs subvolume set-defaultを介して設定されたものです。または、それに失敗すると、サブボリューム5。Linuxの同等のパラメーターはsubvolidと呼ばれます。
SkipBalance (DWORD):1に設定して、システムが最後に電源を入れたときに実行されていたバランスを再開しないようにドライバーに指示します。デフォルトは0です。Linuxの等価パラメーターはskip_balanceです。
NoPNP (DWORD):デバッグのみに役立つ、これにより、通常のプラグアンドプレイ方法を介して露出するのではなく、任意のボリュームが表示されます。
ZstdLevel (DWORD):ZSTD圧縮レベル、デフォルト3。
NoTrim (dword):これを1に設定して、トリムサポートを無効にします。
AllowDegraded (DWORD):これを1に設定して、劣化したボリューム、つまりデバイスが欠落しているボリュームをマウントできるようにします。必要な場合を除き、これを有効にしないことを強くお勧めします。
NoRootDir (DWORD):デフォルトのサブボリュームをネイティブまたはレジストリオプションのいずれかで変更した場合、ルートが通常どこにあるかを指す$ rootという非表示ディレクトリがあります。この値を1に設定して、この表示を防ぎます。
NoDataCOW (dword):これを1に設定して、新しいファイルのコピーライトを無効にします。これは、Linuxのnodatacowフラグに相当します。
ポジティブまたはネガティブなフィードバックに感謝します:[email protected]。
このコードには、次のソフトウェアの一部が含まれています。
Copyright(c)1995-2017 Jean-Loup Gailly and Mark Adler
このソフトウェアには、明示的または黙示的な保証なしで「AS-IS」が提供されます。いかなる場合でも、著者はこのソフトウェアの使用から生じる損害について責任を負いません。
商用アプリケーションを含むあらゆる目的のためにこのソフトウェアを使用し、それを変更して自由に再配布する許可が許可されます。
Winbtrfsには、1996年のMarkus Oberhumerの著作権であるLZOの初期バージョンの一部が含まれています。最新のバージョンはGPLの下でライセンスされていますが、これはLGPLの下でライセンスされていたため、使用しても大丈夫だと思います。
Copyright(c)2016-Present、Facebook、Inc。All Rights Reserved。
変更とバイナリ形式での再配布と使用は、変更を伴うまたは伴わない場合、次の条件が満たされている場合が許可されています。
ソースコードの再配布は、上記の著作権通知、この条件リスト、および次の免責事項を保持する必要があります。
バイナリ形式の再配布は、上記の著作権通知、この条件リスト、および分布に提供されたドキュメントおよび/またはその他の資料の次の免責事項を再現する必要があります。
Facebookという名前もその貢献者の名前も、具体的な書面による許可なしにこのソフトウェアから派生した製品を支持または宣伝するために使用することはできません。
このソフトウェアは、著作権所有者と貢献者によって「現状のまま」、および商品性と特定の目的に対する適合性の暗黙の保証を含むがこれらに限定されない明示的または黙示的な保証が否認されます。いかなる場合でも、著作権所有者または貢献者は、直接的、間接的、偶発的、特別な、例示的、または結果的な損害賠償(代替品またはサービスの調達を含むがこれらに限定されない)に対して責任を負いません。そのような損害の可能性の。
https://github.com/blake2/blake2(パブリックドメイン)
https://github.com/amosnier/sha-2(パブリックドメイン)