WinBtrfs-это драйвер Windows для Linux File-System следующего поколения BTRFS. Повторная переопределение с нуля не содержит кода из ядра Linux и должен работать над любой версией из Windows XP. Он также включен как часть бесплатной операционной системы Reactos.
Если ваша файловая система BTRFS находится на устройстве MD Software RAID, созданном Linux, вам также понадобится WinMD, чтобы это появилось под Windows.
См. Также Quibble, экспериментальный загрузчик, позволяющий Windows загружаться из BTRFS, и NTFS2BTRFS, инструмент, который позволяет на месте преобразование файловых систем NTFS.
Во -первых, отказ от ответственности:
Вы используете это программное обеспечение на свой страх и риск. Я не несу ответственности за какой -либо ущерб, который он может нанести для вашей файловой системы. Это должно быть подходящим для повседневного использования, но убедитесь, что вы все равно принимаете резервные копии.
Все здесь выпущено в соответствии с GNU меньшей общедоступной публичной лицензией (LGPL); Смотрите лицензию на файл для получения дополнительной информации. Вам рекомендуется поиграть с исходным кодом, как вы, и я бы признателен за записку ([email protected]), если вы придумаете что -нибудь изящное.
Смотрите в конце этого документа для сведений об авторском праве стороннего кода, который включен здесь.
mkbtrfs.exe и ubtrfs.dllfree_space_cache )Чтобы установить драйвер, загрузить и извлечь последний релиз, щелкните правой кнопкой мыши BTRFS.INF и выберите «Установить». Драйвер подписан, поэтому должен работать из коробки на современных версиях Windows.
Если вы используете Windows 10 или 11 и включили безопасную загрузку, вам, возможно, придется внести изменение реестра, чтобы загрузить драйвер - см. Ниже. Это проще, хотя просто отключить безопасную загрузку в вашем BIOS, если у вас нет особой необходимости в этом. Имейте в виду, что Windows 11 Soft-Requires Secure Boot будет установлен, но будет хорошо работать с выключенными.
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 Start TO 4, чтобы отключить службу. После перезагрузки вы можете удалить ключ BTRFS и удалить C: Windows System32 Drivers btrfs.sys.
Чтобы компилировать с Visual C ++ 2019, откройте каталог и позвольте Cmake сделать свое дело. Если у вас установлен DDK Windows, он должен просто работать.
Для компиляции с GCC на Linux вам понадобится настройка кросс-компилятора, для i686-w64-mingw32 или x86_64-w64-mingw32 . Создайте каталог сборки, затем используйте либо mingw-x86.cmake , либо mingw-amd64.cmake в качестве файлов инструментов cmake для генерации вашего makefile.
Сопоставления пользователей хранятся в ключе реестра HKLM System CurrentControlSet Services Btrfs Mappings. Создайте DWORD с именем вашего Windows SID (например, S-1-5-21-1379886684-2432464051-424789967-1001) и значение вашего Linux UID (например, 1000). Это вступит в силу в следующий раз, когда водитель будет загружен.
Вы можете найти свой текущий SID, запустив wmic useraccount get name,sid .
Аналогичным образом, групповые отображения хранятся в группе. Вход по умолчанию отображает группу пользователей Windows в GID 100, которая обычно является «пользователями» на Linux. Вы также можете указать здесь пользовательских SID, чтобы заставить файлы, созданные пользователем, принадлежать к определенной группе. Флаг Setgid также работает на Linux.
Обратите внимание, что процессы, работающие в соответствии с токенами управления доступом пользователя, создают файлы в качестве встроенных администраторов SID (S-1-5-32-544), скорее как учетная запись пользователя.
Драйвер передаст метаданные Linux к недавним версиям LXSS, но вам придется сообщить Windows, что вы хотите это сделать. Из подсказки Bash в Windows редактируйте /etc/wsl.conf , чтобы выглядеть следующим образом:
[automount]
enabled = true
options = "metadata"
mountFsTab = false
Затем он вступит в силу в следующий раз, когда вы перезагрузитесь. Да, вы должны быть в состоянии Chroot в реальную установку Linux, если хотите.
DLL File shellbtrfs.dll предоставляет интерфейс графического интерфейса, но его также можно использовать с 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 на Linux. Вы можете указать любое количество клонов.
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
На странице выпусков есть zip -файлы для загрузки, содержащих PDBS. Или вы можете попробовать сервер символов http://symbols.burntcomma.com/ - в Windbg, установите свой путь символа на что -то вроде этого:
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 в Regedit, создайте новое значение DWORD, называемое UpgradedSystem и установите на 1 и перезагрузите.
Или вы всегда можете просто отключить безопасную загрузку в настройках BIOS.
Это то, что Microsoft жестко кодировал в LXSS, предположительно, чтобы остановить людей, направляющих свои системы, запустив mkdir /mnt/c/WiNdOwS .
С установленным расширением оболочки, щелкните правой кнопкой мыши диск в Explorer, нажмите «Свойства» и перейдите на вкладку BTRFS. Должна быть кнопка, которая позволяет вам изменить букву привода.
В Regedit попробуйте удалить соответствующие записи в HKEY_LOCAL_MACHINESYSTEMMountedDevices , затем перезагрузите.
Используйте включенную программу командной строки mkbtrfs.exe. Мы не можем добавить BTRFS в собственное диалоговое окно Windows, к сожалению, поскольку его список файловых систем был жестким. Вы также можете запустить format /fs:btrfs , если вам не нужно устанавливать какие-либо специфические для BTRS параметры.
Если диалоговое окно «Формат Windows» отказывается появиться, попробуйте запустить Format.com с флагом /FS, например, format /fs:ntfs D: .
Синология, кажется, использует LVM для своих блочных устройств. Пока кто -то не пишет драйвер LVM для Windows, вам не повезло.
Thecus использует MD RAID Linux для своих блочных устройств. Вам также нужно будет установить Winmd.
Убедитесь, что у вас установлен KB3033929. Или рассмотрите возможность установки из ISO «условного депонирования», который включает все обновления.
Известно, что программное обеспечение для чтения файлов Paragon отключает Automount. Отключите или удалите Paragon, затем повторно установите Automount, запустив diskpart и набрав automount enable .
На очень старых версиях Windows (XP, Server 2003?) Windows полностью игнорирует разделы Linux. Если это так, попробуйте запустить fdisk на Linux и изменить тип раздела с 83 на 7.
Между Windows и моделями разрешений POSIX нет картирования, они слишком разные, чтобы это было практичным. Если это вас беспокоит, вы можете создать ACL Windows в файлах, которые вы не хотите иметь в состоянии редактировать.
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_cachev1.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 набор опций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 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 имеет три уровня сообщений отладки: ошибки и исправления, предупреждения и следы. Версия драйвера выпуска отображает только ошибки и исправления, которые он регистрирует через DbgPrint . Вы можете просмотреть эти сообщения через Microsoft Program DebugView, доступный по адресу https://technet.microsoft.com/en-gb/sysinternals/debugview.
Если вы хотите сообщить о проблеме, это будет очень полезно, если бы вы также могли бы прикрепить полное журнал отладки. Для этого вам нужно будет использовать отладочные версии водителей; Скопируйте файлы в Debug x64 или Debug x86 в x64 или x86. Вам также нужно будет установить записи реестра в HKLM System CurrentControlSet Services Btrfs:
DebugLogLevel (dword): 0 без сообщений, 1 для ошибок и исправлений, 2 для предупреждений и 3 для абсолютно всего, включая следы.LogDevice (String, необязательно): последовательное устройство, на которое вы хотите вывести, например, DeviceSerial0 . Это, вероятно, полезно только для виртуальных машин.LogFile (String, необязательно): файл, в который вы хотите вывести, если LogDevice не установлен. Имейте в виду, что это имя файла ядра, поэтому вам придется префикс его с помощью « ?? » (например, « ?? c: btrfs.log»). Вероятно, само собой разумеется, но не храните это на томе, который использует сам водитель, или вы вызотите бесконечную петлю. Драйвер будет создавать подказки в реестре в рамках HKLM System CurrentControlSet Services BTRFS для каждой монтированной файловой системы, названной в честь его UUID. Если вы не уверены, какой UUID относится к тому, какой том, вы можете проверить, используя btrfs fi show на Linux. Вы можете добавить варианты монтирования для этого объема в этот подразделение, что вступит в силу при перезагрузке. Если значение установлено в ключе выше этого, оно будет использовать это по умолчанию.
Ignore (DWORD): Установите это на 1, чтобы сказать драйвере не пытаться загружать эту файловую систему. С флагом Readonly это, вероятно, избыточно.
Readonly (dword): установите это на 1, чтобы сказать драйвере не разрешать записывать в этот том. Это эквивалент флага ro на Linux.
Compress (DWORD): Установите это на 1, чтобы сообщить драйвере написать файлы как сжатые по умолчанию. Это эквивалент флага compress на Linux.
CompressForce (DWORD): Установите это на 1, чтобы заставить сжатие, то есть игнорировать флаг INODE nocompress и даже попытку сжатия несжимаемых файлов. Это не хорошая идея, но является эквивалентом флага compress-force на Linux.
CompressType (DWORD): Установите это на 1, чтобы предпочесть сжатие Zlib, 2, предпочитая сжатие LZO, или 3, чтобы предпочесть сжатие ZSTD. По умолчанию 0, которое использует сжатие ZSTD или LZO, если установлены флаги некомкомпации, и Zlib в противном случае.
FlushInterval (DWORD): интервал в секундах между промывками метаданных. По умолчанию 30, как на Linux - параметр называется commit там.
ZlibLevel (DWORD): число между -1 и 9, которое определяет, сколько времени ЦП пытается сжать файлы. Возможно, вы захотите возиться с этим, если у вас быстрый процессор, но медленный диск, или наоборот. По умолчанию 3, что является жестким значением на Linux.
MaxInline (dword): максимальный размер, который будет разрешен для «вставленных» файлов, то есть те, которые хранятся в метаданных. По умолчанию - 2048, который также является по умолчанию в современных версиях Linux - параметр называется max_inline там. Он будет обрезан до максимального значения, которое, если вы не измените размер узла, будет оттенком до 16 КБ.
SubvolId (Qword): идентификатор подвода, который мы попытаемся установить как корень. Если его не существует, этот параметр будет молча игнорироваться. Идентификатор подвода можно найти на листе свойства 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, чтобы отключить поддержку TRIM.
AllowDegraded (DWORD): установите это на 1, чтобы позволить устанавливать разлагаемый объем, то есть один с отсутствующим устройством. Вам настоятельно рекомендуется не включать это, если вам не нужно.
NoRootDir (DWORD): Если вы изменили свой подвод по умолчанию, либо изначально, либо с помощью параметра реестра, будет скрытый каталог, называемый $ root, который указывает на то, где обычно будет корень. Установите это значение на 1, чтобы предотвратить появление этого.
NoDataCOW (DWORD): Установите это на 1, чтобы отключить копию на записи для новых файлов. Это эквивалент флага nodatacow на Linux.
Я бы признателен за любые отзывы, которые вы можете иметь, положительные или отрицательные: [email protected].
Этот код содержит части следующего программного обеспечения:
Copyright (C) 1995-2017 Жан-Лууп Гаилли и Марк Адлер
Это программное обеспечение предоставляется «как есть», без какой-либо явной или подразумеваемой гарантии. Ни в коем случае авторы не будут нести ответственность за любые убытки, возникающие в результате использования этого программного обеспечения.
Разрешение предоставляется всеми, чтобы использовать это программное обеспечение для любых целей, включая коммерческие приложения, а также изменять его и свободно перераспределить, при условии следующих ограничений:
WinBtrfs содержит части ранней версии LZO, которая является Copyright 1996 Markus Oberhumer. Современные версии лицензированы в соответствии с GPL, но это было лицензировано под LGPL, поэтому я считаю, что это нормально для использования.
Copyright (C) 2016-Present, Facebook, Inc. Все права защищены.
Перераспределение и использование в исходных и бинарных формах, с изменением или без них разрешены при условии, что следующие условия выполняются:
Перераспределение исходного кода должно сохранить вышеуказанное уведомление об авторском праве, этот список условий и следующее отказ от ответственности.
Перераспределение в двоичной форме должно воспроизводить вышеуказанное уведомление об авторском праве, этот список условий и следующее отказ от ответственности в документации и/или других материалах, предоставленных при распределении.
Ни имя Facebook, ни имена его участников не могут использоваться для поддержки или продвижения продуктов, полученных из этого программного обеспечения, без конкретного предварительного письменного разрешения.
Это программное обеспечение предоставляется владельцами авторского права и участниками «как есть», и любые явные или подразумеваемые гарантии, включая, но не ограничиваясь, подразумеваемые гарантии товарной пригодности и пригодности для определенной цели, отказаны. Ни в коем случае владелец авторского права не несет ответственности за любые прямые, косвенные, случайные, особые, примерные или косвенные убытки (включая, но не ограничиваясь, закупку заместительных товаров или услуг; потеря использования, данные или прибыль; или перерыв в бизнесе), однако, вызвана и по какой -либо теории, будь то в контракте, строгое лику Советуют о возможности такого ущерба.
https://github.com/blake2/blake2 (общественный домен)
https://github.com/amosnier/sha-2 (общественный домен)