" Securely wipe free space on an ext2/3/4, NTFS, XFS, ReiserFSv3, ReiserFSv4, FAT12/16/32, MinixFSv1, MinixFSv2, JFS and HFS+ partition. "
- From Wipe Free Space Project Team
This is a program which will securely wipe the free space on an ext2, ext3, ext4, NTFS, XFS, ReiserFSv3, ReiserFSv4, FAT12, FAT16, FAT32, MinixFSv1, MinixFSv2, JFS and HFS+ partition or drive, just like the shred program securely wipes files.
* libc.so.6 (glibc >= 2.7)
* libcom_err.so.2 (usually from a "e2fsprogs" package)
* libext2fs.so.2 (usually from a "e2fsprogs" package)
* libntfs.so.10 (ntfsprogs package)
* libuuid.so.1 (UUID_1.0) (e2fsprogs or e2fsprogs-libs)
* libaal-1.0.so.5 (libaal)
* libreiser4-1.0.so.7 (reiser4progs)
For Windows: Download Eraser. A similar free and open-source program (which also wipes files).
Requirements for compiling the full version:
* a non-root account. Please, NEVER compile or 'make' anything as root.
* a working C compiler. XFS, ReiserFS and NTFS support require the 'long long' data type.
* the 'make' program
* development package for the C library (like glibc-devel and glibc-headers).
XFS support requires the following headers: unistd.h, fcntl.h, mntent.h (but sys/wait.h, sched.h and paths.h can be useful, too) and the following functions: fork(), execvp(), dup2(), close(), pipe() and one of waitpid(), wait() or kill() (sleep() can be useful, too). Both ReiserFS require mntent.h to work (but will compile without it).
* Ext2/3/4: development package for the ext2 file system library, libext2fs (usually included in something like e2fsprogs-devel). If you don't have anything like this installed or available (check twice), then go to e2fsprogs.sf.net. Then compile and install that package. Ext4 support requires new versions, like 1.41.
* NTFS: development package for the NTFS file system library, libntfs (usually included in something like ntfsprogs-devel). If you don't have anything like this installed or available (check twice), then go to www.linux-ntfs.org. Then compile and install that package.
* XFS: xfsprogs installed and in your PATH variable, if you want XFS support. Get these at oss.sgi.com/projects/xfs/.
The following utilities should be available: xfs_db, xfs_freeze, xfs_unfreeze. The xfs_db program should support the following command-line options: -i, -c and the following interactive mode commands: quit, freesp -d, blockget -n, ncheck, sb 0, print. Version 2.7.11 is enough, earlier versions will probably also work.
* ReiserFSv3: development package for reiserfsprogs (header files and compiled static *.a libraries from the package). ReiserFS requires the fork() function (unistd.h) and one of: waitpid(), wait() (sys/wait.h).
* Reiser4: development package for reiser4progs, libuuid (e2fsprogs or e2fsprogs-libs) and libaal. Go to www.kernel.org/pub/linux/utils/fs/reiser4/ and e2fsprogs.sf.net to get the libraries. After installing, libmisc.a needs to be copied in the same place as libreiser4.a, but under a different name - libreiser4misc.a:
cp libmisc/.libs/libmisc.a /usr/lib/libreiser4misc.a
Libmisc.a is in reiser4progs, of course. libreiser4.a is useless without it. Substitute the correct destination path for your system in the above command.
* FAT12/16/32: tffs-lib, the Tiny FAT FS library. Go to code.google.com/p/tffs-lib to get the library. After compiling, install the library and ALL its header files *.h (including the private ones, from the src directory).
* MinixFS: "mfstool", the MinixFS tool. Go to mfstool.sf.net to get this program. Before compiling, perform:
sed -i 's/opt_squash/0/g' 'ls *.c | egrep -v main'
then compile the program (./configure && make), then perform
ar surf libminixfs.a 'ls *.o | egrep -v main'
Then copy the files libminixfs.a, minix_fs.h and protos.h to a directory where the C compiler can find them.