Notice: This document as originally posted was incomplete to due to some HTML formatting problems. It should now be complete and accurate
For installing Solaris 2.4 or Solaris 2.5 from a SCSI-II cdrom drive using 2048 bytes per logical block you can use the following procedure:
Notice:At least one user has had trouble using this procedure on an Ultra 1/140. If anyone else has tried it on Ultra machines and it worked please let us know. It may be that the sun4u architecture needs a different patch.
1. At the monitor prompt, boot kadb from the Solaris 2.4 [2.5] CD (Btw. you need at least Boot Prom revision 2.4, older Boot Proms can't boot from a 2048 bytes/sector CDROM drive) ok boot cdrom kadb -dv The monitor loads kadb an says something like Rebooting with command: cdrom kadb -dv Boot device: /sbus/esp..../sd@6,0:c File and Args: kadb -dv kadb: 2. At the kadb: prompt press <RETURN>, this will load kernel/unix from the cd. kadb: kernel/unix Size: xxx+yyy+zzz bytes /kernel/unix loaded - wwwwww bytes used kadb[0]: 2a. [Only for Solaris 2.5] If booting Solaris 2.5 from the cd, we have to single step one instruction, so that kadb load the kernel symbols: kadb[0]: :s stopped at 0xfbd01918 ta %o0 3. At the kadb[0]: prompt, set a breakpoint at main+10 and start the kernel: kadb[0]: main+10:b kadb[0]: :c The kernel starts and loads all required device drivers (esp. the harddisk driver, which we'll want to patch). Then it will stop at our breakpoint. The following messages appear on the screen: SunOS Release 5.4 Version .... Copyright (c) 1983-1994 .... ... breakpoint main+0x10: call callb_init kadb[0]: 4. Now the harddisk driver (which also supports cdrom drives) is loaded and we can set two additional breakpoints inside the harddisk driver and continue with booting. At the kadb prompt, type: kadb[0]: sd_validate_geometry+14:b kadb[0]: sr_sector_mode+24:b kadb[0]: :c 5. The kernel now calls the sd driver's probe and attach routines for each harddisc or cdrom device connected to the machine; for each device the kernel prints a line like the one below and stops at the breakpoint in sd_validate_geometry. ... sdX is /sbus/esp..../sd@X,0 breakpoint sd_validate_geometry+0x14: ld [%i0 + 0x18c], %i5 kadb[0]: The X in the line "sdX is /..." is the scsi id of the device currently being probed. If the X matches the scsi id for the cdrom drive, continue with step 6. Otherwise type the kadb continue command ":c" and repeat step 5. kadb[0]: :c 6. The kernel now tries to read the disclabel from the installation cd. To avoid the data overrun error, we temporarily raise the logical blocksize for the cdrom drive to 2048 bytes/block (note the capital letter 'W' in the next command): kadb[0]: <i0+18c/W 800 Kadb says something like: 0xffxxxxxx: 0x200 = 0x800 Now we delete the current breakpoint in sd_validate_geometry and continue with the boot process: kadb[0]: <pc:d kadb[0]: :c 7. Again, the kernel stops, this time at our third breakpoint in sr_sector_mode: <CD-ROM Disc for SunOS Solaris_2.? Installation > Unable to install/attach driver 'isp' breakpoint sr_sector_mode+0x24: be sr_sector_mode+0x3c kadb[0]: [ Solaris 2.5 has a different instruction at sr_sector_mode+0x24: breakpoint sr_sector_mode+0x24: nop ] Now we'll change the logical sector size the driver uses for the cdrom device. At the kadb prompt type: kadb[0]: <i5+18c/W 200 This changes the blocksize from 2048 to 512 bytes / block. Kadb says something like: 0xffxxxxx: 0x800 = 0x200 kadb[0]: At the kadb prompt, type :c to finish the boot / installation process. kadb[0]: :c Next the root file system will be mounted, /etc/init is started, ... OpenWindows is started, ... Solaris 2.4 / 2.5 can be installed without the need for further intervention from within kadb.