Clients are to be installed via JumpStart and sysidcfg has interface=dhcp, for example:
name_service=DNS {
domain_name=<domain name>
name_server=<dns server ip address/es>
search=<search suffixes>
}
system_locale=en_US
timezone=CET
network_interface=PRIMARY {
dhcp
protocol_ipv6=no
}
security_policy=none
timeserver=<time server name>
root_password=<encrypted root password>
keyboard=workaround:Unknown
display=workaround:Unknown
pointer=workaround:Unknown
monitor=workaround:Unknown {
DisplayChksum=0x0
}To setup Solaris DHCP client manually see these instructions. I never tried those instructions but they should work.
Even though I refer to Solaris 8 on x86 exclusively, these instructions should work with minor modifications also for Solaris 9 or Solaris 10 on any platform (inetboot.I86PC.Solaris_8-1 would become inetboot.I86PC.Solaris_9-1). Probably due to a bug(?) in Solaris 8 and 9 you cannot use the same server to boot both versions of clients.
Requirements and prerequisites
Solaris on both server and client side. They do not need to be same versions. If you encounter any problems with very old versions you should apply patches it or get newer version. Server is installed with SUNWCall cluster (...not very secure but I was too lazy to find out what minimal packages are required to run DHCP server, email me if you know).
Working network connection between clients and server. On server /etc/inet/netmasks properly setup and no firewall filter rules applied to the network interface which will be used for DHCP i.e. tested without any firewall software installed.
Logged in as root. Further in text <server macro> and `uname -n` are used—in reality they would be the same.
Part 1, configure DHCP daemon
Run /usr/sbin/dhcpconfig to configure DHCP server. Just answer the questions according to your wishes or start with parameters:
dhcpconfig -D -r SUNWbinfiles -p /var/dhcp -a 10.0.1.12 -d lan.ondruska.info -h dns -y lan.ondruska.infoPart 2, add Solaris DHCP extensions
You need these only if you want to boot Solaris using PXE and/or DHCP.
dhtadm -A -s SrootOpt -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,1,ASCII,1,0'
dhtadm -A -s SrootIP4 -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,2,IP,1,1'
dhtadm -A -s SrootNM -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,3,ASCII,1,0'
dhtadm -A -s SrootPTH -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,4,ASCII,1,0'
dhtadm -A -s SswapIP4 -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,5,IP,1,0'
dhtadm -A -s SswapPTH -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,6,ASCII,1,0'
dhtadm -A -s SbootFIL -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,7,ASCII,1,0'
dhtadm -A -s Stz -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,8,ASCII,1,0'
dhtadm -A -s SbootRS -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,9,NUMBER,2,1'
dhtadm -A -s SinstIP4 -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,10,IP,1,1'
dhtadm -A -s SinstNM -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,11,ASCII,1,0'
dhtadm -A -s SinstPTH -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,12,ASCII,1,0'
dhtadm -A -s SsysidCF -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,13,ASCII,1,0'
dhtadm -A -s SjumpsCF -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,14,ASCII,1,0'
dhtadm -A -s Sterm -d 'Vendor=SUNW.Ultra-1 SUNW.Ultra-30 SUNW.i86pc,15,ASCII,1,0'
And these are useful for Windows clients.
dhtadm -A -s ReleaseOnShutdown -d 'Vendor="MSFT 5.0" "MSFT 98" MSFT,2,OCTET,1,0'
dhtadm -A -s DisableNetBT -d 'Vendor="MSFT 5.0" "MSFT 98" MSFT,1,OCTET,1,0'
dhtadm -A -s ProxyAutodiscovery -d 'Vendor="MSFT 5.0" "MSFT 98" MSFT,252,ASCII,1,0'
Part 3, configure Jumpstart client
In boot server's Tools directory run:
./add_install_client -d SUNW.i86pc i86pcThis command is required to create mandatory files in /tftpboot. To remove these files later run ./rm_install_client SUNW.i86pc. xx:xx:xx:xx:xx:xx (or xxxxxxxxxxxx later in text) is the client's network card address.
There seems to be a bug in Solaris which prevents using the same boot server for different client versions. Both Solaris 8 and 9 clients request SUNW.i86pc boot file from the TFTP server even though DHCP specifies another boot file. SUNW.i86pc is different for each Solaris version.
Part 4, configure DHCP for network boot
To enable network boot you should provide the client with this information:
dhtadm -A -m 01xxxxxxxxxxxx -d \
':SinstNM="<js>":SinstIP4=<jip>:SinstPTH="/var/opt/jumpstart":
SrootNM="<bs>":SrootIP4=<bip>:SrootPTH="/var/opt/jumpstart/Solaris_8/Tools/Boot":
SjumpsCF="<bs>:/var/opt/jumpstart":SsysidCF="<bs>:/var/opt/jumpstart":'xxxxxxxxxxxx is your network card address in with upper case letters without “:” separator,
<bs> is your boot server name,
<bip> is boot server IP address,
<js> is your jumpstart server name,
<jip> is jumpstart server IP address,
jumpstart home is /var/opt/jumpstart and contains sysidcfg file.
More flexible solution is to create macro (below) and assign this macro to clients.
dhtadm -A -m soldhcpboot -d \
':SinstNM="<js>":SinstIP4=<jip>:SinstPTH="/var/opt/jumpstart":
SrootNM="<bs>":SrootIP4=<bip>:SrootPTH="/var/opt/jumpstart/Solaris_8/Tools/Boot":
SjumpsCF="<bs>\:/var/opt/jumpstart":SsysidCF="<bs>\:/var/opt/jumpstart":'Part 5, configure PXE boot
This is the required only for PXE boot:
dhtadm -A -m PXEClient:Arch:00000:UNDI:002001 -d \
':BootFile="nbp.SUNW.i86pc":BootSrvA=<server>:'<server> is your boot server's ip address and it is the same server which is running in.tftpd and contains setup files (see part 3).
Part 6, assign permanent address to client
Assign fixed IP address to existing DHCP client:
pntadm -M <client name> -f PERMANENT -i 01xxxxxxxxxxxx -m `uname -n` <network>Or create new client with fixed IP address:
pntadm -A <client name> -f PERMANENT -i 01xxxxxxxxxxxx -m `uname -n` <network>Part 7, more (useful) settings
Return hostnames to clients:
dhtadm -M -m `uname -n` -e 'Hostname=_NULL_VALUE_'DNS configuration:
dhtadm -M -m `uname -n` -e 'DNSserv=<dns server IP address>'
dhtadm -M -m `uname -n` -e 'DNSdmain=<dns domain>'NetBIOS settings for Windows:
dhtadm -M -m `uname -n` -e 'NetBNms=<netbios name server IP addresses>'
dhtadm -M -m `uname -n` -e 'NetBNdT=<netbios node type>'
dhtadm -M -m `uname -n` -e 'NetBScop="<netbios scope id>"'Few more setting for Windows clients:
dhtadm -M -m `uname -n` -e 'ProxyAutodiscovery="http://webserver/proxy.pac"'*
dhtadm -M -m `uname -n` -e 'ReleaseOnShutdown=1'
dhtadm -M -m `uname -n` -e 'DisableNetBT=2'
If you have multiple network interfaces in DHCP server and would like to use only some of them (iprb0 for example):
echo "INTERFACES=iprb0" >> /etc/inet/dhcpsvc.confYou can have automatic DNS updates for your clients (requires changes to DNS server setup):
echo "HOSTS_RESOURCE=dns" >> /etc/inet/dhcpsvc.confecho "HOSTS_DOMAIN=<yourdomainname>" >> /etc/inet/dhcpsvc.confDHCP server should ping IP addresses before assigning them to clients:
echo "ICMP_VERIFY=TRUE" >> /etc/inet/dhcpsvc.confScan dhcptab every 15 minutes:
echo "RESCAN_INTERVAL=15" >> /etc/inet/dhcpsvc.confWhen updating DNS use default timeout:
echo "UPDATE_TIMEOUT" >> /etc/inet/dhcpsvc.confEnable support for BOOTP clients:
echo "BOOTP_COMPAT=automatic" >> /etc/inet/dhcpsvc.confConfigure additional networks for DHCP, check for valid /etc/inet/netmasks, if this is not on your local network, agent should be setup on the remote network:
pntadm -C <network>Part 8, restart DHCP server
Restart DHCP server:
pkill -HUP in.dhcpdTroubleshooting, comments
add_install_client should enable tftpd in inetd.conf. Check that tftp is enabled in inetd.conf and restart inetd.
Your client must be resolved by name services. For example put client hostname into /etc/hosts or check that DNS resolves the client.
Make sure your client's network card and network switch are properly set up in your network. There could be problems with Fast Ethernet autonegotiation.
If something does not work get latest DHCP server, DHCP client, and kernel related patches.
Resources
Solaris DHCP Administration Guide
Thanks
I would like to thank to Juergen Keil [jk at tools.de] and /usr/sbin/snoop for help with PXE boot.



Comments
Write New Comment ▼
Write New Comment
Sorry! This knol's owner(s) have blocked you from editing, making suggestions, or commenting here.