Boot-net With BOOTPARAMS/RARP in Solaris

Introduction: “boot net” is term used for booting over the network. Another term for this process is termed as jumpstart. Just like booting from the disk, floppy, cd-ROM, Solaris has provided an environment to boot over the net. Solaris can boot from the network by issuing traditional boot net command at the OK prompt. This way of booting uses BOOTPARAMS/RARP protocol and has limitation of having complete boot setup within the client's subnet. Boot net with DHCP option is another way of booting over the network. With dhcp option, we have no constraints of having boot setup within client's subnet. This restriction comes from the fact that BOOTPARAMS/RARP protocol implementation on Solaris has no provision of exchanging netmask information where as DHCP provides netmask information to the client. Much advanced net-booting architectures are now introduced with Solaris 9. This is called wanboot which can be used to boot over the WAN. Along with many features, security is the most attractive feature introduced with wanboot. Even though, we have advanced much in the boot-net area, still there are old setup's which still use old traditional net-booting method. In the current write-up, we will focus only on the traditional boot net process. The topics covered are -

- configuring client at the boot server
- boot net process
- First stage of booting with inetboot
- second stage of booting with genunix
- Limitation with the existing design of inetboot.

The idea here is not to emphasis on kernel booting process but to know more about the network specific activities related to boot net. There are various stages of booting while booting from disk and in each stage of booting we have a pointer to the next boot image on the disk. Boot loader loads the next boot image from the disk in a specific location and jumps to the location where the boot image is loaded to pass on the control to the new boot image. Finally, Unix kernel is loaded which boot straps itself and brings up the system. While boot strapping, kernel loads various modules/drivers and configuration files in the memory from the disk. So, primarily all the booting images, kernel and its pre-requisite components are loaded from the disk in case of disk booting. In a very similar fashion, in boot net we have various stages of booting. At each stage of booting we load in different images in the memory from the boot server over NFS. So, what additional booting client has to do here at each stage of booting is to discover its identity, configure network interface properties, find the boot server, find root file handle, mount root file system over the NFS. Finally start loading the boot image/kernel image/required drivers/modules and configuration files in the memory from NFS server from where miniroot is mounted. So, primarily nothing changes when it comes to kernel booting. In case of disk booting, all the requests are served from the disk where as in case of boot net these requests are served from the NFS server. So, we will concentrate mainly on network related activities between client and the server when client is booting over the network. Sequence & fundamentals of Kernel boot strapping is out of scope of this writeup. This writeup is purely based on the experience gained while solving the issues related with boot net and studying the code in general. There is a great scope for modifications to the writeup in terms of expansion or rectification.

Please find the complete writeup here...

<script src="" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-903150-1"; urchinTracker(); </script>

Nice writeup Sameer! - any chance you could add some detail about net booting GRUB based x64/i386 systems ? (I'm pretty familiar with net booting sparc machines, but haven't had much chance to investigate net booting with the newboot-based x86 machines)

Posted by Tim Foster on December 05, 2005 at 09:53 PM PST #

Is the BOOTP/RARP term a long established name within Sun? I've seen it confuse a number of people that think it refers to a traditional RFC 951 BootP server involvement (even to the point of finding and installing third-party BootP servers).
Thanks for the detail in the document. I've never really seen an explanation before of what the OS is doing back there during the process.

Posted by Darren Dunham on December 06, 2005 at 06:18 AM PST #

Unfortunately, the terminology used here is incorrect. The old network booting protocols are RARP and Bootparams, which is an RPC-based service which is somewhat proprietary to Sun. BOOTP, on the other hand, is an old Internet standard which predates DHCP - note that DHCP servers generally can serve BOOTP clients. Sameer, you really should edit this posting and the underlying document to use the correct terminology.

Posted by Dave Miner on December 06, 2005 at 07:47 AM PST #

Many thanks Dave & Darren for bringing the issue and rectifying me. I've updated the blogs entry as well as write up.

Posted by sameer seth on December 06, 2005 at 02:15 PM PST #

Thanks Tim, my study & work was very much specific to network protocols involved in net booting process. Some of my colleagues from X86 team are working on the new grub boot architecture and they are sure to post some informaiton on the same.....

Posted by sameer seth on December 06, 2005 at 02:19 PM PST #

Kindly don't provide links to porn sites in the comments. It is crime and will be traced. The guilt will be punished.

Posted by sameer on January 31, 2006 at 12:53 PM PST #

Thanks and Great writeup, Sameer. one thing which is minor: in figure 1, the inetboot still need to use either DHCP or RPC to re-request its IP address from dhcpd or rarpd server. you also mention this in the first paragraph after figure 7. Just making it perfect!!:) Noah

Posted by Noah Yan on March 15, 2006 at 01:55 PM PST #

Thanks Noah for correcting me. I've made the correction in Fig. 1 and once again posted the writeup. Sameer

Posted by sameer on March 17, 2006 at 10:31 PM PST #

What about "network-boot-arguments" OBP parameter to add routing capability to inetboot ?

Posted by Jerome Daudin on October 23, 2006 at 07:53 PM PDT #

I hope you can boot client from within your subnet using boot net. As far as Ive understood the code, Solaris doesn't support booting from outside the subnet which is a limitation. Once you have crossed the initial booting stage which involves loading genunix, installation can be done from outside the client's subnet because at this stage, you get all the network configuration parameters from bootparams specific files which is specified while setting up booting environment for the client at the server end. Hope this helps.

Posted by sameer seth on October 24, 2006 at 11:12 PM PDT #

The above explanation I've provided is with respect to inetboot. There are ways to boot Solaris from outside the client's subnet by using DHCP or wanboot.

Posted by sameer seth on October 24, 2006 at 11:14 PM PDT #

with network-boot-arguments, you can specify name, ip address, netmask, gateway and tftpd ip address. the tftpd load of inetboot works fine but inetboot make an rarp request (unnecessary if you can use network-boot-arguments) and a broadcast for rpc.bootparam. A little update of inetboot can resolve these issues, isn't it ?

Posted by Jerome Daudin on October 29, 2006 at 03:30 PM PST #

Jerome, I wish it would have been the way you mentioned. First of all the OBP versions that I worked with on Solaris don't respect most of these arguments. Specially the netmask and hopefully the boot server IP address. As far as I've looked into the code, network kernel(inetboot) directly takes RPC broadcast path at every stage of booting to locate the booting server. I can't say much about the latest OBP versions. I hope that they regard the network boot arguments fully. But whatever be the case, you will not find routing capabilities with inetboot as that part is hardcoded.

Posted by sameer seth on October 29, 2006 at 04:41 PM PST #

Thanks for sharing. it is a great writeup.

Posted by unixfoo on November 25, 2007 at 05:54 PM PST #

Sameer, this information looks interesting. I have a question: I have seen that with the boot net command you can actually specify which bootparam server you want to use. Something like boot net:nnn.nnn.nnn.nnn - install where nnn's represent the IP address of the bootparam server. Thanks.

Posted by Mike Schwager on November 28, 2007 at 12:39 AM PST #

thanks for the comments and finding the information useful.

Mike, as far as I have seen, client discovers the bootparam server itself by broadcasting BOOTPARAM packet. There may be OBP versions which regard bootp server from the command line which I don't know of.

Posted by sameer on December 03, 2007 at 11:23 PM PST #


Posted by guest on December 16, 2008 at 02:12 AM PST #

Post a Comment:
  • HTML Syntax: NOT allowed



« July 2016