5. Partitions And Filesystems

Q: Does Linux Support Virtualized File Systems Like RAID?
Q: Can Linux Use the Same Hard Drive as MS-DOS? OS/2? 386BSD? Win95?
Q: How Do I Access Files on a MS-DOS Partition or Floppy?
Q: Does Linux Support Compressed Ext2 File Systems?
Q: Can Linux Use Stacked/DBLSPC/Etc. DOS Drives?
Q: Can Linux Access OS/2 HPFS Partitions?
Q: Can Linux Access Amiga File Systems?
Q: Can Linux Access BSD, SysV, Etc. UFS?
Q: Can Linux Access MacIntosh File Systems?
Q: How Do I Create a File System on a Floppy?
Q: Does Linux Support File System Encryption?
Q: How Do I Resize a Partition Non-Destructively?
Q: Where Is the Journalling File System on the Net?
Q: Why Isn't My Virtual Memory Swap Area Working?
Q: How Do I Add Temporary Swap Space?

Q: Does Linux Support Virtualized File Systems Like RAID?

A: The most recent Linux kernels support software RAID, and they will work with RAID disk controllers.

An automounter for NFS partitions is part of most Linux distributions.

In addition, several virtual file system projects exist. One of them, the Linux Logical Volume Manager, is located at http://linux.msede.com/lvm/.

Q: Can Linux Use the Same Hard Drive as MS-DOS? OS/2? 386BSD? Win95?

A: Yes. Linux supports many, many filesystems, including the standard MS-DOS partitioning scheme, so it can share your disk with other operating systems.

Linux supports all known versions of the Microsoft FAT and VFAT file systems, including those used by Windows 95, Windows 98, Windows NT, Windows 2000 and Windows ME through loadable kernel modules. In a correctly configured system, they should load automatically when the partitions are mounted.

Note, however, that many other operating systems may not be exactly compatible. DOS's FDISK.EXE and FORMAT.EXE, for example, can overwrite data in a Linux partition, because they sometimes incorrectly use partition data from the partition's boot sector rather than the partition table.

In order to prevent programs from doing this, it is a good idea to zero out under Linux the start of a partition you created, before you use MS-DOS or whatever to format it. Type:

 $ dd
if=/dev/zero of=/dev/hdXY bs=512 count=1

where hdXY is the relevant partition; e.g., /dev/hda1 for the first partition of the first (IDE) disk.

Linux can read and write the files on your DOS and OS/2 FAT partitions and floppies using either the DOS file system type built into the kernel or mtools.

There is reportedly a GPL'd OS/2 device driver that will read and write Linux ext2 partitions.

For information about FAT32 partition support, see http://bmrc.berkeley.edu/people/chaffee/fat32.html.

See What Software does Linux Support? for details and status of the emulators for DOS, MS Windows, and System V programs.

See also, "Can Linux access Amiga file systems?", "Can Linux access Macintosh file systems?", "Can Linux access BSD, SysV, etc., UFS?", and "Can Linux access SMB file systems?"

There are said to be NTFS drivers under development, which should support compression as a standard feature.

Q: How Do I Access Files on a MS-DOS Partition or Floppy?

A: Use the DOS file system, type, for example:

 $ mkdir /dos $
mount -t msdos -o conv=text,umask=022,uid=100,gid=100 /dev/hda3 /dos

If it's a floppy, don't forget to umount it before ejecting it!

You can use the conv=text/binary/auto, umask=nnn, uid=nnn, and gid=nnn options to control the automatic line-ending conversion, permissions and ownerships of the files in the DOS file system as they appear under Linux. If you mount your DOS file system by putting it in your /etc/fstab, you can record the options (comma-separated) there, instead of defaults.

Alternatively, you can use mtools, available in both binary and source form on the FTP sites. See Where Are the Linux FTP Archives?.

A kernel patch (known as the fd-patches) is available which allows floppies with nonstandard numbers of tracks and/or sectors to be used; this patch is included in the 1.1 alpha testing kernel series.

Q: Does Linux Support Compressed Ext2 File Systems?

A: The ext2compr project provides a kernel patch Information about them is located at http://e2ompr.memalpha.cx/e2compr/.

There is also a Web site for the e2compr patches. The code is still experimental and consists of patches for the 2.0 and 2.1 kernels. For more information about the project, including the latest patches, and the address of the mailing list, look up the URL at http://debs.fuller.edu/e2compr/.

[Roderich Schupp, Peter Moulder

A: zlibc is a program that allows existing applications to read compressed (GNU gzip'ed) files as if they were not compressed. Look at ftp://metalab.unc.edu/pub/Linux/libs/. The author is Alain Knaff.

A: There is also a compressing block device driver, "DouBle," by Jean-Marc Verbavatz, which can provide on-the-fly disk compression in the kernel. The source-only distribution is located at ftp://metalab.unc.edu/pub/Linux/patches/diskdrives/. This driver compresses inodes and directory information as well as files, so any corruption of the file system is likely to be serious.

A: There is also a package called tcx (Transparently Compressed Executables), which allows you to keep infrequently used executables compressed and only uncompress them temporarily when in use. It is located at ftp://metalab.unc.edu/pub/Linux/utils/compress/.

Q: Can Linux Use Stacked/DBLSPC/Etc. DOS Drives?

A: Until recently, not very easily. You can access DOS 6.X volumes from the DOS emulator ("What software does Linux support? "), but it's harder than accessing a normal DOS volume via the DOS kernel option, a module, or mtools.

There is a recently added package, dmsdos, that reads and writes compressed file systems like DoubleSpace/DriveSpace in MS-DOS 6.x and Win95, as well as Stacker versions 3 and 4. It is a loadable kernel module. Look at ftp://metalab.unc.edu/pub/Linux/system/filesystems/dosfs/.

Q: Can Linux Access OS/2 HPFS Partitions?

A: Yes, but Linux access to HPFS partitions is read-only. HPFS file system access is available as an option when compiling the kernel or as a module. See the Documentation/filesystems/hpfs.txt file in the kernel source distribution. See How To Upgrade/Recompile a Kernel. Then you can mount HPFS partition, using, for example:

 $ mkdir /hpfs $ mount -t hpfs
/dev/hda5 /hpfs

Q: Can Linux Access Amiga File Systems?

A: The Linux kernel has support for the Amiga Fast File System (AFFS) version 1.3 and later, both as a compile-time option and as a module. The file Documentation/filesystems/affs.txt in the Linux kernel source distribution has more information.

See How To Upgrade/Recompile a Kernel.

Linux supports AFFS hard-drive partitions only. Floppy access is not supported due to incompatibilities between Amiga floppy controllers and PC and workstation controllers. The AFFS driver can also mount disk partitions used by the Un*x Amiga Emulator, by Bernd Schmidt.

Q: Can Linux Access BSD, SysV, Etc. UFS?

A: Recent kernels can mount (read only) the UFS file system used by System V; Coherent; Xenix; BSD; and derivatives like SunOS, FreeBSD, NetBSD, and NeXTStep. UFS support is available as a kernel compile-time option and a module.

See How To Upgrade/Recompile a Kernel.

Q: Can Linux Access MacIntosh File Systems?

A: There is a set of user-level programs that read and write the older Macintosh Hierarchical File System (HFS). It is available at metalab.unc.edu/pub/Linux/utils/disk-management/.

Access to the newer, HFS+ file systems is still under development.

Q: How Do I Create a File System on a Floppy?

A: If you are running recent Gnome or KDE desktops, you have a GUI tool that makes formatting floppies easy.

A: To format a 3.5-inch, high density floppy at the command prompt:

 $ fdformat /dev/fd0H1440
 $ mkfs -t ext2 -m 0 /dev/fd0H1440 1440

For a 5.25 inch floppy, use /dev/fd0h1200 and 1200 as appropriate. For the B: drive use /dev/fd1 instead of /dev/fd0.

The -m 0 option tells mkfs.ext2 not to reserve any space on the disk for the superuserusually the last 10% is reserved for root.

The first command performs a low-level format. The second creates an empty file system. You can mount the floppy like a hard disk partition and simply cp and mv files, etc.

Device naming conventions generally are the same as for other unices. They can be found in Matt Welsh's Installation and Getting Started guide. Refer to Where Is the Documentation?. A more detailed and technical description is Linux Allocated Devices by H. Peter Anvin, hpa@zytor.com, which is included in LaTeX and ASCII form in the kernel source distribution (probably in /usr/src/kernel/Documentation/), as devices.tex and devices.txt.

Q: Does Linux Support File System Encryption?

A: Yes. One file system, ppdd, is archived at http://pweb.de.uu.net/flexsys.mtk/.

Q: How Do I Resize a Partition Non-Destructively?

A: Use the FIPS.EXE program, included with most Linux distributions,under MS-DOS.

A: GNU parted, a partition editor, is stable enough for non-guru, mere-mortal use with relative confidence. Source code for the latest version is at: ftp://ftp.gnu.org/pub/gnu/parted/. There's also a boot disk image for resizing root partitions and for running parted on non-Linux machines. The disk image may be easier for beginners. Building from source could require some extra configuration.

Parted also has tutorial-style, plain-text documentation for Linux and FAT (MS-DOS) file systems.

A: Also, some commercial distributions come with their own partitioning software, like Partition Magic.

Q: Where Is the Journalling File System on the Net?

A: Linux actually supports several journalling file systems. ext3 is now included in current 2.4.x kernels.

A: The journalling file system named Reiserfs has just been released from testing. It is said to make Linux even faster than Linux with the Ext2 file system installed, particularly when dealing with many small files.

Complete information is available at http://devlinux.org/namesys/.

A: JFS is still under development.

Q: Why Isn't My Virtual Memory Swap Area Working?

A: When you boot (or enable swapping manually) you should see

 Adding Swap: NNNNk swap-space

If you don't see any messages at all you are probably missing

 swapon -av 

(the command to enable swapping) in your /etc/rc.local or /etc/rc.d/* (the system startup scripts), or have forgotten to make the right entry in /etc/fstab:

 /dev/hda2 none swap

for example.

If you see:

 Unable to find swap-space signature

you have forgotten to run mkswap. See the manual page for details; it works much like mkfs.

Running the command free, in addition to showing free memory, should display:

 total used free Swap: 10188 2960 7228

If typing cat /proc/swaps reveals only file or partition names, but no swap space information, then the swap file or partition needs re-initialization.

Use fdisk (as root) to determine which partition on a hard drive has been designated as the swap partition. The partition still needs to be initialized with mkswap before enabling it with swapon.

[Andy Jefferson, Steve Withers]

Q: How Do I Add Temporary Swap Space?

A: In addition to a swap partition, Linux can also use a swap file. Some programs, like g++, can use huge amounts of virtual memory, requiring the temporary creation of extra space. To install an extra 64 MB of swap space, for example, use the following shell commands:

# dd if=/dev/zero of=/swap bs=1024 count=65535
# mkswap /swap
# swapon /swap

The count= argument to dd determines how big the swap file will be. In this example the swap file's name is /swap, but the name and location are, generally, arbitrary, depending only on the file system's available space and your having write permissions in the directory.

When you don't need the swap space any more, remove it with the following statements:

# swapoff /swap
# rm /swap

Take a look also at the Installation HOWTO and Installation & Getting Started for detailed instructions.

If that still doesn't provide enough swap space, refer to How To Have More Than 128Mb of Swap.