{"id":20,"date":"2010-03-09T17:16:43","date_gmt":"2010-03-09T17:16:43","guid":{"rendered":"http:\/\/clayb.net\/blog\/?p=20"},"modified":"2012-05-04T19:34:20","modified_gmt":"2012-05-04T19:34:20","slug":"network-interactions-of-a-net-booted-x86-ai-client","status":"publish","type":"post","link":"https:\/\/clayb.net\/blog\/network-interactions-of-a-net-booted-x86-ai-client\/","title":{"rendered":"Network Interactions of a Net Booted X86 AI Client"},"content":{"rendered":"<h1>What all does an X86 do while net booting and installing?<\/h1>\n<p>I often get asked how the OpenSolaris Automated Installer works. The big question is how all the pieces tie together. To help answer these questions I have drafted a few UML sequence diagrams showing the boot process of an X86 type machine net booting and installing via the Automated Installer.<\/p>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,213,721,181\" href=\"http:\/\/en.wikipedia.org\/wiki\/Dynamic_Host_Configuration_Protocol\" alt=\"PXE running DHCP\" \/><\/map>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,214,721,283\" href=\"http:\/\/en.wikipedia.org\/wiki\/Trivial_File_Transfer_Protocol\" alt=\"PXE running TFTP\" \/><\/map>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,283,721,367\" href=\"http:\/\/en.wikipedia.org\/wiki\/GNU_GRUB\" alt=\"GRUB\" \/><\/map>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,368,721,531\" href=\"http:\/\/src.opensolaris.org\/source\/xref\/caiman\/AI_source\/usr\/src\/cmd\/slim-install\/svc\/live-fs-root\" alt=\"live-fs-root\" \/><\/map>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,532,721,714\" href=\"http:\/\/src.opensolaris.org\/source\/xref\/caiman\/slim_source\/usr\/src\/cmd\/auto-install\/svc\/manifest-locator\" alt=\"manifest-locator script\" \/><\/map>\n<map name=\"AI_Network\">\n<area shape=\"rect\" coords=\"0,715,721,858\" href=\"http:\/\/src.opensolaris.org\/source\/xref\/caiman\/slim_source\/usr\/src\/cmd\/auto-install\/svc\/auto-installer\" alt=\"auto-installer\" \/><\/map>\n<p><!--more--><\/p>\n<h1>AI Boot Flow Overview<\/h1>\n<p>(You can click down the client timeline for relevant links to source code and Wikipedia descriptions of the protocols.)<br \/>\n<img decoding=\"async\" src=\"https:\/\/clayb.net\/blog\/wp-content\/uploads\/2012\/01\/AI_Network.png\" alt=\"UML sequence diagram showing AI boot process -- image map links to relevant code and protocol Wikipedia entries.\" width=\"856px\" height=\"853px\" usemap=\"#AI_Network\" \/><\/p>\n<map name=\"AI_Manifest\">\n<area shape=\"rect\" coords=\"533,322,685,415\" href=\"http:\/\/defect.opensolaris.org\/bz\/show_bug.cgi?id=9106\" alt=\"Bug with of criteria selection\" \/><\/map>\n<map name=\"AI_Manifest\">\n<area shape=\"rect\" coords=\"0,175,515,495\" href=\"http:\/\/src.opensolaris.org\/source\/xref\/caiman\/slim_source\/usr\/src\/cmd\/ai-webserver\/webserver.py#219\" alt=\"manifest_xml() in webserver.py\" \/><\/map>\n<map name=\"AI_Manifest\">\n<area shape=\"rect\" coords=\"525,105,685,170\" href=\"http:\/\/src.opensolaris.org\/source\/xref\/caiman\/slim_source\/usr\/src\/cmd\/ai-webserver\/webserver.py#179\" alt=\"manifest_html() in webserver.py\" \/><\/map>\n<h1>AI Manifest Selection Flow Detail<\/h1>\n<p>(Click the note for a link to the relevant code implementing the AI webserver (which usually runs on http:\/\/&lt;ai_server&gt;:46501, http:\/\/&lt;ai_server&gt;:46502, etc.) manifest.html page or the note on manifest criteria for <a href=\"http:\/\/defect.opensolaris.org\/bz\/show_bug.cgi?id=9106\">Bug 9106<\/a> which documents some issues with criteria processing at this time. Otherwise, the rest of the image links to the AI webserver&#8217;s code implementing manifest.xml.)<br \/>\n<img decoding=\"async\" src=\"https:\/\/clayb.net\/blog\/wp-content\/uploads\/2012\/01\/ai_manifest_ad.png\" alt=\"UML sequence diagram showing AI webserver communication process for downloading an AI manifest\" width=\"685px\" height=\"540px\" usemap=\"#AI_Manifest\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ever wonder what all the OpenSolaris Automated Installer does and where all the configuration data comes from when net booting an X86 and installing to it?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/posts\/20"}],"collection":[{"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":0,"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"wp:attachment":[{"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clayb.net\/blog\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}