Giter Club home page Giter Club logo

fuse-ext2's Introduction

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.

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:

OSXfuse

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]

fuse-ext2's People

Contributors

akbcode avatar alexkalmuk avatar alperakcan avatar asomers avatar congma avatar dalessan avatar danieltimlee avatar danieltroger avatar davidschlachter avatar drewwells avatar easyaspi314 avatar ehaupt avatar franz-josef-kaiser avatar gpz500 avatar hammady avatar ihatetoregister avatar ipatch avatar jorgesilva avatar martinkouba avatar ngkaho1234 avatar oddlots avatar oehm-smith avatar ole2mail avatar pascalwoerde avatar popstas avatar rd235 avatar sforshee avatar thesauri avatar vanreece avatar yuppy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fuse-ext2's Issues

Mac OS X: unable to auto mount inserting an USB memory stick

At the insertion of an USB memory stick with a single ext4 partition, the partition is not mounted and these lines compare in /var/log/fuse-ext2_util.log:

[...]
2016-04-04 18:29:07: fuse-ext2 script invoked with command line "/System/Library/Filesystems/fuse-ext2.fs/fuse-ext2.util" "-m" "-o" "nodev" "-o" "noowners" "-o" "nosuid" "/dev/disk1s1" "/Volumes/Untitled 3"
2016-04-04 18:29:07: Invoking user: root
2016-04-04 18:29:07: [Mount] Entering function Mount...
2016-04-04 18:29:07: [Mount] Processing argument "/dev/disk1s1"
2016-04-04 18:29:07: [Mount] Processing argument "/Volumes/Untitled 3"
2016-04-04 18:29:07: [Mount] Got plain device "/dev/disk1s1"
2016-04-04 18:29:07: [Mount] Got raw device "/dev/rdisk1s1"
2016-04-04 18:29:07: [Mount] Invoking:
2016-04-04 18:29:07: [Mount]   "/usr/local/bin/fuse-ext2.wait" "/Volumes/Untitled 3" "5" "/usr/local/bin/fuse-ext2" "/dev/disk1s1" "/Volumes/Untitled 3" "-oauto_xattr,defer_permissions,local"
2016-04-04 18:29:13: [Mount] /usr/local/bin/fuse-ext2.wait returned with retval: 0
2016-04-04 18:29:13: [Mount] Output from mount operation: Mounting /dev/disk1s1 Read-Only.
Use 'force' or 'rw+' options to enable Read-Write mode
mount_osxfusefs: 'default_permissions' can't be used with 'defer_permissions'
Did not receive a signal within 5.000000 seconds. Exiting...
2016-04-04 18:29:13: [Mount] Executing "/usr/local/bin/fuse-ext2.daemon"
2016-04-04 18:29:13: [Mount] Exiting function mount...

After having removed defer_permissions from mount options (modified /System/Library/Filesystems/fuse-ext2.fs/fuse-ext2.util as OPTIONS="auto_xattr,defer_permissions" --> OPTIONS="auto_xattr") it works as expected.

Write file semm cause som error in filesystem

Hello,

I have tow computer and an ext4 external drive use with fuse-ext2.

It seem that when i write som file on mac os el captain or sierra and then I check the filesystem on ubuntu 16.04 (linux) witch fsck (e2fsck) I found several error in file system

Step to reproduce

  1. take an external ext4 hand drive
  2. Install fuse-ext2 and fuse for osx on el captain or sierra
  3. copy some file on external ext4
  4. on linux, check the hard drive with fsck or e2fsck command
    Result : there is som error on the file system.

Could you confirm my test and help me to fix this issues `?

thanks for your support

Best regards

Battant

e2fsprogs makefile : make[1]: Nothing to be done for `all'.

Hello,

Here is my configuration 👍
Mac os 10.11.6

My problem 👍 I couldn't bull fuse-ext2 because there is probabely an error in e2fsprogs makefile

Message 👍

make[1]: Nothing to be done for `all'.

See bellow the makefile file contenant

srcdir = .
top_srcdir = .

top_builddir = .
my_dir = .
INSTALL = /usr/bin/install -c

Beginning of file MCONFIG

all::

check::

SHELL = /bin/sh

COMPRESS_EXT = gz bz2 bz Z

prefix = /opt/gnu
root_prefix = /opt/gnu
exec_prefix = ${prefix}
root_bindir = ${exec_prefix}/bin
root_sbindir = ${exec_prefix}/sbin
root_libdir = ${exec_prefix}/lib
datarootdir = ${prefix}/share
bindir = ${exec_prefix}/bin
sbindir = ${exec_prefix}/sbin
libdir = ${exec_prefix}/lib
datadir= ${datarootdir}
localedir = $(datadir)/locale
root_sysconfdir= ${prefix}/etc
includedir = ${prefix}/include
mandir = ${datarootdir}/man
man1dir = $(mandir)/man1
man3dir = $(mandir)/man3
man5dir = $(mandir)/man5
man8dir = $(mandir)/man8
infodir = ${datarootdir}/info
datadir = ${datarootdir}
pkgconfigdir = $(libdir)/pkgconfig

V =
ifeq ($(strip $(V)),)

E = @echo

ES = echo

Q = @

E = @echo
ES = echo
Q = @

else
E = @#
ES = #
Q =
endif

E = @echo

ES = echo

Q = @

CHECK=sparse
CHECK_OPTS=-Wsparse-all -Wno-transparent-union -Wno-return-void -Wno-undef -Wno-non-pointer-null
ifeq ("$(C)", "2")
CHECK_CMD=$(CHECK) $(CHECK_OPTS) -Wbitwise -D__CHECK_ENDIAN__
else
ifeq ("$(C)", "1")
CHECK_CMD=$(CHECK) $(CHECK_OPTS)
else
CHECK_CMD=@true
endif
endif

CHECK_CMD=@true

CC = gcc
BUILD_CC = gcc
CFLAGS = -g -O2 -DHAVE_CONFIG_H
CPPFLAGS = -I. -I$(top_builddir)/lib -I$(top_srcdir)/lib -I$(top_builddir)/intl -I$(top_srcdir)/intl
ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS)
LDFLAGS =
ALL_LDFLAGS = $(LDFLAGS)
LDFLAGS_STATIC = $(LDFLAGS)
BUILD_CFLAGS = -g -O2 -I. -I$(top_builddir)/lib -I$(top_srcdir)/lib -I$(top_builddir)/intl -I$(top_srcdir)/intl -DHAVE_CONFIG_H
BUILD_LDFLAGS =
RDYNAMIC = -rdynamic
LINK_BUILD_FLAGS =
LINK_INSTALL_FLAGS = -f
RM = /bin/rm
LN = /bin/ln
LN_S = ln -s
MV = /bin/mv
CP = /bin/cp
CHMOD = /bin/chmod
AR = ar
AWK = awk
SED = /usr/bin/sed
PERL = /usr/bin/perl
RANLIB = ranlib
STRIP = strip
LD = $(PURE) gcc
ARUPD = $(AR) r
ARGEN = $(AR) rc
LDCONFIG = :
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_SCRIPT = ${INSTALL}
MKINSTALLDIRS = $(top_builddir)/config/mkinstalldirs

Library definitions

LIB = $(top_builddir)/lib
LIBSS = $(LIB)/libss.a -ldl
LIBCOM_ERR = $(LIB)/libcom_err.a
LIBE2P = $(LIB)/libe2p.a
LIBEXT2FS = $(LIB)/libext2fs.a
LIBUUID = $(LIB)/libuuid.a
LIBQUOTA = $(LIB)/libquota.a
LIBBLKID = $(LIB)/libblkid.a $(LIBUUID)
LIBINTL = ${top_builddir}/intl/libintl.a -liconv -Wl,-framework -Wl,CoreFoundation
SYSLIBS =
DEPLIBSS = $(LIB)/libss.a
DEPLIBCOM_ERR = $(LIB)/libcom_err.a
DEPLIBUUID = $(LIB)/libuuid.a
DEPLIBQUOTA = $(LIB)/libquota.a
DEPLIBBLKID = $(LIB)/libblkid.a $(DEPLIBUUID)

STATIC_LIBSS = $(LIB)/libss.a -ldl
STATIC_LIBCOM_ERR = $(LIB)/libcom_err.a
STATIC_LIBE2P = $(LIB)/libe2p.a
STATIC_LIBEXT2FS = $(LIB)/libext2fs.a
STATIC_LIBUUID = $(LIB)/libuuid.a
STATIC_LIBQUOTA = $(LIB)/libquota.a
STATIC_LIBBLKID = $(LIB)/libblkid.a $(STATIC_LIBUUID)
DEPSTATIC_LIBSS = $(LIB)/libss.a
DEPSTATIC_LIBCOM_ERR = $(LIB)/libcom_err.a
DEPSTATIC_LIBUUID = $(LIB)/libuuid.a
DEPSTATIC_LIBQUOTA = $(LIB)/libquota.a
DEPSTATIC_LIBBLKID = $(LIB)/libblkid.a $(DEPSTATIC_LIBUUID)

PROFILED_LIBSS = $(LIB)/libss.a -ldl
PROFILED_LIBCOM_ERR = $(LIB)/libcom_err.a
PROFILED_LIBE2P = $(LIB)/libe2p.a
PROFILED_LIBEXT2FS = $(LIB)/libext2fs.a
PROFILED_LIBUUID = $(LIB)/libuuid.a
PROFILED_LIBQUOTA = $(LIB)/libquota.a
PROFILED_LIBBLKID = $(LIB)/libblkid.a $(PROFILED_LIBUUID)
DEPPROFILED_LIBSS = $(LIB)/libss.a
DEPPROFILED_LIBCOM_ERR = $(LIB)/libcom_err.a
DEPPROFILED_LIBUUID = $(LIB)/libuuid.a
DEPPROFILED_LIBQUOTA = $(LIB)/libquota.a
DEPPROFILED_LIBBLKID = $(LIB)/libblkid.a $(DEPPROFILED_LIBUUID)

A fast substitution command for fixing up man pages, shell scripts, etc.

SUBST_CONF=$(top_builddir)/util/subst.conf
SUBSTITUTE= $(top_builddir)/util/subst -f $(SUBST_CONF)
SUBSTITUTE_UPTIME= $(top_builddir)/util/subst -t -f $(SUBST_CONF)
DEP_SUBSTITUTE= $(top_builddir)/util/subst $(SUBST_CONF)

$(top_builddir)/util/subst:
cd $(top_builddir)/util ; $(MAKE) subst

Script for installing symlinks (for shared libraries)

$(top_builddir)/util/install-symlink: $(top_srcdir)/util/install-symlink.in
$(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=util/install-symlink ./config.status
chmod +x $(top_builddir)/util/install-symlink

$(top_builddir)/util/symlinks:
cd $(top_builddir)/util ; $(MAKE) symlinks

INSTALL_SYMLINK = /bin/sh $(top_builddir)/util/install-symlink

--symlinks=$(top_builddir)/util/symlinks
DEP_INSTALL_SYMLINK = $(top_builddir)/util/install-symlink
$(top_builddir)/util/symlinks

Warning flags

Run make gcc-wall to do a build with warning messages.

WFLAGS= -std=c99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE
-pedantic $(WFLAGS_EXTRA)
-Wall -W -Wwrite-strings -Wpointer-arith
-Wcast-qual -Wcast-align -Wno-variadic-macros
-Wstrict-prototypes -Wmissing-prototypes
-Wformat-security -Wformat-nonliteral
-Wmissing-format-attribute -O2 -Wstrict-aliasing
-Wnested-externs -Winline -DNO_INLINE_FUNCS -Wshadow
-UENABLE_NLS

gcc-wall-new:
(make CFLAGS="-g -O2 $(WFLAGS)" &gt; /dev/null) 2&gt;&amp;1 | sed -f $(top_srcdir)/util/gcc-wall-cleanup

gcc-wall:
make clean > /dev/null
make gcc-wall-new

Installation user and groups

BINGRP= bin
BINOWN= bin
BINMODE= 555
INCGRP= bin
INCOWN= bin
INCMODE= 444
LIBOWN= bin
LIBGRP= bin
LIBMODE= 444
MANGRP= bin
MANOWN= bin
MANMODE= 444

Autoconf magic...

DEP_LIB_MAKEFILES = $(top_srcdir)/lib/Makefile.library
$(top_srcdir)/lib/Makefile.elf-lib
$(top_srcdir)/lib/Makefile.bsd-lib
$(top_srcdir)/lib/Makefile.darwin-lib
$(top_srcdir)/lib/Makefile.solaris-lib
$(top_srcdir)/lib/Makefile.profile

$(top_builddir)/config.status: $(top_srcdir)/configure
cd $(top_builddir); ./config.status --recheck

$(top_builddir)/MCONFIG: $(top_srcdir)/MCONFIG.in $(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=MCONFIG ./config.status

$(top_builddir)/lib/config.h: $(top_srcdir)/lib/config.h.in
$(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=lib/config.h ./config.status

$(top_builddir)/lib/dirpaths.h: $(DEP_SUBSTITUTE) $(top_srcdir)/lib/dirpaths.h.in
$(E) " SUBST $@"
$(Q) $(SUBSTITUTE) $(top_srcdir)/lib/dirpaths.h.in $@

$(top_builddir)/lib/substitute_sh: $(top_srcdir)/lib/substitute_sh.in
$(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=lib/substitute_sh ./config.status

$(top_builddir)/util/subst.conf: $(top_srcdir)/util/subst.conf.in
$(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=util/subst.conf ./config.status

Makefile: $(srcdir)/Makefile.in $(top_builddir)/MCONFIG
$(DEP_MAKEFILE) $(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=$(my_dir)/Makefile ./config.status

#$(top_srcdir)/configure: $(top_srcdir)/configure.in

cd $(top_srcdir) && autoheader && autoconf

coverage.txt: Makefile $(SRCS)
if test -n "$(SRCS)"; then
gcov -s $(top_srcdir) -o . $(SRCS) > coverage.txt 2>&1 ;
fi

clean::
$(RM) -f *.gcda *.gcov *.gcno coverage.txt

Make depend magic...

.depend: Makefile $(SRCS) $(top_srcdir)/depfix.sed $(top_srcdir)/wordwrap.pl
if test -n "$(SRCS)" ; then
$(CC) -M $(ALL_CFLAGS) $(DEPEND_CFLAGS) $(SRCS) |
$(SED) -f $(top_srcdir)/depfix.sed
-e 's; $(srcdir)/; $$(srcdir)/;g'
-e 's; $(top_srcdir)/; $$(top_srcdir)/;g'
-e 's; $(top_builddir)/; $$(top_builddir)/;g'
-e 's; ./; ;g'
-e '/^#/d'
-e '/^ *\$$/d' |
$(PERL) $(top_srcdir)/wordwrap.pl > .depend;
else :; fi

depend:: .depend
if test -n "$(SRCS)" ; then
sed -e '/^# +++ Dependency line eater +++/,$$d'
< $(srcdir)/Makefile.in | cat - .depend
> $(srcdir)/Makefile.in.new;
if cmp -s $(srcdir)/Makefile.in $(srcdir)/Makefile.in.new ; then
$(RM) $(srcdir)/Makefile.in.new ;
else
$(MV) $(srcdir)/Makefile.in $(srcdir)/Makefile.in.old;
$(MV) $(srcdir)/Makefile.in.new $(srcdir)/Makefile.in;
fi ; else :; fi

End of file MCONFIG

% : %.sh

RESIZE_DIR= resize
DEBUGFS_DIR= debugfs
UUID_LIB_SUBDIR= lib/uuid
BLKID_LIB_SUBDIR= lib/blkid
QUOTA_LIB_SUBDIR= lib/quota

LIB_SUBDIRS=lib/et lib/ss lib/e2p $(UUID_LIB_SUBDIR) $(BLKID_LIB_SUBDIR) $(QUOTA_LIB_SUBDIR) lib/ext2fs intl
PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po
SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests

SUBS= util/subst.conf lib/config.h lib/dirpaths.h
lib/ext2fs/ext2_types.h lib/blkid/blkid_types.h lib/uuid/uuid_types.h

TAR=tar

all:: subs
$(MAKE) libs
$(MAKE) progs
$(MAKE) docs

subs: $(DEP_SUBSTITUTE)
@for i in $(SUBS) ; do if test -d dirname $$i ;
then $(MAKE) $$i || exit $$? ; fi ; done
@(if test -d lib/et ; then cd lib/et && $(MAKE) compile_et; fi)
@(if test -d lib/ext2fs ; then cd lib/ext2fs && $(MAKE) ext2_err.h; fi)

progs: all-progs-recursive
libs: all-libs-recursive
all-progs-recursive all-libs-recursive: subs

e2fsprogs.spec: $(DEP_SUBSTITUTE) e2fsprogs.spec.in
cd $(top_builddir); CONFIG_FILES=./e2fsprogs.spec ./config.status

rpm: e2fsprogs.spec
sh contrib/build-rpm

docs:
-@test -d doc && cd doc && $(MAKE) libext2fs.info

install-doc-libs:
-@test -d doc && cd doc && $(MAKE) install-doc-libs

uninstall-doc-libs:
-@test -d doc && cd doc && $(MAKE) uninstall-doc-libs

clean-doc:
-@test -d doc && cd doc && $(MAKE) clean

distclean-doc:
-test -d doc && cd doc && $(MAKE) distclean

install: subs all-libs-recursive install-progs-recursive
install-shlibs-libs-recursive install-doc-libs
if test ! -d e2fsck && test ! -d debugfs && test ! -d misc && test ! -d ext2ed ; then $(MAKE) install-libs ; fi

install-strip: subs all-libs-recursive install-strip-progs-recursive
install-shlibs-strip-libs-recursive install-doc-libs

uninstall: uninstall-progs-recursive uninstall-shlibs-libs-recursive uninstall-doc-libs

install-libs: install-libs-recursive

uninstall-libs: uninstall-libs-recursive

coverage.txt: coverage.txt-recursive

check-recursive: all

TAGS clean-recursive distclean-recursive depend-recursive check-recursive
mostlyclean-recursive realclean-recursive coverage.txt-recursive:
@for subdir in $(SUBDIRS); do
if test -d $$subdir ; then
target=echo $@|$(SED) 's/-recursive//';
echo making $$target in $$subdir;
(cd $$subdir && $(MAKE) $$target) || exit 1;
fi ;
done

all-progs-recursive install-progs-recursive install-strip-progs-recursive
uninstall-progs-recursive coverage.txt-progs-recursive: all-libs-recursive
@for subdir in $(PROG_SUBDIRS); do
if test -d $$subdir ; then
target=echo $@|$(SED) 's/-progs-recursive//';
echo making $$target in $$subdir;
(cd $$subdir && $(MAKE) $$target) || exit 1;
fi ;
done

all-libs-recursive install-libs-recursive install-strip-libs-recursive
uninstall-libs-recursive install-shlibs-libs-recursive
install-shlibs-strip-libs-recursive uninstall-shlibs-libs-recursive
coverage.txt-libs-recursive:
@for subdir in $(LIB_SUBDIRS); do
if test -d $$subdir ; then
target=echo $@|$(SED) 's/-libs-recursive//';
echo making $$target in $$subdir;
(cd $$subdir && $(MAKE) $$target) || exit 1;
fi ;
done

mostlyclean: mostlyclean-recursive mostlyclean-local

clean:: clean-recursive clean-local clean-doc
$(RM) -f $(SUBS)

distclean: distclean-doc distclean-recursive
$(RM) -rf autom4te.cache e2fsprogs.spec ext2ed/Makefile po/stamp-po
$(MAKE) distclean-local

realclean: realclean-recursive realclean-local

depend:: depend-recursive

lib/ext2fs/ext2_types.h: $(DEP_SUBSTITUTE) asm_types.h
$(srcdir)/lib/ext2fs/ext2_types.h.in
cd $(top_builddir); CONFIG_FILES=./lib/ext2fs/ext2_types.h ./config.status

lib/blkid/blkid_types.h: $(DEP_SUBSTITUTE) asm_types.h
$(srcdir)/lib/blkid/blkid_types.h.in
cd $(top_builddir); CONFIG_FILES=./lib/blkid/blkid_types.h ./config.status

lib/uuid/uuid_types.h: $(DEP_SUBSTITUTE) asm_types.h
$(srcdir)/lib/uuid/uuid_types.h.in
cd $(top_builddir); CONFIG_FILES=./lib/uuid/uuid_types.h ./config.status

mostlyclean-local:
$(RM) -f #* *~ *.orig core MAKELOG

clean-local: mostlyclean-local

distclean-local: clean-local
$(RM) -f $(SUBS) $(SUBST_CONF)
config.status config.log config.cache MCONFIG Makefile
$(srcdir)/TAGS $(srcdir)/Makefile.in.old

realclean-local: distclean-local
$(RM) -f configure

check:: all check-recursive

My question :

What the all target makefile is empty ?

Thanks for your support

Best regards

Battant

No more auto probe/mount on macOS Sierra (10.12), requires sudo?

On macOS Sierra (10.12), using the most recent OSXFuse stable release (3.5.2), with fuse-ext2 compiled from source (up to current HEAD at 400dfac), there is a behavior change which I believe is a bug.

Desired behavior: External ext4 filesystems are probed and available in macOS "Finder" app without explicit privilege-escalation using sudo. After plugging in the external USB drive, it should be available in Finder and can be mounted/umounted by the user. This is the old behavior on Mac OS X 'El Capitan' and earlier.

Current behavior: the FSes can no longer be probed without sudo rights. After plugging in the drive, nothing happens. The command fuse-ext2.probe /dev/xxx returns with exit code 252, but using sudo, it exits successfully. Similarly, the command fuse-ext2 /dev/xxx path/to/mountpoint fails with 252, but succeeds only under sudo. The mounted FS must be umounted with sudo, too.

Although use is still possible, I wonder if this is a limitation due to the increasingly draconian restrictions in place since macOS 10.12. Is there a workaround to restore the old behavior? Or is there something that needs to be fixed in the fuse-ext2 code?

Unable to mount (error 252)

While trying to mount a RaspberryPi Ext partition, I receive error 252:

2016-05-28 17:01:01: fuse-ext2 script invoked with command line "/System/Library/Filesystems/fuse-ext2.fs/fuse-ext2.util" "-m" "-o" "nodev" "-o" "noowners" "-o" "nosuid" "/dev/disk2s2" "/Volumes/Untitled"
2016-05-28 17:01:01: Invoking user: root
2016-05-28 17:01:01: [Mount] Entering function Mount...
2016-05-28 17:01:01: [Mount] Processing argument "/dev/disk2s2"
2016-05-28 17:01:01: [Mount] Processing argument "/Volumes/Untitled"
2016-05-28 17:01:01: [Mount] Got plain device "/dev/disk2s2"
2016-05-28 17:01:01: [Mount] Got raw device "/dev/rdisk2s2"
2016-05-28 17:01:01: [Mount] Invoking:
2016-05-28 17:01:01: [Mount] "/usr/local/bin/fuse-ext2.wait" "/Volumes/Untitled" "5" "/usr/local/bin/fuse-ext2" "/dev/disk2s2" "/Volumes/Untitled" "-oauto_xattr,defer_permissions,local"
2016-05-28 17:01:01: [Mount] /usr/local/bin/fuse-ext2.wait returned with retval: 252
2016-05-28 17:01:01: [Mount] ERROR: Mounting /dev/disk2s2 as /Volumes/Untitled failed! Output: fuse-ext2: version:'0.0.7', fuse_version:'27' [main (../../fuse-ext2/fuse-ext2.c:324)]
fuse-ext2: enter [do_probe (../../fuse-ext2/do_probe.c:30)]
fuse-ext2: Error while trying to open /dev/disk2s2 (rc=2133571396) [do_probe (../../fuse-ext2/do_probe.c:34)]
fuse-ext2: Probe failed [main (../../fuse-ext2/fuse-ext2.c:340)]
2016-05-28 17:01:01: [Mount] Exiting function mount...

Is e2fslibs needed on MacOS X? - trying to use MacPorts

I am in the process of trying to adapt the instructions to run with MacPorts on MacOS X, but 'configure' is failing because it can't find e2fslibs, yet this is not specified as a dependency in the current instructions for MacOS X.

Installation of dependencies:

sudo port install autoconf m4 automake libtool e2fsprogs

Failure I am getting when trying to run configure:

checking for strerror... yes
checking for strrchr... yes
checking for strtol... yes
checking for strtoul... yes
checking for strtoull... yes
checking for uname... yes
checking for utime... yes
checking for llseek... no
checking for lseek64... no
checking for library containing sem_post... none required
checking for library containing fuse_main... -losxfuse
checking for library containing com_err... -lcom_err
checking for library containing ext2fs_open... no
configure: error: Can't find e2fslibs, please install it

Executing strings /opt/local/lib/libext2fs.a | grep ext2fs_open I see:

_ext2fs_open_inode_scan
_ext2fs_open
_ext2fs_open2
_ext2fs_open_file

Envirornment settings:

PKG_CONFIG_PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin:/Users/ajmas/npm/bin:/opt/local/bin
PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/opt/local/lib/pkgconfig:/usr/lib/pkgconfig  
CFLAGS="-idirafter/opt/local/include -idirafter/usr/local/include -idirafter/usr/local/include/osxfuse/"
LDFLAGS="-L/opt/local/lib -L/usr/local/lib"

Broken readdir() implementation

Description

readdir() appears to be missing some entries when mounting ext4 filesystem (from Android factory images if that matters). It appears that problematic behavior is consistent across different runs of the same image file (same files are missing).

To be honest I don't have the time at the moment to get to the bottom of it, so not sure which component introduces the bug (might be a combination with e2fsprogs deps). You can find some additional info around the case that surfaced the bug here.

Temp workaround

Change default to walk_dir() / ext2fs_dir_iterate().

$ git diff
diff --git a/fuse-ext2/op_readdir.c b/fuse-ext2/op_readdir.c
index 60e1890..203d60f 100644
--- a/fuse-ext2/op_readdir.c
+++ b/fuse-ext2/op_readdir.c
@@ -25,7 +25,7 @@ struct dir_walk_data {
        fuse_fill_dir_t filler;
 };

-#define _USE_DIR_ITERATE2 1
+//#define _USE_DIR_ITERATE2 1
 #if defined(_USE_DIR_ITERATE2) && (_USE_DIR_ITERATE2 == 1)
 static int walk_dir2 (ext2_ino_t dir, int   entry, struct ext2_dir_entry *dirent, int offset, int blocksize, char *buf, void *vpsid)
 {

System info

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12.2
BuildVersion:	16C67

$ xcode-select -v
xcode-select version 2347.

$ cat /Library/Filesystems/osxfuse.fs/Contents/version.plist | grep 'CFBundleVersion' -A1
	<key>CFBundleVersion</key>
	<string>3.5.4</string>

$ cat e2fsprogs-1.43.3/version.h | grep E2FSPROGS_VERSION
#define E2FSPROGS_VERSION "1.43.3"

Permission denied while trying to open

ext2fuse /dev/disk2s1 /Volumes/abc/
/dev/disk2s1 is to be mounted at /Volumes/abc/
fuse-ext2fs: Permission denied while trying to open /dev/disk2s1
Segmentation fault: 11

What I am wrong?

p/s : My external disk partition /dev/disk2s1 is ext4

Error message is empty

I'm using fuse-ext2 with OSX fuse (v 3.6.3). The command fuse-ext2 --version returned fuse-ext2 0.0.9 29 [...].

The command /usr/local/bin/fuse-ext2 -v /dev/path /mnt/point -o debug doesn't return anything.

FUSE-EXT2 could not mount /dev/disk2/disk2s1
at /Users/daniel/mnt because the following problem occurred:

I'm trying to use as external hdd a dsik that I was using as main hdd in a Linux laptop.

Homebrew on Mac OS X

There is a Homebrew formula for this software, but it uses an old binary from Sourceforge. It would be great if someone fixed this (or made a new formula) to get new versions from this Github repo. This would certainly ease the current OS X installation process. Not to mention that the current installation method could install duplicate dependencies. This is because users may already have these dependencies through their package manager.

Need to run autogen.sh on OS X, but instruction doesn't mention this

The instruction for OS X states:

The easiest way is using Homebrew:

brew install e2fsprogs m4 automake autoconf libtool
CFLAGS="-idirafter/$(brew --prefix e2fsprogs)/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L$(brew --prefix e2fsprogs)/lib" ./configure
make 
sudo make install

But there is no configure. autogen.sh must be run in order to generate it.
It's easy to figure out, but why not mention this in instruction?

fuse-ext2: command not found

Running macOS 10.12.5

Instructions on this page followed, script downloaded, named install.sh, chmod u+x install.sh. The result is a bunch of files and directories being placed in the same directory as install.sh. Specifically:

drwxr-xr-x automake-1.15/
-rw-r--r-- automake-1.15.tar.gz
drwxr-xr-x e2fsprogs-1.43.4/
-rw-r--r-- e2fsprogs-1.43.4.tar.gz
drwxr-xr-x gnu/
-rwxr-xr-x install
-rwxr--r-- install.sh
drwxr-xr-x libtool-2.4.6/
-rw-r--r-- libtool-2.4.6.tar.gz

The output to terminal of the install script is really long, but here are the last few lines of it:

sed: 2: "s/\(^\|.* \)@documenten ...": whitespace after branch
sed: 4: "s/\(^\|.* \)@documenten ...": whitespace after label
sed: 6: "s/\(^\|.* \)@documenten ...": undefined label 'found                                                '
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=etex)
 restricted \write18 enabled.
entering extended mode
(/Users/Prometheus/dev/test/e2fsprogs-1.43.4/doc/libext2fs.texinfo
(/Users/Prometheus/dev/test/e2fsprogs-1.43.4/doc/texinfo.tex
Loading texinfo [version 2006-02-13.16]: Basics, pdf, fonts, page headings,
tables, conditionals, indexing, sectioning, toc, environments, defuns, macros,
cross references, insertions,
(/usr/local/texlive/2015/texmf-dist/tex/generic/epsf/epsf.tex
This is `epsf.tex' v2.7.4 <14 February 2011>
) localization, and turning on texinfo input format.) [1] [2]
(The EXT2FS Library) Chapter 1 [1] Chapter 2 [2] [3] [4] [5] [6] [7] [8]
Underfull \hbox (badness 6252) in paragraph at lines 599--602
 @textrm flag is not set @texttt ext2fs_get_next_inode[] @textrm will re-turn t
he er-ror
[9] [10] [11] [12] [13] [14] [15] [16] [17] (Concept Index) [18]
(Function and Type Index) [19] [20] (./libext2fs.toc [-1]) [-2] )
(see the transcript file for additional information)
Output written on libext2fs.dvi (24 pages, 75364 bytes).
Transcript written on libext2fs.log.
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=etex)
 restricted \write18 enabled.
entering extended mode
(/Users/Prometheus/dev/test/e2fsprogs-1.43.4/doc/libext2fs.texinfo
(/Users/Prometheus/dev/test/e2fsprogs-1.43.4/doc/texinfo.tex
Loading texinfo [version 2006-02-13.16]: Basics, pdf, fonts, page headings,
tables, conditionals, indexing, sectioning, toc, environments, defuns, macros,
cross references, insertions,
(/usr/local/texlive/2015/texmf-dist/tex/generic/epsf/epsf.tex
This is `epsf.tex' v2.7.4 <14 February 2011>
) localization, and turning on texinfo input format.) (./libext2fs.aux)
[1] [2] (The EXT2FS Library) Chapter 1 [1] Chapter 2 [2] [3] [4] [5] [6]
[7] [8]
Underfull \hbox (badness 6252) in paragraph at lines 599--602
 @textrm flag is not set @texttt ext2fs_get_next_inode[] @textrm will re-turn t
he er-ror
[9] [10] [11] [12] [13] [14] [15] [16] [17] (Concept Index) [18]
(Function and Type Index) [19] (./libext2fs.fns [20]) [21] [22]
(./libext2fs.toc [-1]) [-2] )
(see the transcript file for additional information)
Output written on libext2fs.dvi (26 pages, 102984 bytes).
Transcript written on libext2fs.log.
	MKINSTALLDIRS /opt/gnu/share/info
	INSTALL_DATA /opt/gnu/share/info/libext2fs.info
	GZIP /opt/gnu/share/info/libext2fs.info*
if test ! -d e2fsck && test ! -d debugfs && test ! -d misc && test ! -d ext2ed ; then /Applications/Xcode.app/Contents/Developer/usr/bin/make install-libs ; fi
making install in lib/et
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/et /opt/gnu/share/et /opt/gnu/bin /opt/gnu/share/man/man1 /opt/gnu/share/man/man3
mkdir /opt/gnu/include/et
mkdir /opt/gnu/share/et
mkdir /opt/gnu/share/man/man3
mkdir /opt/gnu/lib/pkgconfig
	INSTALL_DATA /opt/gnu/lib/libcom_err.a
	INSTALL_DATA /opt/gnu/include/et/com_err.h
	INSTALL_DATA /opt/gnu/share/et/et_c.awk
	INSTALL_DATA /opt/gnu/share/et/et_h.awk
	INSTALL_SCRIPT /opt/gnu/bin/compile_et
	INSTALL_DATA /opt/gnu/share/man/man3/com_err.3
	INSTALL_DATA /opt/gnu/share/man/man1/compile_et.1
	INSTALL_DATA /opt/gnu/lib/pkgconfig/com_err.pc
making install in lib/ss
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/ss /opt/gnu/share/ss /opt/gnu/bin
mkdir /opt/gnu/include/ss
mkdir /opt/gnu/share/ss
	INSTALL_DATA /opt/gnu/lib/libss.a
	INSTALL_DATA /opt/gnu/include/ss/ss.h
	INSTALL_DATA /opt/gnu/include/ss/ss_err.h
	INSTALL_DATA /opt/gnu/share/ss/ct_c.awk
	INSTALL_DATA /opt/gnu/share/ss/ct_c.sed
	INSTALL /opt/gnu/bin/mk_cmds
	INSTALL_DATA /opt/gnu/share/man/man1/mk_cmds.1
	INSTALL_DATA /opt/gnu/lib/pkgconfig/ss.pc
making install in lib/e2p
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/e2p
mkdir /opt/gnu/include/e2p
	INSTALL_DATA /opt/gnu/lib/libe2p.a
	INSTALL_DATA /opt/gnu/include/e2p/e2p.h
	INSTALL_DATA /opt/gnu/lib/pkgconfig/e2p.pc
making install in lib/uuid
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/uuid /opt/gnu/share/man/man3
mkdir /opt/gnu/include/uuid
	INSTALL_DATA /opt/gnu/lib/libuuid.a
	INSTALL_DATA /opt/gnu/include/uuid/uuid.h
	INSTALL_DATA /opt/gnu/share/man/man3/uuid.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_clear.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_compare.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_copy.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_generate.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_is_null.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_parse.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_time.3
	INSTALL_DATA /opt/gnu/share/man/man3/uuid_unparse.3
	LINK /opt/gnu/share/man/man3/uuid_generate_random.3
	LINK /opt/gnu/share/man/man3/uuid_generate_time.3
	INSTALL_DATA /opt/gnu/lib/pkgconfig/uuid.pc
making install in lib/blkid
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/blkid
mkdir /opt/gnu/include/blkid
	INSTALL_DATA /opt/gnu/lib/libblkid.a
	INSTALL_DATA /opt/gnu/include/blkid/blkid.h
	INSTALL_DATA /opt/gnu/include/blkid/blkid_types.h
	INSTALL_DATA /opt/gnu/share/man/man3/libblkid.3
	INSTALL_DATA /opt/gnu/lib/pkgconfig/blkid.pc
making install in lib/support
make[1]: Nothing to be done for `install'.
making install in lib/ext2fs
	MKINSTALLDIRS /opt/gnu/lib /opt/gnu/include/ext2fs
mkdir /opt/gnu/include/ext2fs
	INSTALL_DATA /opt/gnu/lib/libext2fs.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /opt/gnu/lib/libext2fs.a(swapfs.o) has no symbols
	INSTALL_DATA /opt/gnu/include/ext2fs/bitops.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2fs.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2_io.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2_fs.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2_ext_attr.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext3_extents.h
	INSTALL_DATA /opt/gnu/include/ext2fs/tdb.h
	INSTALL_DATA /opt/gnu/include/ext2fs/qcow2.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2_err.h
	INSTALL_DATA /opt/gnu/include/ext2fs/ext2_types.h
	INSTALL_DATA /opt/gnu/lib/pkgconfig/ext2fs.pc
making install in intl
if test 'no' = yes; then \
	  test no != no || /bin/sh ../config/mkinstalldirs /opt/gnu/lib; \
	  temp=/opt/gnu/lib/t-charset.alias; \
	  dest=/opt/gnu/lib/charset.alias; \
	  if test -f /opt/gnu/lib/charset.alias; then \
	    orig=/opt/gnu/lib/charset.alias; \
	    sed -f ref-add.sed $orig > $temp; \
	    /usr/bin/install -c -m 644 $temp $dest; \
	    rm -f $temp; \
	  else \
	    if test no = no; then \
	      orig=charset.alias; \
	      sed -f ref-add.sed $orig > $temp; \
	      /usr/bin/install -c -m 644 $temp $dest; \
	      rm -f $temp; \
	    fi; \
	  fi; \
	  /bin/sh ../config/mkinstalldirs /opt/gnu/share/locale; \
	  test -f /opt/gnu/share/locale/locale.alias \
	    && orig=/opt/gnu/share/locale/locale.alias \
	    || orig=./locale.alias; \
	  temp=/opt/gnu/share/locale/t-locale.alias; \
	  dest=/opt/gnu/share/locale/locale.alias; \
	  sed -f ref-add.sed $orig > $temp; \
	  /usr/bin/install -c -m 644 $temp $dest; \
	  rm -f $temp; \
	else \
	  : ; \
	fi
./install.sh: line 72: cd: fuse-ext2: No such file or directory
./install.sh: line 73: ./autogen.sh: No such file or directory
./install.sh: line 74: ./configure: No such file or directory
make: *** No targets specified and no makefile found.  Stop.
cat install.sh >install 
chmod a+x install

I also then tried running ./install, but had the same problem.

When fuse-ext2, I get the output -bash: fuse-ext2: command not found, indicating it has not been installed properly.

The output of dd if=/dev/zero of=test/fs.ext2 bs=1024 count=102400, as suggested in the "Tst" section, is dd: test/fs.ext2: No such file or directory

debug mount option causes the mounting to block

How to reproduce:

cd /tmp
dd if=/dev/zero of=test.img bs=1M count=10
mkfs.ext2 test.img
mkdir mnt
fuse-ext2 test.img mnt -o ro,debug

My output:

[maarten@localhost fuse-ext2]$ cd /tmp
[maarten@localhost fuse-ext2]$ dd if=/dev/zero of=test.img bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0031461 s, 3.3 GB/s

[maarten@localhost tmp]$ mkfs.ext2 test.img
mkfs.ext2 test.imgmke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done                            
Creating filesystem with 10240 1k blocks and 2560 inodes
Filesystem UUID: 885bd4bf-943d-4f12-b395-7a5704c757d7
Superblock backups stored on blocks: 
    8193

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

[maarten@localhost fuse-ext2]$ mkdir mnt
[maarten@localhost tmp]$ fuse-ext2 test.img mnt -o ro,debug
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.23
flags=0x0003f7fb
max_readahead=0x00020000
   INIT: 7.19
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
unique: 2, opcode: GETATTR (3), nodeid: 1, insize: 56, pid: 10677
getattr /
   unique: 2, success, outsize: 120
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 10677
LOOKUP /.Trash
getattr /.Trash
   unique: 3, error: -2 (No such file or directory), outsize: 16
unique: 4, opcode: LOOKUP (1), nodeid: 1, insize: 52, pid: 10677
LOOKUP /.Trash-1000
getattr /.Trash-1000
   unique: 4, error: -2 (No such file or directory), outsize: 16

The process gets stuck here and can only be ended using ^C.

[maarten@localhost tmp]$ cat /etc/issue
Fedora release 22 (Twenty Two)
Kernel \r on an \m (\l)
[maarten@localhost tmp]$ uname -a
Linux localhost.localdomain 4.1.3-200.fc22.x86_64 #1 SMP Wed Jul 22 19:51:58 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

how to rebuid from start

I built , but fail to pass the test, although there is a fuse-ext in System Preferences.

I guess to restart from beginning to build ,maybe It will be ok

dyld: Library not loaded: /usr/local/lib/libfuse.2.dylib

I installed fuse-ext2 binary 0.0.7 from sourceforge on OS X Yosemite 10.10.3.
When I run fuse-ext2 in the terminal, I get an error:

$ fuse-ext2
dyld: Library not loaded: /usr/local/lib/libfuse.2.dylib
  Referenced from: /usr/local/bin/fuse-ext2
  Reason: image not found
Trace/BPT trap: 5

write file is too slow

Hello,

When I write any file with fuse-ext2 this operation is too slow (env 5 sec) so for a copy a big folder (25 go), the transfer from my internal ssd to my ext-4 usb-3 external drive on a usb 2 port take (en 6 day)

My configuration :

Mac os x 10.10.5
fuaw-ext2 0.0.7
fuse for osx 2.8.3

Could you help me to fix this bug ?

Best regards

Battant

allow_others

Minor bug in fuse-ext2 0.0.7 27:
On the command line help it shows

Options:  ro, force, allow_others

but there should not be an "s" on "allow_other".
The man page shows the correct option.

build faild on osx 10.11.3

/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in fuse-ext2
gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT fuse-ext2.install.o -MD -MP -MF .deps/fuse-ext2.install.Tpo -c -o fuse-ext2.install.o fuse-ext2.install.m
In file included from fuse-ext2.install.m:55:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:82:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:14:
In file included from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/usr/include/hfs/hfs_format.h:797:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
uuid_string_t ext_jnl_uuid;
^
/usr/include/device/device_types.h:89:16: note: 'io_string_t' declared here
typedef char io_string_t[512];
^
In file included from fuse-ext2.install.m:55:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:82:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:14:
In file included from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/usr/include/hfs/hfs_format.h:799:20: error: use of undeclared identifier 'uuid_string_t'
char reserved[JIB_RESERVED_SIZE];
^
/usr/include/hfs/hfs_format.h:790:61: note: expanded from macro 'JIB_RESERVED_SIZE'

define JIB_RESERVED_SIZE ((32*sizeof(u_int32_t)) - sizeof(uuid_string_t) - 48)

                                                        ^

fuse-ext2.install.m:121:34: warning: 'NSErrorFailingURLStringKey' is deprecated: first deprecated in OS X
10.6 [-Wdeprecated-declarations]
[[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
^
/System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:47:36: note:
'NSErrorFailingURLStringKey' has been explicitly marked deprecated here
FOUNDATION_EXPORT NSString * const NSErrorFailingURLStringKey NS_DEPRECATED(10_0, 10_6, 2_0, 4_0);
^
fuse-ext2.install.m:163:39: warning: 'initWithRequest:delegate:' is deprecated: first deprecated in OS X
10.11 - Use NSURLSession downloadTask (see NSURLSession.h) [-Wdeprecated-declarations]
urlDownload = [[NSURLDownload alloc] initWithRequest:urlRequest delegate:self];
^
/System/Library/Frameworks/Foundation.framework/Headers/NSURLDownload.h:54:1: note:
'initWithRequest:delegate:' has been explicitly marked deprecated here

  • (instancetype)initWithRequest:(NSURLRequest _)request delegate:(nullable id <NSURLDownloadDelegate...
    ^
    fuse-ext2.install.m:163:75: warning: sending 'Installer *' to parameter of incompatible type
    'id Nullable'
    urlDownload = [[NSURLDownload alloc] initWithRequest:urlRequest delegate:self];
    ^~~~
    /System/Library/Frameworks/Foundation.framework/Headers/NSURLDownload.h:54:103: note: passing argument to
    parameter 'delegate' here
    ...
    )request delegate:(nullable id )delegate NS_DEPRECATED(10_3, 10_11, 2_0, 9_0...
    ^
    fuse-ext2.install.m:196:26: warning: 'sendSynchronousRequest:returningResponse:error:' is deprecated: first
    deprecated in OS X 10.11 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see
    NSURLSession.h [-Wdeprecated-declarations]
    data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    ^
    /System/Library/Frameworks/Foundation.framework/Headers/NSURLConnection.h:407:1: note:
    'sendSynchronousRequest:returningResponse:error:' has been explicitly marked deprecated here
  • (nullable NSData )sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLRespons...
    ^
    fuse-ext2.install.m:314:90: warning: null passed to a callee that requires a non-null argument [-Wnonnull]
    ...runTaskForPath:@"/usr/local/bin/fuse-ext2.uninstall" withArguments:[NSArray arrayWithObjects:nil] ou...
    ^ ~~~
    5 warnings and 2 errors generated.
    make[2]: *
    * [fuse-ext2.install.o] Error 1
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2

Error with the command CFLAGS=..... No such file or directory

Hello there! After installing the packages using brew I run the command:
CFLAGS="-idirafter/$(brew --prefix e2fsprogs)/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L$(brew --prefix e2fsprogs)/lib" ./configure
and I get
-bash: ./configure: No such file or directory

Any help?

./autogen.sh "No such file or directory"

I followed the instructions to install fuse-ext2 on a mac line by line. All went well until I called the command ./autogen.sh. I was in the "gnu" directory, but the script wasn't there. Anyone know what I may be missing? I didn't recieve any errors at any point of the previous steps.

Thanks for your help.

configure fails: syntax error near unexpected token `e2fs,ext2fs'

OS X 10.11.3 (15D21)
osxfuse-3.2.0 (same on osxfuse-2.8.3)

CFLAGS="-idirafter/$(brew --prefix e2fsprogs)/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L$(brew --prefix e2fsprogs)/lib" ./configure
checking for lseek64... no
checking for library containing sem_post... none required
checking for library containing fuse_main... -losxfuse
checking for library containing com_err... -lcom_err
checking for library containing ext2fs_open... -lext2fs
checking if FUSE on this system is too new for us... no
Disabling debug support by default
./configure: line 18606: syntax error near unexpected token `e2fs,ext2fs'
./configure: line 18606: `PKG_CHECK_MODULES(e2fs,ext2fs >= 1.41.13)'
~$ brew --prefix e2fsprogs

/usr/local/opt/e2fsprogs
~$ brew info e2fsprogs

e2fsprogs: stable 1.42.13 (bottled), HEAD [keg-only]
Utilities for the ext2, ext3, and ext4 file systems
http://e2fsprogs.sourceforge.net/
/usr/local/Cellar/e2fsprogs/1.42.13 (135 files, 5.0M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/e2fsprogs.rb
==> Dependencies
Build: pkg-config ✔
Required: gettext ✔
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.

This brew installs several commands which override OS X-provided file system commands.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/e2fsprogs/lib
    CPPFLAGS: -I/usr/local/opt/e2fsprogs/include

Build fails at the very end.

The error message is:

Running autoreconf --verbose --install --force
autoreconf: 'configure.ac' or 'configure.in' is required
Removing autom4te.cache
./zip: line 13: ./configure: No such file or directory
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target `install'. Stop.
MacPro:gnu caesarsamsi$

The other quick way also has an error at the end:

Disabling debug support by default
./configure: line 18435: syntax error near unexpected token e2fs,ext2fs' ./configure: line 18435:PKG_CHECK_MODULES(e2fs,ext2fs >= 1.41.13)'
make: *** No targets specified and no makefile found. Stop.
Password:
make: *** No rule to make target `install'. Stop.

There is no way to build on OSX Yosemite.

Little real world mount/copy instructions needed

Hi @alperakcan ,
This is a life saving util, but it really rudimentary in the sense of documentation.

I have managed to mount my drives, but i'm struggling with permissions accesing the disks and when copying.
Well i can copy files, but then i have to set permissions to it. I see many options that can be releated to those affairs but no really clear how to used them.

For example this is how i mount my disk:
mkdir /Volumes/Arch.Linux && sudo fuse-ext2 -v /dev/disk0s3 /Volumes/Arch.Linux -o debug,rw+,allow_other,use_ino,gid=0,uid=3,readdir_ino,umask=0777
Which allows me to use it nicely, yet when i copy anything to my main disk(Mac's), i get wrong permission setting.

How can i achieve copying files somewhat normaly?

OSX 10.11 "El Capitan" make fails

Hello. I've installed El Capitan and I'm trying to build ext2fuse.

I've installed OSXFUSE 2.8 (which should work with El Capitan). I also have Xcode 7 beta and it's Command Line tools (I had to run xcode-select --switch pointing to the Xcode beta path).

Then I've installed e2fsprogs with homebrew and I was able to run the configure script of ext2fuse with this environment:

$ CFLAGS="-idirafter/usr/local/Cellar/e2fsprogs/1.42.12/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L/usr/local/Cellar/e2fsprogs/1.42.12/lib" ./configure

But when I try "make" it seems everything goes as planned until it reaches this error:

$ make
/Applications/Xcode-beta.app/Contents/Developer/usr/bin/make  all-recursive
Making all in fuse-ext2
make[2]: Nothing to be done for 'all'.
Making all in tools
Making all in macosx
( cd ../../tools/macosx/prefpane; \
      xcodebuild; \
    )
=== BUILD TARGET fuse-ext2 OF PROJECT fuse-ext2 WITH THE DEFAULT CONFIGURATION (Release) ===

Check dependencies
error: There is no SDK with the name or path '/Users/joe/Sites/fuse-ext2/tools/macosx/prefpane/macosx10.9'

** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)
make[3]: *** [prefpane] Error 65
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Any ideas?

Thanks,
Jose

Readability of README

Currently it's really hardly readable. And there could be instructions for Homebrew as well as this makes it much simpler.

not running but no error at all

hi,

strange : I've just configured, compiled and installed fuse-ext2 without any error*, and when I run it, nothing happens ! no message, no error and especially no assembly !

the debug option (-d / -o debug) doesn't work either...

a track to see where it might come from ?

(* just some warnings about pjdfstest.c)

Cannot list directories; "No such file or directory"

Like many other people, I am trying to recover data from a NAS; in this case a Seagate Central which uses a 64kb block size that is not compatible with my x86 system.

I can mount my partition using fuse-ext2, but once mounted I'm unable to list any directory (all command run as root)

cd /mnt/central

ls

ls: cannot open directory .: No such file or directory

Is this a fuse-ext2 bug? Or some consequence of the file system or inconsistency, perhaps. Although I've not been able to find any reports of this, including people recovering from the same devices without this problem.

It appears I could perhaps read files or directories if I know their name. I found I am able to cd to a directory called 'Public' (or other directories I know exist from this post [1]) but not others:

[1] http://ubuntuforums.org/showthread.php?t=2199589&page=3&p=12904552#post12904552

cd test

bash: cd: test: No such file or directory
#stat Public
File: 'Public'
Size: 65536 Blocks: 128 IO Block: 65536 directory
Device: 16h/22d Inode: 2 Links: 33
Access: (2775/drwxrwsr-x) Uid: (65534/ UNKNOWN) Gid: (65534/ UNKNOWN)
Access: 2015-06-14 11:24:37.000000000 +0100
Modify: 2015-07-30 22:45:37.000000000 +0100
Change: 2015-06-14 11:23:56.000000000 +0100
Birth: -

cd Public

ls

ls: cannot open directory .: No such file or directory

I've tried the latest Git master (213f776), as well as release 0.0.9. A full transcript of the debug for my actions above is as follows:

/opt/fuse-ext2/bin/fuse-ext2 -v /dev/vg1/lv1 /mnt/central/ -o debug,ro

FUSE library version: 2.8.5
nullpath_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56
INIT: 7.23
flags=0x0003f7fb
max_readahead=0x00020000
INIT: 7.12
flags=0x00000011
max_readahead=0x00020000
max_write=0x00020000
unique: 1, success, outsize: 40
unique: 2, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
unique: 2, success, outsize: 120
unique: 3, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
unique: 3, success, outsize: 120
unique: 4, opcode: OPENDIR (27), nodeid: 1, insize: 48
opendir flags: 0x18800 /
unique: 4, error: -2 (No such file or directory), outsize: 16
unique: 5, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
unique: 5, success, outsize: 120
unique: 6, opcode: LOOKUP (1), nodeid: 1, insize: 45
LOOKUP /test
getattr /test
unique: 6, error: -2 (No such file or directory), outsize: 16
unique: 7, opcode: LOOKUP (1), nodeid: 1, insize: 45
LOOKUP /test
getattr /test
unique: 7, error: -2 (No such file or directory), outsize: 16
unique: 8, opcode: LOOKUP (1), nodeid: 1, insize: 45
LOOKUP /test
getattr /test
unique: 8, error: -2 (No such file or directory), outsize: 16
unique: 9, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
unique: 9, success, outsize: 120
unique: 10, opcode: LOOKUP (1), nodeid: 1, insize: 47
LOOKUP /Public
getattr /Public
NODEID: 2
unique: 10, success, outsize: 144
unique: 11, opcode: GETATTR (3), nodeid: 1, insize: 56
getattr /
unique: 11, success, outsize: 120
unique: 12, opcode: LOOKUP (1), nodeid: 1, insize: 47
LOOKUP /Public
getattr /Public
NODEID: 2
unique: 12, success, outsize: 144
unique: 13, opcode: GETATTR (3), nodeid: 2, insize: 56
getattr /Public
unique: 13, success, outsize: 120
unique: 14, opcode: OPENDIR (27), nodeid: 2, insize: 48
opendir flags: 0x18800 /Public
unique: 14, error: -2 (No such file or directory), outsize: 16

Thanks in advance
Mark

Building on Mavericks with Homebrew

I installed osxfuse 2.8.0 from SF, not through Homebrew, because I thought something might be wrong with v2.7.6 that Homebrew has. Keep that in mind below.

Probably could replace /usr/local/include/osxfuse with $(brew --prefix osxfuse)/include if you installed osxfuse from Homebrew.

brew install e2fsprogs m4 automake autoconf libtool
CFLAGS="-idirafter/$(brew --prefix e2fsprogs)/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L$(brew --prefix e2fsprogs)/lib" ./configure
make 
sudo make install

I got an error here about a missing directory.

sudo mkdir -p /usr/local/lib/umview/modules
sudo make install

Then I tried to mount it, but nothing happened when I did:

fuse-ext2 -v /dev/disk2s2 /Volumes/pi -o debug

Unable to mount my ext4 external drive with fuse-ext2

Hello,
problem :
seams a moment (probably since a update) my external heard drive could be mount by fuse-ext2

My configuration :

mac os 10.10.5
Fuse for osx 2.8,3

Whith fuse-ext2 0.0.7 I have this problem :

fuse-ext2 /dev/disk1 /Volumes/Sav_linux/ fuse-ext2: version:'0.0.7', fuse_version:'27' [main (../../fuse-ext2/fuse-ext2.c:324)] fuse-ext2: enter [do_probe (../../fuse-ext2/do_probe.c:30)] fuse-ext2: Error while trying to open /dev/disk1 (rc=13) [do_probe (../../fuse-ext2/do_probe.c:34)] fuse-ext2: Probe failed [main (../../fuse-ext2/fuse-ext2.c:340)]

the system don't try to mount the ext4 volume when i connet it

whith fuse-ext2 0.0.6 I have this problem :

the system try to mount the ext4 volume but show this error message

FUSE-EXT2 could not mount /dev/disk1s1
at /Volumes/Untitled because the following problem occurred:

fuse-ext2: enter [do_probe (../../fuse-ext2/do_probe.c:30)] fuse-ext2: Error while reading bitmaps (rc=2133571358) [do_probe (../../fuse-ext2/do_probe.c:39)] fuse-ext2: Probe failed [main (../../fuse-ext2/fuse-ext2.c:337)]

Could you help me please to fix thees issues ?

Thanks for your support

Best regards

Battant

typo at 'mac install' in Readme.md

'''

e2fsprogs

curl -O https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.42.12/e2fsprogs-1.43.3.tar.gz
tar -zxvf e2fsprogs-1.43.3.tar.gz
cd e2fsprogs-1.43.3
./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 ../
'''

The source code in mac install section , the link within curl command,

https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.42.12/e2fsprogs-1.43.3.tar.gz

those two version doesn't match.

v1.42.12/e2fsprogs-1.43.3

BTW, fuse-ext2 mac package in source forge doesn't work with "Mac OS 10.12"
It keeps print out error when installing package.

Bug in $buid_dir/fuse-ext2/Makefile.am

Hello,

Just a short note - there is a small bug in the make install path. Trying to install under OS X results in an error and then dies:
.
.
.
/Applications/Xcode.app/Contents/Developer/usr/bin/make install-data-hook
cd "//usr/local/lib/umview/modules" && rm -f
/bin/sh: line 0: cd: //usr/local/lib/umview/modules: No such file or directory
make[3]: *** [install-data-hook] Error 1
make[2]: *** [install-data-am] Error 2
make[1]: *** [install-am] Error 2
make: *** [install-recursive] Error 1

The fuse-ext2/Makefile.am declares a target 'install-data-hook:' that should only be productive for LINUX and not DARWIN. I've made a non-productive version for DARWIN to crudely patch around the problem for now:

if DARWIN
install-data-hook:
endif

if LINUX
install-data-hook:
cd "$(DESTDIR)/$(moddir)" && rm -f $(mod_LTLIBRARIES)
endif

Why? If I am reading the make file correctly the declaration for mod_LTLIBRARIES is only productive for LINUX:

if LINUX
mod_LTLIBRARIES = umfuseext2.la
endif

The same if clause could be done around the declaration for moddir but it's not completely necessary, but would make for a cleaner make file:

if LINUX
moddir = $(libdir)/umview/modules
endif

Hope this helps and thanks for all your hard work. I'll test and get back to you - if you have a test suite for OS X I'd be happy to run it.

Kind Regards,

Bill Gertz

Why not installing e2fsprogs into /usr/local

I wonder, why you explicitly install e2fsprogs into /opt/gnu/ ... on a normal system like mine this directory does not exist.
So I compiled following your instructions with success under macOS 10.12.5 aka Sierra into /usr/local (ok, one exception, you have to rename /usr/local/include/uuid/uuid.h into something like uuid.h.org or so, see issue #41). All went fine then.

fails in autogen.sh

I fails in autogen.sh by getting the following:
Running autoreconf --verbose --install --force
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /opt/gnu/bin/autoconf --force
autoreconf: running: /opt/gnu/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:10: installing './compile'
configure.ac:4: installing './missing'
automake: warnings are treated as errors
/opt/gnu/share/automake-1.15/am/ltlibrary.am: warning: 'umfuseext2.la': linking libtool libraries using a non-POSIX
/opt/gnu/share/automake-1.15/am/ltlibrary.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
fuse-ext2/Makefile.am:10: while processing Libtool library 'umfuseext2.la'
fuse-ext2/Makefile.am: installing './depcomp'
autoreconf: automake failed with exit status: 1
Removing autom4te.cache

Where to download 0.0.9 binary?

The releases page only has the source code available for download.
SourceForge only has the 0.0.7 binary.
Is that the recommended version?

FS corruption?

I'm using fuse-ext2 on macosx to edit files on an SD card containing Raspbian (to boot a Raspberry Pi). I've put the SD card in and mounted it like this:

sudo -s
mkdir /Volumes/root
fuse-ext2 -o force /dev/disk2s2 /Volumes/root

I then edit some files on the SD card and then do this:

sync
umount /Volumes/root

and physically remove the card and put it back in the Raspberry Pi. However, the files I edited are corrupted - sometimes they are truncated, sometimes they are replaced with random binary content.

My ignorance of macosx is fairly profound - is there something else I'm supposed to do when unmounting the drive? Or have I found a bug in fuse-ext2 somewhere?

License missing

Your repository does not contain a LICENSE file.
Under what license do you distribute this?

segfault: Filesystem has unsupported features

Hi,

fuse-ext2 v 0.8.1
fuse-OSX v 2.7.5
OSX 10.10.4

Mounting a filesystem that was created on centos6 with the following:
mke2fs -j -t ext4 /dev/sdi1

[root@precious ~]# ext2fuse /dev/disk2s1 /mnt -o ro
/dev/disk2s1 is to be mounted at /mnt
fuse-ext2fs: Filesystem has unsupported feature(s) while trying to open /dev/disk2s1
Segmentation fault: 11

The filesystem is about 3TB.

thanks for your work on this project!

Offer pre-built mac binaries

I think it's better if users can obtain a pre-built version, since the building process requires xcode- which is quite a big download for those who don't have it already.

Here is my binary: https://db.tt/Y9dU9f3l

Hope this can be useful to other people!

configure fails: No package 'ext2fs' found

CFLAGS="-idirafter/$(brew --prefix e2fsprogs)/include -idirafter/usr/local/include/osxfuse" LDFLAGS="-L$(brew --prefix e2fsprogs)/lib" ./configure

eventually results in:

checking for library containing sem_post... none required
checking for library containing fuse_main... -losxfuse
checking for library containing com_err... -lcom_err
checking for library containing ext2fs_open... -lext2fs
checking if FUSE on this system is too new for us... no
Disabling debug support by default
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for e2fs... no
configure: error: Package requirements (ext2fs >= 1.41.13) were not met:

No package 'ext2fs' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables e2fs_CFLAGS
and e2fs_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Output brew --prefix e2fsprogs:

/usr/local/opt/e2fsprogs

So clearly the library is present. How can I run configure so that it finds the library?

I'm on OS X 10.11, SIP disabled.

Unable to mount ext4 disk image

When I try to mount an ext4 disk image with fuse-ext2 I get an error

$ sudo mount -t fuse-ext2 Downloads/diskimage.img /mnt/rasp

FUSE-EXT2 could not mount /dev/Downloads/diskimage.img
at /mnt/rasp because the following problem occurred:

Fuse expects the image to be in /dev rather than in the supplied location

I use fuse-ext2 0.0.9 running under OSX/ El Captain 10.11.3

libtool-2.4.6.tar.gz has moved - link should be updated

Executing curl -O http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz as mentioned in the README.md pulls down the following file:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://mirror.sdunix.com/gnu/libtool/libtool-2.4.6.tar.gz">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at ftpmirror.gnu.org Port 80</address>
</body></html>

The installation proceeds if the referred link is used instead, specifically:
curl -O http://mirrors.ocf.berkeley.edu/gnu/libtool/libtool-2.4.6.tar.gz

information of deleted files shows when mouting ext4 with fuse-ext2

Hi,

I found a strange behavior that some information of the previously deleted files will be shown via ls:

version

root@jerry-QV96:~# fuse-ext2 30G /mnt/test/ -o ro,debug
FUSE library version: 2.9.4
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.25
flags=0x0007fffb
max_readahead=0x00020000
INIT: 7.19
flags=0x00000011
max_readahead=0x00020000
max_write=0x00020000
max_background=0
congestion_threshold=0
unique: 1, success, outsize: 40

reproduce steps

  1. dd if=/dev/zero of=30G bs=1M count=30k
  2. mke2fs -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 30G
  3. mount -t ext4 30G /mnt/test/
  4. cd /mnt/test; for i in {1..100000}; do dd if=/dev/zero of=file_${i} bs=32k count=1 1>/dev/null 2>/dev/null; done
  5. rm file_*
  6. umount /mnt/test
  7. fuse-ext2 30G /mnt/test/ -o ro

partial strange output

ls: cannot access '/mnt/test/file_15218': No such file or directory
ls: cannot access '/mnt/test/file_1976': No such file or directory
ls: cannot access '/mnt/test/file_79166': No such file or directory
ls: cannot access '/mnt/test/file_92316': No such file or directory
ls: cannot access '/mnt/test/file_55271': No such file or directory
ls: cannot access '/mnt/test/file_75956': No such file or directory

(some output is omitted...)

-????????? ? ? ? ? ? file_9675
-????????? ? ? ? ? ? file_9688
-????????? ? ? ? ? ? file_9765
-????????? ? ? ? ? ? file_98
-????????? ? ? ? ? ? file_9831
-????????? ? ? ? ? ? file_9931
-????????? ? ? ? ? ? file_9979
drwx------ 2 root root 16384 Nov 30 17:36 lost+found

However, if I mount the 30G image with "mount -t ext4 30G /mnt/test", everything works well as my expect. BTW, instead of creating 100k files and deleting them as above steps, I've tried only few files (about 100 files) and nothing strange happens.

Is there anything I could try to avoid the issue? Any idea will be appreciated, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.