fuse-ext2
fuse-ext2 copied to clipboard
Fuse-ext2 is a multi OS FUSE module to mount ext2, ext3 and ext4 file system devices and/or images with read write support.
Fuse Ext2
Fuse-ext2 is an EXT2/EXT3/EXT4 filesystem for FUSE, and is built to work with osxfuse.
Dependencies
Fuse-ext2 requires at least Fuse version 2.6.0 for Linux.
Fuse-ext2 requires at least Fuse for macOS version 2.7.5 or greater.
- Linux: Fuse
- macOS: Fuse for macOS
Alternate Install method of Fuse for macOS
Fuse for macOS can be installed via homebrew if Homebrew-Cask has been tapped.
Look for homebrew/cask
in the output.
To install Fuse for macOS using brew:
You will be interactively prompted for sudo access during the install.
brew install --cask osxfuse
For Fuse version 4.0.0 and higher use macfuse
brew install --cask macfuse
Building
Debian/Ubuntu:
Building from source depends on the following:
- m4
- autoconf
- automake
- libtool
- libfuse-dev
- e2fsprogs
- comerr-dev
- e2fslibs-dev
$ sudo apt-get install m4 autoconf automake libtool
$ sudo apt-get install libfuse-dev e2fsprogs comerr-dev e2fslibs-dev
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
Fedora
$ sudo dnf install @development-tools m4 autoconf automake libtool e2fsprogs libcom_err-devel fuse-libs e2fsprogs-devel fuse-devel
# build part
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
You can use checkinstall
or some other equivalent tool to generate an install
package for your distribution.
FreeBSD:
Install via pkg:
$ pkg install sysutils/fusefs-ext2
Building via ports:
$ cd /usr/ports/sysutils/fusefs-ext2
$ make install clean
macOS:
Dependencies:
Building from source depends on the following:
- m4
- autoconf
- automake
- libtool
- e2fsprogs
- xcode-select
Copy and paste this into a file such as /tmp/ext4/script.sh
, but do not name the file install.sh
. Remember to chmod +x script.sh
. Run it
from that directory - ./script.sh
#!/bin/sh
export PATH=/opt/gnu/bin:$PATH
export PKG_CONFIG_PATH=/opt/gnu/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir fuse-ext2.build
cd fuse-ext2.build
if [ ! -d fuse-ext2 ]; then
git clone https://github.com/alperakcan/fuse-ext2.git
fi
# m4
if [ ! -f m4-1.4.17.tar.gz ]; then
curl -O -L http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz
fi
tar -zxvf m4-1.4.17.tar.gz
cd m4-1.4.17
./configure --prefix=/opt/gnu
make -j 16
sudo make install
cd ../
# autoconf
if [ ! -f autoconf-2.69.tar.gz ]; then
curl -O -L http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
fi
tar -zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/opt/gnu
make
sudo make install
cd ../
# automake
if [ ! -f automake-1.15.tar.gz ]; then
curl -O -L http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
fi
tar -zxvf automake-1.15.tar.gz
cd automake-1.15
./configure --prefix=/opt/gnu
make
sudo make install
cd ../
# libtool
if [ ! -f libtool-2.4.6.tar.gz ]; then
curl -O -L http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
fi
tar -zxvf libtool-2.4.6.tar.gz
cd libtool-2.4.6
./configure --prefix=/opt/gnu
make
sudo make install
cd ../
# e2fsprogs
if [ ! -f e2fsprogs-1.43.4.tar.gz ]; then
curl -O -L https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.43.4/e2fsprogs-1.43.4.tar.gz
fi
tar -zxvf e2fsprogs-1.43.4.tar.gz
cd e2fsprogs-1.43.4
./configure --prefix=/opt/gnu --disable-nls
make
sudo make install
sudo make install-libs
sudo cp /opt/gnu/lib/pkgconfig/* /usr/local/lib/pkgconfig
cd ../
# fuse-ext2
export PATH=/opt/gnu/bin:$PATH
export PKG_CONFIG_PATH=/opt/gnu/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
cd fuse-ext2
./autogen.sh
CFLAGS="-idirafter/opt/gnu/include -idirafter/usr/local/include/osxfuse/" LDFLAGS="-L/opt/gnu/lib -L/usr/local/lib" ./configure
make
sudo make install
Test
The e2fsprogs live in /opt/gnu/bin and /opt/gnu/sbin. fuse-ext2 is in /usr/local/bin.
cd
dd if=/dev/zero of=/tmp/test-fs.ext4 bs=1024 count=102400
/opt/gnu/sbin/mkfs.ext4 /tmp/test-fs.ext4
mkdir -p ~/mnt/fuse-ext2.test-fs.ext4
fuse-ext2 /tmp/test-fs.ext4 ~/mnt/fuse-ext2.test-fs.ext4 -o rw+,allow_other,uid=501,gid=20
To verify the UID and GID of the user mounting the file system:
id
To verify the file system has mounted properly:
mount
Usage
See the Man page for options.
Usage: fuse-ext2 <device|image_file> <mount_point> [-o option[,...]]
Options: ro, rw+, force, allow_other
Please see details in the manual.
Example: fuse-ext2 /dev/sda1 /mnt/sda1
Bugs
- Multithread support is broken for now, so fuse operates in a single thread.
- There are no known bugs for read-only mode, read only mode should be ok for everyone.
- Even though write support is available, please do not mount your filesystems with write support unless you have nothing to lose.
Please send the output of the command below when reporting bugs as a GitHub Issue. Before submitting a bug report, please look at the existing issues first.
$ /usr/local/bin/fuse-ext2 -v /dev/path /mnt/point -o debug
Important: Partition Labels
Please do not use commas ,
in partition labels.
Wrong: e2label /dev/disk0s3 "linux,ext3"
Correct: e2label /dev/disk0s3 "linux-ext3"
Contact
Alper Akcan [email protected]