2056 lines
35 KiB
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 <module-name> 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 &amp;&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"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Online Resources</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |