Linux FAQ - Section 4
Linux's handling of filesystems, disks and drives


Question 4.1. How can I get Linux to work with my large disk ?

If your disk is an IDE or EIDE drive you should read the file /usr/src/linux/drivers/block/README.ide (part of the Linux kernel source code). This README contains many helpful hints about IDE drives. Many modern IDE controllers do translation between `physical' cylinders/heads/sectors and `logical' ones.

SCSI disks are accessed by linear block numbers; the BIOS invents some `logical' cylinders/heads/sectors fiction to support DOS.

DOS will usually not be able to access partitions which extend beyond 1024 logical cylinders, and will make booting a Linux kernel from such partitions using LILO problematic at best.

You can still use such partitions for Linux or other operating systems that access the controller directly.

I'd recommend creating at least one Linux partition entirely under the 1024-logical-cylinder limit and booting off that; the other partitions will then be OK.

Question 4.2. How can I undelete files ?

In general, this is very hard to do on Unices because of their multitasking nature. Undelete functionality for the ext2fs is being worked on, but don't hold your breath.

There are a number of packages available that work by providing new commands for deletion and sometimes copying that move deleted files into a `wastebasket' directory instead; they can then be recovered until cleaned out automatically by background processing.

Alternatively you can search the raw disk device which holds the filesystem in question. This is hard work, and you will need to be root to do this.

Question 4.3. Is there a defragmenter for ext2fs etc. ?

Yes. There is a Linux filesystem defragmenter for ext2, minix and old-style ext filesystems available on sunsite.unc.edu in system/Filesystems/defrag-0.6.tar.gz.

Users of the ext2 filesystem can probably do without defrag since ext2 contains extra code to keep fragmentation reduced even in very full filesystems.

Question 4.4. How do I format and create a filesystem on a floppy ?

For a 3.5 inch high density floppy:
   fdformat /dev/fd0H1440
   mkfs -t ext2 -m 0 /dev/fd0H1440 1440
For a 5.25 inch floppy use fd0h1200 and 1200 as appropriate. For the `B' drive use fd1 instead of fd0. Full details of which floppy devices do what can be found in the Linux Device List [Q2.1 `Where can I get the HOWTOs and other documentation ?']. You may have to run mke2fs directly instead of mkfs -t ext2. The -m 0 option tells mkfs.ext2 not to reserve any space on the disk for the superuser --- usually the last 10% is reserved for root.

The first command low-level formats the floppy; the second creates an empty filesystem on it. After doing this you can mount the floppy like a hard disk partition and simply cp and mv files, etc.

Question 4.5. I get nasty messages about inodes, blocks, and the suchlike

You probably have a corrupted filesystem, probably caused by not shutting Linux down properly before turning off the power or resetting. You need to use a recent shutdown program to do this --- for example, the one included in the util-linux package, available on sunsite and tsx-11.

If you're lucky the program fsck (or e2fsck or xfsck as appropriate if you don't have the automatic fsck front-end) will be able to repair your filesystem; if you're unlucky the filesystem is trashed and you'll have to reinitialise it with mkfs (or mke2fs, mkxfs etc.) it and restore from a backup.

NB: don't try to check a filesystem that's mounted read-write - this includes the root partition if you don't see

   VFS: mounted root ... read-only
at boot time.

Question 4.6. My swap area isn't working.

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       sw
for example.

If you see

        Unable to find swap-space signature
you have forgotten to run mkswap. See the manpage for details; it works much like mkfs.

Check the Installation HOWTO for detailed instructions of how to set up a swap area.

Question 4.7. How do I remove LILO so my system boots DOS again ?

Using DOS (MS-DOS 5.0 or later, or OS/2), type FDISK /MBR (which is not documented). This will restore a standard MS-DOS Master Boot Record. If you have DR-DOS 6.0, go into FDISK in the normal way and then select the `Re-write Master Boot Record' option.

If you don't have DOS 5 or DR-DOS you need to have the boot sector that LILO saved when you first installed it. You did keep that file, didn't you ? It's probably called boot.0301 or some such. Type

   dd if=boot.0301 of=/dev/hda bs=445 count=1
(or sda if you're using a SCSI disk). This may also wipe out your partition table, so beware ! If you're desperate, you could use
   dd if=/dev/zero of=/dev/hda bs=512 count=1
which will erase your partition table and boot sector completely: you can then reformat the disk using your favourite software; however this will render the contents of your disk inaccessible --- you'll lose it all unless you're an expert.

Note that the DOS MBR boots whichever (single!) partition is flagged as `active'; you may need to use fdisk to set and clear the active flags on partitions appropriately.

Question 4.8. Why can't I use fdformat except as root ?

The system call to format a floppy may only be done as root, regardless of the permissions of /dev/fd0*. If you want any user to be able to format a floppy try getting the fdformat2 program; this works around the problems by being setuid to root.

Question 4.9. Is there something like Stacker or Doublespace for Linux ?

Currently none of the Linux filesystems can do compression in the filesystem.

There is a program called Zlibc which allows existing applications to read compressed (GNU zipped) files as if they were not compressed. After installing it you can compress files using gzip and programs will still find them, without having to change the programs. Look on sunsite.unc.edu in /pub/Linux/libs. The author is Alain.Knaff@imag.fr.

There is a compressing block device driver that can provide filesystem-independant on the fly disk compression in the kernel. It is called `DouBle'. There is a source only distribution on sunsite.unc.edu in /pub/Linux/kernel/patches/diskdrives; the author is Jean-Marc Verbavatz jmv@receptor.mgh.harvard.edu. Note that since this compresses inodes (administrative information) and directories as well as file contents any corruption is quite likely to be serious.

There is also a package available called tcx (Transparently Compressed Executables) which allows you to keep infrequently used executables compressed and only uncompress them temporarily while you use them. You'll find it on the Linux FTP sites [Q2.5 `Where can I get Linux material by FTP ?']; it was also announced in comp.os.linux.announce. Note - this is not the same as gzexe, which is an inferior implementation of the same concept.

Question 4.10. My ext2fs partitions are checked each time I reboot.

See Q9.12 `EXT2-fs: warning: mounting unchecked filesystem'.

Question 4.11. My root filesystem is read-only !

Remount it. If /etc/fstab is correct you can simply mount -n -o remount /. If /etc/fstab is wrong you must give the device name and posibly the type too: e.g. mount -n -o remount -t ext2 /dev/hda2 /. To understand why you got into this state see Q9.12 `EXT2-fs: warning: mounting unchecked filesystem'.

Question 4.12. I have a huge /proc/kcore ! Can I delete it ?

None of the files in /proc are really there - they're all "pretend" files made up by the kernel, to give you information about the system, and don't take up any hard disk space.

/proc/kcore is like an "alias" for the memory in your computer; its size is the same as the amount of RAM you have, and if you ask to read it as a file the kernel does memory reads.

Question 4.13. My AHA1542C doesn't work with Linux.

The option to allow disks with more than 1024 cylinders is only required as a workaround for a DOS misfeature and should be turned off under Linux. For older Linux kernels you need to turn off most of the "advanced BIOS" options - all but the one about scanning the bus for bootable devices.
Next: Porting, compiling and obtaining programs.
Back: Compatibility with other operating systems.
Return to contents.

Ian Jackson / ijackson@gnu.ai.mit.edu - 06 March 1996

Extracted from Linux Frequently Asked Questions with Answers, Copyright Ian Jackson 1996.