WinBTRFS ist ein Windows-Treiber für das Linux-Dateisystem der nächsten Generation. Eine Neuauflagen von Grund auf neu, enthält keinen Code aus dem Linux -Kernel und sollte auf einer beliebigen Version von Windows XP funktionieren. Es ist auch Teil des freien Betriebssystems ReactOs enthalten.
Wenn sich Ihr BTRFS -Dateisystem auf einem von Linux erstellten MD -Software -RAID -Gerät befindet, benötigen Sie auch WinMD, damit dies unter Windows angezeigt wird.
Siehe auch Quibble, ein experimenteller Bootloader, mit dem Windows von BTRFS und NTFS2BTRFS starten kann, ein Tool, das die Einstellung von NTFS-Dateisystemen in Platzierung ermöglicht.
Erstens ein Haftungsausschluss:
Sie verwenden diese Software auf eigenes Risiko. Ich übernehme keine Verantwortung für Schäden, die es Ihrem Dateisystem anrichten kann. Es sollte für den täglichen Gebrauch geeignet sein, aber stellen Sie sicher, dass Sie trotzdem Backups nehmen.
Alles hier wird unter der GNU Lesser General Public Lizenz (LGPL) veröffentlicht. Weitere Informationen finden Sie in der Dateilizenz. Sie werden ermutigt, mit dem Quellcode wie Sie zu spielen, und ich würde mich über eine Notiz ([email protected]) freuen, wenn Sie sich irgendetwas erkennen.
Am Ende dieses Dokuments finden Sie Copyright-Details des hier enthaltenen Code von Drittanbietern.
mkbtrfs.exe und ubtrfs.dllfree_space_cache )So installieren Sie den Treiber, laden Sie die neueste Version herunter, klicken Sie mit der rechten Maustaste auf btrfs.inf und wählen Sie die Installation. Der Fahrer ist unterschrieben, sollte also in modernen Windows -Versionen in der Box herausarbeiten.
Wenn Sie Windows 10 oder 11 verwenden und sicheren Boot aktivieren, müssen Sie möglicherweise eine Registrierungsänderung vornehmen, damit der Treiber geladen werden kann - siehe unten. Es ist jedoch einfacher, den sicheren Stiefel in Ihrem BIOS auszuschalten, es sei denn, Sie müssen einen bestimmten Bedarf haben. Denken Sie daran, dass Windows 11 Soft-Requires sicher ist, um installiert zu werden, funktioniert jedoch gut nach dem Ausschalten.
Winbtrfs ist auch für die folgenden Paketmanager verfügbar:
choco install winbtrfs
scoop bucket add nonportable
scoop install winbtrfs-np -g
Wenn Sie deinstallieren möchten, von einem Eingabeaufforderungausgangslauf:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf
Möglicherweise müssen Sie den vollen Weg zu Btrfs.inf geben.
Sie können auch zum Geräte -Manager gehen, "BTRFS -Controller" unter "Speichervolumina" finden. Klicken Sie mit der rechten Maustaste "Deinstall". Ticken Sie das Kontrollkästchen, um auch den Treiber zu deinstallieren, und lassen Sie Windows neu starten.
Wenn Sie über die Registrierung deinstallieren müssen, regedit öffnen und den Wert von HKLM System CurrentControlSet Services btrfs Start auf 4 festlegen, um den Dienst zu deaktivieren. Nach dem Neustart können Sie die BTRFS -Taste löschen und C: Windows System32 Treiber btrfs.sys entfernen.
Um mit Visual C ++ 2019 zu kompilieren, öffnen Sie das Verzeichnis und lassen Sie CMake sein Ding machen. Wenn Sie die Windows DDK korrekt installiert haben, sollte es einfach funktionieren.
Um mit GCC unter Linux zu kompilieren, benötigen Sie eine Cross-Compiler-Einrichtung für i686-w64-mingw32 oder x86_64-w64-mingw32 . Erstellen Sie ein Build-Verzeichnis und verwenden Sie dann entweder mingw-x86.cmake oder mingw-amd64.cmake als CMake-Toolchain-Dateien, um Ihre Makefile zu generieren.
Die Benutzerzuordnungen werden im Registrierungsschlüssel HKLM System CurrentControlSet Services btrfs Mappings gespeichert. Erstellen Sie ein DWORD mit dem Namen Ihres Windows SID (z. B. S-1-5-21-1379886684-2432464051-42478967-1001) und den Wert Ihres Linux-UID (z. B. 1000). Es wird das nächste Mal in Kraft treten, wenn der Fahrer geladen wird.
Sie finden Ihr aktuelles SID, indem Sie wmic useraccount get name,sid .
In ähnlicher Weise werden die Gruppenzuordnungen unter Gruppenmeldungen gespeichert. Die Standardeintrags -Benutzer -Benutzer gruppieren auf GID 100, bei dem es sich normalerweise um "Benutzer" unter Linux handelt. Sie können hier auch Benutzer -SIDs angeben, um Dateien zu erzwingen, die von einem Benutzer erstellt wurden, zu einer bestimmten Gruppe zu gehören. Das SetGid -Flag funktioniert auch unter Linux.
Beachten Sie, dass Prozesse, die unter den Benutzerzugriffssteuerungsträgern ausgeführt werden, Dateien als integrierte administratoren SID (S-1-5-32-544), sondern als Benutzerkonto erstellen.
Der Treiber wird auf die jüngsten Versionen von LXSS -Metadaten auftreten, aber Sie müssen Windows wissen lassen, dass Sie dies tun möchten. Bearbeiten Sie /etc/wsl.conf von einer Bash -Eingabeaufforderung unter Windows, um wie folgt auszusehen:
[automount]
enabled = true
options = "metadata"
mountFsTab = false
Es wird dann beim nächsten Neustart wirksam. Ja, Sie sollten in der Lage sein, in einer tatsächlichen Linux -Installation zu chroot, wenn Sie dies wünschen.
Das DLL -Datei -Shellbtrfs.dll bietet die GUI -Schnittstelle, kann jedoch auch mit Rundll32 verwendet werden, um einige Aufgaben aus der Befehlszeile auszuführen. Dies kann nützlich sein, wenn Sie etwas planen möchten, um regelmäßig auszuführen.
Denken Sie daran, dass Rundll32 keinen Mechanismus zur Rückgabe von Fehlercodes bietet, sodass eine dieser Befehle lautlos ausfällt.
rundll32.exe shellbtrfs.dll,CreateSubvol <path>
rundll32.exe shellbtrfs.dll,CreateSnapshot <source> <destination>
rundll32.exe shellbtrfs.dll,ReflinkCopy <source> <destination> Dies akzeptiert auch Wildcards und eine beliebige Anzahl von Quelldateien.
Die folgenden Befehle benötigen verschiedene Berechtigungen und müssen daher als Administrator für die Arbeit ausgeführt werden:
rundll32.exe shellbtrfs.dll,SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file> Die Flags -p- und -c -Flags sind wie btrfs send . Sie können eine beliebige Anzahl von Klon -Subvolumes angeben.
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
Auf der Seite der Veröffentlichungen gibt es ZIP -Dateien zum Herunterladen der PDBS. Oder Sie können den Symbol Server http://symbols.burntcomma.com/ - In Windbg Ihren Symbolpfad auf so etwas festlegen:
symsrv*symsrv.dll*C:symbols*http://msdl.microsoft.com/download/symbols;symsrv*symsrv.dll*C:symbols*http://symbols.burntcomma.com
Der Fahrer geht davon aus, dass alle Dateinamen in UTF-8 codiert sind. Dies sollte heutzutage die Standardeinstellung bei den meisten Setups sein. Wenn Sie UTF -8 nicht verwenden, lohnt es sich wahrscheinlich, Ihre Dateien zu konvertieren.
Für die späteren Versionen von Windows 10 hat Microsoft mehr Anforderungen an die Unterzeichnung eingeführt, die für Open-Source-Fahrer anscheinend nicht verfügbar sind.
Um dies zu umgehen, gehen Sie zu HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy in Regedit, erstellen Sie einen neuen DWORD -Wert namens UpgradedSystem und einrichten auf 1 und starten Sie sie neu.
Oder Sie können den sicheren Stiefel in Ihren BIOS -Einstellungen immer ausschalten.
Dies ist etwas, was Microsoft in LXSS festgelegt hat, vermutlich, um die Leute zu verhindern, dass sie ihre Systeme heilen, indem sie mkdir /mnt/c/WiNdOwS ausführen.
Klicken Sie mit der Shell-Erweiterung mit der rechten Maustaste auf das Laufwerk in Explorer, klicken Sie auf Eigenschaften und gehen Sie zur Registerkarte BTRFS. Es sollte eine Schaltfläche geben, mit der Sie den Laufwerksbuchstaben ändern können.
Versuchen Sie in Regedit, die relevanten Einträge in HKEY_LOCAL_MACHINESYSTEMMountedDevices zu löschen und dann neu zu starten.
Verwenden Sie das mitgelieferte Befehlszeilenprogramm mkbtrfs.exe. Leider können wir BTRFs zum eigenen Dialogfeld 'eigenes Dialogfeld hinzufügen, da die Liste der Dateisysteme festcodiert wurde. Sie können auch format /fs:btrfs ausführen, wenn Sie keine BTRFS-spezifischen Optionen festlegen müssen.
Wenn das Dialogfeld "Format" Windows das angezeigt wird, versuchen Sie format.com mit dem Flag /FS -Flag, z. B. format /fs:ntfs D: .
Die Synologie scheint LVM für seine Blockgeräte zu verwenden. Bis jemand einen LVM -Treiber für Windows schreibt, haben Sie kein Glück.
Thecus verwendet Linuxs MD -Raid für seine Blockgeräte. Sie müssen auch WinMD installieren.
Stellen Sie sicher, dass Sie KB3033929 installiert haben. Oder überlegen Sie, ob Sie eine "Treuhande" -ISO installieren, die alle Updates enthält.
Es ist bekannt, dass die Dateisystem-Reading-Software von Paragon Automount deaktiviert. Deaktivieren oder deinstallieren Paragon, und dann neu anerkannt, indem Sie diskpart und automount enable eingeben.
In sehr alten Versionen von Windows (XP, Server 2003?) Ignoriert Windows Linux -Partitionen vollständig. Wenn dies für Sie der Fall ist, führen Sie fdisk unter Linux aus und ändern Sie Ihren Partitionstyp von 83 auf 7.
Es gibt keine Zuordnung zwischen Windows- und POSIX -Berechtigungsmodellen. Sie sind zu unterschiedlich, als dass dies praktisch ist. Wenn dies Sie stört, können Sie eine Windows -ACL für Dateien erstellen, die Sie nicht bearbeiten möchten.
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 behobenv1.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 wurde festgestelltv1.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 aufgegriffen wurdeV0.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 check angezeigt wirdV0.2 (2016-03-13):
CcCopyRead festgelegtV0.1 (2016-02-21):
Winbtrfs hat drei Ebenen von Debug -Nachrichten: Fehler und FixMes, Warnungen und Spuren. In der Versionsversion des Treibers werden nur die Fehler und FixMes angezeigt, die sie über DbgPrint protokolliert. Sie können diese Nachrichten über das Microsoft-Programm Debugview anzeigen, die unter https://technet.microsoft.com/en-gb/sysinternals/debugview verfügbar sind.
Wenn Sie ein Problem melden möchten, wäre es eine große Hilfe, wenn Sie auch ein vollständiges Debug -Protokoll anhängen könnten. Dazu müssen Sie die Debug -Versionen der Treiber verwenden. Kopieren Sie die Dateien in Debug x64 oder Debugug x86 in x64 oder x86. Sie müssen auch die Registrierungseinträge in HKLM System CurrentControlSet Services btrfs festlegen:
DebugLogLevel (DWORD): 0 für keine Nachrichten, 1 für Fehler und Fixmes, 2 für Warnungen auch und 3 für absolut alles, einschließlich Spuren.LogDevice (String, optional): Das serielle Gerät, auf das Sie ausgeben möchten, wie DeviceSerial0 . Dies ist wahrscheinlich nur auf virtuellen Maschinen nützlich.LogFile (Zeichenfolge, optional): Die Datei, die Sie ausgeben möchten, wenn LogDevice nicht gesetzt ist. Denken Sie daran, dass dies ein Kernel -Dateiname ist, also müssen Sie ihn mit " ?? " (z. B. " ?? c: btrfs.log") vorfixieren. Es ist wahrscheinlich selbstverständlich, aber speichern Sie dies nicht auf einem Volumen, den der Treiber selbst verwendet, oder Sie werden eine unendliche Schleife verursachen. Der Treiber erstellt SubKeys in der Registrierung unter HKLM System CurrentControlSet Services BTRFS für jedes nach seiner UUID benannte montierte Dateisystem. Wenn Sie sich nicht sicher sind, welches UUID sich auf welches Volumen bezieht, können Sie mit btrfs fi show unter Linux überprüfen. Sie können diesem Unterschlüssel pro Volumenmontageoptionen hinzufügen, die den Neustart wirksam werden. Wenn ein Wert in den oben genannten Schlüssel festgelegt ist, wird dies standardmäßig verwendet.
Ignore (DWORD): Setzen Sie dies auf 1, um dem Treiber zu sagen, dass er nicht versuchen soll, dieses Dateisystem zu laden. Mit der Readonly -Flagge ist dies wahrscheinlich überflüssig.
Readonly (DWORD): Setzen Sie dies auf 1, um dem Treiber zu sagen, dass das Schreiben in diesen Band nicht zulassen soll. Dies ist das Äquivalent der ro -Flagge unter Linux.
Compress (DWORD): Setzen Sie dies auf 1, um dem Treiber zu fordern, Dateien standardmäßig komprimiert zu schreiben. Dies ist das Äquivalent der compress auf Linux.
CompressForce (DWORD): Stellen Sie dies auf 1 ein, um die Komprimierung zu erzwingen, dh zum Ignorieren des nocompress -Inode -Flags und sogar die Komprimierung inkompressibler Dateien. Dies ist keine gute Idee, aber das Äquivalent der compress-force -Flag unter Linux.
CompressType (DWORD): Stellen Sie diese auf 1 ein, um die ZLIB -Komprimierung zu bevorzugen, 2, um die LZO -Komprimierung zu bevorzugen, oder 3, um die ZSTD -Komprimierung zu bevorzugen. Die Standardeinstellung ist 0, wodurch die ZSTD- oder LZO -Komprimierung verwendet wird, wenn die Inkompatflags eingestellt sind, und ansonsten ZLIB.
FlushInterval (DWORD): Das Intervall in Sekunden zwischen Metadatenspülen. Die Standardeinstellung beträgt 30, wie unter Linux - der Parameter wird dort commit .
ZlibLevel (DWORD): Eine Zahl zwischen -1 und 9, die bestimmt, wie viel CPU -Zeit aufgewendet wird, um Dateien zu komprimieren. Möglicherweise möchten Sie damit herumspielen, wenn Sie eine schnelle CPU haben, aber eine langsame Festplatte oder umgekehrt. Die Standardeinstellung ist 3, was der hart codierte Wert unter Linux ist.
MaxInline (DWORD): Die maximale Größe, die "Inline" -Dateien zulässig ist, dh die in den Metadaten gespeicherten. Die Standardeinstellung ist 2048, was auch die Standardeinstellung auf modernen Versionen von Linux ist - der Parameter wird dort als max_inline bezeichnet. Es wird an den Maximalwert abgeschnitten, der nicht geändert wird, dass Ihre Knotengröße ein Schatten unter 16 kb ist.
SubvolId (QWord): Die ID des Subvolume, das wir als Wurzel versuchen werden. Wenn es nicht existiert, wird dieser Parameter stillschweigend ignoriert. Die Subvolume -ID kann auf dem Inode -Eigenschaftsblatt gefunden werden. Dort ist es in Hex, im Gegensatz zu Dezimalern auf den Linux -Tools. Die Standardeinstellung ist alles, was über btrfs subvolume set-default festgelegt wurde. oder nicht, dass Subvolume 5. Der äquivalente Parameter unter Linux wird als subvolid bezeichnet.
SkipBalance (DWORD): Setzen Sie auf 1, um dem Treiber zu sagen, dass er nicht versuchen soll, ein Gleichgewicht wieder aufzunehmen, das ausgeführt wurde, wenn das System zuletzt nach unten geführt wurde. Der Standardwert ist 0. Der äquivalente Parameter unter Linux ist skip_balance .
NoPNP (DWORD): Nützlich für das Debuggen nützlich, dies zwingt alle Volumes, sie zu erscheinen, anstatt sie über die übliche Plug -and -Play -Methode freizulegen.
ZstdLevel (DWORD): ZSTD -Komprimierungsstufe, Standard 3.
NoTrim (DWORD): Setzen Sie dies auf 1, um die Trimmunterstützung zu deaktivieren.
AllowDegraded (DWORD): Setzen Sie dies auf 1, damit ein abgebautes Volumen montiert werden kann, dh eine mit fehlendem Gerät. Sie werden nachdrücklich empfohlen, dies nicht zu aktivieren, es sei denn, Sie müssen.
NoRootDir (DWORD): Wenn Sie Ihr Standard -Subvolume entweder nativ oder durch eine Registrierungsoption geändert haben, wird es ein verstecktes Verzeichnis namens $ root geben, das darauf hinweist, wo sich das Root normalerweise befindet. Stellen Sie diesen Wert auf 1 ein, um zu verhindern, dass dies erscheint.
NoDataCOW (DWORD): Legen Sie dies auf 1 fest, um das Kopieren auf dem Schreiben für neue Dateien zu deaktivieren. Dies ist das Äquivalent der nodatacow -Flag unter Linux.
Ich würde mich über jedes Feedback freuen, das Sie möglicherweise positiv oder negativ haben: [email protected].
Dieser Code enthält Teile der folgenden Software:
Copyright (C) 1995-2017 Jean-Loup Gailly und Mark Adler
Diese Software wird "As-is" ohne ausdrückliche oder implizite Garantie bereitgestellt. In keiner Veranstaltung haftet die Autoren für Schäden, die sich aus der Verwendung dieser Software ergeben.
Die Erlaubnis wird jedem erteilt, diese Software für jeden Zweck, einschließlich kommerzieller Anwendungen, zu verwenden und sie zu ändern und frei zu verteilen, vorbehaltlich der folgenden Einschränkungen:
Winbtrfs enthält Teile einer frühen Version von LZO, die Copyright 1996 Markus Oberhumer ist. Moderne Versionen sind unter der GPL lizenziert, aber dies wurde unter der LGPL lizenziert, daher glaube ich, dass es in Ordnung ist, es zu verwenden.
Copyright (C) 2016-Present, Facebook, Inc. Alle Rechte vorbehalten.
Umverteilung und Verwendung in Quellen- und Binärformen mit oder ohne Modifikation sind zulässig, sofern die folgenden Bedingungen erfüllt sind:
Umverteilungen des Quellcode müssen die oben genannte Copyright -Mitteilung, diese Liste der Bedingungen und den folgenden Haftungsausschluss behalten.
Umverteilungen in binärer Form müssen die oben genannte Copyright -Mitteilung, diese Liste der Bedingungen und den folgenden Haftungsausschluss in der Dokumentation und/oder anderen mit der Verteilung bereitgestellten Materialien reproduzieren.
Weder der Name Facebook noch die Namen seiner Mitwirkenden dürfen verwendet werden, um Produkte zu unterstützen oder zu fördern, die von dieser Software ohne spezifische schriftliche Genehmigung abgeleitet wurden.
Diese Software wird von den Inhabern und Mitwirkenden des Urheberrechts "wie sie" bereitgestellt, und alle ausdrücklichen oder impliziten Garantien, einschließlich, aber nicht beschränkt auf die impliziten Garantien für Handelsfähigkeit und Eignung für einen bestimmten Zweck, werden abgelehnt. In keinem Fall haftet der Urheberrechtsinhaber oder die Mitwirkenden für direkte, indirekte, zufällige, besondere, beispielhafte oder Folgeschäden (einschließlich, aber nicht beschränkt auf die Beschaffung von Ersatzgütern oder -dienstleistungen; Verlust des Verlusts des Verwendungsverlusts, Daten oder Gewinne; Gewinne oder geschäftliche Unterbrechung). Beraten über die Möglichkeit eines solchen Schadens.
https://github.com/blake2/blake2 (Public Domain)
https://github.com/amosnier/sha-2 (Public Domain)