9. Frequently Encountered Error Messages

Q: Modprobe Can't Locate Module, XXX, and Similar Messages
Q: Unknown Terminal Type ``linux'' and Similar
Q: INET: Warning: old style ioctl... called!
Q: ld: unrecognized option '-m486'
Q: GCC Says, ``Internal compiler error.''
Q: Make Says, ``Error 139.''
Q: Shell-Init: Permission Denied when I Log In
Q: No Utmp Entry. You Must Exec ... when Logging In
Q: Warning--bdflush Not Running
Q: Warning: obsolete routing request made
Q: EXT2-fs: warning: mounting unchecked file system
Q: EXT2-fs warning: maximal count reached
Q: EXT2-fs warning: checktime reached
Q: df Says, ``Cannot read table of mounted file systems.''
Q: fdisk Says, ``Partition X has different physical/logical...''
Q: fdisk: Partition 1 does not start on cylinder boundary
Q: fdisk Says Partition n Has an Odd Number of Sectors
Q: Mtools Utilities Say They Cannot Initialize Drive X
Q: At the Start of Booting: Memory tight
Q: The System Log Says, ``end_request: I/O error, ....''
Q: ``You don't exist. Go away.''
Q: ``Operation not permitted.''
Q: programname: error in loading shared libraries: lib xxx..so.
Q: `` init: Id "x" respawning too fast: disabled for 5 minutes .''
Q: FTP server says: ``421 service not available, remote server has closed connection.''

A: Your compiler (GCC) dumped core. You probably have a corrupted, buggy, or old version of GCC - get the latest release or EGCS. Alternatively, you may be running out of swap space. Refer to: (``Why Does the Machine Run Very Slowly with GCC / X / ...?'')

If this doesn't fix the problem, you are probably having problems with memory or disk corruption. Check that the clock rate, wait states, and refresh timing for your SIMMS and cache are correct (hardware manuals are sometimes wrong, too). If so, you may have some marginal SIMMS, or a faulty motherboard or hard disk or controller.

Linux is a very good memory tester - much better than MS-DOS based memory test programs.

Reportedly, some clone x87 math coprocessors can cause problems. Try compiling a kernel with math emulation (``How To Upgrade/Recompile a Kernel'') no387 kernel command line flag on the LILO prompt to force the kernel to use math emulation, or it may be able to work and still use the '387, with the math emulation compiled in but mainly unused.

More information about this problem is available on the Web at http://www.bitwizard.nl/sig11/.

A: x: cannot open shared object file: No such file or directory.

A: A message like this, when the program that you're trying to run uses shared libraries, usually means one of two things: the program was either compiled on a machine that had a different set of libraries or library paths than yours; or you've upgraded your libraries but not the program.

Executable programs that are linked with dynamic libraries, expect the full pathname of each of the library files it requires. So do the shared libraries, if they rely on other libraries. This is so the shared object dependencies remain as unambiguous as possible, and also as a security measure.

Short of recompiling the executable file for the libraries on the systemprobably the most desirable alternative in the long run - you can try to determine which libraries the executable file needs with the command: ``ldd programname.'' The output will be a list of the shared libraries on the system that the program needs to run, as well as the missing libraries. You can then add the library packages, or if the libraries already exist in a different directory, you can create a symbolic link so the program can find it. For example, if the program requires /usr/lib/libncurses.so.2, and your machine has /lib/libncurses.so.2, you can create a link where the program expects to find the library; e.g.:

 # cd /usr/lib && ln -s /lib/libncurses.so.2 . 

You should note, however, that creating library links like these should be considered a security risk, and the additional links you create will not be compatible with future upgrades. It's simply a quick fix for backward compatibility.

Also, it may take some guesswork to determine in exactly which of the system library directories the program expects to find a shared library file, because ldd will not list the paths of libraries it can't find. A program most likely will tell the run-time linker, /lib/ld.so, to look for shared libraries in [/lib], [/usr/lib], [/usr/local/lib], or [/usr/X11R6/lib], if it's an X client. But that doesn't mean that libraries can't be installed elsewhere. It helps to have some idea of the original library configuration before proceeding.

Also be sure to run ldconfig after creating the symbolic link, so that ld.so has an updated view of the system's libraries. You should also make certain that all of the library directories are listed in [/etc/ld.so.conf], and perhaps in the LD_LIBRARY_PATH environment variable.