mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-14 23:05:33 -04:00
First shot at updating the README with Windows stuff
This commit is contained in:
parent
fdc0951fe5
commit
498e52380a
104
README.md
104
README.md
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
# DwarFS
|
# DwarFS
|
||||||
|
|
||||||
A fast high compression read-only file system
|
A fast high compression read-only file system for Linux and Windows
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
@ -16,6 +16,8 @@ A fast high compression read-only file system
|
|||||||
- [Experimental Python Scripting Support](#experimental-python-scripting-support)
|
- [Experimental Python Scripting Support](#experimental-python-scripting-support)
|
||||||
- [Static Builds](#static-builds)
|
- [Static Builds](#static-builds)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
|
- [Windows Support](#windows-support)
|
||||||
|
- [Building on Windows](#building-on-windows)
|
||||||
- [Comparison](#comparison)
|
- [Comparison](#comparison)
|
||||||
- [With SquashFS](#with-squashfs)
|
- [With SquashFS](#with-squashfs)
|
||||||
- [With SquashFS & xz](#with-squashfs--xz)
|
- [With SquashFS & xz](#with-squashfs--xz)
|
||||||
@ -279,6 +281,106 @@ DwarFS image.
|
|||||||
A description of the DwarFS filesystem format can be found in
|
A description of the DwarFS filesystem format can be found in
|
||||||
[dwarfs-format](doc/dwarfs-format.md).
|
[dwarfs-format](doc/dwarfs-format.md).
|
||||||
|
|
||||||
|
## Windows Support
|
||||||
|
|
||||||
|
Support for the Windows operating system is currently experimental.
|
||||||
|
Having worked pretty much exclusively in a Unix world for the past two
|
||||||
|
decades, my experience with Windows development is rather limited and
|
||||||
|
I'd expect there to definitely be bugs and rough edges in the Windows
|
||||||
|
code.
|
||||||
|
|
||||||
|
The Windows version of the DwarFS filesystem driver relies on the awesome
|
||||||
|
[WinFsp](https://github.com/winfsp/winfsp) project and its `winfsp-x64.dll`
|
||||||
|
must be discoverable by the `dwarfs.exe` driver.
|
||||||
|
|
||||||
|
The different tools should behave pretty much the same whether you're
|
||||||
|
using them on Linux or Windows. The file system images can be copied
|
||||||
|
between Linux and Windows and images created on one OS should work find
|
||||||
|
on the other.
|
||||||
|
|
||||||
|
There are a few things worth pointing out, though:
|
||||||
|
|
||||||
|
- DwarFS supports both hardlinks and symlinks on Windows, just as it
|
||||||
|
does on Linux. However, creating hardlinks and symlinks seems to
|
||||||
|
require admin privileges on Windows, so if you want to e.g. extract
|
||||||
|
a DwarFS image that contains links of some sort, you might run into
|
||||||
|
errors if you don't have the right privileges.
|
||||||
|
|
||||||
|
- The DwarFS driver on Windows correctly reports hardlink counts via
|
||||||
|
its API, but currently these counts are not correctly propagated
|
||||||
|
to the Windows file system layer. This is presumably due to a
|
||||||
|
[problem](https://github.com/winfsp/winfsp/issues/511) in WinFsp.
|
||||||
|
|
||||||
|
- When mounting a DwarFS image on Windows, the mount point must not
|
||||||
|
exist. This is different from Linux, where the mount point must
|
||||||
|
actually exist. Also, it's possible to mount a DwarFS image as a
|
||||||
|
drive letter, e.g.
|
||||||
|
|
||||||
|
dwarfs.exe image.dwarfs Z:
|
||||||
|
|
||||||
|
- Filter rules for `mkdwarfs` always require Unix path separators,
|
||||||
|
regardless of whether it's running on Windows or Linux.
|
||||||
|
|
||||||
|
### Building on Windows
|
||||||
|
|
||||||
|
Building on Windows is not too complicated thanks to [vcpkg](https://vcpkg.io/).
|
||||||
|
You'll need to install:
|
||||||
|
|
||||||
|
- [Visual Studio and the MSVC C/C++ compiler](https://visualstudio.microsoft.com/vs/features/cplusplus/)
|
||||||
|
|
||||||
|
- [Git](https://git-scm.com/download/win)
|
||||||
|
|
||||||
|
- [CMake](https://cmake.org/download/)
|
||||||
|
|
||||||
|
- [Ninja](https://github.com/ninja-build/ninja/releases)
|
||||||
|
|
||||||
|
- [WinFsp](https://github.com/winfsp/winfsp/releases)
|
||||||
|
|
||||||
|
- [pkg-config-lite](https://sourceforge.net/projects/pkgconfiglite/files/0.28-1/)
|
||||||
|
|
||||||
|
`WinFsp` is expected to be installed in `C:\Program Files (x68)\WinFsp`;
|
||||||
|
if it's not, you'll need to set `WINFSP_PATH` when running CMake via
|
||||||
|
`cmake/win.bat`.
|
||||||
|
|
||||||
|
You'll also need a `diff.exe` somewhere in your path in order to build
|
||||||
|
and run the test suite. I found it easiest to use the one installed by
|
||||||
|
[MSYS](https://www.msys2.org/).
|
||||||
|
|
||||||
|
Now you need to clone `vcpkg` and `dwarfs`:
|
||||||
|
|
||||||
|
```
|
||||||
|
> cd %HOMEPATH%
|
||||||
|
> mkdir git
|
||||||
|
> cd git
|
||||||
|
> git clone https://github.com/Microsoft/vcpkg.git
|
||||||
|
> git clone https://github.com/mhx/dwarfs
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, bootstrap `vcpkg`:
|
||||||
|
|
||||||
|
```
|
||||||
|
> .\vcpkg\bootstrap-vcpkg.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
And build DwarFS:
|
||||||
|
|
||||||
|
```
|
||||||
|
> cd dwarfs
|
||||||
|
> mkdir build
|
||||||
|
> cd build
|
||||||
|
> ..\cmake\win.bat
|
||||||
|
> ninja
|
||||||
|
```
|
||||||
|
|
||||||
|
Once that's done, you should be able to run the tests.
|
||||||
|
Set `CTEST_PARALLEL_LEVEL` according to the number of CPU cores in
|
||||||
|
your machine.
|
||||||
|
|
||||||
|
```
|
||||||
|
> set CTEST_PARALLEL_LEVEL=10
|
||||||
|
> ninja test
|
||||||
|
```
|
||||||
|
|
||||||
## Comparison
|
## Comparison
|
||||||
|
|
||||||
The SquashFS, `xz`, `lrzip`, `zpaq` and `wimlib` tests were all done on
|
The SquashFS, `xz`, `lrzip`, `zpaq` and `wimlib` tests were all done on
|
||||||
|
Loading…
x
Reference in New Issue
Block a user