WinBtrfs est un pilote Windows pour le système de fichiers Linux de nouvelle génération BTRFS. Une réimplémentation à partir de zéro, il ne contient aucun code du noyau Linux et devrait fonctionner sur n'importe quelle version à partir de Windows XP. Il est également inclus dans le cadre du système d'exploitation libre Reactos.
Si votre système de fichiers BTRFS se trouve sur un périphérique RAID de logiciel MD créé par Linux, vous aurez également besoin de WinMD pour que cela apparaisse sous Windows.
Voir également Quibble, un chargeur de démarrage expérimental permettant à Windows de démarrer à partir de BTRFS et NTFS2BTRFS, un outil qui permet la conversion en place des systèmes de fichiers NTFS.
Tout d'abord, un avertissement:
Vous utilisez ce logiciel à vos propres risques. Je ne prends aucune responsabilité pour tout dommage qu'il peut faire à votre système de fichiers. Il devrait être adapté à une utilisation quotidienne, mais assurez-vous de prendre des sauvegardes de toute façon.
Tout ici est publié sous la licence publique générale du GNU Le moins (LGPL); Voir la licence de fichier pour plus d'informations. Vous êtes encouragé à jouer avec le code source comme vous le ferez, et j'apprécierais une note ([email protected]) si vous trouvez quelque chose de nifty.
Voir à la fin de ce document pour les détails du droit d'auteur du code tiers qui est inclus ici.
mkbtrfs.exe et ubtrfs.dllfree_space_cache )Pour installer le pilote, téléchargez et extraire la dernière version, cliquez avec le bouton droit sur BTRFS.inf et choisissez Installer. Le pilote est signé, il devrait donc travailler hors de la boîte sur les versions modernes de Windows.
Si vous utilisez Windows 10 ou 11 et que le démarrage sécurisé est activé, vous devrez peut-être apporter un changement de registre afin que le pilote soit chargé - voir ci-dessous. Il est plus facile de désactiver le démarrage sécurisé dans votre BIOS, sauf si vous en avez un besoin particulier. Gardez à l'esprit que le démarrage sécurisé de Windows 11 Soft-Requires à installer, mais fonctionnera bien après les sorties avec elle.
WinBtrfs est également disponible sur les gestionnaires de package suivants:
choco install winbtrfs
scoop bucket add nonportable
scoop install winbtrfs-np -g
Si vous souhaitez désinstaller, à partir d'une invite de commande RUN:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf
Vous devrez peut-être donner le chemin complet de BTRFS.inf.
Vous pouvez également accéder à Device Manager, trouver "BTRFS Controller" sous "Volumes de stockage", cliquez avec le bouton droit et choisissez "Désinstaller". Cochez la case pour désinstaller également le pilote et laissez Windows se redémarrer.
Si vous avez besoin de désinstaller via le registre, ouvrez RegEdit et définissez la valeur de HKLM System CurrentControlset Services Btrfs Start to 4, pour désactiver le service. Après votre redémarrage, vous pouvez ensuite supprimer la touche Btrfs et supprimer C: Windows System32 Drivers btrfs.sys.
Pour compiler avec Visual C ++ 2019, ouvrez le répertoire et laissez CMake faire son truc. Si le DDK Windows est installé correctement, cela devrait simplement fonctionner.
Pour compiler avec GCC sur Linux, vous aurez besoin d'une configuration de compilateur croisé, pour i686-w64-mingw32 ou x86_64-w64-mingw32 . Créez un répertoire de build, puis utilisez mingw-x86.cmake ou mingw-amd64.cmake comme fichiers de chaîne d'outils CMake pour générer votre Makefile.
Les mappages d'utilisateurs sont stockés dans la clé de registre HKLM System CurrentControlset Services Btrfs Mappings. Créez un DWORD avec le nom de votre Windows SID (par exemple S-1-5-21-1379886684-2432464051-424789967-1001), et la valeur de votre UID Linux (par exemple 1000). Il prendra effet la prochaine fois que le conducteur sera chargé.
Vous pouvez trouver votre SID actuel en exécutant wmic useraccount get name,sid .
De même, les mappages de groupe sont stockés dans Under GroupMappings. La saisie par défaut cartose le groupe d'utilisateurs de Windows sur GID 100, qui est généralement des "utilisateurs" sur Linux. Vous pouvez également spécifier les SiDS utilisateur ici pour forcer les fichiers créés par un utilisateur pour appartenir à un certain groupe. L'indicateur SetGID fonctionne également comme sur Linux.
Notez que les processus exécutés sous les jetons de contrôle d'accès utilisateur créent des fichiers en tant que SID Breedtin Administrators (S-1-5-32-544), plutôt comme un compte utilisateur.
Le pilote passera les métadonnées Linux vers les versions récentes de LXSS, mais vous devrez faire savoir à Windows que vous souhaitez le faire. À partir d'une invite bash sur Windows, modifiez /etc/wsl.conf pour ressembler à ce qui suit:
[automount]
enabled = true
options = "metadata"
mountFsTab = false
Il entrera ensuite en vigueur la prochaine fois que vous redéfierez. Oui, vous devriez être en mesure de chroot dans une installation réelle de Linux, si vous le souhaitez.
Le fichier DLL ShellBtrfs.dll fournit l'interface GUI, mais il peut également être utilisé avec rundll32.exe pour effectuer certaines tâches de la ligne de commande, ce qui peut être utile si vous souhaitez planifier quelque chose pour s'exécuter périodiquement.
Gardez à l'esprit que RunDLL32 ne fournit aucun mécanisme pour renvoyer des codes d'erreur, de sorte que l'une de ces commandes peut échouer silencieusement.
rundll32.exe shellbtrfs.dll,CreateSubvol <path>
rundll32.exe shellbtrfs.dll,CreateSnapshot <source> <destination>
rundll32.exe shellbtrfs.dll,ReflinkCopy <source> <destination> Cela accepte également les caractères génériques et n'importe quel nombre de fichiers source.
Les commandes suivantes ont besoin de divers privilèges, et doivent donc être exécutées en tant qu'administrateur pour fonctionner:
rundll32.exe shellbtrfs.dll,SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file> Les drapeaux -p et -c sont comme btrfs send sur Linux. Vous pouvez spécifier n'importe quel nombre de sous-volumes de clone.
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
Sur la page des versions, il y a des fichiers zip à télécharger contenant les PDB. Ou vous pouvez essayer le serveur de symboles http://symbols.burntcomma.com/ - dans Windbg, définissez votre chemin de symbole sur quelque chose comme ceci:
symsrv*symsrv.dll*C:symbols*http://msdl.microsoft.com/download/symbols;symsrv*symsrv.dll*C:symbols*http://symbols.burntcomma.com
Le conducteur suppose que tous les noms de fichiers sont codés dans UTF-8. Cela devrait être la valeur par défaut de la plupart des configurations de nos jours - si vous n'utilisez pas UTF-8, cela vaut probablement la peine de faire la convertification de vos fichiers.
Pour les versions ultérieures de Windows 10, Microsoft a introduit des exigences plus onéreuses pour la signature, qui ne sont apparemment pas disponibles pour les pilotes open-source.
Pour contourner cela, accédez à HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy dans Regedit, créez une nouvelle valeur DWORD appelée UpgradedSystem et définissez-vous sur 1 et redémarrez.
Ou vous pouvez toujours désactiver le démarrage sécurisé dans vos paramètres de BIOS.
C'est quelque chose que Microsoft a codé en dur en LXSS, vraisemblablement pour empêcher les gens de faire du gazon de leurs systèmes en exécutant mkdir /mnt/c/WiNdOwS .
Avec l'extension du shell installé, cliquez avec le bouton droit sur le lecteur dans Explorer, cliquez sur les propriétés et accédez à l'onglet BTRFS. Il devrait y avoir un bouton qui vous permet de modifier la lettre de lecteur.
Dans Regedit, essayez de supprimer les entrées pertinentes dans HKEY_LOCAL_MACHINESYSTEMMountedDevices , puis redémarrez.
Utilisez le programme de ligne de commande inclus mkbtrfs.exe. Nous ne pouvons pas ajouter BTRFS à la boîte de dialogue de Windows, malheureusement, car sa liste de systèmes de fichiers a été codé en dur. Vous pouvez également exécuter format /fs:btrfs , si vous n'avez pas besoin de définir des options spécifiques à BTRFS.
Si la boîte de dialogue Format de Windows refuse d'apparaître, essayez d'exécuter Format.com avec l'indicateur / FS, par exemple format /fs:ntfs D: .
La synologie semble utiliser LVM pour ses appareils de bloc. Jusqu'à ce que quelqu'un écrit un pilote LVM pour Windows, vous n'avez pas de chance.
Thecus utilise le raid MD de Linux pour ses appareils de bloc. Vous devrez également installer WinMD.
Assurez-vous que KB3033929 soit installé. Ou envisagez d'installer à partir d'un ISO "sans dépôt" qui comprend toutes les mises à jour.
Le logiciel de lecture du système de fichiers de Paragon est connu pour désactiver l'automoute. Désactiver ou désinstaller Paragon, puis réactiver l'automoute en exécutant diskpart et en tapant automount enable .
Sur les très anciennes versions de Windows (XP, Server 2003?), Windows ignore entièrement les partitions Linux. Si tel est le cas pour vous, essayez d'exécuter fdisk sur Linux et de modification de votre type de partition de 83 à 7.
Il n'y a pas de mappage entre les modèles d'autorisation Windows et POSIX, ils sont trop différents pour que cela soit pratique. Si cela vous dérange, vous pouvez créer un ACL Windows sur des fichiers que vous ne souhaitez pas pouvoir modifier.
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 avait été utiliséev1.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 Options Setv1.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 a trois niveaux de messages de débogage: les erreurs et les correctifs, les avertissements et les traces. La version de version du pilote affiche uniquement les erreurs et les fixmes, qu'il enregistre via DbgPrint . Vous pouvez afficher ces messages via le programme Microsoft DebugView, disponible sur https://technet.microsoft.com/en-gb/sysinternals/debugView.
Si vous souhaitez signaler un problème, ce serait d'une grande aide si vous pouviez également joindre un journal de débogage complet. Pour ce faire, vous devrez utiliser les versions de débogage des pilotes; Copiez les fichiers dans Debug x64 ou Debug x86 en x64 ou x86. Vous devrez également définir les entrées de registre dans HKLM System CurrentControlset Services Btrfs:
DebugLogLevel (DWORD): 0 pour aucun message, 1 pour les erreurs et les correctifs, 2 pour les avertissements également, et 3 pour absolument tout, y compris les traces.LogDevice (String, Facultatif): le périphérique série que vous souhaitez sortir, tel que DeviceSerial0 . Ceci n'est probablement utile que sur les machines virtuelles.LogFile (String, Facultatif): Le fichier que vous souhaitez sortir, si LogDevice n'est pas défini. Gardez à l'esprit qu'il s'agit d'un nom de fichier de noyau, vous devrez donc le préfixer avec " ?? " (par exemple, " ?? c: btrfs.log"). Cela va probablement sans dire, mais ne stockez pas ceci sur un volume que le conducteur lui-même utilise, ou vous provoquerez une boucle infinie. Le pilote créera des sous-clés dans le registre sous HKLM System CurrentControlset Services Btrfs pour chaque système de fichiers monté, nommé d'après son UUID. Si vous ne savez pas quel UUID fait référence au volume, vous pouvez vérifier à l'aide btrfs fi show sur Linux. Vous pouvez ajouter des options de montage par volume à ce sous-clé, qui prendra effet sur le redémarrage. Si une valeur est définie dans la clé ci-dessus, elle l'utilisera par défaut.
Ignore (DWORD): Réglez ceci sur 1 pour dire au pilote de ne pas tenter de charger ce système de fichiers. Avec le drapeau Readonly , c'est probablement redondant.
Readonly (DWORD): Réglez ceci sur 1 pour dire au conducteur de ne pas autoriser l'écriture à ce volume. Ceci est l'équivalent du drapeau ro sur Linux.
Compress (DWORD): Définissez-le sur 1 pour dire au pilote d'écrire des fichiers compressés par défaut. Ceci est l'équivalent de l'indicateur compress sur Linux.
CompressForce (DWORD): définissez-le sur 1 pour forcer la compression, c'est-à-dire à ignorer l'indicateur inode nocompress et même à tenter la compression de fichiers incompressibles. Ce n'est pas une bonne idée, mais c'est l'équivalent de l'indicateur compress-force sur Linux.
CompressType (DWORD): Réglez ceci sur 1 pour préférer la compression ZLIB, 2 pour préférer la compression LZO, ou 3 pour préférer la compression ZSTD. La valeur par défaut est 0, qui utilise la compression ZSTD ou LZO si les drapeaux incompat sont définis et ZLIB autrement.
FlushInterval (DWORD): L'intervalle en secondes entre les métadonnées rinçage. La valeur par défaut est 30, comme sur Linux - le paramètre est appelé commit là-bas.
ZlibLevel (DWORD): un nombre entre -1 et 9, qui détermine la quantité de temps de processeur consacré à compresser des fichiers. Vous voudrez peut-être jouer avec cela si vous avez un CPU rapide mais un disque lent, ou vice versa. La valeur par défaut est 3, qui est la valeur codée dure sur Linux.
MaxInline (DWORD): la taille maximale qui sera autorisée pour les fichiers "en ligne", c'est-à-dire ceux stockés dans les métadonnées. La valeur par défaut est 2048, qui est également la valeur par défaut sur les versions modernes de Linux - le paramètre est appelé max_inline là-bas. Il sera coupé à la valeur maximale, ce qui, à moins que vous n'ayez modifié la taille de votre nœud sera une nuance de moins de 16 Ko.
SubvolId (Qword): l'ID du sous-volume que nous tenterons de monter comme racine. S'il n'existe pas, ce paramètre sera ignoré silencieusement. L'ID de sous-volume se trouve sur la feuille de propriété Inode; C'est en HEX là-bas, par opposition à décimal sur les outils Linux. La valeur par défaut est ce qui a été défini via btrfs subvolume set-default ; ou, à défaut, sous-volume 5. Le paramètre équivalent sur Linux est appelé subvolid .
SkipBalance (DWORD): réglé sur 1 pour dire au conducteur de ne pas tenter de reprendre un équilibre qui était en cours d'exécution lorsque le système a basculé pour la dernière fois. La valeur par défaut est 0. Le paramètre équivalent sur Linux est skip_balance .
NoPNP (DWORD): utile pour le débogage uniquement, cela oblige tous les volumes à apparaître plutôt que de les exposer via la méthode de fiche et de lecture habituelle.
ZstdLevel (DWORD): Niveau de compression ZSTD, par défaut 3.
NoTrim (DWORD): Réglez ceci sur 1 pour désactiver le support de garniture.
AllowDegraded (DWORD): Réglez ceci sur 1 pour permettre le montage d'un volume dégradé, c'est-à-dire un avec un appareil manquant. Il vous est fortement conseillé de ne pas l'activer à moins que vous en ayez besoin.
NoRootDir (DWORD): Si vous avez modifié votre sous-volume par défaut, soit nativement ou par une option de registre, il y aura un répertoire caché appelé $ root qui pointe où la racine serait normalement. Définissez cette valeur sur 1 pour empêcher cette apparence.
NoDataCOW (DWORD): Définissez-le sur 1 pour désactiver la copie-écriture pour les nouveaux fichiers. C'est l'équivalent du drapeau nodatacow sur Linux.
J'apprécierais tous les commentaires que vous pourriez avoir, positifs ou négatifs: [email protected].
Ce code contient des parties du logiciel suivant:
Copyright (C) 1995-2017 Jean-Loup GILLY et Mark Adler
Ce logiciel est fourni «tel quel», sans aucune garantie expresse ou implicite. En aucun cas, les auteurs ne seront tenus responsables de tout dommage résultant de l'utilisation de ce logiciel.
L'autorisation est accordée à quiconque d'utiliser ce logiciel à quelque fin que ce soit, y compris les applications commerciales, et de la modifier et de la redistribuer librement, sous réserve des restrictions suivantes:
Winbtrfs contient des parties d'une première version de LZO, qui est le droit d'auteur 1996 Markus Oberhumer. Les versions modernes sont autorisées sous le GPL, mais cela a été autorisé sous le LGPL, donc je crois que c'est normal à utiliser.
Copyright (C) 2016-présent, Facebook, Inc. Tous droits réservés.
La redistribution et l'utilisation dans les formulaires source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient remplies:
Les redistributions du code source doivent conserver l'avis de droit d'auteur ci-dessus, cette liste de conditions et l'avertissement suivant.
Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante dans la documentation et / ou d'autres documents fournis avec la distribution.
Ni le nom Facebook ni les noms de ses contributeurs ne peuvent être utilisés pour approuver ou promouvoir des produits dérivés de ce logiciel sans autorisation écrite préalable spécifique.
Ce logiciel est fourni par les détenteurs de droits d'auteur et les contributeurs "tels quels" et toutes les garanties expresses ou implicites, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande et d'adéquation à un usage particulier sont déclinées. En aucun cas, le titulaire ou les contributeurs du droit d'auteur ne sera pas responsable de tout dommage directement, indirect, accessoire, spécial, exemplaire ou consécutif (y compris, mais sans interruption commerciale) Si vous êtes conseillé de la possibilité de tels dégâts.
https://github.com/blake2/blake2 (domaine public)
https://github.com/amosnier/sha-2 (domaine public)