Pages

Tuesday, August 16, 2005

Solaris 10: Recovering from a Runtime Linker Failure III

With the arrival of Solaris 10, the instructions of Recovering from a Runtime Linker Failure web page became obsolete. Since this problem appears to be very common, thought it would be useful to document it.

Symptom: For all commands, system responds (only) with the following error:
        Cannot execute /usr/lib/ld.so.1

Due to the Solaris Process Model Unification, all static binaries were removed from Solaris 10 distribution. One simple workaround is to pro-actively copying the essential static executables (esp., mv and cp), from an earlier version of Solaris to Solaris 10; and using 'em when/where needed.

However even if the session is gone by accident, no need to panic. The recovery steps are very simple (assuming there is a backup ld.so.1 on the machine, running Solaris 11):
  1. Turn the machine on, with the installation media in the CD/DVD drive
  2. Select Solaris in the initial GRUB screen
  3. Select 6. Single user shell from the interactive menu, when you are prompted to select an installation type.
  4. The disk on which the OS was installed will be shown, before you get to the
    single user command prompt.
    SunOS Release 5.11 Version snv_17 32-bit
    Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
    Use is subject to license terms.
    Booting to milestone "milestone/single-user:default".
    Configuring devices.
    Searching for installed OS...
    /dev/dsk/c1d0s0 -- Solaris 11 nv_17 X86
  5. Respond with a No to the next question: Do you wish to automatically update boot archives? [y,n,?]
  6. At this point, you will be at the command prompt. The next step is to mount the
    root file system (/) on some mount point say /mnt.
            # mount /dev/dsk/c1d0s0 /mnt
  7. Restore the original run-time linker, ld.so.1.
    eg.,
    # cd /mnt/usr/lib
    # cp ld.so.1.orig ld.so.1
  8. Unmount the root file system, eject the CD/DVD, and reboot
            # cd /
    # umount /mnt
    # reboot
Recovery steps on earlier versions of Solaris:
  1. Recovering from a Run-time Linker Failure I
  2. Recovering from a Run-time Linker Failure II
________________
Technorati tags: |

1 comment:

  1. The boot disk should have an option that makes a special directory on the root partition that contains a set of files that act as a "recovery disk". You'd have ld.so.1 and libc.so.1 and all the binaries you need. The binaries would be dynamically linked to use only files within the "recovery directory".

    If this is really a problem, then someone in the Solaris group should be looking at it.

    ReplyDelete