{"id":319,"date":"2022-02-07T11:38:23","date_gmt":"2022-02-07T11:38:23","guid":{"rendered":"https:\/\/blog.hslracing.com\/myhome\/?p=319"},"modified":"2022-02-07T11:38:23","modified_gmt":"2022-02-07T11:38:23","slug":"kubernetes-os-install","status":"publish","type":"post","link":"https:\/\/blog.hslracing.com\/myhome\/2022\/02\/kubernetes-os-install.html","title":{"rendered":"Kubernetes &#8211; OS Install"},"content":{"rendered":"<p>This part should be simple I thought &#8211; I have a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Preboot_Execution_Environment\">PXE<\/a> boot server running <a href=\"https:\/\/netboot.xyz\/\">netboot.xyz<\/a>, the clients will just default to network booting, I choose my desired OS, the install happens and away we go, just like it did on my recent Lenovo m93p <a href=\"https:\/\/www.minecraft.net\/\">Minecraft<\/a> server build.<\/p>\n<p>Oh no, that would be far too simple.<\/p>\n<p>Everything went fine, right up to the server reboot at the end of the OS install, after which it fails to find an OS: &#8220;error 1962: no operating system found press any key to repeat boot sequence&#8221;<\/p>\n<p>I repeat the process a few more times just to be sure (Definition of insanity: doing the same thing over and over again expecting a different result &#8211; often attributed to Albert Einstein).<\/p>\n<p>I then spend the rest of the day searching the Web trying different approaches and discovering that this is a pretty common issue on Lenovo m92p machines and that nearly all of the solutions offered don&#8217;t actually work (I tried them all).<\/p>\n<p>It turns out that there are a number of issues to contend with:<\/p>\n<ul>\n<li><a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a> will only install as BIOS boot if it has been booted in a Legacy boot environment (no EFI devices can be found)<\/li>\n<li><a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a> will only install as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Extensible_Firmware_Interface\">UEFI<\/a> if it has been booted in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Extensible_Firmware_Interface\">UEFI<\/a> boot environment<\/li>\n<li><a href=\"https:\/\/netboot.xyz\/\">Netboot.xyz<\/a> fails to boot <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Extensible_Firmware_Interface\">UEFI<\/a> on a Lenovo m92p (it works fine on an Lenovo m93p), it will only Legacy boot.<\/li>\n<li>BIOS firmware on the Lenovo m92p has been &#8216;tweaked&#8217; so that it will only boot from a disk that has a Windows 8 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Master_boot_record\">MBR<\/a>.<\/li>\n<\/ul>\n<p>The solution was to force the Lenovo m92p to boot <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Extensible_Firmware_Interface\">UEFI<\/a> from a USB drive, then install <a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a>, this results in the correct disk layout and the required <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Extensible_Firmware_Interface\">UEFI<\/a> &#8216;hacks&#8217; being put in place to convince the Lenovo m92p that it as a Windows 8 OS installed that it can boot from.<\/p>\n<p>I don&#8217;t own a PC, I only have MACs so I follow <a href=\"https:\/\/www.lewan.com\/blog\/2012\/02\/10\/making-a-bootable-usb-stick-on-an-apple-mac-os-x-from-an-iso\">this method<\/a> of creating a bootable USB.<\/p>\n<p>Except that for some reason the <a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a> server one would not boot, but the <a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a> desktop version would, so I installed the desktop version and then converted the server USB to bootable with the following command:<\/p>\n<pre>parted \/dev\/sdb set 1 boot on<\/pre>\n<p>I could have done this sooner from a network booted OS as well, but I was playing with USB based installs at the time.<\/p>\n<p>Next as I had 8 machines to install, I wanted a minimal set of configuration that was guaranteed to work to setup the BIOS and <a href=\"https:\/\/www.intel.co.uk\/content\/www\/uk\/en\/now\/itheroes.html\">vPro<\/a> on each Lenovo m92p.<\/p>\n<p>F1 to enter the BIOS<\/p>\n<p>Startup Menu:<\/p>\n<ul>\n<li>CSM &#8211; Disabled (forces UEFI only as a boot option)<\/li>\n<li>Keyboardless Operation &#8211; Enabled (I will be running these headless and keyboardless)<\/li>\n<li>Ensure USB drive is first device for Primary and Automatic Boot Sequences (ensure USB is inserted before going into BIOS or it won&#8217;t show the USB stick in the list)<\/li>\n<\/ul>\n<p>F10 to save and reboot<\/p>\n<p>Ctrl-P to enter MEBx configuration for vPro<\/p>\n<p>MEBx Login &#8211; &#8220;admin&#8217; then your new password (8 chars, 1 upper, 1 number, 1 special), then re-enter to confirm<\/p>\n<p>Intel (R) AMT Configuration:<\/p>\n<ul>\n<li>User Consent\n<ul>\n<li>User Opt-in &#8211; None (removes the need for codes to be entered from a non existent screen for remote access)<\/li>\n<\/ul>\n<\/li>\n<li>Network Setup\n<ul>\n<li>Intel (R) ME Network Name Settings\n<ul>\n<li>Host Name &#8211; enter host name<\/li>\n<li>Domain Name &#8211; enter domain name<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Activate Network Access &#8211; Y to confirm<\/li>\n<\/ul>\n<p>A couple of the machines had an existing <a href=\"https:\/\/www.intel.co.uk\/content\/www\/uk\/en\/now\/itheroes.html\">vPro<\/a> configuration, this can be cleared by enabling the MBEx reset option in the Advanced section of the BIOS and rebooting.<\/p>\n<p>After defining static <a href=\"https:\/\/en.wikipedia.org\/wiki\/Dynamic_Host_Configuration_Protocol\">DHCP<\/a> addresses and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Domain_Name_System\">DNS<\/a> entries for each of the machines, on my <a href=\"https:\/\/www.pfsense.org\/\">pfSense<\/a> firewall, I was able to install and connect to them from both the command line via <a href=\"https:\/\/en.wikipedia.org\/wiki\/Secure_Shell\">ssh<\/a> and via <a href=\"https:\/\/www.meshcommander.com\/meshcommander\">MeshCommander<\/a> (<a href=\"https:\/\/www.intel.co.uk\/content\/www\/uk\/en\/now\/itheroes.html\">vPro<\/a>)<\/p>\n<p>I only found 2 dead hard drives and 2 dead memory DIMMs but was still able to complete 7 of the 8 installs by shuffling hardware, I will do the last one once I replace the bad items.<\/p>\n<p>Next I spent a few hours modifying my rack layout and connecting it all up without any outage to service beyond what TCP-IP can cope with on cable re-plugs.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-322 aligncenter\" src=\"https:\/\/blog.hslracing.com\/wp-content\/uploads\/sites\/6\/2022\/02\/Screenshot-2022-02-07-at-11.31.57-copy-200x300.jpg\" alt=\"\" width=\"200\" height=\"300\" srcset=\"https:\/\/blog.hslracing.com\/wp-content\/uploads\/sites\/6\/2022\/02\/Screenshot-2022-02-07-at-11.31.57-copy-200x300.jpg 200w, https:\/\/blog.hslracing.com\/wp-content\/uploads\/sites\/6\/2022\/02\/Screenshot-2022-02-07-at-11.31.57-copy.jpg 534w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/p>\n<p>The Dell R210 ii will ultimately be replaced by a second <a href=\"https:\/\/www.pfsense.org\/\">pfSense<\/a> firewall in HA mode. I will probably relocate it to the garage or somewhere else where the fan noise is not an issue.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This part should be simple I thought &#8211; I have a PXE boot server running netboot.xyz, the clients will just default to network booting, I choose my desired OS, the install happens and away we go, just like it did on my recent Lenovo m93p Minecraft server build. Oh no, that would be far too&hellip;<\/p>\n","protected":false},"author":1,"featured_media":322,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5],"class_list":["post-319","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-homelab"],"_links":{"self":[{"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/posts\/319","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/comments?post=319"}],"version-history":[{"count":2,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/posts\/319\/revisions"}],"predecessor-version":[{"id":323,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/posts\/319\/revisions\/323"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/media\/322"}],"wp:attachment":[{"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/media?parent=319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/categories?post=319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hslracing.com\/myhome\/wp-json\/wp\/v2\/tags?post=319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}