Backing out of a Patch - Failed Boot

1) Boot system from cdrom.

    {1} ok boot cdrom -s

2) Mount all your system partitions (/,/var)

    # mount /dev/dsk/c1t0d0s0 /mnt          (/)
    # mount /dev/dsk/c0t0d0s7 /mnt/var      (/var)

NOTE: If you don’t have a separate
partition for /var you can skip that step. CAUTION:
If your system partitions are mirrored, you’ll have to first disconnect
mirror devices and after removing the patch sync mirrored devices again

3) To make patchrm work correctly in chrooted environment you’ll need to mount /proc and copy /etc/mnttab under /mnt.

    # mount -F proc proc /mnt/proc
    # cp /etc/mnttab /mnt/etc/mnttab

4) Use chroot to run patchrm and remove unwanted patch.

    # chroot /mnt /usr/sbin/patchrm 111097-13

    Checking installed patches...
    Backing out patch 111097-13...
    Patch 111097-13 has been backed out.

5) Clean up; Unmount filesystems and clean /mnt/etc/mnttab before reboot

    # cd /
    # rm /mnt/etc/mnttab
    # touch /mnt/etc/mnttab

    # umount /mnt/proc
    # umount /mnt/var

NOTE: If you don’t have mounted a partition for /var at step 2, you can skip that step.

    # umount /mnt
    # halt

    {1} ok boot

Missing Driver - Failed Boot

If you ever accidently corrupt/remove the drivers on your Solaris sparc machine, you may be able to recover. Here is what I had to do when I removed the QLogic drivers, not realizing that in addition to the Emulex HBAs installed in a 480R, there were onboard QLogic controllers for the internal disk - making the system unbootable.

{3} ok boot cdrom -s

INIT: SINGLE USER MODE
# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c1t0d0 
          /pci@9,600000/SUNW,qlc@2/fp@0,0/ssd@w21000004cfcb350f,0
       1. c1t1d0 
          /pci@9,600000/SUNW,qlc@2/fp@0,0/ssd@w21000004cfd6bce3,0
Specify disk (enter its number): 0
selecting c1t0d0
[disk formatted]

FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !     - execute , then return
        quit
format> part

PARTITION MENU:
        0      - change `0′ partition
        1      - change `1′ partition
        2      - change `2′ partition
        3      - change `3′ partition
        4      - change `4′ partition
        5      - change `5′ partition
        6      - change `6′ partition
        7      - change `7′ partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        ! - execute , then return
        quit
partition> print
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 15907       21.91GB    (15908/0/0) 45958212
  1 unassigned    wm       0                0         (0/0/0)            0
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3       swap    wu   15908 - 21715        8.00GB    (5808/0/0)  16779312
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7        var    wm   21716 - 24619        4.00GB    (2904/0/0)   8389656

partition> q

FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !     - execute , then return
        quit
format> q
# mount /dev/dsk/c1t0d0s0 /mnt
# mount /dev/dsk/c1t0d0s7 /mnt/var
# cd /mnt
# cp -r /cdrom/Solaris_8/Product/SUNWqlc* .
# pkgadd -a /mnt/var/sadm/install/admin/default -R /mnt -d .

The following packages are available:
  1  SUNWqlc      Qlogic ISP 2200/2202 Fibre Channel Device Driver
                  (sparc) 11.8.0,REV=2000.04.01.16.21
  2  SUNWqlcx     Qlogic ISP 2200/2202 Fibre Channel Device Driver (64 bit)
                  (sparc) 11.8.0,REV=2000.04.01.16.21

Select package(s) you wish to process (or ‘all’ to process
all packages). (default: all) [?,??,q]: 1

Processing package instance  from 

Qlogic ISP 2200/2202 Fibre Channel Device Driver
(sparc) 11.8.0,REV=2000.04.01.16.21
Copyright 2000 Sun Microsystems, Inc. All rights reserved.
Using  as the package base directory.
## Processing package information.
## Processing system information.
   2 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user
permission during the process of installing this package.

Do you want to continue with the installation of  [y,n,?] y

Installing Qlogic ISP 2200/2202 Fibre Channel Device Driver as 

## Installing part 1 of 1.
371 blocks

Installation of  was successful.

The following packages are available:
  1  SUNWqlc      Qlogic ISP 2200/2202 Fibre Channel Device Driver
                  (sparc) 11.8.0,REV=2000.04.01.16.21
  2  SUNWqlcx     Qlogic ISP 2200/2202 Fibre Channel Device Driver (64 bit)
                  (sparc) 11.8.0,REV=2000.04.01.16.21

Select package(s) you wish to process (or ‘all’ to process
all packages). (default: all) [?,??,q]: 2

Processing package instance  from 

Qlogic ISP 2200/2202 Fibre Channel Device Driver (64 bit)
(sparc) 11.8.0,REV=2000.04.01.16.21
Copyright 2000 Sun Microsystems, Inc. All rights reserved.
Using  as the package base directory.
## Processing package information.
## Processing system information.
   3 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user
permission during the process of installing this package.

Do you want to continue with the installation of  [y,n,?] y

Installing Qlogic ISP 2200/2202 Fibre Channel Device Driver (64 bit) as 

## Installing part 1 of 1.
421 blocks

Installation of  was successful.

The following packages are available:
  1  SUNWqlc      Qlogic ISP 2200/2202 Fibre Channel Device Driver
                  (sparc) 11.8.0,REV=2000.04.01.16.21
  2  SUNWqlcx     Qlogic ISP 2200/2202 Fibre Channel Device Driver (64 bit)
                  (sparc) 11.8.0,REV=2000.04.01.16.21

Select package(s) you wish to process (or ‘all’ to process
all packages). (default: all) [?,??,q]: q

# halt

{3} ok  boot

Finding a Package

Useful command to find which package provides a particular file on Solaris:

# pkgchk -l -p /usr/sbin/fuser
Pathname: /usr/sbin/fuser
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: bin
Expected file size (bytes): 7944
Expected sum(1) of contents: 558
Expected last modification: Apr 06 15:48:18 2002
Referenced by the following packages:
SUNWcsu
Current status: installed