blog:netboot_solaris

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
blog:netboot_solaris [2018/11/27 11:02] johnblog:netboot_solaris [2019/02/17 16:45] (current) john
Line 22: Line 22:
  
 <code> <code>
-echo "00:01:02:03:04:ef sparky" >> /etc/ethers+echo "00:80:42:0b:17:dd sparky" >> /etc/ethers
 echo "192.168.1.15 sparky" >> /etc/hosts echo "192.168.1.15 sparky" >> /etc/hosts
 </code> </code>
  
-Run the rarp daemon in verbose mode (rarpd -v) and monitor syslog/messages for queries from the Sparc machine as it powers on. You should see a request for "00:01:02:03:04:ef" being answered by "192.168.1.15".+Run the rarp daemon in verbose mode (rarpd -v -d) and monitor syslog/messages for queries from the Sparc machine as it powers on. You should see a request for "00:80:42:0b:17:dd" being answered by "192.168.1.15", if you don't have a matching entry yet, you'll see the following:
  
-The next step is supplying a kernel image to the booting Sparc machine.+<code> 
 +~# rarpd -d -v 
 +rarpd[2326]: Building list of addresses per interface. 
 +rarpd[2326]: link lo 
 +rarpd[2326]:   addr 127.0.0.1/8 on lo 
 +rarpd[2326]: link eth0 
 +rarpd[2326]:   addr 192.168.1.111/24 on eth0 
 +rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[2326]: not found in /etc/ethers 
 +rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[2326]: not found in /etc/ethers 
 +rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[2326]: not found in /etc/ethers 
 +rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[2326]: not found in /etc/ethers 
 +rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[2326]: not found in /etc/ethers 
 +</code> 
 + 
 +Once you have the right ethernet address for the Sparc, rarpd will respond as such: 
 + 
 +<code> 
 +rarpd[3578]: RARP request from 00:80:42:0b:17:dd on eth0 
 +rarpd[3578]: RARP response to 00:80:42:0b:17:dd 192.168.1.15 on eth0 
 +</code> 
 + 
 +The next step is supplying a kernel image to the booting Sparc machine. Note that modern versions of rarpd on Linux will also try to find a Sun kernel image, if you already have a working tftp server elsewhere ignore that feature of rarpd by running it with the //-e// flag: rarpd -d -v -e.
  
 === tftp === === tftp ===
  
-TBC+As the machine starts to boot it will make a request via TFTP, to the same server that it received a rarp request from, for a kernel image. 
 + 
 +In my case: 
 + 
 +<code> 
 +Feb 17 16:43:56 curse tftpd[4446]: tftpd: serving file from /export/tftp 
 +Feb 17 16:44:05 curse tftpd[4478]: tftpd: trying to get file: C0A8010F.SUN4M 
 +</code> 
 + 
 +The name of the kernel image will depend on the IP address that you have assigned to the Sparc machine. Unfortunately it's in hexadecimal format. In the case of assigning 192.168.1.15, as above, you can calculate the filename as follows: 
 + 
 +<code> 
 +$ printf "%02X%02X%02X%02X" 192 168 1 15 
 +$ C0A8010F 
 +</code> 
 + 
 +A boot kernel then needs to be copied from your relevant Solaris installation cd images (Solaris 2.6 in my case) and dropped in to the root of the TFTP server. 
 + 
 +So I had to do this: 
 + 
 +<code> 
 +cp /mnt/iso/Solaris_2.6/Tools/Boot/usr/platform/sun4m/lib/fs/nfs/inetboot /export/tftproot/C0A8010F.SUN4M 
 +</code> 
 + 
 +Note that you need to copy the correct architecture kernel image for your hardware - in my case the MicroSparc II is a sun4m platform. 
 +Note also that the inetboot kernel on Solaris 2.6 is stored in a different path on the CD compared to later versions; Solaris 7, 8 and higher have it here: 
 + 
 +<code> 
 +/mnt/iso/Solaris_[NUMBER]/Tools/Boot/platform/sun4m/inetboot 
 +</code> 
 + 
 +Reboot the Sparc machine and you should see it load the new kernel image from your tftp server. 
 + 
 +Now we need to tell the booting kernel where to find the root filesystem and where to load the installation CD contents from...
  
 === bootparams === === bootparams ===
  
-TBC+During install, the Solaris kernel sends out a request to the **bootparam** daemon on the Linux host to request the correct parameters for the installer (remember that rarp only does basic IP assignment and tftp then only sends a kernel image - we still need to supply any needed kernel boot parameters in the same way we would do for Linux using dnsmasq/PXE). 
 + 
 +Install bootparamd on your Linux host and add an entry to /etc/bootparams: 
 + 
 +<code> 
 +sparky root=linuxbox:/export/tftp/solaris/Solaris_2.6/Tools/Boot \ 
 +        install=linuxbox:/export/tftp/
 +        rootopts=:rsize=32768 \ 
 +        boottype=:in  
 +</code> 
 + 
 +Obviously **sparky** must match the hostname you're assigning to the Solaris host, and the **root** and **install** paths should mirror where you have unpacked the Solaris installation CD images.
  
 === NFS === === NFS ===
  
 TBC TBC
 +
 +----
 +
 +==== More thoughts ====
 +
 +Using solid state drives on Solaris/Sparc - aka compact flash or SD.
 +
 +Solaris needs drive geometry setting if you don't have a SCSI drive that is detected by the installer (which, if you don't have an original Sun branded SCSI drive, it won't be). Here are some common compact flash/SD card sizes in CHS format:
 +
 +^ Capacity    ^ Cylinders    ^ Heads    ^ Sectors    ^ Total Sectors
 +| 512MB | 1024 | 16 | 63  | 1,032,192
 +| 1,024MB | 1,986 | 16 | 63 | 2,001,888
 +| 2,048MB | 3,970 | 16 | 63 | 4,001,760
 +| 4,096MB | 7,964 | 16 | 63 | 16,007,040
 +| 8,192MB | 31,769 | 16 | 63 | 32,014,080
 +| 16,384MB | 63,538 | 16 | 63 | 64,028,160
 +
 +These will need to be entered during the installer so that it can recognise the drive.
  • blog/netboot_solaris.1543316554.txt.gz
  • Last modified: 2018/11/27 11:02
  • by john