My machine panics during startup with the error message:
PANIC: exit cannot exec /etc/init (PID 1) status 9
Trying to dump pages
or gives:
WARNING: /etc/init (PID 1) died status 0x0000008b
after the hardware listing and memory sizing has been displayed.
CAUSE: The kernel has unsuccessfully attempted to exec the /etc/init
process. One of the most predominant reasons for this is the
inability to execute the ELF loader required by init to load
and link the shared objects (DLLs) which it needs during
execution. The name of the ELF loader is embedded within
/etc/init and is /usr/lib/libc.so.1. This file is hard-linked
to /usr/lib/ld.so.1. This link also needs to exist for the
exec to complete.
The panic actually occurs because of a requirement in the kernel's
exit() code which stipulates that if the init process is forced
to exit before it is marked by exec() as a "successful exec",
the response is to panic the system. The displayed error
message also reveals the signal number sent to the init process
which caused the exit. In this case, SIGKILL is sent to the
process; a particularly likely set of reasons for issuing SIGKILL
in this situation is related to either the non-existence,
corruption, or lack of suitable execute permission of the
ELF loader /usr/lib/libc.so.1.
The panic can also occur if /etc/init itself is missing or
corrupted.
Consider, for instance, the case where /usr/lib/libc.so.l does
not exist on the system. When exec() of /etc/init begins, the
kernel sets the process flag SNEXEC in the process table entry
for the new init process. The value SNEXEC indicates that the
exec() has not yet completed successfully; normally, the flag
is cleared when exec() completes. However, one of the requirements
for completing the exec(), namely the existence of the ELF loader,
cannot be met. Therefore, the kernel posts SIGKILL to init.
When the signal is dispatched and handled by the kernel, the exit()
function explicitly checks for the setting of the SNEXEC flag and
the identity of the affected process. If this process happens to
be init, the kernel causes the system to halt with a panic,
displaying the essential circumstances, for instance, that
PID 1 (init) had been killed with signal 9.
NOTES: The following solution is specific to OpenServer 5.0.5, but can
be applied to OpenServer 5.0.4, 5.0.2, or 5.0.0 with the following
change; depending on the release you are running, you should
make the following substitution to the Unix component version
number appearing in pathnames beginning with /opt/K/SCO/Unix:
OpenServer Unix Pathname example
version component
version
---------- --------- ----------------
5.0.4 5.0.4Eb /opt/K/SCO/Unix/5.0.4Eb/usr/lib/libc.so.1
5.0.2 5.0.2Dp /opt/K/SCO/Unix/5.0.2Dp/usr/lib/libc.so.1
5.0.0 5.0.0Cl /opt/K/SCO/Unix/5.0.0Cl/usr/lib/libc.so.1
Failure to exec /etc/init can also be the result of other types
of corruption not covered here. Therefore, if the following
diagnosis and corrective steps do not resolve the problem,
running the fsck(ADM) utility might be a reasonable action to
take, as noted below.
|