3. Compatibility with Other Operating Systems

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

Yes. Linux uses the standard MS-DOS partitioning scheme, so it can share your disk with other operating systems.

Linux has loadable kernel modules for (presumably) all versions of Microsoft FAT and VFAT file systems, including Windows 2000 and WindowsMe. 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 kernel support for the VFAT file system used by Windows 9x and Windows NT.

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.

3.2. How To Access Files on a MS-DOS Partition or Floppy.

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. (``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.

3.3. Does Linux Support Compressed Ext2 File Systems?

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]

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.

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.

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/.

3.4. Can Linux Use Stacked/DBLSPC/Etc. DOS Drives?

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/.

3.5. Can Linux Access OS/2 HPFS Partitions?

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. (``How To Upgrade/Recompile a Kernel.'') Then you can mount HPFS partition, using, for example:

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

3.6. Can Linux Access Amiga File Systems?

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.

3.7. Can Linux Access BSD, SysV, Etc. UFS?

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.'')

3.8. Can Linux Access SMB File Systems?

Linux supports read/write access of Windows for Workgroups and Windows NT SMB volumes. See the file Documentation/filesystems/smbfs.txt of the Linux kernel source distribution, and (``How To Upgrade/Recompile a Kernel.'')

There is also a suite of programs called Samba which provide support for WfW networked file systems (provided they're for TCP/IP). Information is available in the README file at metalab.unc.edu/pub/Linux/system/network/samba/.

The SMB Web site is http://www.samba.org/, and there is also a Web site at samba.anu.edu.au/samba/.

3.9. Can Linux Access Macintosh File Systems?

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.

3.10. Can Linux Run Microsoft Windows Programs?

WINE, a MS Windows emulator for Linux, is still not ready for general distribution. If you want to contribute to its development, look for the status reports in the comp.emulators.ms-windows.wine newsgroup.

There is also a FAQ, compiled by P. David Gardner, at ftp://metalab.unc.edu/pub/Linux/docs/faqs/Wine-FAQ/.

In the meantime, if you need to run MS Windows programs, the best bet—seriously—is to reboot. LILO, the Linux boot loader, can boot one of several operating systems from a menu. See the LILO documentation for details.

Also, LOADLIN.EXE (a DOS program to load a Linux, or other OS, kernel is one way to make Linux co-exist with DOS. LOADLIN.EXE is particularly handy when you want to install Linux on a 3rd or 4th drive on a system (or when you're adding a SCSI drive to a system with an existing IDE).

In these cases, it is common for LILO's boot loader to be unable to find or load the kernel on the "other" drive. So you just create a C:\LINUX directory (or whatever), put LOADLIN.EXE in it with a copy of your kernel, and use that.

LOADLIN.EXE is a VCPI compliant program. Win95 will want to, "shutdown into DOS mode," to run it (as it would with certain other DOS protected-mode programs).

Earlier versions of LOADLIN.EXE sometimes required a package called REALBIOS.COM, which required a boot procedure on an (almost) blank floppy to map the interrupt vectors (prior to the loading of any software drivers). (Current versions don't seem to ship with it, and don't seem to need it).

[Jim Dennis]

3.11. Where Is Information about NFS Compatibility?

This information is partly taken from Nicolai Langfeldt's excellent NFS HOWTO, and is current as of 10/1/1999.

Most version 2.2.x kernels need a set of patches to install the knfsd subsystem, maintained by H.J. Lu, to communicate efficiently (if at all) with Sparc, IBM RS, and Alpha machines, and probably others. This package is actually a collection of patches to the kernel sources. Better support for non-Intel architectures is included in the 2.4 kernels.

There is also a user-space server. Although it lacks remote file locking, it is easier to install. It may be equally efficient.

In the Documentation/Changes of recent kernel distributions, there is a list of URL's for both the knfsd server and the user-space server.

There is a CVS server available for the kernel-space NFS subsystem, as well as a NFS WWW page at http://www.linuxnfs.sourceforge.org/, although the URL requires a password for access. The relevant URL's are listed in the README.nfs file at ftp://ftp.us.kernel.org/, and other kernel archive sites, along with login information. Patches are at ftp://ftp.varesearch.com/pub/kernel/latest/patches/.

The source archives of the user-space server and utilities currently reside on ftp://linux.mathematik.tu-darmstadt.de:/pub/linux/people/okir/.

In the case of older Solaris releases, the lack of statd or lockd on a client or server machine may cause incompatibility. On some versions of Solaris, statd can be used to exploit features of the automounter. Sun released a patch to correct this, but statd still needs to be started by root on such systems. On recent Solaris systems, refer to the information in /etc/dfs/dfstab and the share(1M) manual page to enable volume sharing. In addition, the rpcinfo program can tell you if statd or lockd are available on the local or remote machines.

The linux-kernel mailing list has on-and-off discussions of the status of the NFS subsystem, which appears to be changing rapidly.

[Nicolai Langfeldt, Robert Kiesling, Anders Hammarquist]

3.12. Can Linux Use True Type Fonts?

Yes. There are a number of True Type font servers for the X Window System. One of them is xfsft. Its home page is http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/. There are also instructions for configuration.

People have reported success with other True Type font servers. There are links from the xfsft Home Page to them as well.

You can also compile True Type Font support into your X server directly. Again, refer to the xfsft Home Page for details.

3.13. Can Linux Boot from MS-DOS?

If LILO doesn't work, and if the machine has MS-DOS or Microsoft Windows, you may be left with a computer that won't boot. This can also happen on an upgrade to your Linux distribution. Re-installing LILO is the last thing that the installation does. So it is vitally important when installing or upgrading Linux on a dual boot machine, to have a MS-DOS or Windows rescue disk nearby so you can FDISK -MBR. Then you can go about using LOADLIN.EXE instead of LILO.

This config.sys file is one possible way to invoke LOADLIN.EXE and boot MS-DOS or Linux.

   [menu]
   menuitem=DOS, Dos Boot
   menuitem=LINUX, Linux Boot

   [LINUX]
   shell=c:\redhat\loadlin.exe c:\redhat\autoboot\vmlinuz vga=5 root=/dev

   [DOS]
   STACKS = 0,0
   rem all the other DOS drivers get loaded here.

This creates a menu where you can directly jump to LOADLIN.EXE before all of the MS-DOS drivers get loaded.

The paths and options are peculiar to one machine and should be intuitively obvious to the most casual observer. See the LOADLIN.EXE docs for options. They are the same as LILO, and options are just passed to the kernel, anyhow.

[Jim Harvey]

3.14. How Can Linux Boot from OS/2's Boot Manager?

  1. Create a partition using OS/2's FDISK.EXE (Not Linux's fdisk).

  2. Format the partition under OS/2, either with FAT or HPFS. This is so that OS/2 knows about the partition being formatted. (This step is not necessary with OS/2 `warp' 3.0.)

  3. Add the partition to the Boot Manager.

  4. Boot Linux, and create a file system on the partition using mkfs -t ext2 or mke2fs. At this point you may, if you like, use Linux's fdisk to change the code of the new partition to type 83 (Linux Native)—this may help some automated installation scripts find the right partition to use.

  5. Install Linux on the partition.

  6. Install LILO on the Linux partition—NOT on the master boot record of the hard drive. This installs LILO as a second-stage boot loader on the Linux partition itself, to start up the kernel specified in the LILO configuration file. To do this, you should put

       boot = /dev/hda2

    (where /dev/hda2 is the partition you want to boot from) in your /etc/lilo/config or /etc/lilo.config file.

  7. Make sure that it is the Boot Manager partition that is marked active, so that you can use Boot Manager to choose what to boot.

There is a set of HOWTO's on the subject of multi-boot systems at the LDP Home Page, http://www.linuxdoc.org/.