view · edit · print · history

Can I setup the NSLU2 to use NTFS partitions?

Yes, if you are using either the latest stock firmware from Linksys (2.3R63 and above) or Unslung 6.8. Both allow an NTFS drive to be attached to Port 1. Be aware that the Release notes for 2.3R63 are wrong, here is the correction:

Disk 1 - The Disk 1 port of the Network Storage Link supports Ext3, FAT32, and NTFS file systems. (Flash drives will not be recognized.)
Disk 2 - The Disk 2 port supports Ext3 and FAT32 file systems. Insert your USB flash drive (USB key) or USB disk here.

One limitation of doing so is that you will not be able to assign any security settings (users/groups) to the drive like you could with the ext3 extension. Also, keep an eye out for this gotcha in Uslung 6.8 - UnslungLanguageSupport.

WARNING: The NTFS driver isn't as stable as it should be. Tests show that the slug will hang when writing to NTFS under moderate to high I/O load. This problem is in the Linksys-provided driver, and occurs in both the native Linksys firmware as well as with Unslung. There's nothing that can be done to fix this, since the source code for this driver is proprietary.

NTFS drivers

There are four NTFS drivers for Linux in existance:

Captive - http://www.jankratochvil.net/project/captive/: This driver has full read/write support for NTFS because it uses a wrapper around the Windows ntfs.sys binary driver. Porting this to the NSLU2 would require finding a ntfs.sys compiled for ARM and then trying to port the Captive wrapper. Finding a ARM compatible ntfs.sys from Microsoft is basically impossible unless Microsoft decide to port Windows to ARM. Using something like QEMU to emulate a x86 platform to run the ntfs.sys driver is in theory possible but it is not an ideal solution and would entail a large amount of work. You could for example boot a full i386 linux installation in qemu. This installation could access the NTFS via a network block device from the ARM side of things. The i386 qemu could then export the accessed file system via NFS or other means back to the ARM. Short answer is still no. Plus it would be rather slow. So this project is not practical or possible for the NSLU2.
Linux NTFS project - http://www.linux-ntfs.org/: This is a reimplementation of the NTFS file system as a normal Linux driver. As such, it is probably more portable, but it is also more limited. Write support is extremely limited (can only modify existing files, no file size changes), and probably not useful to most NSLU2 users.
Recent (April 2005+) builds of OpenSlug come with the Linux NTFS project kernel module in the flash (though not installed). mount -t ntfs /dev/sdb1 /mnt (with appropriate device/directory) will mount a Windows NTFS partition for read access. At present the (experimental) write access is not compiled in - so the mount is read-only.
NTFS-3G - http://www.ntfs-3g.org: Open source, free, reliable, full read-write NTFS driver.

The project is a fork of Linux-NTFS having major functional, performance and reliability improvements. NTFS read/write success confirmed (though reliability to be established) when using Debian\NSLU2 with ntfs-3g version 1.0 (currently in experimental, 2-Mar-07) with fuse-utils 0.6.2.n This driver has also been tested with SlugOS 6.8, and found to work.

Commercial Paragon NTFS for Linux - http://www.ntfs-linux.com/: This is a commercial package which fully supports NTFS read and write. This is the driver that Linksys has included in 2.3R63 and above -- and is the one that has the bugs mentioned above.

Building the NTFS-3G driver for Unslung

View BuildNTFS3G for instructions on how to build the FUSE kernel drive and user-space NTFS-3G tools. The NTFS-3G driver is much more reliable and faster than the Paragon driver. It is, however, difficult to build until we get an optware package.

Using the Paragon driver with Unslung 6.x

For Unslung 6.8 and 6.10, the Paragon driver (supplied by Linksys) is already installed; there is nothing necessary to do.

Using the Paragon driver with Unslung 5.5

For Unslung 5.5, the Paragon driver is available in Unslung as a ipkg. Install it (ipkg install ufsd) and the ipkg will download the Linksys firmware, extract the kernel module and install it. We can not distribute the module itself and must do it via this method.

The current version of the usfd package takes care of the dependency on unzip and should extract the necessary module file from the zip file without problems.

Notice (by J With): if the automatic download of the firmare fails you should download it manually from the Linksys support site (you can use this link) and save it as NSLU2_V23R63.zip in /tmp. After that, run ipkg configure ufsd to proceed with the install.

Notice (by dglaude): DO NOT donwload ftp://ftp.linksys.com/opensourcecode/nslu2/2.3R63/NSLU2_V23R63.zip. It is not the firmware but the source code.

Notice (by Lurch): How I got this working on Unslung 5.5: I had an exisitng harddrive in a USB enclosure, formatted half-and-half with FAT32? and NTFS. I'd already unslung to a USB flash disk. I got the FAT32? partition working by following the instructions in AttachAFAT32FormattedDrive. To get the NTFS partition working was similar, but after running ipkg install ufsd as detailed above, I also had to do insmod ufsd and then use ufsd as the filesystem type in the mount command (discovered by flicking through http://download.paragon.ag/doc/manual_ntfsl_eng.pdf).

OpenSlug is not supported as the kernel module is built specifically for the 2.4 kernel that the stock firmware uses. There is no workaround unfortunately.


User notes

Note: If during installation it complains about the zip file it downloads from Linksys, this may be because the script is calling /usr/bin/unzip, which is the busybox version of unzip that cannot be used by the ufsd ipkg install script. Try installing the unzip ipkg first, then either modify your path (export PATH=/opt/bin:$PATH if using bash) or temporarily replace /usr/bin/unzip with a link to the installed unzip (mv /usr/bin/unzip /usr/bin/unzip_busybox; ln -s /opt/bin/unzip /usr/bin/unzip; and then to restore things, rm -f /usr/bin/unzip; mv /usr/bin/unzip_busybox /usr/bin/unzip). Notice: this is no longer necessary, as the current package correctly handles the dependency on unzip.

Feb 1 2007 -- actually, I just tried this and the current ufsd ipkg choked when it found the busybox unzip

Help, please Does anyone have this working in ver 6.8? I have tried all of the above on a newly flashed 6.8 without luck. Get the NSLU2_V23R63.zip download error message. Does not help if I download the zip to /tmp. Neither does the unzip note. - Is NTFS supposed to work "out of the box" for ver 6.8 since it is based on firmware with that support? - Any input would be appreciated, if it is just a note that you actually have it working, then at least I will not give up. Thanks /Macks

Sorry, I RTFW myself. Just followed the first link on this page, about code pages and got it working. /Macks

Note: If you get an Error that downloading NSLU2_V23R63.zip from www.linksys.com has failed, just upload an up-to-date linksys firmware (currently V23RA5?) to the /tmp directory and do the following:

dd if=NAME_OF_FIRMWARE.bin of=ramdisk.gz bs=16 skip=90113

gunzip ramdisk.gz

/opt/bin/e2cp ramdisk:/lib/modules/ufsd.o /lib/modules/ufsd.o

/opt/bin/e2cp ramdisk:/lib/modules/ufsd.o /initrd/lib/modules/ufsd.o


view · edit · print · history · Last edited by mkurtz.
Based on work by mwester, emm_is, foobar, slw, os, gna, fcarolo, dglaude, marceln, Macks, Eddie, Lurch, JWith, Diode, mindbender, viewer, tman, jkpeters_37, cbxtom, and anonymous.
Originally by tman.
Page last modified on July 27, 2008, at 05:16 PM