Linux FAQ - Section 6
Solutions to common miscellaneous problems


Question 6.1. free dumps core.

In Linux 1.3.57 and later the format of /proc/meminfo was changed in a way that the implementation of free doesn't understand.

Get the latest version, from sunsite.unc.edu in /pub/Linux/system/Status/ps/procps-0.99.tgz.

Question 6.2. My clock is very wrong.

There are two clocks in your computer. The hardware (CMOS) clock runs even when the computer is off and is used to when the system starts up and by DOS (if you use it). The ordinary system time, shown and set by date, is maintained by the kernel while Linux is running.

You can display the CMOS clock time, or set either clock from the other, with /sbin/clock program - see man 8 clock.

There are various other programs that can correct either or both clocks for systematic drift or transfer time across the network. Some of them may already be installed on your system. Try looking at or for adjtimex (corrects for drift), netdate and getdate (simply get the time from the network) or xntp (accurate fully-featured network time daemon).

Question 6.3. Setuid scripts don't seem to work.

That's right. This feature has been deliberately disabled in the Linux kernel because setuid scripts are almost always a security hole. If you want to know why read the FAQ for comp.unix.questions.

Question 6.4. Free memory as reported by free keeps shrinking.

The `free' figure printed by free doesn't include memory used as a disk buffer cache - shown in the `buffers' column. If you want to know how much memory is really free add the `buffers' amount to `free' - newer versions of free print an extra line with this info.

The disk buffer cache tends to grow soon after starting Linux up, as you load more programs and use more files and the contents get cached. It will stabilise after a while.

Question 6.5. When I add more memory it slows to a crawl.

This is quite a common symptom of a failure to cache the additional memory. The exact problem depends on your motherboard.

Sometimes you have to enable caching of certain regions in your BIOS setup. Look in the CMOS setup and see if there is an option to cache the new memory area which is currently switched off. This is apparently most common on a 486.

Sometimes the RAMs have to be in certain sockets to be cached.

Sometimes you have to set jumpers to enable the caching.

Some motherboards don't cache all the RAM if you have more RAM per amount of cache than they expect. Usually a full 256K cache will solve this problem.

If in doubt, check your motherboard manual. If you still can't fix it because the documentation is inadequate you might like to post a message to comp.os.linux.hardware giving all the details - make, model number, date code, etc. so that other Linux users can avoid it.

Question 6.6. Some programs (e.g. xdm) won't let me log in.

You are probably using non-shadow-password programs but are using shadow passwords.

If so, you have to get or compile a shadow password version of the program(s) in question. The shadow password suite can be found in (amongst other places):

   tsx-11.mit.edu:/pub/linux/sources/usr.bin/shadow-*
This is the source code; you will probably find the binaries in .../linux/binaries/usr.bin.

Question 6.7. Some programs let me log in with no password.

You probably have the same problem as in Q6.6 `Some programs (e.g. xdm) won't let me log in.', with an added wrinkle:

If you are using shadow passords you should put a letter x or an asterisk in the password field of /etc/passwd for each account, so that if a program doesn't know about the shadow passwords it won't think it's a passwordless account and let anyone in.

Question 6.8. My machine runs very slowly when I run GCC / X / ...

You may not have any swap enabled. You need to enable swapping to allow Linux to page out bits of data programs aren't using at the moment to disk to make more room for other programs and data. If you don't Linux has to keep data in memory and throw away in-memory copies of programs (which are paged straight from the filesystem) and so less and less program is in memory and everything runs very slowly.

See the Installation HOWTO and the Installation and Getting Started Guide [Q2.1 `Where can I get the HOWTOs and other documentation ?'] for details of how to set up a swap partition or swapfile; see also Q4.6 `My swap area isn't working.'.

Alternatively you may have too little real memory. If you have less RAM than all the programs you're running at once use Linux will use your hard disk instead and thrash horribly. The solution in this case is to not run so many things at once or to buy more memory. You can also reclaim some memory by compiling and using a kernel with less options configured. See Q7.6 `How do I upgrade/recompile my kernel ?'.

You can tell how much memory and/or swap you're using by using the free command, or by typing

    cat /proc/meminfo
If your kernel is configured with a ramdisk this is probably wasted space and will cause things to go slowly. Use LILO or rdev to tell the kernel not to allocate a ramdisk (see the LILO documentation or type man rdev).

Question 6.9. I can only log in as root.

You probably have some permission problems, or you have a file /etc/nologin.

If the latter put rm -f /etc/nologin in your /etc/rc.local or /etc/rc.d/* scripts.

Otherwise check the permissions on your shell, and any filenames which appear in error messages, and also the directories containing these files all the way up the tree, up to and including the root directory.

Question 6.10. My screen is all full of weird characters instead of letters.

You probably sent some binary data to your screen by mistake. Type echo '\033c' to fix it. Many Linux distributions have a command reset that does this.

Question 6.11. I have screwed up my system and can't log in to fix it.

Reboot from an emergency floppy or floppy pair, for example the Slackware boot- and root-disk pair (in the install subdirectory of the Slackware mirrors) or the MCC installation boot floppy. There are also two diy rescue disk creation packages on sunsite.unc.edu in /pub/Linux/system/Recovery. These are better as they'll have your own kernel on them, so that you don't run the risk of missing devices, filesystems, etc.

Get to a shell prompt and mount your hard disk with something like

   mount -t ext2 /dev/hda1 /mnt
Then your filesystem is available under the directory /mnt and you can fix the problem. Remember to unmount your hard disk before rebooting (cd back down to / first or it will say it's busy).

Question 6.12. I've discovered a huge security hole in rm !

No you haven't. You are obviously new to Unix and need to read a good book on it to find out how things work. Clue: ability to delete files under Unix depends on permission to write the directory they are in.

Question 6.13. lpr and/or lpd aren't working.

Check the Printing HOWTO [Q2.1 `Where can I get the HOWTOs and other documentation ?'].

Question 6.14. Timestamps on files on msdos partitions are set incorrectly.

There is a bug in the program clock (often found in /sbin) - it miscounts a timezone offset, confusing seconds with minutes or some such. Get a new version of it.

Question 6.15. How do I get LILO to boot the vmlinux file ?

In kernel versions 1.1.80 and later the compressed kernel image, which is what you have to give to LILO, has been moved to arch/i386/boot/zImage. The vmlinux file in the root directory is the uncompressed kernel, and you shouldn't try to boot it.

This change has been made to make it easier to build the versions for several different processors from the same source tree.


Next: How do I do this or find out that ... ?.
Back: Porting, compiling and obtaining programs.
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.