Next Previous Contents

4. Linux's handling of file systems, disks, and drives

-------------------------------------------------------------------------------

4.1 How can I get Linux to work with my 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' cylinder/head/sector 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.

It's recommend that you create at least one Linux partition entirely under the 1024 logical cylinder limit, and boot from that. The other partitions will then be okay.

Also there seems to be a bit of trouble with the newer Ultra-DMA drives. I haven't gottent the straight scoop on them--but they are becoming a very common problem and the SVLUG installfests. When you can get 8 to 12 Gig drives for $200 to $300 it's no wonder.

(Much thanks to Jim Dennis for this information.)

-------------------------------------------------------------------------------

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 file system is being worked on, but don't hold your breath.

There are a number of packages available which instead provide new commands for deleting and copying which move deleted files into a `wastebasket' directory. The files can be recovered until cleaned out automatically by background processing.

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

-------------------------------------------------------------------------------

4.3 Is there a defragmenter for ext2fs etc.?

Yes. There is defrag, a Linux file system defragmenter for ext2, minix and old-style ext file systems. It is available at sunsite.unc.edu/pub/Linux/system/filesystems/defrag-0.70.tar.gz.

Users of the ext2 file system can probably do without defrag, because ext2 contains extra code to keep fragmentation reduced even in very full file systems.

-------------------------------------------------------------------------------

4.4 How do I format and create a file system on a floppy?

To format 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.

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 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. (See `` Where can I get the HOWTOs and other 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.

-------------------------------------------------------------------------------

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

You may have a corrupted file system, 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 file system. If you're unlucky, the file system is trashed, and you'll have to reinitialize it with mkfs (or mke2fs, mkxfs, etc.), and restore from a backup.

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

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

-------------------------------------------------------------------------------

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 manual page for details; it works much like mkfs.

Running, 'free' in addition to showing free memory, should display:

             total       used       free
Swap:        10188       2960       7228

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

-------------------------------------------------------------------------------

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 MS DOS 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
This will erase your partition table and boot sector completely: you can then reformat the disk using your favorite software. But 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.

-------------------------------------------------------------------------------

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

The system call to format a floppy can 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.

-------------------------------------------------------------------------------

4.9 My ext2fs partitions are checked each time I reboot.

See `` EXT2-fs: warning: mounting unchecked file system.''.

-------------------------------------------------------------------------------

4.10 My root file system 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 how you got into this state, see `` EXT2-fs: warning: mounting unchecked file system.''

-------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------

4.12 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 Previous Contents