Skip to content

bobranten/Ext4Fsd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Latest release

Signed driver for Windows 10 and Windows 11:
https://www.accum.se/~bosse/ext2fsd/0.71/Ext2Fsd-0.71-setup.exe

Updated Ext2Mgr https://www.accum.se/~bosse/ext2fsd/next/Ext2Mgr.exe
that gives more detailed information on the type of filesystems on
the disk. If an on disk filesystem contains new ext4 features that
is not supported by the Windows driver it will show a '+' sign after
the filesystem name, e.g "EXT4+". You can run this application
together with an already installed driver.

Changes to the source code in git after latest release

Most users can continue to use the latest release, it contains
an install program and a signed driver. Below is a list of
what has been implemented in the source code in git since then.
If you need any of these features you can compile the driver
or application yourself.

Driver:

- Corrected an error that made the debug version of the driver
  crash. A number of calls to Ext2FreePool where misstakenly
  replaced with direct calls to ExFreePool. This error can
  not happen in the release version of the driver.

- The existing time fields in the superblock and the inodes
  is using 32-bit values for time in seconds since 1970. They
  will overflow in 2038. The ext4 filesystem has therefore
  been extended with new time fields. In the superblock they
  have names ending in "_hi" containing the high 8-bit of the
  the seconds while the existing time fields contain the lower
  32-bit. In the inodes the new fileds has names ending in
  "_extra". They contain both the high 2-bit of the seconds,
  that is bit 33 and 34 and also the nano seconds encoded as
  (nsec << 2 | epoch) The existing fields contain the low 32-bit
  of the seconds.

- The call "query volume information" will read the fields
  s_mkfs_time and s_mkfs_time_hi from the superblock.

- The fields s_mtime and s_mtime_hi in the superblock will be
  updated with the current time at mount time.

- The fields s_wtime and s_wtime_hi in the superblock will be
  updated with the current time at shutdown.

Application:

- If an on disk filesystem contains new ext4 features that is
  not supported by the Windows driver a '+' sign will be shown
  after the filesystem name, e.g "EXT4+".

- More filesystems are recognized. The main window with
  a list of disks and partitions will now tell the type of
  filesystem for BTRFS, XFS, BSD, LVM and RAID (MD) in
  adidition to EXT

- The used size of swap partitions is listed as zero.

- The donate dialog box is disabled because the information in
  it is outdated.

About

This is a branch of the Ext2Fsd project by Matt Wu where I try to
implement support for metadata checksums and jbd2. I have also
updated the project so it can be compiled with Visual Studio 2019
and Visual Studio 2022.
The current status of the development is that all metadata checksums
is implemented and jbd2 is ported to support 64-bit blocknumbers.
The driver is now ready to be tested!
This work is dedicated to my mother Berit Ingegerd Branten.
Bo Branten <[email protected]>

Test

To test this driver run the installation programs:
Signed driver for Windows 10 and Windows 11:
https://www.accum.se/~bosse/ext2fsd/0.71/Ext2Fsd-0.71-setup.exe
Signed driver files for manual install: (even ARM/ARM64)
https://www.accum.se/~bosse/ext2fsd/0.71/signed/
Unsigned driver for Windows XP, Windows Vista, Windows 7 and Windows 8:
https://www.accum.se/~bosse/ext2fsd/0.71/Ext2Fsd-0.71-setup-xp.exe

If you compile the driver yourself you only need to run the installation
program once, then you can copy your driver file over the old in
\windows\system32\drivers.
Now you can read and write ext4 filesystems using the new features
metadata checksums and 64-bit blocknumbers from Windows.

Introduction

Ext4Fsd is an ext2/3/4 file system driver for Windows (XP/Vista/7/8/10/11).
It's a free and open-source software, everyone can modify or distribute
under GNU GPLv2.

Active Developers

Bo Branten : https://github.com/bobranten
             https://www.accum.se/~bosse

Thanks to Olof Lagerkvist https://github.com/LTRData
for important help to this project!

Previous Developers

Matt Wu : https://github.com/matt-wu
          https://blog.dynox.cn

KaHo Ng : https://github.com/ngkaho1234

Old Development Website

Matt Wu <[email protected]>
https://www.ext2fsd.com

Supported Features by Ext4Fsd

1, flexible inode size: > 128 bytes, up to block size
2, dir_index:    htree directory index
3, filetype:     extra file mode in dentry
4, large_file:   > 4G files supported
5, sparse_super: super block backup in group descriptor
6, uninit_bg:    fast fsck and group checksum
7, extent:       full support with extending and shrinking.
8, journal:      only support replay for internal journal
9, flex_bg:      first flexible metadata group
10, symlink and hardlink
11, mount-as-user: specifed uid/gid by user

Read-only Ext4 Features

If any of the ext4 features below is present on a filesystem
the Windows driver will automatically mount the fs read-only:

1, EXT4_FEATURE_RO_COMPAT_BIGALLOC
2, EXT4_FEATURE_RO_COMPAT_QUOTA
3, EXT4_FEATURE_RO_COMPAT_PROJECT
4, EXT4_FEATURE_RO_COMPAT_VERITY
5, EXT4_FEATURE_RO_COMPAT_ORPHAN_PRESENT

Unsupported Ext4 Features

If any of the ext4 features below is present on a filesystem
the Windows driver can not mount the fs at all:

1, EXT4_FEATURE_INCOMPAT_EA_INODE (extended attributes)
2, EXT4_FEATURE_INCOMPAT_MMP (multiple mount protection)
3, EXT4_FEATURE_INCOMPAT_INLINE_DATA (storing small files in inode)
4, EXT4_FEATURE_INCOMPAT_ENCRYPT
5, EXT4_FEATURE_INCOMPAT_CASEFOLD (case insensitive file names (claimed to be used by SteamOS as default))
6, EXT4_FEATURE_INCOMPAT_LARGEDIR (3-level htree)