O WinBtrfs é um driver do Windows para o Linux FileSystem BTRFS de próxima geração. Uma reimplementação do zero, não contém código do kernel Linux e deve trabalhar em qualquer versão do Windows XP em diante. Também está incluído como parte do sistema operacional gratuito Reactos.
Se o seu sistema de arquivos BTRFS estiver em um dispositivo RAID de software MD criado pelo Linux, você também precisará do WinMD para que isso apareça no Windows.
Consulte também Quibble, um carregador de inicialização experimental, permitindo que o Windows inicialize a partir de BTRFS e NTFS2BTRFS, uma ferramenta que permite a conversão no local dos sistemas de arquivos NTFS.
Primeiro, um aviso:
Você usa este software por sua conta e risco. Não me responsabilizo por nenhum dano que isso possa causar ao seu sistema de arquivos. Deve ser adequado para uso diário, mas certifique-se de fazer backups de qualquer maneira.
Tudo aqui é lançado sob a Licença Pública Geral (LGPL) menor da GNU; Consulte a licença do arquivo para obter mais informações. Você é incentivado a jogar com o código -fonte como quiser, e eu apreciaria uma nota ([email protected]) se você criar qualquer coisa bacana.
Veja no final deste documento para obter detalhes de direitos autorais do código de terceiros incluído aqui.
mkbtrfs.exe e ubtrfs.dllfree_space_cache )Para instalar o driver, baixar e extrair a versão mais recente, clique com o botão direito do mouse no BTRFs.inf e escolha Instale. O motorista é assinado, portanto, deve trabalhar fora da caixa nas versões modernas do Windows.
Se você estiver usando o Windows 10 ou 11 e possui uma inicialização segura ativada, pode ser necessário fazer uma alteração no registro para que o motorista seja carregado - veja abaixo. É mais fácil, embora apenas desligar a inicialização segura em seu BIOS, a menos que você tenha uma necessidade particular. Lembre-se de que a inicialização segura do Windows 11 Soft-Revers a ser instalada, mas funcionará bem com ela desligada.
O WinBtrfs também está disponível nos seguintes gerentes de pacotes:
choco install winbtrfs
scoop bucket add nonportable
scoop install winbtrfs-np -g
Se você deseja desinstalar, a partir de uma execução de prompt de comando:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 btrfs.inf
Pode ser necessário dar o caminho completo para o Btrfs.inf.
Você também pode acessar o Gerenciador de dispositivos, encontrar "BTRFS Controller" em "Volumes de armazenamento", clique com o botão direito do mouse e escolha "desinstalar". Marque a caixa de seleção para desinstalar o driver também e deixe o Windows se reiniciar.
Se você precisar desinstalar através do registro, abra o Regedit e defina o valor de HKLM System CurrentControlset Services Btrfs Start to 4, para desativar o serviço. Depois de reiniciar, você pode excluir a tecla BTRFS e remover C: Windows System32 Drivers Btrfs.sys.
Para compilar com o Visual C ++ 2019, abra o diretório e deixe o Cmake fazer o que quer. Se você tiver o Windows DDK instalado corretamente, ele deve funcionar.
Para compilar com o GCC no Linux, você precisará de uma configuração de compiladores cruzados, para i686-w64-mingw32 ou x86_64-w64-mingw32 . Crie um diretório de compilação e use mingw-x86.cmake ou mingw-amd64.cmake como arquivos CMake Toolchain para gerar seu makefile.
Os mapeamentos do usuário são armazenados na chave do registro HKLM System CurrentControlSet Services Btrfs Mappings. Crie um DWORD com o nome do seu Windows SID (por exemplo, S-1-5-21-1379886684-2432464051-424789967-1001) e o valor do seu Linux UID (por exemplo, 1000). Ele entrará em vigor na próxima vez que o motorista for carregado.
Você pode encontrar seu SID atual executando wmic useraccount get name,sid .
Da mesma forma, os mapeamentos de grupo são armazenados em GroupMappings. A entrada padrão mapeia o grupo de usuários do Windows para o GID 100, que geralmente é "usuários" no Linux. Você também pode especificar o SIDS do usuário aqui para forçar os arquivos criados por um usuário a pertencer a um determinado grupo. O sinalizador setGid também funciona como no Linux.
Observe que os processos em execução sob tokens de controle de acesso ao usuário criam arquivos como o SID de administradores incorporados (S-1-5-32-544), mas como uma conta de usuário.
O driver passará os metadados do Linux para versões recentes do LXSS, mas você terá que informar ao Windows que deseja fazer isso. De um prompt de bash no Windows, edit /etc/wsl.conf parecer com o seguinte:
[automount]
enabled = true
options = "metadata"
mountFsTab = false
Em seguida, entrará em vigor na próxima vez que você reiniciar. Sim, você poderá se transformar em uma instalação real do Linux, se desejar.
O arquivo dll shellbtrfs.dll fornece a interface da GUI, mas também pode ser usado com o Rundll32.exe para realizar algumas tarefas da linha de comando, o que pode ser útil se você deseja agendar algo para executar periodicamente.
Lembre -se de que o Rundll32 não fornece mecanismo para retornar qualquer código de erro; portanto, qualquer um desses comandos pode falhar silenciosamente.
rundll32.exe shellbtrfs.dll,CreateSubvol <path>
rundll32.exe shellbtrfs.dll,CreateSnapshot <source> <destination>
rundll32.exe shellbtrfs.dll,ReflinkCopy <source> <destination> Isso também aceita curingas e qualquer número de arquivos de origem.
Os seguintes comandos precisam de vários privilégios e, portanto, devem ser executados como administrador para trabalhar:
rundll32.exe shellbtrfs.dll,SendSubvol <source> [-p <parent>] [-c <clone subvol>] <stream file> Os sinalizadores -p e -c são como btrfs send no Linux. Você pode especificar qualquer número de subvolumes de clone.
rundll32.exe shellbtrfs.dll,RecvSubvol <stream file> <destination>
rundll32.exe shellbtrfs.dll,StartScrub <drive>
rundll32.exe shellbtrfs.dll,StopScrub <drive>
Na página de lançamentos, há arquivos ZIP para baixar contendo o PDBS. Ou você pode experimentar o servidor de símbolos http://symbols.burntcomma.com/ - no windbg, defina seu caminho de símbolo para algo assim:
symsrv*symsrv.dll*C:symbols*http://msdl.microsoft.com/download/symbols;symsrv*symsrv.dll*C:symbols*http://symbols.burntcomma.com
O motorista assume que todos os nomes de arquivos são codificados no UTF-8. Hoje em dia esse deve ser o padrão na maioria das configurações - se você não estiver usando o UTF -8, provavelmente vale a pena investigar seus arquivos.
Para as versões posteriores do Windows 10, a Microsoft introduziu requisitos mais onerosos de assinatura, que aparentemente não estão disponíveis para motoristas de código aberto.
Para contornar isso, acesse HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy no Regedit, crie um novo valor de DWORD chamado UpgradedSystem e definido como 1 e reinicie.
Ou você sempre pode desligar a inicialização segura nas configurações do BIOS.
Isso é algo que a Microsoft codificou no LXSS, presumivelmente para impedir as pessoas que manipulam seus sistemas executando mkdir /mnt/c/WiNdOwS .
Com a extensão do shell instalada, clique com o botão direito do mouse na unidade no Explorer, clique em Propriedades e vá para a guia BTRFS. Deve haver um botão que permita alterar a letra da unidade.
No Regedit, tente excluir as entradas relevantes em HKEY_LOCAL_MACHINESYSTEMMountedDevices e reiniciendo.
Use o programa de linha de comando incluído mkbtrfs.exe. Não podemos adicionar BTRFs à caixa de diálogo do Windows, infelizmente, pois sua lista de sistemas de arquivos foi codificada. Você também pode executar format /fs:btrfs , se não precisar definir nenhuma opção específica do BTRFS.
Se a caixa de diálogo Formato do Windows se recusar a aparecer, tente executar o format.com com o sinalizador /fs, por exemplo, format /fs:ntfs D: .
A sinologia parece usar o LVM para seus dispositivos de bloco. Até que alguém escreva um driver LVM para o Windows, você está sem sorte.
O TheCus usa o RAID MD do Linux para seus dispositivos de bloco. Você precisará instalar o WinMD também.
Certifique -se de ter KB3033929 instalado. Ou considere instalar a partir de um ISO "custom", que inclui todas as atualizações.
Sabe-se que o software de leitura do sistema de arquivos da Paragon é conhecido por desativar o Automount. Desative ou desinstale o Paragon e, em seguida, reative o Automount, executando diskpart e digitando automount enable .
Em versões muito antigas do Windows (XP, Server 2003?), O Windows ignora completamente as partições do Linux. Se for esse o caso, tente executar fdisk no Linux e alterar seu tipo de partição de 83 para 7.
Não há mapeamento entre os modelos de permissão do Windows e POSIX, eles são muito diferentes para que isso seja prático. Se isso o incomoda, você pode criar um Windows ACL nos arquivos que não deseja editar.
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 foi usadav1.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 Option 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):
O WinBtrfs possui três níveis de mensagens de depuração: erros e fixmes, avisos e traços. A versão de liberação do driver exibe apenas os erros e fixmes, que ele registra via DbgPrint . Você pode visualizar essas mensagens através do programa Microsoft DebugView, disponível em https://technet.microsoft.com/en-gb/sysinternalths/debugview.
Se você deseja relatar um problema, seria de grande ajuda se você também pudesse anexar um log de depuração completo. Para fazer isso, você precisará usar as versões de depuração dos drivers; Copie os arquivos em Debug x64 ou Debug x86 em x64 ou x86. Você também precisará definir as entradas de registro em HKLM System CurrentControlSet Services Btrfs:
DebugLogLevel (DWORD): 0 para nenhuma mensagem, 1 para erros e fixmes, 2 para avisos também e 3 para absolutamente tudo, incluindo traços.LogDevice (String, Opcional): O dispositivo serial para o qual deseja produzir, como DeviceSerial0 . Provavelmente, isso é útil apenas em máquinas virtuais.LogFile (String, Opcional): O arquivo para o qual você deseja produzir, se LogDevice não estiver definido. Lembre -se de que este é um nome de arquivo do kernel, então você terá que prefixá -lo com " ?? " (por exemplo, " ?? c: btrfs.log"). Provavelmente, não é preciso dizer, mas não guarde isso em um volume que o próprio motorista está usando, ou você causará um loop infinito. O driver criará subchays no registro em HKLM System CurrentControlSet Services Btrfs para cada sistema de arquivos montado, nomeado após seu UUID. Se você não tiver certeza de qual UUID se refere a qual volume, pode verificar o uso btrfs fi show no Linux. Você pode adicionar opções de montagem por volume a esta subchave, o que entrará em vigor na reinicialização. Se um valor estiver definido na chave acima disso, ele usará isso por padrão.
Ignore (DWORD): defina isso como 1 para dizer ao driver para não tentar carregar este sistema de arquivos. Com a bandeira Readonly , isso provavelmente é redundante.
Readonly (DWORD): Defina isso como 1 para dizer ao driver para não permitir a gravação deste volume. Este é o equivalente à bandeira ro no Linux.
Compress (DWORD): Defina isso como 1 para dizer ao driver para gravar arquivos como compactados por padrão. Este é o equivalente ao sinalizador compress no Linux.
CompressForce (DWORD): Defina isso como 1 para forçar a compactação, ou seja, ignorar o sinalizador de inode nocompress e até tentar a compactação de arquivos incompressíveis. Esta não é uma boa ideia, mas é o equivalente à bandeira compress-force no Linux.
CompressType (DWORD): Defina isso como 1 como preferir a compactação ZLIB, 2 para preferir a compactação LZO ou 3 para preferir a compactação ZSTD. O padrão é 0, que usa compactação ZSTD ou LZO se os sinalizadores incompats estiverem definidos e o zlib de outra forma.
FlushInterval (DWORD): O intervalo em segundos entre os metadados Flushes. O padrão é 30, como no Linux - o parâmetro é chamado de commit lá.
ZlibLevel (DWORD): um número entre -1 e 9, que determina quanto tempo é gasto na CPU tentando compactar arquivos. Você pode querer mexer com isso se tiver uma CPU rápida, mas um disco lento ou vice -versa. O padrão é 3, que é o valor codificado no Linux.
MaxInline (DWORD): o tamanho máximo que será permitido para arquivos "inline", ou seja, aqueles armazenados nos metadados. O padrão é 2048, que também é o padrão nas versões modernas do Linux - o parâmetro é chamado max_inline lá. Ele será preso ao valor máximo, que, a menos que você tenha alterado o tamanho do seu nó, será um tom abaixo de 16 kb.
SubvolId (QWORD): o ID do subvolume que tentaremos montar como raiz. Se não existir, esse parâmetro será silenciosamente ignorado. O ID do subvolume pode ser encontrado na folha de propriedades inode; Está em hexadecimal lá, em vez de decimal nas ferramentas Linux. O padrão é o que foi definido via btrfs subvolume set-default ; ou, falhando nisso, subvolume 5. O parâmetro equivalente no Linux é chamado de subvolid .
SkipBalance (DWORD): Defina como 1 para dizer ao motorista para não tentar retomar um saldo que estava em execução quando o sistema pela última vez desligou. O padrão é 0. O parâmetro equivalente no Linux é skip_balance .
NoPNP (DWORD): Útil apenas para depuração, isso força os volumes a aparecer, em vez de expor -os através do método usual de plug and play.
ZstdLevel (DWORD): Nível de compactação ZSTD, padrão 3.
NoTrim (DWORD): Defina isso como 1 para desativar o suporte de acabamento.
AllowDegraded (DWORD): Defina isso como 1 para permitir a montagem de um volume degradado, ou seja, um com um dispositivo ausente. Você é fortemente aconselhado a não ativar isso, a menos que precise.
NoRootDir (DWORD): Se você alterou seu subvolume padrão, nativamente ou por uma opção de registro, haverá um diretório oculto chamado $ root que aponta para onde a raiz normalmente estaria. Defina esse valor como 1 para impedir que isso apareça.
NoDataCOW (DWORD): Defina isso como 1 para desativar a cópia sobre escrever para novos arquivos. Este é o equivalente à bandeira nodatacow no Linux.
Eu apreciaria qualquer feedback que você possa ter, positivo ou negativo: [email protected].
Este código contém partes do seguinte software:
Copyright (C) 1995-2017 Jean-Loup Gailly e Mark Adler
Este software é fornecido 'como está', sem qualquer garantia expressa ou implícita. Em nenhum caso os autores serão responsabilizados por quaisquer danos decorrentes do uso deste software.
A permissão é concedida a qualquer pessoa para usar este software para qualquer finalidade, incluindo aplicativos comerciais, e alterá -lo e redistribuí -lo livremente, sujeito às seguintes restrições:
O WinBTRFS contém partes de uma versão inicial do LZO, que é Copyright 1996 Markus Oberhumer. As versões modernas são licenciadas sob a GPL, mas isso foi licenciado sob o LGPL, então acredito que não há problema em usar.
Copyright (c) 2016-presente, Facebook, Inc. Todos os direitos reservados.
Redistribuição e uso em formulários de origem e binária, com ou sem modificação, são permitidos, desde que as seguintes condições sejam atendidas:
As redistribuições do código -fonte devem manter o aviso de direitos autorais acima, esta lista de condições e o seguinte aviso.
As redistribuições em formato binário devem reproduzir o aviso de direitos autorais acima, esta lista de condições e o seguinte aviso na documentação e/ou outros materiais fornecidos com a distribuição.
Nem o nome do Facebook nem os nomes de seus colaboradores podem ser usados para endossar ou promover produtos derivados deste software sem permissão prévia por escrito específica.
Este software é fornecido pelos detentores de direitos autorais e colaboradores "como está" e quaisquer garantias expressas ou implícitas, incluindo, entre outros, as garantias implícitas de comercialização e condicionamento físico para um determinado objetivo. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF Aconselhado sobre a possibilidade de tais danos.
https://github.com/blake2/blake2 (domínio público)
https://github.com/amosnier/sha-2 (domínio público)