Winbtrfs는 차세대 Linux 파일 시스템 BTRFS의 Windows 드라이버입니다. 처음부터 상환하면 Linux 커널의 코드가 포함되어 있지 않으며 Windows XP의 모든 버전에서 작동해야합니다. 또한 무료 운영 체제 Reactos의 일부로 포함되어 있습니다.
BTRFS 파일 시스템이 Linux에서 만든 MD 소프트웨어 RAID 장치에있는 경우 Windows 아래에 표시되도록 WinMD가 필요합니다.
BTRFS에서 Windows를 부팅 할 수있는 실험적 부트 로더 인 Quible도 참조하십시오.
첫째, 면책 조항 :
이 소프트웨어는 자신의 위험에 따라 사용합니다. 파일 시스템에 대한 손상에 대해 책임을지지 않습니다. 일상적인 사용에 적합해야하지만 어쨌든 백업을해야합니다.
여기의 모든 것은 GNU Lesser General Public License (LGPL)에 따라 출시됩니다. 자세한 내용은 파일 라이센스를 참조하십시오. 당신은 당신이 원하는대로 소스 코드를 사용하는 것이 좋습니다. 그리고 당신이 멋진 것을 생각해 내면 메모 ([email protected])에 감사드립니다.
이 문서 끝에서 여기에 포함 된 타사 코드의 저작권 세부 사항은 참조하십시오.
mkbtrfs.exe 및 ubtrfs.dll 사용하여 새로운 파일 시스템 생성free_space_cache )드라이버를 설치하려면 최신 릴리스를 다운로드하여 추출하여 BTRFS.INF를 마우스 오른쪽 버튼으로 클릭하고 설치를 선택하십시오. 운전자가 서명하므로 최신 버전의 Windows에서 상자에서 작동해야합니다.
Wind 특정 필요가 없다면 BIOS에서 안전한 부팅을 끄는 것이 더 쉽습니다. Windows 11 Soft requires가 설치할 수 있도록 보안 부팅을 보장하지만 꺼져있는 상태에서 잘 작동합니다.
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의 값을 설정하십시오. 재부팅 후 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 도구 체인 파일로 사용하여 makefile을 생성하십시오.
사용자 매핑은 레지스트리 키 HKLM System CurrentControlset Services Btrfs Mappings에 저장됩니다. Windows SID의 이름으로 dword를 만듭니다 (예 : S-1-5-21-137986684-2432464051-42478967-1001) Linux UID (예 : 1000)의 값. 다음에 운전자가로드되면 적용됩니다.
wmic useraccount get name,sid 실행하여 현재 SID를 찾을 수 있습니다.
마찬가지로, 그룹 매핑은 GroupMappings에 저장됩니다. 기본 항목은 Windows의 사용자 그룹을 GID 100에 맵핑합니다.이 그룹은 일반적으로 Linux의 "사용자"입니다. 여기에 사용자 SIDS를 지정하여 사용자가 생성 한 파일을 특정 그룹에 속하도록 강요 할 수도 있습니다. SetGid 플래그는 Linux에서도 작동합니다.
사용자 액세스 제어 토큰에서 실행되는 프로세스는 사용자 계정으로 내장 관리자 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 플래그는 linux에서 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/-- 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 으로 이동하여 UpgradedSystem 이라는 새로운 DWORD 값을 작성하고 1로 설정하고 재부팅하십시오.
또는 BIOS 설정에서 항상 보안 부팅을 해제 할 수 있습니다.
이것은 Microsoft가 LXSS로 하드 코딩 한 것으로, 아마도 mkdir /mnt/c/WiNdOwS 실행하여 사람들이 시스템을 사용하는 것을 막기 위해
Shell Extension이 설치된 상태에서 Explorer에서 드라이브를 마우스 오른쪽 단추로 클릭하고 속성을 클릭하고 BTRFS 탭으로 이동하십시오. 드라이브 문자를 변경할 수있는 버튼이 있어야합니다.
Regedit에서는 HKEY_LOCAL_MACHINESYSTEMMountedDevices 에서 관련 항목을 삭제 한 다음 재부팅하십시오.
포함 된 명령 줄 프로그램 mkbtrfs.exe를 사용하십시오. 파일 시스템 목록이 하드 코딩되었으므로 불행히도 Windows 자체 대화 상자에 Btrfs를 추가 할 수 없습니다. BTRFS 특정 옵션을 설정할 필요가없는 경우 format /fs:btrfs 실행할 수도 있습니다.
Windows의 형식 대화 상자 상자가 나타나지 않으면 /fs 플래그 (예 : format /fs:ntfs D: 로 format.com을 실행하십시오.
Synology는 블록 장치에 LVM을 사용하는 것 같습니다. 누군가가 Windows 용 LVM 드라이버를 작성할 때까지 운이 좋지 않습니다.
TheCus는 블록 장치에 Linux의 MD Raid를 사용합니다. WinMD도 설치해야합니다.
KB3033929가 설치되어 있는지 확인하십시오. 또는 모든 업데이트가 포함 된 "에스크로"ISO에서 설치하는 것을 고려하십시오.
Paragon의 파일 시스템 읽기 소프트웨어는 자동 마운트를 비활성화하는 것으로 알려져 있습니다. Paragon을 비활성화하거나 제거한 다음 diskpart 실행하고 automount enable 입력하여 Automount를 다시 활성화하십시오.
매우 오래된 버전의 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 옵션 세트 일 때 LXS에서 디렉토리 생성 고정 문제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 에 의해 선택되지 않은 extent 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에는 오류 및 수정, 경고 및 흔적의 세 가지 수준의 디버그 메시지가 있습니다. 드라이버의 릴리스 버전은 DbgPrint 통해 로그인 오류 및 FIXMES 만 표시합니다. https://technet.microsoft.com/en-gb/sysinternals/debugview에서 사용할 수있는 Microsoft 프로그램 디버그 뷰를 통해 이러한 메시지를 볼 수 있습니다.
문제를보고하려면 전체 디버그 로그를 첨부 할 수 있다면 큰 도움이 될 것입니다. 이렇게하려면 디버그 버전의 드라이버를 사용해야합니다. Debug x64 또는 Debug x86의 파일을 x64 또는 x86로 복사하십시오. 또한 HKLM System CurrentControlset Services Btrfs에서 레지스트리 항목을 설정해야합니다.
DebugLogLevel (dword) : 0, 메시지가없는 경우 0, 오류 및 수정의 경우 1, 경고의 경우 2 개, 트레이스를 포함한 절대적으로 모든 경우.LogDevice (문자열, 선택 사항) : DeviceSerial0 과 같은 직렬 장치. 이것은 아마도 가상 머신에서만 유용 할 것입니다.LogFile (string, 옵션) : 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) : Zlib 압축을 선호하려면 1로 설정, LZO 압축을 선호하려면 2, ZSTD 압축을 선호하려면 3을 1로 설정하십시오. 기본값은 0이며, incompat 플래그가 설정되면 zstd 또는 lzo 압축을 사용하고 Zlib는 그렇지 않으면 Zlib을 사용합니다.
FlushInterval (dword) : 메타 데이터 사이의 초의 간격은 플러시됩니다. Linux에서와 같이 기본값은 30입니다. 매개 변수를 commit there라고합니다.
ZlibLevel (dword) : -1에서 9 사이의 숫자로 파일을 압축하는 데 얼마나 많은 CPU 시간이 소요되는지를 결정합니다. 빠른 CPU이지만 느린 디스크가 있거나 그 반대도 마찬가지라면 이것으로 바이올린을 원할 수도 있습니다. 기본값은 3이며 Linux의 하드 코드 값입니다.
MaxInline (DWORD) : "인라인"파일에 허용되는 최대 크기, 즉 메타 데이터에 저장된 파일. 기본값은 2048이며, 이는 Linux의 최신 버전에서도 기본값입니다. 매개 변수를 max_inline 이라고합니다. 노드 크기를 변경하지 않는 한 16kb 미만의 그늘이됩니다.
SubvolId (qword) : 우리가 루트로 장착하려고 할 서브 볼륨의 ID. 존재하지 않으면이 매개 변수는 조용히 무시됩니다. 하위 볼륨 ID는 inode 속성 시트에서 찾을 수 있습니다. Linux 도구의 소수점과는 달리 16 진수에 있습니다. 기본값은 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 및 Mark Adler
이 소프트웨어는 명시 적 또는 묵시적 보증없이 'AS-IS'가 제공됩니다. 어떠한 경우에도 저자는이 소프트웨어 사용으로 인한 손해에 대해 책임을지지 않습니다.
상업용 응용 프로그램을 포함하여 모든 목적 으로이 소프트웨어를 사용하고 다음과 같은 제한 사항에 따라이 소프트웨어를 사용 하여이 소프트웨어를 사용하도록 권한이 부여됩니다.
Winbtrfs에는 LZO의 초기 버전의 일부가 포함되어 있으며, 이는 Copyright 1996 Markus Oberhumer입니다. 최신 버전은 GPL에 따라 라이센스가 부여되지만 LGPL에 따라 라이센스가 부여되었으므로 사용해도 괜찮다고 생각합니다.
저작권 (c) 2016- 프레젠트, Facebook, Inc. 판권 소유.
수정 유무에 관계없이 소스 및 이진 형태의 재분배 및 사용은 다음과 같은 조건이 충족되면 허용됩니다.
소스 코드의 재분배는 위의 저작권 통지,이 조건 목록 및 다음 면책 조항을 유지해야합니다.
이진 형식의 재분배는 위의 저작권 통지,이 조건 목록 및 문서의 다음 면책 조항 및 배포와 함께 제공되는 기타 자료를 재현해야합니다.
Facebook이라는 이름이나 기고자의 이름은 특정 사전 서면 허가 없이이 소프트웨어에서 파생 된 제품을 보증하거나 홍보하는 데 사용될 수 없습니다.
이 소프트웨어는 저작권 보유자 및 기고자 "와"그대로 "및 상업성에 대한 묵시적 보증 및 특정 목적에 대한 적합성을 포함하되 이에 국한되지 않는 명시 적 또는 묵시적 보증에 의해 제공됩니다. 어떠한 경우에도 저작권 보유자 또는 기고자는 직접, 간접적, 부수적, 특수, 모범적 또는 결과적 손해 (대체 상품 또는 서비스 조달, 사용 손실, 데이터 또는 이익; 또는 사업 중단)에 대해 책임을지지 않으면 서, 부정적인 책임 또는 불법 행위에 관계없이 어떤 책임이든, 불법 행위를 포함하는지에 대한 책임은 어떠한 경우에도 책임을지지 않습니다. 그러한 손상의 가능성에 대해 조언한다면.
https://github.com/blake2/blake2 (공개 도메인)
https://github.com/amosnier/sha-2 (공개 도메인)