{"id":1943,"date":"2024-04-01T09:36:06","date_gmt":"2024-04-01T13:36:06","guid":{"rendered":"https:\/\/enterpriseadmins.org\/blog\/?p=1943"},"modified":"2024-04-01T09:36:48","modified_gmt":"2024-04-01T13:36:48","slug":"tinycore-15-x64-virtual-machine-very-small-vm-for-testing","status":"publish","type":"post","link":"https:\/\/enterpriseadmins.org\/blog\/virtualization\/tinycore-15-x64-virtual-machine-very-small-vm-for-testing\/","title":{"rendered":"TinyCore 15 x64 Virtual Machine &#8211; very small VM for testing"},"content":{"rendered":"\n<p>I <a href=\"https:\/\/enterpriseadmins.org\/blog\/scripting\/tinycore-15-virtual-machine-very-small-vm-for-testing\/\" data-type=\"link\" data-id=\"https:\/\/enterpriseadmins.org\/blog\/scripting\/tinycore-15-virtual-machine-very-small-vm-for-testing\/\">recently made a post<\/a> about building a new TinyCore 15 virtual machine for testing.  As with past VM builds of this distribution, I used the x86 CorePlus ISO image.  I had someone ask me why I didn&#8217;t use the x86 Pure 64 version instead.  I didn&#8217;t have a good reason, only that many years ago I had struggled to get it working, but didn&#8217;t remember any of the details on what problem I encountered.  This post will cover steps very similar to the previous article, but building the x86-64 port in a virtual machine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Virtual Machine<\/h2>\n\n\n\n<p>When creating the virtual machine, I used the following options:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compatible with: ESXi 6.7 U2 and later (vmx-15)<\/li>\n\n\n\n<li>Operating System: Linux \/ Other 4.x or later Linux (64-bit)<\/li>\n\n\n\n<li>1 vCPU<\/li>\n\n\n\n<li>1 GB RAM<\/li>\n\n\n\n<li>1 GB disk (thin provisioned)<\/li>\n\n\n\n<li>Expand Video card &gt; Total video memory = 8MB (when using GUI, for CLI only I left it at the default 4MB)<\/li>\n\n\n\n<li>VM Options tab > Boot Options > Firmware = BIOS<\/li>\n<\/ul>\n\n\n\n<p>These are the same options used in the x32 version of this article, with the exception of the &#8216;operating system&#8217; selected in step 2.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Install<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Power on VM<\/li>\n\n\n\n<li>Open Remote Console (the one that launches VMRC or VMware Workstation, not the web console)<\/li>\n\n\n\n<li>Attach to a local TinyCorePure64 ISO image (specifically I used this ISO:\u00a0<a href=\"http:\/\/tinycorelinux.net\/15.x\/x86_64\/release\/TinyCorePure64-current.iso\">http:\/\/tinycorelinux.net\/15.x\/x86_64\/release\/TinyCorePure64-current.iso<\/a>)<\/li>\n\n\n\n<li>CTRL+ALT+INS to reboot<\/li>\n\n\n\n<li>Select Boot TinyCorePure64 (default)<\/li>\n\n\n\n<li>Select Apps > Click the Apps button (top left) > &#8216;Cloud (Remote)&#8217; > Browse<\/li>\n\n\n\n<li>Find the Remote Extension <code>tc-install-GUI.tcz<\/code><\/li>\n\n\n\n<li>Change the toggle in bottom left to &#8216;Download + Load&#8217; and click Go.  A window with progress should appear, this will take a minute to complete.<\/li>\n\n\n\n<li>Click the installation button on the task bar. Select Frugal > Whole Disk > sda > install boot loader > ext4<\/li>\n\n\n\n<li>Install Extensions from this TCE\/CDE Directory, left as default <code>\/mnt\/sr0\/cde<\/code><\/li>\n\n\n\n<li>Proceed<\/li>\n\n\n\n<li>When the display says &#8220;installation has completed&#8221;, Exit > Shutdown.<\/li>\n\n\n\n<li>Power On VM (this will ensure that the CD is no longer connected and boot into the install)<\/li>\n\n\n\n<li>The VM likely boots to the error <code>failed in waitforX<\/code> and leaves you at a <code>tc@box:~$<\/code> command prompt.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Customization<\/h2>\n\n\n\n<p>In <a href=\"https:\/\/enterpriseadmins.org\/blog\/scripting\/tinycore-15-virtual-machine-very-small-vm-for-testing\/\">the previous article<\/a>, I created a bit of automation to build a TinyCore appliance to set hostname, include my CA certificate, install open-vm-tools, install Firefox if using a GUI.  For this x86-64 version, I&#8217;m going to use that same script.<\/p>\n\n\n\n<p>After following the above instructions to install, we should be at a <code>failed in waitforX<\/code> console.  Running the script which installs <code>open-vm-tools<\/code> will resolve this issue.  The previous article outlines the script, its placement on a web server, and some other ancillary files.  Assuming those dependencies are already in place, we only need to run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget http:\/\/www.example.com\/build\/buildscript2.txt\nmv buildscript2.txt buildscript2.sh\nchmod +x buildscript2.sh\n.\/buildscript2.sh tc-150x64-gui<\/code><\/pre>\n\n\n\n<p>The above commands will set the hostname to <code>tc-150x64-gui<\/code>, and since <code>gui<\/code> is part of the name, will also install graphical components <code>open-vm-tools-desktop<\/code> as well as Firefox.  Our internal CA will also be trusted at the command prompt and in Firefox.  Once the script is complete, we can <code>sudo reboot<\/code> and confirm everything boots up.  When we launch Firefox we&#8217;ll be able to see that it is the 64-bit version (from Help > About Firefox).<\/p>\n\n\n\n<p>For a CLI version of this VM, I also made changes to <code>\/mnt\/sda1\/tce\/onboot.lst<\/code> to only include <code>ca-certificates.tcz<\/code>, <code>curl.tcz<\/code>, <code>pcre.tcz<\/code>, and <code>open-vm-tools.tcz<\/code>.  I saved these changes by running <code>backup<\/code> and then rebooting again to confirm success.  After exporting these to OVA files, I now have a folder with a variety of VMs that can be quickly deployed as needed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently made a post about building a new TinyCore 15 virtual machine for testing. As with past VM builds of this distribution, I used the x86 CorePlus ISO image. I had someone ask me why I didn&#8217;t use the &hellip; <a href=\"https:\/\/enterpriseadmins.org\/blog\/virtualization\/tinycore-15-x64-virtual-machine-very-small-vm-for-testing\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1943","post","type-post","status-publish","format-standard","hentry","category-virtualization"],"_links":{"self":[{"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/posts\/1943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/comments?post=1943"}],"version-history":[{"count":3,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/posts\/1943\/revisions"}],"predecessor-version":[{"id":1946,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/posts\/1943\/revisions\/1946"}],"wp:attachment":[{"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/media?parent=1943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/categories?post=1943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enterpriseadmins.org\/blog\/wp-json\/wp\/v2\/tags?post=1943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}