old-www/FAQ/Linux-FAQ/error-messages.html

2056 lines
35 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Frequently Encountered Error Messages</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Linux FAQ"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="The X Window System"
HREF="x-windows.html"><LINK
REL="NEXT"
TITLE="Online Resources"
HREF="online-resources.html"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux FAQ</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x-windows.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="online-resources.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="error-messages"
></A
>17. Frequently Encountered Error Messages</H1
><DIV
CLASS="qandaset"
><DL
><DT
>Q: <A
HREF="error-messages.html#modprobe-cant-locate-module"
><B
CLASS="command"
>Modprobe</B
> Can't Locate Module, <EM
>XXX</EM
>, and Similar Messages</A
></DT
><DT
>Q: <A
HREF="error-messages.html#unknown-terminal-type"
>Unknown Terminal Type <TT
CLASS="literal"
>linux</TT
> and Similar</A
></DT
><DT
>Q: <A
HREF="error-messages.html#inet-warning-old-style"
><TT
CLASS="literal"
>INET: Warning: old style ioctl... called!</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#ld-unrecognized"
><TT
CLASS="literal"
>ld: unrecognized option '-m486'</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#gcc-says"
>GCC Says, <TT
CLASS="literal"
>Internal compiler error</TT
>.</A
></DT
><DT
>Q: <A
HREF="error-messages.html#make-says"
>Make Says, <TT
CLASS="literal"
>Error 139.</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#shell-init-permission"
>Shell-Init: Permission Denied when I Log In</A
></DT
><DT
>Q: <A
HREF="error-messages.html#no-utmp-entry"
>No Utmp Entry. You Must Exec ... when Logging In</A
></DT
><DT
>Q: <A
HREF="error-messages.html#warning--bdflush"
>Warning--bdflush Not Running</A
></DT
><DT
>Q: <A
HREF="error-messages.html#warning-obsolete-routing"
><TT
CLASS="literal"
>Warning: obsolete routing request made</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#ext2-fs-warning-mounting"
><TT
CLASS="literal"
>EXT2-fs: warning: mounting unchecked file system</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#ext2-fs-maximal"
><TT
CLASS="literal"
>EXT2-fs warning: maximal count reached</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#ext2-fs-warning"
><TT
CLASS="literal"
>EXT2-fs warning: checktime reached</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#df-says-cannot"
><B
CLASS="command"
>df</B
> Says, <TT
CLASS="literal"
>Cannot read table of mounted file systems</TT
>.</A
></DT
><DT
>Q: <A
HREF="error-messages.html#fdisk-says-partition"
><B
CLASS="command"
>fdisk</B
> Says, "<TT
CLASS="literal"
>Partition X has different physical/logical...</TT
>"</A
></DT
><DT
>Q: <A
HREF="error-messages.html#fdisk-partition-does-not"
><TT
CLASS="literal"
>fdisk: Partition 1 does not start on cylinder boundary</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#fdisk-odd-number-sectors"
><B
CLASS="command"
>fdisk</B
> Says Partition <EM
>n</EM
> Has an Odd Number of Sectors</A
></DT
><DT
>Q: <A
HREF="error-messages.html#mtools-cannot-initialize"
>Mtools Utilities Say They Cannot Initialize Drive <EM
>X</EM
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#memory-tight"
>At the Start of Booting: <TT
CLASS="literal"
>Memory tight</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#my-syslog-says-end-request"
>The System Log Says, <TT
CLASS="literal"
>end_request: I/O error</TT
>, ....</A
></DT
><DT
>Q: <A
HREF="error-messages.html#you-don-t-exist"
><TT
CLASS="literal"
>You don't exist. Go away.</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#chattr"
><TT
CLASS="literal"
>Operation not permitted</TT
>.</A
></DT
><DT
>Q: <A
HREF="error-messages.html#and-ltemphasis-role-eq-bold-and-gtprogramname:-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gterror-in-loading-shared-libraries:-lib-and-lt-slash-literal-and-gt-and-ltemphasis-role-eq-bold-and-gtxxx-dot-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gt-dot-so-dot-and-lt-slash-literal-and-gt-and-ltemphasis-role-eq-bold-and-gtx-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gt:-cannot-open-shared-object-file:-no-such-file-or-directory-dot-and-lt-slash-literal-and-gt"
><EM
>programname: </EM
> <TT
CLASS="literal"
>error in loading shared libraries: lib</TT
> <EM
>xxx.</EM
><TT
CLASS="literal"
>.so.</TT
> <EM
>x</EM
><TT
CLASS="literal"
>: cannot open shared object file: No such file or directory.</TT
></A
></DT
><DT
>Q: <A
HREF="error-messages.html#and-ltliteral-and-gt-init:-id-and-quotx-and-quot-respawning-too-fast:-disabled-for-five-minutes-and-lt-slash-literal-and-gt-dot"
><TT
CLASS="literal"
> init: Id "x" respawning too fast: disabled for 5 minutes </TT
>.</A
></DT
><DT
>Q: <A
HREF="error-messages.html#ftp-421-error"
>FTP server says: "421 service not available, remote server has closed connection."</A
></DT
></DL
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="modprobe-cant-locate-module"
></A
><B
>Q: </B
><B
CLASS="command"
>Modprobe</B
> Can't Locate Module, <EM
>XXX</EM
>, and Similar Messages</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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
<TT
CLASS="filename"
>/etc/modules.conf</TT
> or
<TT
CLASS="filename"
>/etc/modutils/aliases</TT
> file, whichever is present on your
system.
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> $ alias &#60;module-name&#62; off </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>And use the name of the module that appears in the error message.
</P
><P
>[J.H.M. Dassen]
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="unknown-terminal-type"
></A
><B
>Q: </B
>Unknown Terminal Type <TT
CLASS="literal"
>linux</TT
> and Similar</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>In early kernels the default console terminal type has changed from <TT
CLASS="literal"
>console</TT
>
to <TT
CLASS="literal"
>linux</TT
>. You must edit
<TT
CLASS="filename"
>/etc/termcap</TT
> to change the line reading:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> console|con80x25: </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>to
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> linux|console|con80x25: </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>(there may be an additional <TT
CLASS="literal"
>dumb</TT
> in there - if so it should be
removed.)
</P
><P
>To get the editor to work you may need type:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> $ TERM=console </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>(for <B
CLASS="command"
>bash</B
> and <B
CLASS="command"
>ksh</B
>), or
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> $ setenv TERM console </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>for <B
CLASS="command"
>csh</B
> or <B
CLASS="command"
>tcsh</B
>.
</P
><P
>Some programs use <TT
CLASS="filename"
>/usr/lib/terminfo</TT
> instead of
<TT
CLASS="filename"
>/etc/termcap</TT
>. For these programs you should upgrade your
terminfo package, which is part of ncurses.
</P
><P
>The same is true for X terminal displays. If your distribution sets the
<TT
CLASS="literal"
>TERM</TT
> to something strange like
<TT
CLASS="literal"
>xterm-24-color</TT
>, you can simply reset it to a generic value
from the command line:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> $ TERM="xterm"; export TERM </PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="inet-warning-old-style"
></A
><B
>Q: </B
><TT
CLASS="literal"
>INET: Warning: old style ioctl... called!</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>You are trying to use the old network configuration utilities. The new ones can be found on
<A
HREF="ftp://ftp.linux.org.uk/pub/linux/Networking/PROGRAMS/NetTools/"
TARGET="_top"
><I
CLASS="citetitle"
>ftp://ftp.linux.org.uk/pub/linux/Networking/PROGRAMS/NetTools/</I
></A
> (source only, I'm afraid).
</P
><P
>Note that they cannot be used just
like the old-style programs. See the <I
CLASS="citetitle"
>NET-2 HOWTO</I
> for
instructions on how to set up the old-style networking programs correctly.
Even better, see the <I
CLASS="citetitle"
>NET-3 HOWTO</I
> and upgrade your
networking software.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="ld-unrecognized"
></A
><B
>Q: </B
><TT
CLASS="literal"
>ld: unrecognized option '-m486'</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>You have an old version of <B
CLASS="command"
>ld</B
>.
Install a newer binutils package that contains an
updated <B
CLASS="command"
>ld</B
>. Look on tsx-11.mit.edu in
<TT
CLASS="filename"
>/pub/linux/packages/GCC/</TT
> for
<TT
CLASS="filename"
>binutils-2.6.0.2.bin.tar.gz</TT
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="gcc-says"
></A
><B
>Q: </B
>GCC Says, <TT
CLASS="literal"
>Internal compiler error</TT
>.</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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
<B
CLASS="keycap"
>F1</B
>-<B
CLASS="keycap"
>i</B
> 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
><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
><P
>If the problem is not
repeatable, you may be experiencing memory corruption. Refer to the answer for
<A
HREF="error-messages.html#make-says"
><I
>Make Says, <I
>Error 139.</I
></I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="make-says"
></A
><B
>Q: </B
>Make Says, <TT
CLASS="literal"
>Error 139.</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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
<A
HREF="troubleshooting.html#machine-runs-very-slowly-when"
><I
>Why Does the Machine Run Very Slowly with GCC / X / ...?</I
></A
>.
</P
><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
><P
>Linux is a very good memory tester - much better
than MS-DOS based memory test programs.
</P
><P
>Reportedly, some clone x87 math coprocessors can cause problems. Try compiling a kernel with math
emulation (see <A
HREF="development.html#upgrade-recompile-kernel"
><I
>How To Upgrade/Recompile a Kernel</I
></A
>).
The <TT
CLASS="literal"
>no387</TT
> 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
><P
>More information about this problem is available on the Web at
<A
HREF="http://www.bitwizard.nl/sig11/"
TARGET="_top"
><I
CLASS="citetitle"
>http://www.bitwizard.nl/sig11/</I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="shell-init-permission"
></A
><B
>Q: </B
>Shell-Init: Permission Denied when I Log In</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>Your root directory and all the
directories up to your home directory must be readable and executable by
everybody. See the manual page for <B
CLASS="command"
>chmod</B
> or a book on Unix
for how to fix the problem.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="no-utmp-entry"
></A
><B
>Q: </B
>No Utmp Entry. You Must Exec ... when Logging In</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>Your <TT
CLASS="filename"
>/var/run/utmp</TT
> is screwed up. You should have
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> /var/run/utmp</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>in your <TT
CLASS="filename"
>/etc/rc.local</TT
> or <TT
CLASS="filename"
>/etc/rc.d/*</TT
>.
See <A
HREF="troubleshooting.html#screwed-up-system-and-cant-log-in"
><I
>If I Screwed Up the System and Can't Log In, How Can I Fix It?</I
></A
>.
Note that the <TT
CLASS="filename"
>utmp</TT
> may also be found in <TT
CLASS="filename"
>/var/adm/</TT
>
or <TT
CLASS="filename"
>/etc/</TT
> on some older systems.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="warning--bdflush"
></A
><B
>Q: </B
>Warning--bdflush Not Running</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>Modern kernels use a better strategy for writing
cached disk blocks. In addition to the kernel changes, this involves
replacing the old <B
CLASS="command"
>update</B
> program which used to write everything every 30
seconds with a more subtle daemon (actually a pair), known as
<B
CLASS="command"
>bdflush</B
>. Get
<TT
CLASS="filename"
>bdflush-</TT
><EM
>n.n</EM
><TT
CLASS="filename"
>.tar.gz</TT
>
from the same place as the kernel source code
(see <A
HREF="development.html#upgrade-recompile-kernel"
><I
>How To Upgrade/Recompile a Kernel</I
></A
>) and
compile and install it. <B
CLASS="command"
>bdflush</B
> 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 <B
CLASS="command"
>update</B
> around.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="warning-obsolete-routing"
></A
><B
>Q: </B
><TT
CLASS="literal"
>Warning: obsolete routing request made</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>This is nothing to worry about. The message means that your version <B
CLASS="command"
>route</B
> is
a little out of date, compared to the kernel. You can make the message go
away by getting a new version of <B
CLASS="command"
>route</B
> from the same place
as the kernel source code.
See <A
HREF="development.html#upgrade-recompile-kernel"
><I
>How To Upgrade/Recompile a Kernel</I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="ext2-fs-warning-mounting"
></A
><B
>Q: </B
><TT
CLASS="literal"
>EXT2-fs: warning: mounting unchecked file system</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>You need to run <B
CLASS="command"
>e2fsck</B
> (or <TT
CLASS="literal"
>fsck -t ext2</TT
> if you have
the <B
CLASS="command"
>fsck</B
> front end program) with the <B
CLASS="command"
>-a</B
>
option to get it to clear the <TT
CLASS="literal"
>dirty</TT
> flag, and then
cleanly unmount the partition during each shutdown.
</P
><P
>The easiest way to do this is to get the latest <B
CLASS="command"
>fsck</B
>,
<B
CLASS="command"
>umount</B
>, and <B
CLASS="command"
>shutdown</B
> commands,
available in Rik Faith's <TT
CLASS="filename"
>util-linux</TT
> package
(see <A
HREF="linux-distributions.html#get-linux-material-by-ftp"
><I
>Where Are the Linux FTP Archives?</I
></A
>).
You have to make sure that your <TT
CLASS="filename"
>/etc/rc*/</TT
> scripts use
them correctly.
</P
><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
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> VFS: mounted root ... read-only </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>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. Almost all
distributions do this. If your's doesn't, read the documentation that comes
with <TT
CLASS="filename"
>util-linux</TT
> to find out how to do this.
</P
><P
>Note that you need to specify the <B
CLASS="command"
>-n</B
> option to
<B
CLASS="command"
>mount</B
> so it won't try to update
<TT
CLASS="filename"
>/etc/mtab</TT
>, since the root file system is still
read-only, and this will otherwise cause it to fail.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="ext2-fs-maximal"
></A
><B
>Q: </B
><TT
CLASS="literal"
>EXT2-fs warning: maximal count reached</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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
(<TT
CLASS="filename"
>e2fsprogs-0.5b.tar.gz</TT
> at the time of writing) from the
usual sites.
See <A
HREF="linux-distributions.html#get-linux-material-by-ftp"
><I
>Where Are the Linux FTP Archives?</I
></A
>.
</P
><P
>The maximal number of mounts value can be examined and changed using the
<B
CLASS="command"
>tune2fs</B
> program from this package.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="ext2-fs-warning"
></A
><B
>Q: </B
><TT
CLASS="literal"
>EXT2-fs warning: checktime reached</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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.
See <A
HREF="error-messages.html#ext2-fs-maximal"
><I
><I
>EXT2-fs warning: maximal count reached</I
></I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="df-says-cannot"
></A
><B
>Q: </B
><B
CLASS="command"
>df</B
> Says, <TT
CLASS="literal"
>Cannot read table of mounted file systems</TT
>.</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>There is probably something wrong with your
<TT
CLASS="filename"
>/etc/mtab</TT
> or <TT
CLASS="filename"
>/etc/fstab</TT
> files. If
you have a reasonably new version of mount, <TT
CLASS="filename"
>/etc/mtab</TT
>
should be emptied or deleted at boot time (in
<TT
CLASS="filename"
>/etc/rc.local</TT
> or <TT
CLASS="filename"
>/etc/rc.d/*</TT
>),
using something like
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> $ rm -f /etc/mtab*</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>Some old Linux distributions have an entry for the
root partition in <TT
CLASS="filename"
>/etc/mtab</TT
> made in
<TT
CLASS="filename"
>/etc/rc*</TT
> by using <B
CLASS="command"
>rdev</B
>. That is
incorrectthe newer versions of <B
CLASS="command"
>mount</B
> do this
automatically.
</P
><P
>Some old distributions also have a line in
<TT
CLASS="filename"
>/etc/fstab</TT
> that looks like:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>/dev/sdb1 /root ext2 defaults</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>The entry for <TT
CLASS="filename"
>/root</TT
> should read simply <TT
CLASS="filename"
>/</TT
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="fdisk-says-partition"
></A
><B
>Q: </B
><B
CLASS="command"
>fdisk</B
> Says, "<TT
CLASS="literal"
>Partition X has different physical/logical...</TT
>"</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>If the partition number (X, above) is 1, this is the same problem as in <TT
CLASS="literal"
>fdisk: Partition 1 does
not start on cylinder boundary</TT
>.
</P
><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="disk-drives.html#linux-to-work-with-my-disk"
><I
>How Can I Get Linux to Work With My Disk?</I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="fdisk-partition-does-not"
></A
><B
>Q: </B
><TT
CLASS="literal"
>fdisk: Partition 1 does not start on cylinder boundary</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>The version of <B
CLASS="command"
>fdisk</B
> 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
><P
>You can avoid the problem by getting
the latest version of <B
CLASS="command"
>fdisk</B
>, 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 <B
CLASS="command"
>fdisk</B
> likes.
</P
><P
></P
><UL
><LI
><P
>Create partition 1 in the normal way. A
<TT
CLASS="literal"
>p</TT
> listing will produce the mismatch complaint.
</P
></LI
><LI
><P
>Type <B
CLASS="keycap"
>u</B
> to set sector
mode and do <B
CLASS="keycap"
>p</B
> again. Copy down the number from the
<TT
CLASS="literal"
>End</TT
> column.
</P
></LI
><LI
><P
>Delete partition 1.
</P
></LI
><LI
><P
>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
<B
CLASS="keycap"
>p</B
> output. Set the last sector to the value you wrote down in
the step above.
</P
></LI
><LI
><P
>Type <B
CLASS="keycap"
>u</B
> to reset cylinder mode and continue with other partitions.
</P
><P
>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
></LI
></UL
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="fdisk-odd-number-sectors"
></A
><B
>Q: </B
><B
CLASS="command"
>fdisk</B
> Says Partition <EM
>n</EM
> Has an Odd Number of Sectors</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="mtools-cannot-initialize"
></A
><B
>Q: </B
>Mtools Utilities Say They Cannot Initialize Drive <EM
>X</EM
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>This means that mtools is having trouble accessing the drive. This can be due to
several things.
</P
><P
>Often this is due to the permissions on floppy
drive devices (<TT
CLASS="filename"
>/dev/fd0*</TT
> and
<TT
CLASS="filename"
>/dev/fd1*</TT
>) being incorrect. The user running mtools must
have the appropriate access. See the manual page for <B
CLASS="command"
>chmod</B
>
for details.
</P
><P
>Most versions of mtools distributed with Linux
systems (not the standard GNU version) use the contents of a file
<TT
CLASS="filename"
>/etc/mtools</TT
> 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
><P
>For the easiest way to access your MS-DOS files
(especially those on a hard disk partition) see How do I access files on my
DOS partition or floppy? Noteyou should never use mtools to access files on
an msdosfs mounted partition or disk!
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="memory-tight"
></A
><B
>Q: </B
>At the Start of Booting: <TT
CLASS="literal"
>Memory tight</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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.
See <A
HREF="development.html#upgrade-recompile-kernel"
><I
>How To Upgrade/Recompile a Kernel</I
></A
>.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="my-syslog-says-end-request"
></A
><B
>Q: </B
>The System Log Says, <TT
CLASS="literal"
>end_request: I/O error</TT
>, ....</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>This error message, and messages like it, almost always indicate a hardware error
with a hard drive.
</P
><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
><P
>This error message may also indicate a bad connection to the drive, especially with home
brew systems. If you install an IDE drive, <EM
>always</EM
> use
new ribbon cables. It's probably is a good idea with SCSI drives, too.
</P
><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
><P
>[Peter Moulder, Theodore Ts'o]
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="you-don-t-exist"
></A
><B
>Q: </B
><TT
CLASS="literal"
>You don't exist. Go away.</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>This is not a viral infection. It comes
from programs like <B
CLASS="command"
>write</B
>, <B
CLASS="command"
>talk</B
>, and
<B
CLASS="command"
>wall</B
>, if your invoking UID doesn't correspond to a valid
user (probably due to <TT
CLASS="filename"
>/etc/passwd</TT
> being corrupted), or
if the session (pseudoterminal, specifically) you're using isn't properly
registered in the <TT
CLASS="filename"
>utmp</TT
> file (probably because you
invoked it in a funny way).
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="chattr"
></A
><B
>Q: </B
><TT
CLASS="literal"
>Operation not permitted</TT
>.</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>One or more of the file's or
directory's attribute bits are set incorrectly. If the
<TT
CLASS="literal"
>I</TT
> bit is set, for example, you won't be able to change
file permissions with <B
CLASS="command"
>chmod</B
>.
</P
><P
>The solution is to use <B
CLASS="command"
>lsattr</B
> to display file and directory attributes,
and <B
CLASS="command"
>chattr</B
> to set and unset them. The programs'
documentation is contained in their manual pages.
</P
><P
>[Paul Campbell]
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="and-ltemphasis-role-eq-bold-and-gtprogramname:-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gterror-in-loading-shared-libraries:-lib-and-lt-slash-literal-and-gt-and-ltemphasis-role-eq-bold-and-gtxxx-dot-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gt-dot-so-dot-and-lt-slash-literal-and-gt-and-ltemphasis-role-eq-bold-and-gtx-and-lt-slash-emphasis-and-gt-and-ltliteral-and-gt:-cannot-open-shared-object-file:-no-such-file-or-directory-dot-and-lt-slash-literal-and-gt"
></A
><B
>Q: </B
><EM
>programname: </EM
> <TT
CLASS="literal"
>error in loading shared libraries: lib</TT
> <EM
>xxx.</EM
><TT
CLASS="literal"
>.so.</TT
> <EM
>x</EM
><TT
CLASS="literal"
>: cannot open shared object file: No such file or directory.</TT
></P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>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.
</P
><P
>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.
</P
><P
>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: <TT
CLASS="literal"
>ldd</TT
> <EM
>programname</EM
>.
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.:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> # cd /usr/lib &#38;amp;&#38;amp; ln -s /lib/libncurses.so.2 . </PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>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.
</P
><P
>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 <TT
CLASS="literal"
>ldd</TT
> will
not list the paths of libraries it can't find. A program most likely will
tell the run-time linker, <TT
CLASS="literal"
>/lib/ld.so</TT
>, to look for shared
libraries in <TT
CLASS="filename"
>/lib</TT
>, <TT
CLASS="filename"
>/usr/lib</TT
>, <TT
CLASS="filename"
>/usr/local/lib</TT
>, or <TT
CLASS="filename"
>/usr/X11R6/lib</TT
>,
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.
</P
><P
>Also be sure to run <TT
CLASS="literal"
>ldconfig</TT
> after creating the symbolic link, so that
<TT
CLASS="literal"
>ld.so</TT
> has an updated view of the system's libraries. You
should also make certain that all of the library directories are listed in
<TT
CLASS="filename"
>/etc/ld.so.conf</TT
>, and perhaps in the
<TT
CLASS="literal"
>LD_LIBRARY_PATH</TT
> environment variable.
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="and-ltliteral-and-gt-init:-id-and-quotx-and-quot-respawning-too-fast:-disabled-for-five-minutes-and-lt-slash-literal-and-gt-dot"
></A
><B
>Q: </B
><TT
CLASS="literal"
> init: Id "x" respawning too fast: disabled for 5 minutes </TT
>.</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>In most distributions
this means that the system is booting by default into runlevel 5, which is
supposed to respawn (re-start again after it's been exited) a graphical login
via <SPAN
CLASS="application"
>xdm</SPAN
>, <SPAN
CLASS="application"
>kdm</SPAN
>,
<SPAN
CLASS="application"
>gdm</SPAN
>, or whatever, and the system can't locate the
program.
</P
><P
>However, <TT
CLASS="literal"
>Id</TT
> can also indicate
the absence or misconfiguration of another program, like
<SPAN
CLASS="application"
>mingetty</SPAN
>, if <SPAN
CLASS="application"
>init</SPAN
> tries
to respawn itself more than 10 times in 2 minutes.
</P
><P
>Id "x" is the number in the leftmost column of the <TT
CLASS="filename"
>/etc/inittab</TT
>
file:
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> # Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>Commenting the offending line out and then fixing the
errant program and testing on the command line will allow you to see any
error messages that go to standard error output (console) if the errors are
not going to the system log file. Uncomment the line and restart
<SPAN
CLASS="application"
>init</SPAN
> with <TT
CLASS="literal"
>kill -SIGHUP 1</TT
> or
<SPAN
CLASS="application"
>telinit q</SPAN
> to cause
<SPAN
CLASS="application"
>init</SPAN
> to reinitialize and reread the
<TT
CLASS="filename"
>/etc/inittab</TT
> file.
</P
><P
>Some systems, however, rewrite <TT
CLASS="filename"
>/etc/inittab</TT
> when booting. In that case, refer
to the <TT
CLASS="literal"
>init</TT
> man page, and/or the settings in
<TT
CLASS="filename"
>/etc/sysconfig/init</TT
>.
</P
><P
>Refer to the <SPAN
CLASS="application"
>init</SPAN
> and <TT
CLASS="filename"
>/etc/inittab</TT
> man
pages for detailed information.
</P
><P
>[Carl King]
</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="ftp-421-error"
></A
><B
>Q: </B
>FTP server says: "421 service not available, remote server has closed connection."</P
></DIV
><DIV
CLASS="answer"
><P
><B
>A: </B
>If an FTP server won't allow logins, it is probably configured correctly, but
the problem is probably with authorizing users at login. FTP servers in
current distributions often authorize users with the Pluggable Authentication
Modules library, in which case there should be an authorization file
<TT
CLASS="filename"
>/etc/pam.d/ftp</TT
>. A generic authorization file looks like
this. (The line break on the first "auth" line is for readability. The
entry is actually a single, long line).
</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> #%PAM-1.0
auth required /lib/security/pam_listfile.so item=user
sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_shells.so
account required /lib/security/pam_pwdb.so
session required /lib/security/pam_pwdb.so
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>Also, make sure the <TT
CLASS="filename"
>/etc/ftpusers</TT
> file, or whatever users file is named in
the first "auth" line, is configured correctly.
</P
><P
>Btw, the sample <TT
CLASS="filename"
>ftp</TT
> file above is actually
the <TT
CLASS="filename"
>ftpd/ftp.pam.sample</TT
> file from the
<TT
CLASS="filename"
>ftpd-BSD-0.3.1.tar.gz</TT
> package. Many thanks to David A.
Madore for this much needed port.
</P
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x-windows.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="online-resources.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The X Window System</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Online Resources</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>