<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
 <TITLE>Linux Frequently Asked Questions with Answers: Frequently encountered error messages. </TITLE>
 <LINK HREF="Linux-FAQ-10.html" REL=next>
 <LINK HREF="Linux-FAQ-8.html" REL=previous>
 <LINK HREF="Linux-FAQ.html#toc9" REL=contents>
</HEAD>
<BODY>
<A HREF="Linux-FAQ-10.html"><IMG SRC="next.gif" ALT="Next"></A>
<A HREF="Linux-FAQ-8.html"><IMG SRC="prev.gif" ALT="Previous"></A>
<A HREF="Linux-FAQ.html#toc9"><IMG SRC="toc.gif" ALT="Contents"></A>
<HR>
<H2><A NAME="Frequently encountered error messages."></A> <A NAME="s9">9. Frequently encountered error messages. </A></H2>

<P>
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="Modprobe can't locate module, ``XXX,'' and similar messages."></A> <A NAME="ss9.1">9.1 Modprobe can't locate module, ``XXX,'' and similar messages. </A>
</H2>

<P>
<P>These types of messages mostly occur at boot time or shutdown.
If modprobe, insmod, or rmmod complain about not being able to find a
module, add the following to the /etc/modules.conf or
/etc/modutils/aliases file, whichever is present on your system.  
<PRE>
alias &lt;module-name> off
</PRE>

And use the name of the module that appears in the error
message.
<P>[J.H.M. Dassen]
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="Unknown terminal type linux and similar."></A> <A NAME="ss9.2">9.2 Unknown terminal type linux and similar. </A>
</H2>

<P>In early kernels the default console terminal type has changed from
``console'' to ``linux.''  You must edit /etc/termcap to change the
line reading:
<PRE>
console|con80x25:\
</PRE>

to
<PRE>
linux|console|con80x25:\
</PRE>

(there may be an additional dumb in there--if so it should be removed.)
<P>To get the editor to work you may need say 
<PRE>
TERM=console 
</PRE>

(for bash and ksh), or 
<PRE>
setenv TERM console 
</PRE>

for csh or tcsh.
<P>Some programs use /usr/lib/terminfo instead of /etc/termcap.  For these
programs you should upgrade your terminfo, which is part of ncurses.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="lp1 on fire"></A> <A NAME="ss9.3">9.3 lp1 on fire </A>
</H2>

<P>This is a joke/traditional error message indicating that some sort of
error is being reported by your printer, but that the error status isn't a
valid one.  It may be that you have some kind of I/O or IRQ conflict--
check your cards' settings.  Some people report that they get this message
when their printer is switched off.  Hopefully it isn't really on fire ...
<P>In newer kernels, this message reads, ``lp1 reported invalid error
status (on fire, eh?)''
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="INET: Warning: old style ioctl... called!"></A> <A NAME="ss9.4">9.4 INET: Warning: old style ioctl... called! </A>
</H2>

<P>You are trying to use the old network configuration utilities.  The
new ones can be found on ftp.linux.org.uk in
/pub/linux/Networking/PROGRAMS/NetTools/ (source only, I'm afraid).
<P>Note that they cannot be used just like the old-style programs.  See
the NET-2 HOWTO for instructions on how to set up the old-style
networking programs correctly.  Even better, see the NET-3 HOWTO and
upgrade your networking software.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="ld: unrecognized option '-m486'"></A> <A NAME="ss9.5">9.5 ld: unrecognized option '-m486' </A>
</H2>

<P>You have an old version of ld.  Install a newer binutils package--this
will contain an updated ld.  Look on tsx-11.mit.edu in
/pub/linux/packages/GCC/ for binutils-2.6.0.2.bin.tar.gz.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="GCC says Internal compiler error."></A> <A NAME="ss9.6">9.6 GCC says Internal compiler error. </A>
</H2>

<P>If the fault is repeatable (i.e., it always happens at the same place in the
same file--even after rebooting and trying again, using a stable
kernel) you have discovered a bug in GCC.  See the GCC Info documentation
(type Control-h i in Emacs, and select GCC from the menu) for details on
how to report the error--make sure you have the latest version, though.
<P>Note that this is probably not a Linux-specific problem.  Unless you are
compiling a program many other Linux users also compile, you should not
post your bug report to any of the comp.os.linux groups.
<P>If the problem is not repeatable, you may be experiencing memory
corruption--see 
<A HREF="#make says Error 139">make says Error 139</A>
.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="make says Error 139"></A> <A NAME="ss9.7">9.7 make says Error 139 </A>
</H2>

<P>Your compiler driver (gcc) dumped core.  You probably have a
corrupted, buggy, or old version of GCC--get the latest release.
Alternatively, you may be running out of swap space--see 
<A HREF="Linux-FAQ-6.html#My machine runs very slowly when I run GCC / X / ...">My machine runs very slowly when I run GCC / X / ...</A>
.
<P>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.
<P>Linux, like any Unix, is a very good memory tester--much better than
MS-DOS based memory test programs.
<P>Reportedly, some clone x87 math coprocessors can cause problems.  Try
compiling a kernel with math emulation 
(
<A HREF="Linux-FAQ-7.html#How do I upgrade/recompile my kernel?">How do I upgrade/recompile my kernel?</A>
.)  
You may need to use the ``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.
<P>More information about this problem is available on the Web at
<A HREF="http://www.bitwizard.nl/sig11/">http://www.bitwizard.nl/sig11/</A>.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="shell-init: permission denied when I log in."></A> <A NAME="ss9.8">9.8 shell-init: permission denied when I log in. </A>
</H2>

<P>Your root directory and all the directories up to your home directory
must be readable and executable by everybody.  See the manual page for
chmod or a book on Unix for how to fix the problem.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="No utmp entry.  You must exec ... when I log in."></A> <A NAME="ss9.9">9.9 No utmp entry.  You must exec ... when I log in. </A>
</H2>

<P>Your /var/run/utmp is screwed up.  You should have
<PRE>
> /var/run/utmp
</PRE>

in your <CODE>/etc/rc.local</CODE> or <CODE>/etc/rc.d/*</CODE>.  See (``
<A HREF="Linux-FAQ-6.html#I have screwed up my system and can't log in to fix it.">I have screwed up my system and can't log in to fix it.</A>
'') Note
that the utmp may also be found in /var/adm/ or /etc/ on some
older systems.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="Warning--bdflush not running."></A> <A NAME="ss9.10">9.10 Warning--bdflush not running. </A>
</H2>

<P>Modern kernels use a better strategy for writing cached disk blocks.  In
addition to the kernel changes, this involves replacing the old update
program which used to write everything every 30 seconds with a more subtle
daemon (actually a pair), known as bdflush.
<P>Get bdflush-n.n.tar.gz from the same place as the kernel source code
(
<A HREF="Linux-FAQ-7.html#How do I upgrade/recompile my kernel?">How do I upgrade/recompile my kernel?</A>
) and compile and
install it.  Bdflush should be started before the usual boot-time file
system checks.  It will work fine with older kernels as well, so
there's no need to keep the old update around.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="Warning: obsolete routing request made."></A> <A NAME="ss9.11">9.11 Warning: obsolete routing request made. </A>
</H2>

<P>This is nothing to worry about.  The message means that your version
route is a little out of date, compared to the kernel.  You can make
the message go away by getting a new version of route from the same
place as the kernel source code. (
<A HREF="Linux-FAQ-7.html#How do I upgrade/recompile my kernel?">How do I upgrade/recompile my kernel?</A>
)
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="EXT2-fs: warning: mounting unchecked file system."></A> <A NAME="ss9.12">9.12 EXT2-fs: warning: mounting unchecked file system. </A>
</H2>

<P>You need to run e2fsck (or fsck -t ext2 if you have the fsck front end
program) with the -a option to get it to clear the `dirty' flag, and then
cleanly unmount the partition during each shutdown.
<P>The easiest way to do this is to get the latest fsck, umount, and
shutdown commands, available in Rik Faith's util-linux package 
(`
<A HREF="Linux-FAQ-2.html#Where can I get Linux material by FTP?">Where can I get Linux material by FTP?</A>
'')
You have to make sure that your /etc/rc*/ scripts use them correctly.
<P>NB: don't try to check a file system that's mounted read/write--this
includes the root partition if you don't see
<PRE>
VFS: mounted root ... read-only
</PRE>

at boot time.  You must arrange to mount the root file system
read/only to start with, check it if necessary, and then remount it
read/write.  Read the documentation that comes with util-linux to find
out how to do this.
<P>Note that you need to specify the -n option to mount so it won't try
to update /etc/mtab, since the root file system is still read-only,
and this will otherwise cause it to fail.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="EXT2-fs warning: maximal count reached."></A> <A NAME="ss9.13">9.13 EXT2-fs warning: maximal count reached. </A>
</H2>

<P>This message is issued by the kernel when it mounts a file system that's
marked as clean, but whose ``number of mounts since check'' counter has
reached the predefined value.  The solution is to get the latest version
of the ext2fs utilities (e2fsprogs-0.5b.tar.gz at the time of writing)
from the usual sites.  (`
<A HREF="Linux-FAQ-2.html#Where can I get Linux material by FTP?">Where can I get Linux material by FTP?</A>
'')
<P>The maximal number of mounts value can be examined and changed using
the tune2fs program from this package.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="EXT2-fs warning: checktime reached."></A> <A NAME="ss9.14">9.14 EXT2-fs warning: checktime reached. </A>
</H2>

<P>Kernels from 1.0 onwards support checking a file system based on the
elapsed time since the last check as well as by the number of mounts.
Get the latest version of the ext2fs utilities. ``(
<A HREF="#EXT2-fs warning: maximal count reached.">EXT2-fs warning: maximal count reached.</A>
'')
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="df says Cannot read table of mounted file systems."></A> <A NAME="ss9.15">9.15 df says Cannot read table of mounted file systems. </A>
</H2>

<P>There is probably something wrong with your <CODE>/etc/mtab</CODE> or 
<CODE>/etc/fstab</CODE> files.
If you have a reasonably new version of mount, /etc/mtab should be emptied
or deleted at boot time (in /etc/rc.local or /etc/rc.d/*), using something
like
<PRE>
rm -f /etc/mtab*
</PRE>
<P>Some versions of SLS have an entry for the root partition in /etc/mtab
made in /etc/rc* by using rdev.  This is incorrect--the newer versions
of mount do this automatically.
<P>Other versions of SLS have a line in /etc/fstab that looks like:
<PRE>
/dev/sdb1   /root   ext2   defaults
</PRE>

This is wrong.  /root should read simply /.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="fdisk says Partition X has different physical/logical ..."></A> <A NAME="ss9.16">9.16 fdisk says Partition X has different physical/logical ... </A>
</H2>

<P>If the partition number (X, above) is 1, this is the same problem as 
in ``
<A HREF="#fdisk: Partition 1 does not start on cylinder boundary.">fdisk: Partition 1 does not start on cylinder boundary.</A>
''
<P>If the partition begins or ends on a cylinder numbered greater than
1024, this is because the standard DOS disk geometry information
format in the partition table can't cope with cylinder numbers with
more than 10 bits.  You should see ``
<A HREF="Linux-FAQ-4.html#How can I get Linux to work with my disk?">How can I get Linux to work with my disk?</A>
''
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="fdisk: Partition 1 does not start on cylinder boundary."></A> <A NAME="ss9.17">9.17 fdisk: Partition 1 does not start on cylinder boundary. </A>
</H2>

<P>The version of fdisk that comes with many Linux systems creates partitions
that fail its own validity checking.  Unfortunately, if you've already
installed your system, there's not much you can do about this, apart from
copying the data off the partition, deleting and remaking it, and copying
the data back.
<P>You can avoid the problem by getting the latest version of fdisk, from Rik
Faith's util-linux package (available on all the usual FTP sites).
Alternatively, if you are creating a new partition 1 that starts in the
first cylinder, you can do the following to get a partition that fdisk
likes.
<UL>
<LI>Create partition 1 in the normal way.  A `p' listing will produce the
mismatch complaint.</LI>
<LI>Type `u' to set sector mode and do `p' again.  Copy down the number from
the ``End'' column.</LI>
<LI>Delete partition 1.</LI>
<LI>While still in sector mode, re-create partition 1.  Set the first sector
to match the number of sectors per track.  This is the sector number in
the first line of the `p' output.  Set the last sector to the value you
wrote down in the step above.</LI>
<LI>Type `u' to reset cylinder mode and continue with other partitions.</LI>
</UL>

Ignore the message about unallocated sectors--they refer to the sectors
on the first track apart from the Master Boot Record, and they are not used
if you start the first partition in track 2.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="fdisk says partition n has an odd number of sectors."></A> <A NAME="ss9.18">9.18 fdisk says partition n has an odd number of sectors. </A>
</H2>

<P>The PC disk partitioning scheme works in 512-byte sectors, but Linux uses
1K blocks.  If you have a partition with an odd number of sectors, the last
sector is wasted.  Ignore the message.
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="mtools says cannot initialize drive XYZ"></A> <A NAME="ss9.19">9.19 mtools says cannot initialize drive XYZ </A>
</H2>

<P>This means that mtools is having trouble accessing the drive.  This can be
due to several things.
<P>Often this is due to the permissions on floppy drive devices (/dev/fd0*
and /dev/fd1*) being incorrect--the user running mtools must have the
appropriate access.  See the manual page for chmod for details.
<P>Most versions of mtools distributed with Linux systems (not the standard
GNU version) use the contents of a file /etc/mtools to determine which
devices and densities to use, in place of having this information compiled
into the binary.  Mistakes in this file often cause problems.  There is
often no documentation about this.
<P>For the easiest way to access your MS-DOS files (especially those on a
hard disk partition) see 
<A HREF="Linux-FAQ-3.html#How do I access files on my DOS partition or floppy?">How do I access files on my DOS partition or floppy?</A>
  Note--you should never use mtools to access
files on an msdosfs mounted partition or disk!
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="At the start of booting: Memory tight"></A> <A NAME="ss9.20">9.20 At the start of booting: Memory tight </A>
</H2>

<P>This means that you have an extra-large kernel, which means that Linux
has to do some special memory-management magic to be able to boot
itself from the BIOS.  It isn't related to the amount of physical
memory in your machine.  Ignore the message, or compile a kernel
containing only the drivers and features you need.
(``
<A HREF="Linux-FAQ-7.html#How do I upgrade/recompile my kernel?">How do I upgrade/recompile my kernel?</A>
)''
<P>-------------------------------------------------------------------------------
<H2><A NAME="My syslog says `end_request: I/O error, ...'."></A> <A NAME="ss9.21">9.21 My syslog says `end_request: I/O error, ...'. </A>
</H2>

<P>This error message, and messages like it, almost always indicate
a hardware error with a hard drive.
<P>This commonly indicates a hard drive defect.  The only way to avoid
further data loss is to completely shut own the system.  You must also
make sure that whatever data is on the drive is backed up, and
restore it to a non-defective hard drive.
<P>This error message may also indicate a bad connection to the drive,
especially with homebrew systems.  If you install an IDE drive,
ALWAYS use new cables.  It's probably is a good idea with SCSI drives,
too.
<P>In one instance, this error also seemed to coincide with a bad ground
between the system board and the chassis.  Be sure that all electrical
connections are clean and tight before placing the blame on the hard
drive itself.
<P>[Peter Moulder, Theodore T'so]
<P>-------------------------------------------------------------------------------
<P>
<H2><A NAME="You don't exist. Go away."></A> <A NAME="ss9.22">9.22 You don't exist. Go away. </A>
</H2>

<P>This is not a viral infection :-).  It comes from programs like
write, talk, and wall, if your invoking UID doesn't correspond to a valid
user (probably due to /etc/passwd being corrupted), or if the session
(pseudoterminal, specifically) you're using isn't properly registered in
the utmp file (probably because you invoked it in a funny way).
<P>===============================================================================
<P>
<HR>
<A HREF="Linux-FAQ-10.html"><IMG SRC="next.gif" ALT="Next"></A>
<A HREF="Linux-FAQ-8.html"><IMG SRC="prev.gif" ALT="Previous"></A>
<A HREF="Linux-FAQ.html#toc9"><IMG SRC="toc.gif" ALT="Contents"></A>
</BODY>
</HTML>
