Using WAN Boot From a Hard Disk on a System Running Solaris 9 and Above


This is a copy of the article I wrote 2006 for sunsolve.sun.com. Unfortunately the articles from sunsolve.sun.com are not available on the net anymore

Bernd Schemmer, October 2011




Bernd Schemmer, October 2006


Introduction

WAN boot is a "new" method for installing a machine running the Solaris Operating System from a Solaris JumpStart server over the network. WAN boot has a lot of enhancements compared to the "old" installation method via bootp and should be used for network installations if possible. (Note: WAN boot is only supported on machines with SPARC CPUs. You cannot use WAN boot on machines running the Solaris OS for x86 platforms.)

This article describes how to use WAN boot on machines that do not have WAN boot support in the OBP and cannot use a CD-ROM for WAN boot.

This method requires:


Details

The only file that is necessary for WAN boot is /platform/`uname -i`/wanboot. Therefore, to get WAN boot from the disk to work, it is sufficient to copy the current version of the WAN boot binary from (for example) the Solaris Installation CD-ROM to the directory /platform/`uname -i` on one of the slices of any local hard disk of the machine.

The Steps

1. Configure the machine to install as a WAN boot client on your installation server.

2. Select one of the existing slices on one of the internal hard disks of the machine to install for the WAN boot binary. For example, this can be the existing boot slice or any other slice on the disk. You can also put the WAN boot binary on the disk on which you want to install the Solaris OS, because the disk is only used to read the WAN boot binary. After the WAN boot binary is read and executed, the disk is not used anymore for the boot process.

3. Make the selected slice bootable using installboot if the slice is not already bootable; that is:

installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk  /dev/rdsk/c2t1d0s0

If in doubt, issue the installboot command. (It won't hurt if the slice is already bootable.)

4. Halt the machine and issue the following boot command at the ok prompt:

ok> boot mydisk  -o prompt -F wanboot - install

Here mydisk is the disk device (either a device alias or the real device name). If you use a slice other than the default slice for the WAN boot binary, the command should look like this:

ok> boot disk1:b  -o prompt -F wanboot - install

Here disk1 is the device alias and the letter after the colon specifies the slice to boot from: a is slice 0, b is slice 1, c is slice 2, and so on.

5. After a short time, the normal WAN boot prompt should be printed and you can enter the necessary information for the WAN boot process and continue the WAN boot installation the normal way.

Example 1

Example 1 shows the machine output from step 4 in the preceding description. Note: Some output has been replaced with "x" characters.

{0} ok boot disk1  -o prompt -F wanboot - install
Resetting ...
RSC Alert: Host System has Reset
Probing system devices
Probing system devices


Sun Fire 280R (2 X UltraSPARC-III) , No Keyboard
Copyright 1998-2004 Sun Microsystems, Inc. All rights reserved.
OpenBoot 4.16.4, 4096 MB memory installed, Serial #xxxxxxxx.
Ethernet address x:x:x:x:x:x, Host ID: xxxxxxxx.



Rebooting with command: boot disk1 -o prompt -F wanboot - install
Boot device: /pci@8,600000/SUNW,qlc@4/fp@0,0/disk@1,0 File and args: -o
prompt -F wanboot - install

<time unavailable> wanboot info: WAN boot messages->console
<time unavailable> wanboot info: Default net-config-strategy: manual

boot>

Example 2

Here is sample output from a session installing a machine via WAN boot from a disk. In this example, we use the swap slice as the temporary boot slice for the WAN boot process. Note: Some output has been replaced with "x" characters and edited for security reasons.

bash-3.00# uname -a
SunOS mysun 5.10 Generic_118833-17 sun4u sparc SUNW,Sun-Fire-280R

### first remove the swap slice

bash-3.00# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c2t0d0s1 118,1 16 16779296 16739648

bash-3.00# swap -d /dev/dsk/c2t0d0s1
/dev/dsk/c2t0d0s1 was dump device --
invoking dumpadm(1M) -d swap to select new dump device
dumpadm: no swap devices are available

bash-3.00# swap -l
No swap devices configured

### remove the swap entry from the /etc/vfstab because otherwise newfs will fail

bash-3.00# cp /etc/vfstab /etc/vfstab.org

bash-3.00# grep -v swap /etc/vfstab.org > /etc/vfstab

bash-3.00# grep -v "^#" /etc/vfstab | grep -v "^$"
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c2t0d0s0 /dev/rdsk/c2t0d0s0 / ufs 1 no -
/dev/dsk/c2t0d0s3 /dev/rdsk/c2t0d0s3 /usr ufs 1 no -
/dev/dsk/c2t0d0s4 /dev/rdsk/c2t0d0s4 /var ufs 1 no -
/devices - /devices devfs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -

### create a filesystem on the slice

bash-3.00# newfs /dev/rdsk/c2t0d0s1
newfs: construct a new file system /dev/rdsk/c2t0d0s1: (y/n)? y
Warning: 6096 sector(s) in last cylinder unallocated
/dev/rdsk/c2t0d0s1: 16779312 sectors in 2732 cylinders of 48 tracks, 128 sectors
8193.0MB in 171 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
15831200, 15929632, 16028064, 16126496, 16224928, 16323360, 16421792,
16520224, 16618656, 16717088
bash-3.00#

### mount the slice

bash-3.00# mount /dev/dsk/c2t0d0s1 /tmp/mnt2

### mount the directory with the Solaris 10 boot image from the installation server

bash-3.00# mount installserver:/export/install /tmp/mnt1

### copy the necessary files for WAN boot to the slice on the local disk

bash-3.00# cd /tmp/mnt1/Solaris10_U2/Solaris_10/Tools/Boot/

bash-3.00# find . -name "wanboot" | cpio -pdumv /tmp/mnt2
/tmp/mnt2/usr/lib/inet/wanboot
/tmp/mnt2/platform/sun4u/wanboot
/tmp/mnt2/platform/sun4v/wanboot
/tmp/mnt2/platform/sun4us/wanboot
6384 blocks

bash-3.00# find /tmp/mnt2
/tmp/mnt2
/tmp/mnt2/lost+found
/tmp/mnt2/usr
/tmp/mnt2/usr/lib
/tmp/mnt2/usr/lib/inet
/tmp/mnt2/usr/lib/inet/wanboot
/tmp/mnt2/platform
/tmp/mnt2/platform/sun4u
/tmp/mnt2/platform/sun4u/wanboot
/tmp/mnt2/platform/sun4v
/tmp/mnt2/platform/sun4v/wanboot
/tmp/mnt2/platform/sun4us
/tmp/mnt2/platform/sun4us/wanboot

### make the slice bootable

bash-3.00# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c2t0d0s1

### now start the WANBOOT

bash-3.00# reboot -- "disk:b -o prompt -F wanboot - install "
Jul 28 07:09:42 mysun reboot: rebooted by root
Jul 28 07:09:43 mysun syslogd: going down on signal 15
syncing file systems... done
rebooting...
Resetting ...
RSC Alert: Host System has Reset
Probing system devices
Probing system devices


Sun Fire 280R (2 X UltraSPARC-III) , No Keyboard
Copyright 1998-2004 Sun Microsystems, Inc. All rights reserved.
OpenBoot 4.16.4, 4096 MB memory installed, Serial #xxxxxxxx.
Ethernet address x:x:xx:x:xx:xx, Host ID: xxxxxxxx.



Rebooting with command: boot disk:b -o prompt -F wanboot - install
Boot device: /pci@8,600000/SUNW,qlc@4/fp@0,0/disk@0,0:b
File and args: -o prompt -F wanboot - install

<time unavailable> wanboot info: WAN boot messages->console
<time unavailable> wanboot info: Default net-config-strategy: manual

boot> host-ip=192.168.5.14

boot> router-ip=192.168.5.62

boot> subnet-mask=255.255.255.0

boot> hostname=mysun.test.dom

boot> client-id=0A03EF0E

boot> bootserver=http://192.168.20.48/cgi-bin/wanboot-cgi

boot>

boot> list

host-ip: 192.168.5.14
subnet-mask: 255.255.255.192
router-ip: 192.168.5.62
hostname: mysun.test.dom
http-proxy: UNSET
client-id: 0A03EF0E
aes: *HIDDEN*
3des: *HIDDEN*
sha1: *HIDDEN*
bootserver: http://192.168.20.48/cgi-bin/wanboot-cgi

boot> go

<time unavailable> wanboot progress: wanbootfs: Read 128 of 128 kB (100%)
<time unavailable> wanboot info: wanbootfs: Download complete
Fri Jul 28 06:12:38 wanboot progress: miniroot: Read 248881 of 248881 kB (100%)
Fri Jul 28 06:12:38 wanboot info: miniroot: Download complete
SunOS Release 5.10 Version Generic_118833-17 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Configuring devices.
Network interface was configured manually.
192.168.5.14
SUNW,qfe0: 100 Mbps half duplex link up - internal transceiver
SUNW,qfe1: 100 Mbps half duplex link up - internal transceiver
SUNW,qfe2: 100 Mbps half duplex link up - internal transceiver
SUNW,qfe3: 100 Mbps half duplex link up - internal transceiver
Beginning system identification...
syslogd: line 24: WARNING: loghost could not be resolved
Searching for configuration file(s)...
Jul 27 22:46:41 mysun.test.dom eri: SUNW,eri0 : 100 Mbps half duplex link up
Using sysid configuration file http://192.168.20.48/profiles/mysun.test.dom/sysidcfg
Search complete.
Discovering additional network configuration...
Completing system identification...
Starting remote procedure call (RPC) services: done.
System identification complete.
Starting Solaris installation program...
Searching for JumpStart directory...
Using rules.ok from http://192.168.20.48/profiles/mysun.test.dom.
Checking rules.ok file...
Using begin script: begin_script.sh
Using profile: profile
Using finish script: finish_script.sh
Executing JumpStart preinstall phase...
Executing begin script "begin_script.sh"...
Copying the missing files from the profile ...
Begin script begin_script.sh execution completed.
Searching for SolStart directory...
Checking rules.ok file...
Using begin script: install_begin
Using finish script: patch_finish
Executing SolStart preinstall phase...
Executing begin script "install_begin"...
Begin script install_begin execution completed.

Processing profile
- Opening Flash archive
- Validating Flash archive
- Selecting all disks
- Configuring boot device
- Configuring / (c2t0d0s0)
- Configuring swap (c2t0d0s1)
- Configuring /usr (c2t0d0s3)
- Configuring /var (c2t0d0s4)
- Deselecting unmodified disk (c2t1d0)

Verifying disk configuration
- WARNING: Unused disk space (c2t0d0)

Verifying space allocation

Preparing system for Flash install

Configuring disk (c2t0d0)
- Creating Solaris disk label (VTOC)

Creating and checking UFS file systems
- Creating / (c2t0d0s0)
- Creating /usr (c2t0d0s3)
- Creating /var (c2t0d0s4)

Beginning Flash archive processing

Predeployment processing
16 blocks
16 blocks
16 blocks

No local customization defined

Extracting archive: Solaris 10
Extracted 0.00 MB ( 0% of 396.66 MB archive)
Extracted 1.00 MB ( 0% of 396.66 MB archive)
Extracted 2.00 MB ( 0% of 396.66 MB archive)
Extracted 3.00 MB ( 0% of 396.66 MB archive)

......

Extracted 394.00 MB ( 99% of 396.66 MB archive)
Extracted 395.00 MB ( 99% of 396.66 MB archive)
Extracted 396.00 MB ( 99% of 396.66 MB archive)
Extracted 396.66 MB (100% of 396.66 MB archive)
Extraction complete

Postdeployment processing

No local customization defined

Customizing system files
- Mount points table (/etc/vfstab)
- Unselected disk mount points (/var/sadm/system/data/vfstab.unselected)
- Network host addresses (/etc/hosts)
- Network host addresses (/etc/hosts)
- Environment variables (/etc/default/init)

Cleaning devices

Customizing system devices
- Physical devices (/devices)
- Logical devices (/dev)

Installing boot information
- Installing boot blocks (c2t0d0s0)

Installation log location
- /a/var/sadm/system/logs/install_log (before reboot)
- /var/sadm/system/logs/install_log (after reboot)

Flash installation complete
Executing JumpStart postinstall phase...
Executing finish script "finish_script.sh"...

.....

Finish script finish_script.sh execution completed.

The begin script log 'begin.log'
is located in /var/sadm/system/logs after reboot.

The finish script log 'finish.log'
is located in /var/sadm/system/logs after reboot.

.....

Jul 28 07:52:45 mysun.test.dom reboot: rebooted by root
syncing file systems... done
rebooting...
Resetting ...
RSC Alert: Host System has Reset
Probing system devices
Probing system devices


Sun Fire 280R (2 X UltraSPARC-III) , No Keyboard
Copyright 1998-2004 Sun Microsystems, Inc. All rights reserved.
OpenBoot 4.16.4, 4096 MB memory installed, Serial #xxxxxxxx.
Ethernet address x:x:xx:x:xx:xx, Host ID: xxxxxxxx.



Rebooting with command: boot
Boot device: /pci@8,600000/SUNW,qlc@4/fp@0,0/disk@w2100000c50ac4839,0:a File and args:
SunOS Release 5.10 Version Generic_118833-17 64-bit
Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: mysun
Configuring devices.
Loading smf(5) service descriptions: 93/93

mysun console login: