Install Latest NTFS-3G from Source Debian + Ubuntu

ntfs-3gNTFS-3G allows you to read NTFS formatted hard drives on Linux systems. This is a huge convenience for users who wish to use their hard drives on both Windows and Linux systems. There are ext4 wrappers for Windows that allow you to read hard drives formatted with ext4. There is a performance hit with the older ntfs-3g (see these benchmarks). While newer ntfs-3g versions may not provide significance speed benefits, you may still want the latest and greatest. These instructions were tested on Debian and Ubuntu systems. This tutorial for installing the latest ntfs-3g from source should work on the Raspberry Pi running Raspbian, Banana Pi running Bananian or ArmbianOrange Pi and other SBCs .

Pi Unit
Processor
RAM
RAM Bus
Network
WiFi
USB
SATA
Cost
Raspberry Pi 3
1.2 GHz ARMv8
Quad Core
1 GB DDR2
450 MHz
100 Mbit
Yes
4
No
$35
Raspberry Pi 2
900 MHz ARMv7
Quad Core
1 GB DDR2
450 MHz
100 Mbit
No
4
No
$35.00
Raspberry Pi
700 MHz ARMv6
Single Core
512 MB SDRAM
400 MHz
100 Mbit
No
4
No
$25
Banana Pi
1 GHz ARMv7
Dual Core
1 GB DDR3
432 MHz
Gigabit
No
2
Yes
$36.99
Banana Pi Pro
1 GHz ARMv7
Dual Core
1 GB DDR3
432 MHz
Gigabit
Yes
2
Yes
$45.00

Even the latest Ubuntu Utopic has a very old version of ntfs-3g

ntfs-3g --version

Look at your output, the latest build is 2015 which could have significant improvements to speed or bugfixes

ntfs-3g 2013.1.13AR.1 external FUSE 29

The compilation parameters in this guide will prevent errors from FUSE like this one complaining automounting may not work

****************************************************************************
* WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING   *
* The FUSE user space binaries were NOT installed with root directory      *
* executable prefix. This means that automounting NTFS volumes during boot *
* could fail. This can be fixed the below way by reinstalling FUSE using   *
* the right 'configure' option during FUSE compilation:                    *
*       ./configure --exec-prefix=/                                        *
*       make && sudo make install                                          *
* WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING   *
****************************************************************************

Install Latest NTFS-3G from Source

ntfs-3g has an optional library FUSE, we are going to compile that first, note that this is optional but recommended

Compile latest FUSE from Source

Compile FUSE adapted from here

Note that you should copy the first two lines one by one.

sudo apt-get update
sudo apt-get install build-essential libc-dev libfuse-dev git gettext autoconf libgcrypt*-dev libtool pkg-config -y
cd /tmp
git clone https://github.com/libfuse/libfuse
cd libfuse*
./makeconf.sh
./configure --prefix=/usr --disable-static --exec-prefix=/ INIT_D_PATH=/tmp/init.d
make
make install

Compile NTFS-3G from Source

If you chose not to install FUSE from source then update your repositories

sudo apt-get update

Install dependencies for building ntfs-3g adapted from here.

sudo apt-get install libfuse-dev build-essential libc-dev git autoconf libgcrypt*-dev libtool gettext pkg-config -y

Clone the latest stable ntfs-3g source code

cd /tmp
git clone git://ntfs-3g.git.sourceforge.net/gitroot/ntfs-3g/ntfs-3g

Enter the ntfs-3g source code folder, generate the configuration build file and compile ntfs-3g

cd ntfs-3g
./autogen.sh
./configure --prefix=/usr --with-fuse=external
sudo make
make install
sudo ln -sv ../bin/ntfs-3g /sbin/mount.ntfs
sudo ln -sv ntfs-3g.8 /usr/share/man/man8/mount.ntfs.8

Now check the ntfs-3g version

ntfs-3g -v

It should show an updated version, as of this writing it was 2015

ntfs-3g: No device is specified.

ntfs-3g 2015.3.14 external FUSE 29 - Third Generation NTFS Driver
                Configuration type 1, XATTRS are on, POSIX ACLS are off

Copyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2015 Jean-Pierre Andre
Copyright (C) 2009 Erik Larsson

Usage:    ntfs-3g [-o option[,...]] <device|image_file> 

Options:  ro (read-only mount), windows_names, uid=, gid=,
          umask=, fmask=, dmask=, streams_interface=.
          Please see the details in the manual (type: man ntfs-3g).

Example: ntfs-3g /dev/sda1 /mnt/windows

News, support and information:  http://tuxera.com

Now you have installed the latest NTFS-3G on Debian or Ubuntu, please report any speed benefits or general improvements.

If you are looking to mount your hard drive properly see this guide.

You may also be interested in a new hard drive.