Sobota XI 08, 2008

JET on OpenSolaris

I've found laptop replacement again a lesson for a few reasons:

  • new one came whit Vista which needed to shink NTFS partition first
  • next Solaris 10 after installation prevents Vista to boot anymore - some MBR/early boot phase  hacks are available, see http://blogs.sun.com/moinakg/entry/solaris_vista_dual_boot_revisited for more info
  •  I was testing OpenSolaris2008.05 on x64 server I've found it very pleasant environment. The Vista dual boot problem is solved in snv_82 and OpelSolaris2008.05 is snv_86 - so it was clear choice.
  • unfortunately it could not recognize my NIC and soma other not very important peripherals
  • my bright colleague point me to opensolaris.org for osol-0811-99.iso
  • there is RC of 2008.11 now
  • with snv_99 laptop is running fine (Vista boot OK, added to GRUB during install smoothly)

Now it was time to setup JET, which is easy task for standard environment when you doing it at least every few months not years :o)

JET SETUP STEPs

1. Install JET packages

I've installed following packages, here you can rely on OpenSolaris backward compatibility with Solaris packaging system. Don't care much if some packages are displayed as for Sparc platform and continue.

application JetEISCD                        EIS CD JET module
application JetEXPLO                        jet explo product
application JetFLASH                        JET flash product
application JetISO                          JET ISO product
application JetSDS                          JET sds product
application JetVTS                          JET VTS product
application SUNWjet                         Sun JumpStart Enterprise Toolkit

Version of packages can be found HERE.

2. Create directory where will stage ISOs. You can use fat32 for sharing ISO with Windows, but be aware of 4GB limit. I prefer separate dataset on extra zpool.

STAGE                 9.5G   20K  9.5G   1% /STAGE
STAGE/Img              40G   30G  9.5G  76% /STAGE/Img
root@testopen3:/Inst/Prog/JET# zpool status
  pool: STAGE
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        STAGE       ONLINE       0     0     0
          c3t0d0p4  ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c3t0d0s0  ONLINE       0     0     0

errors: No known data errors
root@testopen3:/Inst/Prog/JET#

It was fat32 "OS sharing" partition, but I've found 4GB file limit too limiting.

3. Prepare&copy your ISOs. You can use readcd(1) to create image form you CD/DVD drive. (readcd -f=/<dir>/<file-name.iso> worked for me)

 root@testopen3:/Inst/Prog/JET# cd /STAGE/Img/
root@testopen3:/STAGE/Img# ls -l
total 15770108
-rw-r--r-- 1 root root  8244133888 Oct 29 14:11 EIS-DVD-INT_Sep2008.iso
drwxrwxrwx 2 root root           7 Nov  8 01:41 FLAR
drwxrwxrwx 2 root root           3 Oct 31 07:18 HB
-rwxrwxrwx 1 root root  2922250240 Oct 23 00:54 SOL_10_508_SPARC.iso
-rw-r--r-- 1 row  staff 2661416960 Nov  4 20:50 sol-10-u6-ga1-sparc-dvd.iso
-rw-r--r-- 1 row  staff 2308833280 Nov  4 20:27 sol-10-u6-ga1-x86-dvd.iso
root@testopen3:/STAGE/Img#

4. Populate JET image location tables

root@testopen3:/opt/SUNWjet/etc# cat solaris_iso_locations
# This file is used to specify the mountpoints for iso images. You need
# to create the mountpoint, update this file, and then run /opt/SUNWjet/bin/
# share_isos. This will lofimount all isos listed here. You will then
# need to run add_solaris_location for each image as normal.
# You should run the share_isos command everytime the JET server is
# rebooted.
#
# Format is:
#
# <location of .iso file>       <mountpoint>
#
# e.g. /export/iso/s10_0508s.iso        /export/install/media/Solaris_10_0508S

/STAGE/Img/SOL_10_508_SPARC.iso         /export/install/media/Solaris_10_0508S
/STAGE/Img/EIS-DVD-INT_Sep2008.iso      /export/install/EIS/Sep08
/STAGE/Img/sol-10-u6-ga1-sparc-dvd.iso  /export/install/media/Solaris_10_1008S
/STAGE/Img/sol-10-u6-ga1-x86-dvd.iso    /export/install/media/Solaris_10_1008X
root@testopen3:/opt/SUNWjet/etc#
root@testopen3:/opt/SUNWjet/etc#
root@testopen3:/opt/SUNWjet/etc# cat solaris_media_locations
SOL_10_0508S    /export/install/media/Solaris_10_0508S/Solaris_10/Tools/add_install_client      /export/install/media/Solaris_10_0508S
SOL_10_1008S    /export/install/media/Solaris_10_1008S/Solaris_10/Tools/add_install_client      /export/install/media/Solaris_10_1008S
SOL_10_1008X    /export/install/media/Solaris_10_1008X/Solaris_10/Tools/add_install_client      /export/install/media/Solaris_10_1008X
root@testopen3:/opt/SUNWjet/etc#

For solaris_media_location you can use add_solaris_location in /opt/SUNWjet/bin.

You can write script like this to have ISOs shared on boot

root@testopen3:/opt/SUNWjet/etc# cat /etc/rc3.d/S20JETshare_isos
/opt/SUNWjet/bin/share_isos
root@testopen3:/opt/SUNWjet/etc#

 After run of share_isos you should have FSs mounted:

root@testopen3:/opt/SUNWjet/etc# df -h
Filesystem            Size  Used Avail Use% Mounted on
rpool/ROOT/opensolaris
                       29G  6.9G   22G  25% /
swap                  1.8G  340K  1.8G   1% /etc/svc/volatile
/usr/lib/libc/libc_hwcap1.so.1
                       29G  6.9G   22G  25% /lib/libc.so.1
swap                  1.8G  304K  1.8G   1% /tmp
swap                  1.8G   44K  1.8G   1% /var/run
STAGE                 9.5G   20K  9.5G   1% /STAGE
STAGE/Img              40G   30G  9.5G  76% /STAGE/Img
rpool/export           29G  6.9G   22G  25% /export
rpool/export/home      22G   19K   22G   1% /export/home
rpool/export/home/row
                       22G  119M   22G   1% /export/home/row
rpool                  22G   49K   22G   1% /rpool
/dev/lofi/1           2.6G  2.6G     0 100% /export/install/media/Solaris_10_0508S
/dev/lofi/2           7.7G  7.7G     0 100% /export/install/EIS/Sep08
/dev/lofi/3           2.5G  2.5G     0 100% /export/install/media/Solaris_10_1008S
/dev/lofi/4           2.2G  2.2G     0 100% /export/install/media/Solaris_10_1008X
/export/install/media/Solaris_10_1008X/boot
                      2.2G  2.2G     0 100% /tftpboot/I86PC.Solaris_10-1
root@testopen3:/opt/SUNWjet/etc#

5. Copy EIS to JET

 He you need first hack. OpenSolaris doesn't know "-n" option of df command, which would fail the process.

HACK: /opt/SUNWjet/bin/copy_eiscd

Find  commended line and replace witch the next one

## Commented out as OpenSol do not know -n of df #IMAGE_TYPE=`df -n ${IMAGE_LOC} | awk -F" " '{print $NF}'`
IMAGE_TYPE=`df -T ${IMAGE_LOC} | tail -1 | awk -F" " '{print $(NF-5)}'`

 Than use copy_eis to copy data from lofi mounted image to standard location (using staged image is much faster then copiing from real DVD)

6. Download DHCP server via IPS package manager

I like the GUI, but you can do it from cmd. Use just text files no need for binary databases.Populate make_dhcp script with entries for your network and run it.


  root@testopen3:/opt/SUNWjet/Products/base_config/solaris# cat make_dhcp
#!/usr/bin/ksh
#
# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
################################################################################
#
# Synopsis: PXE boot pre-JUMP setups
#       if DHCP server is notpresent, then activate it
#
# Change the NETWORk details to suit your own
NETWORK=192.168.99.0
NETMASK=255.255.255.0
ROUTER=192.168.99.1
dhcpconfig -D -r SUNWfiles -p /var/tmp
dhcpconfig -N ${NETWORK} -m ${NETMASK} -t ${ROUTER}
#
root@testopen3:/opt/SUNWjet/Products/base_config/solaris#

6.5 Enable TFTP service

TFPT is needed for early net boot phase, but it is not enabled by default in Solaris 10 or OpenSolaris. It not not even defined in /etc/inet/inetd.conf in OpenSolaris, so you need to add the definiton first.

TFTP CONFIGURATION
===================

root@testopen3:~# inetadm | grep tftp
enabled   online         svc:/network/tftp/udp6:default
root@testopen3:~#



FROM SOLARIS 10 IN.TFTPD(1M) MAN PAGE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOTES
     The tftpd server only acknowledges the transfer size  option
     that  is  sent  with  a read request when the octet transfer
     mode is specified.

     The in.tftpd.1m service is managed by the service management
     facility, smf(5), under the service identifier:

       svc:/network/tftp/udp6:default



     Administrative actions on this service,  such  as  enabling,
     disabling,  or  requesting  restart,  can be performed using
     svcadm(1M). Responsibility  for  initiating  and  restarting
     this  service  is delegated to inetd(1M). Use inetadm(1M) to
     make configuration changes and to view configuration  infor-
     mation for this service. The service's status can be queried
     using the svcs(1) command.

     Unlike most smf(5) services, a manifest for the tftp service
     is not included in the system. To create one and enable this
     service, the administrator should:

         1.   Edit /etc/inet/inetd.conf and  uncomment  the  tftp
              entry.

         2.   Run /usr/sbin/inetconv.


     After you run inetconv,  the  svc:/network/tftp/udp6:default
     service is created and enabled.

For OpenSolaris:
~~~~~~~~~~~~~~~~
YOU NEED TO ADD THIS LINE TO INETD.CONF - THERE IS NONE BY DEFAULT:

tftp    dgram   udp6    wait    root    /usr/sbin/in.tftpd      in.tftpd -s /tftpboot

Than you can run inetconv(1).


7. Fix SDS module

This and next section (8.) describes small changes in modules' scripts needed for their proper function in this platform.

This is needed because snv_99 for some reason handles ksh expressions differently:

SOLARIS 10u4 x64
~~~~~~~~~~~~~~~~
root@arrowaver5 # ksh
root@arrowaver5 # JS_PRODUCT=sds
root@arrowaver5 # sds_product_version=default
root@arrowaver5 # eval echo $\"{${JS_PRODUCT}_product_version}\"
${sds_product_version}
root@arrowaver5 # JS_PRODVER="`eval echo $\"{${JS_PRODUCT}_product_version}\"`"
root@arrowaver5 # echo $JS_PRODVER
default
root@arrowaver5 # uname -i ; uname -a
i86pc
SunOS arrowaver5 5.10 Generic_120012-14 i86pc i386 i86pc
root@arrowaver5 # cat /etc/release
                        Solaris 10 8/07 s10x_u4wos_12b X86
           Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 16 August 2007
root@arrowaver5 #


SOLARIS 10u5 SPARC
~~~~~~~~~~~~~~~~~~
# ksh
# JS_PRODUCT=sds
# sds_product_version=default
# eval echo $\"{${JS_PRODUCT}_product_version}\"
${sds_product_version}
# JS_PRODVER="`eval echo $\"{${JS_PRODUCT}_product_version}\"`"
# echo $JS_PRODVER
default
# uname -i ; uname -a
SUNW,Ultra-5_10
SunOS testsol10u6s 5.10 Generic_127127-11 sun4u sparc SUNW,Ultra-5_10
# 


OPENSOLARIS 1108_99 X64
~~~~~~~~~~~~~~~~~~~~~~~
root@testopen3:/opt/SUNWjet/Products/sds# ksh
# JS_PRODUCT=sds
# sds_product_version=default
# eval echo $\"{${JS_PRODUCT}_product_version}\"
{sds_product_version}
# JS_PRODVER="`eval echo $\"{${JS_PRODUCT}_product_version}\"`"
# echo $JS_PRODVER
{sds_product_version}
# uname -i ; uname -a
i86pc
SunOS testopen3 5.11 snv_99 i86pc i386 i86pc Solaris
# cat /etc/release
                          OpenSolaris 2008.11 snv_99 X86
           Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 08 October 2008
#


HACK: /opt/SUNWjet/Products/sds/check_client

Again find ⁞ commended line and replace witch the next one

## Didn't work on snv_b99 OpenSol ## JS_PRODVER="`eval echo $\"{${JS_PRODUCT}_product_version}\"`"
JS_PRODVER="$(eval echo $`echo "${JS_PRODUCT}_product_version" `)"
## Didn't work on snv_b99 OpenSol ##            slicevar=`eval echo $"{base_config_profile_${slice}_size}"`
                slicevar="$(eval echo $`echo "base_config_profile_${slice}_size"`)"
## Didn't work on snv_b99 OpenSol ##            slicevar=`eval echo $"{base_config_profile_disk_${slice}_size}"`
                slicevar="$(eval echo $`echo "base_config_profile_${slice}_size"`)"

8. Fix & Prepare EXPLO module

HACK: /opt/SUNWjet/Products/explo/check_client

same again

 ## Didn't work on snv_99 OpenSol ##JS_PRODVER="`eval echo $\"{${JS_PRODUCT}_product_version}\"`"
JS_PRODVER="$(eval echo $`echo "${JS_PRODUCT}_product_version" `)"

ADD TO: /opt/SUNWjet/Products/explo/package.matrix

line at the end:

5.10:5.13:SUNWexplo SUNWexplu

UNPACK & COPY TO: /export/install/pkgs/explo/5.13/sparc/

SUN Explorer  packages for version 5.13 here:

root@testopen3:/export/install/pkgs/explo/5.13/sparc# ls -la
total 6
drwxr-xr-x 4 root root 4 Nov  8 08:34 .
drwxr-xr-x 3 root root 3 Nov  8 08:31 ..
drwxr-xr-x 4 root root 6 Aug  8 22:09 SUNWexplo
drwxr-xr-x 4 root root 6 Aug  8 22:09 SUNWexplu
root@testopen3:/export/install/pkgs/explo/5.13/sparc#

9. Prepare template for your client

 Use make_template command and hostname of client as agrument. Edit all the sections for modules. Never use symbolic links for templates/client-names.

If you want to use DHCP boot for Sparc machine, add `uname -i` to jumpstat.conf JS_DHCP_VENDOR variable:

root@testopen3:/opt/SUNWjet/Templates# grep VEND /opt/SUNWjet/etc/jumpstart.conf
JS_DHCP_VENDOR="SUNW.Ultra-5_10 SUNW.Ultra-30 SUNW.Sun-Fire-15000 SUNW.Sun-Blade-1500"
root@testopen3:/opt/SUNWjet/Templates#


10. Check you NFS server

 You share command to check what is exported. You should definitely avoid two thinks:

  • exporting a directory in the structure of already exported directory and vice versa
  • editing of /etc/dfs/dfstab by hand 

NFSserver will comment out such entries in dftab and will not share it. Use sharemgr(1) cmd instead. To create entries JET needs if not already done use cmds similar to this:

  sharemgr add-share -s /export/install/patches default 
sharemgr set -P nfs -p anon=0 -s /export/install/patches default
sharemgr set -P nfs -p ro=* -S sys -s /export/install/patches default

For some reason you have to share exactly /export/install/patches and /export/install/pkgs, NOT just /export/install to have patches and addition of packages working  in JET. Even .../pkgs not properly shared causing EIS patches not applied.

check with:

root@testopen3:/export/install/pkgs/explo/5.13/sparc# sharemgr show -p 
default nfs=()
          /opt/SUNWjet   nfs=(anon="0") nfs:sys=(ro="*")
          /SHARED        nfs=(anon="0")
          /STAGE/Img/FLAR        nfs=(anon="0") nfs:sys=(ro="*")
          /dhcp  nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/media/Solaris_10_1008X         nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/media/Solaris_10_0508S         nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/media/Solaris_10_1008S         nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/EIS/Sep08      nfs=(anon="0") nfs:sys=(ro="*")
          /rarp/Solaris_10_0508S/Solaris_10/Tools/Boot   nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/patches        nfs=(anon="0") nfs:sys=(ro="*")
          /export/install/pkgs   nfs=(anon="0") nfs:sys=(ro="*")
zfs
root@testopen3:/export/install/pkgs/explo/5.13/sparc# share
-               /opt/SUNWjet   anon=0,sec=sys,ro   "JET Framework"
-               /SHARED   anon=0   ""
-               /STAGE/Img/FLAR   anon=0,sec=sys,ro   ""
-               /dhcp   anon=0,sec=sys,ro   ""
-               /export/install/media/Solaris_10_1008X   anon=0,sec=sys,ro   ""
-               /export/install/media/Solaris_10_0508S   anon=0,sec=sys,ro ⁞  ""
-               /export/install/media/Solaris_10_1008S   anon=0,sec=sys,ro   ""
-               /export/install/EIS/Sep08   anon=0,sec=sys,ro   ""
-               /rarp/Solaris_10_0508S/Solaris_10/Tools/Boot   anon=0,sec=sys,ro   ""
-               /export/install/patches   anon=0,sec=sys,ro   ""
-               /export/install/pkgs   anon=0,sec=sys,ro   ""
root@testopen3:/export/install/pkgs/explo/5.13/sparc#
root@testopen3:/export/install/pkgs/explo/5.13/sparc# cat /etc/dfs/dfstab # Do not modify this file directly. # Use the sharemgr(1m) command for all share management # This file is reconstructed and only maintained for backward # compatibility. Configuration lines could be lost. # #       share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource] #       .e.g, #       share  -F nfs  -o rw=engineering  -d "home dirs"  /export/home2 # # # # Error: Syntax: share -F nfs -o ro,anon=0 /dhcp/OS_SOL_10_0508S/Solaris_10/Tools/Boot # Error: Syntax: share -F nfs -o ro,anon=0 /dhcp/OS_SOL_10_1008S/Solaris_10/Tools/Boot share -F nfs -o anon=0,sec=sys,ro -d "JET Framework" /opt/SUNWjet share -F nfs -o anon=0 /SHARED share -F nfs -o anon=0,sec=sys,ro /STAGE/Img/FLAR share -F nfs -o anon=0,sec=sys,ro /dhcp share -F nfs -o anon=0,sec=sys,ro /export/install/media/Solaris_10_1008X share -F nfs -o anon=0,sec=sys,ro /export/install/media/Solaris_10_0508S share -F nfs -o anon=0,sec=sys,ro /export/install/media/Solaris_10_1008S< share -F nfs -o anon=0,sec=sys,ro /export/install/EIS/Sep08 share -F nfs -o anon=0,sec=sys,ro /rarp/Solaris_10_0508S/Solaris_10/Tools/Boot share -F nfs /export/install/patches share -F nfs /export/install/pkgs root@testopen3:/export/install/pkgs/explo/5.13/sparc#

11. Run make_client <client-name>

Here client-name=template-name. For the first time it will setup boot environment (DHCP, PXE).

This will populate:

  • /etc/hosts
  • /etc/bootparams
  • DHCP server configuration
  • Creates PXE boot environment

Boot type depends on "base_config_client_allocation="dhcp"" variable in client's template. If empty (="") the default is RARP (boot acording /etc/bootparams parameters supplied by /usr/sbin/rpc.bootparamd, which is Solaris default service svc:/network/rpc/bootparams:default.

E.G. client sf15k-c3

  root@testopen3:/opt/SUNWjet/Templates# grep alloca sf15k-c3
base_config_client_allocation="dhcp"
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# grep sf15k-c3 /etc/hosts
10.18.139.35    sf15k-c3
root@testopen3:/opt/SUNWjet/Templates# grep sf15k-c3 /etc/bootparams
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# grep sf15k-c3 /var/tmp/SUNWfiles1_10_18_139_0
10.18.139.35|010000BEA82270|03|10.18.139.80|4294967295|8345170109517529091|sf15k-c3|
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# grep sf15k-c3 /var/tmp/SUNWfiles1_dhcptab
sf15k-c3|m|218706056904179713|:SrootPTH=/dhcp/OS_SOL_10_1008S/Solaris_10/Tools/Boot:SinstPTH=/dhcp/OS_SOL_10_1008S:SrootIP4=10.18.139.80:SrootNM=10.18.139.80:SinstIP4=10.18.139.80:SinstNM=10.18.139.80:SjumpsCF="10.18.139.80:/opt/SUNWjet":SsysidCF="10.18.139.80:/opt/SUNWjet/Clients/sf15k-c3":BootSrvA=10.18.139.80:BootFile=010000BEA82270:
root@testopen3:/opt/SUNWjet/Templates# ls -l /dhcp/
total 13
lrwxrwxrwx 1 root root    38 Nov  8 02:19 OS_SOL_10_0508S -> /export/install/media/Solaris_10_0508S
lrwxrwxrwx 1 root root    38 Nov  8 09:03 OS_SOL_10_1008S -> /export/install/media/Solaris_10_1008S
root@testopen3:/opt/SUNWjet/Templates#

You can see this is Sparc Solaris 10 10/2008 client booting from DHCP.

The default config files location is /var/tmp. You can check and manipulate DHCP server client entries and macros by pntadm(1) and dhtadm(1), not by hand.

E.G.:

Macro named "sf15k-c" deletion:

#dhtadm -D -m sf15k-c

Entry for client IP 10.18.139.35 in network 10.18.139.0 deletition:

 #pntadm -D 10.18.139.35 10.18.139.0

make_client script add them again if needed. You can need this if you want to install same client with same IP again, but with different hostname.

Fix any error otherwise you could waste your time on finding error during boot time.

12. Boot the client

Identify corret NIC to boot form, use can use watch-net-all in OBP to see at least where the ethernet link exists.

You cat see my sample client boot and install process HERE. This client had following TEMPLATE.

BE PATIENT! When booting sparc from DHCP it can takes minutes before you see any progress (first stage is TFTP download of inetboot, the HEX growing).

It usualy needs to go throught RARP process first and than restart DHCP process get IP.

E.G.:

Rebooting with command: boot net-boot:dhcp - install
Boot device: /pci@3c,700000/pci@1/network@0:dhcp File and args: - install
Using Onboard transceiver - 100 Mbps FDX Link up
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Failed to receive config params
Restarting DHCP process ...
4000 -

This can take 5minutes. If you are booting Solaris 10 update 6 it downloads boot-archive from boot server it can take another 15minutes - you will see only moving slash during that period.

You will probably see error "/dhcp/OS_SOL_10_1008S/Solaris_10/Tools/Boot failed" in your config, this can be ignored.

Timeout waiting for BOOTP/DHCP reply. Retrying ...
Timeout waiting for BOOTP/DHCP reply. Retrying ...
Failed to receive config params
Restarting DHCP process ...
4000 100 Mbps FDX Link up
boot: lookup /dhcp/OS_SOL_10_1008S/Solaris_10/Tools/Boot failed
SunOS Release 5.10 Version Generic_137137-09 64-bit
Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.

Now you can boot x86 via PXE, Sparc via BOOTP/RARP or DHCP. You can have DHCP server and bootparamd running both at the same time. PXE should default to GRUB install, where you can edit menu by your needs.

That's all hoping you had successful boot & install ;o)

 
 
 
 

This is note of fixing non-critical problem, DO NOT
USE unless want to play with net boot more & more
===================================================
THIS IS WR FOR INETBOOT LOOKUP FAILED ERROR
===================================================
* DHCP boot Sol10U6 ONLY!
~~~~~~~~~~~~~~~~~~~~~
- SU for root
- run /root/batch/pxestart.ksh
+stops bootparamd
+starts DHCP server
+delete /dhcp/OS_SOL_10_1008S dir (my boot hack)
- create subnet using "dhcpmgr" (run as root export DISPLAY first)
- make_client XXXX (takes ages after first 3 lines for the first time)
- "Passed" ?? => continue

-----------------------------------------------------------------------------------------------
OPTIONAL for correct inetboot: (otherwise not stopping error:
"3a000 boot: lokup /dhcp/OS_SOL_...../Tools/Boot failed"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- fix ":SinstPTH=" VAR in client's macro /w dhcpmgr
+set to: "/export/install/media/Solaris_10_1008S"
+leave notify DHCP server checkbox SET!

-fix via CMD: dhtadm -M -m <client-name> -e SinstPTH=/export/install/media/Solaris_10_1008S
svcadm restart dhcp-server

- grep /var/tmp/SUNWfiles1_dhcptab
- run /root/batch/fixSparcDHCPboot.ksh
-----------------------------------------------------------------------------------------------


- in OBP: boot net:dhcp - install
- ignore "Timeout waiting for BOOTP/DHCP...." up to 10x of sf15k
- wait for DHCP process restart + TFTP download
- up to 30s for moving slash
- up to 30min for boot-archive download
- should be running then!

===================================================




root@testopen3:/opt/SUNWjet/Templates# cat /root/batch/pxestart.ksh
##mount /tftpboot/I86PC.Solaris_10-1
svcadm disable bootparams
svcadm enable dhcp-server
rm -r /dhcp/OS_SOL_10_1008S
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# cat /root/batch/fixSparcDHCPboot.ksh

# This is JET created dir /w its links in it, but bad
cd /dhcp

# Remove bad link auto-generated by JET (make_client script)
rm OS_SOL_10_1008S

# Restore my structure which links to "SOL_10_1008S" dir here
tar xvf BackupOf-OS_SOL_10_1008S.tar
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# tar tvf /dhcp/BackupOf-OS_SOL_10_1008S.tar
drwxr-xr-x root/root 0 2008-11-07 13:19 OS_SOL_10_1008S/
drwxr-xr-x root/root 0 2008-11-07 13:19 OS_SOL_10_1008S/Solaris_10/
drwxr-xr-x root/root 0 2008-11-07 13:19 OS_SOL_10_1008S/Solaris_10/Tools/
lrwxrwxrwx root/root 0 2008-11-07 13:55 OS_SOL_10_1008S/Solaris_10/Tools/Boot -> ../../../SOL_10_1008S/Boot/
root@testopen3:/opt/SUNWjet/Templates#
root@testopen3:/opt/SUNWjet/Templates# ls -lR /dhcp/SOL_10_1008S/
/dhcp/SOL_10_1008S/:
total 3
drwxr-xr-x 3 root staff 8 Oct 27 21:21 Boot
drwxr-xr-x 2 root root 4 Oct 27 21:21 boot

/dhcp/SOL_10_1008S/Boot:
total 81737
-rw-r--r-- 1 root root 72360652 Oct 27 20:49 X.cpio.bz2
-rw-r--r-- 1 root root 287275 Oct 27 20:49 X_small.cpio.bz2
-rw-r--r-- 1 root root 9780327 Oct 27 20:49 lu.cpio.bz2
-rw-r--r-- 1 root root 1530 Oct 27 20:49 lu.platforms
-rw-r--r-- 1 root root 829821 Oct 27 20:47 pkg_db.cpio.bz2
drwxr-xr-x 5 root root 5 Oct 27 21:21 platform

/dhcp/SOL_10_1008S/Boot/platform:
total 5
drwxr-xr-x 2 root root 5 Nov 7 13:09 sun4u
drwxr-xr-x 2 root root 5 Nov 7 13:57 sun4us
drwxr-xr-x 2 root root 5 Nov 7 13:58 sun4v

/dhcp/SOL_10_1008S/Boot/platform/sun4u:
total 1414
lrwxrwxrwx 1 root root 28 Nov 7 13:09 boot_archive -> ../../../boot/sparc.miniroot
-rw-r--r-- 1 root root 221280 Oct 27 20:49 inetboot
-rw-r--r-- 1 root root 1084048 Oct 27 20:49 wanboot

/dhcp/SOL_10_1008S/Boot/platform/sun4us:
total 1414
lrwxrwxrwx 1 root root 28 Nov 7 13:57 boot_archive -> ../../../boot/sparc.miniroot
-rw-r--r-- 1 root root 221304 Oct 27 20:49 inetboot
-rw-r--r-- 1 root root 1084064 Oct 27 20:49 wanboot

/dhcp/SOL_10_1008S/Boot/platform/sun4v:
total 1414
lrwxrwxrwx 1 root root 28 Nov 7 13:58 boot_archive -> ../../../boot/sparc.miniroot
-rw-r--r-- 1 root root 220536 Oct 27 20:49 inetboot
-rw-r--r-- 1 root root 1083280 Oct 27 20:49 wanboot

/dhcp/SOL_10_1008S/boot:
total 182547
-rw-r--r-- 1 root root 8192 Oct 27 20:49 hsfs.bootblock
-rw-r--r-T 1 root root 186777600 Oct 27 20:54 sparc.miniroot
root@testopen3:/opt/SUNWjet/Templates#

NET BOOT SAMPLE IS HERE. DISK BOOT SAMPLE IS HERE.

Live upgrade (ABE) with local zones and SVM mirroring and aplication of patches

You can find full commented example of use Solaris Volume Manager & whole-root Solaris zones with Live Upgrade technology for patching HERE.

Enjoy

Arrowaver