* '''Script Name Verification''': The installer checks for valid script names, such as <code>dist-installer-cli</code>, {{kicksecure_wiki |wikipage=VirtualBox/Installer |text=<code>virtualbox-installer</code> }}, <code>{{project_name_short_lowercase}}-cli-installer-cli</code>, <code>{{project_name_short_lowercase}}-xfce-installer-cli</code>. * '''Command-Line Parsing''': It parses any command-line options provided. * '''System Requirements Check''': The installer assesses if the system meets prerequisites like adequate disk space, RAM, and virtualization support. Users are informed if any of these criteria aren't met. * '''Package Installation''': Necessary packages for the script's operation, like <code>signify</code>, <code>curl</code>, <code>rsync</code>, and <code>vboxmanage</code> (for VirtualBox users) are installed using the distribution's package manager (APT or DNF). * '''Repository Settings''': ** <u>Debian and Derivatives</u>: *** For <code>bullseye</code> (<code>oldstable</code>): Enables the Debian <code>backports</code> and <code>fasttrack</code> repositories. *** For <code>bookworm</code> (<code>stable</code>): Same as above. *** For <code>trixie</code> (<code>testing</code>): Enables the Debian <code>unstable</code> repository and configures APT pinning to prefer packages from <code>testing</code> over <code>unstable</code> so only VirtualBox gets installed from <code>unstable</code> and no other dependency packages are unnecessarily pulled from <code>unstable</code>. *** For <code>sid</code> (<code>unstable</code>): Installs from Debian <code>unstable</code> repository. ** <u>Ubuntu</u>: Installs from the Ubuntu repository. <ref> Might sound complicated but it's actually quite simple in case of Ubuntu. Install from the usual, "normal", official <code>packages.ubuntu.com</code>. From the usual <code>suite</code>. For example, if using suite <code>jammy</code>, it installs from <code>jammy</code>. This is because [https://packages.ubuntu.com/search?keywords=virtualbox Ubuntu is packaging VirtualBox] for their usual stable suites. Debian doesn't. That's why Ubuntu does not require any special repository. (Debian required <code>backports</code> and <code>fasttrack</code> repositories at time of writing.) </ref> ** <u>Fedora and Derivatives</u>: Enables the <code>virtualbox.org</code> (Oracle) repository. ** <u>Updates</u>: The preferred repository for VirtualBox installation may vary in the future based on availability. Updated installers might fetch VirtualBox from the Debian <code>fasttrack</code> repository, <code>virtualbox.org</code> (Oracle) repository, or the {{Kicksecure}} repository. development discussion: [https://forums.whonix.org/t/whonix-virtualbox-integration-and-upgrades/11705 VirtualBox Integration and Upgrades]) * '''Version Querying''': If no version is specified via command line, the {{project_name_short}} version number is fetched using the [[API]]. (Only if installing {{project_name_short}}.) (Not for <code>virtualbox-installer</code>. <ref name=virtualbox-installer-only> Because that is not required if only installing VirtualBox using <code>virtualbox-installer</code>.) </ref>) * '''Virtual Machine Handling''': ** <u>For previously imported VMs,</u> users are prompted to boot the virtual system(s). (Not for <code>virtualbox-installer</code>. <ref name=virtualbox-installer-only />.) ** <u>For previously downloaded VM files,</u> authenticity and integrity checks are run. (Not for <code>virtualbox-installer</code>. <ref name=virtualbox-installer-only />.) ** <u>For first-time users,</u> the installer downloads the required files, conducts authenticity and integrity checks, imports the system(s), and then attempts to start the Virtual Machine(s). (Not for <code>virtualbox-installer</code>. <ref name=virtualbox-installer-only />.) * Inform user if VMs are already running and abort installation. (Not for <code>virtualbox-installer</code>. <ref name=virtualbox-installer-only />.) '''Additional Features:''' * '''Download Resumption''': Utilizes <code>rsync</code> internally to enable download resumption capabilities. * '''Integrity Checking''': Offers a streamlined integrity verification process, facilitated by <code>rsync</code>. * '''Download from Oracle Repository''': When using <code>--oracle-repo</code> command line option, downloads VirtualBox from Oracle repository. This is the default for Fedora-based distributions. It's optional for Debian-based ones (including Ubuntu) but may be set by developers in the future if the Debian repository discontinues the VirtualBox package. The Oracle repository might at times provide a newer VirtualBox version. * '''Onion Support''': Allows for downloads from onion sources with the <code>--onion</code> command line option whenever possible. (For example Oracle does not provide an onion repository.) * '''Default Download Directory''': Files are saved in the <code>~/dist-installer-cli-download</code> folder. * '''Logging Mechanics''': For transparency, every command executed is logged in the download directory, accompanied by the specific script version used at the time. * '''Transparent System Modifications''': The installer’s operations are evident to the user. All persistent system alterations, especially those executed with administrative ("root") privileges, are prominently detailed in the installer's output. * '''Documentation''': Comprehensive details can be found in the [https://github.com/{{project_name_short}}/usability-misc/blob/master/man/dist-installer-cli.1.ronn <code>dist-installer-cli</code> man page]. * '''Checks''': [[Nested Virtualization]], secure boot enabled check. '''Developer Information:''' * '''Source Code''': [https://github.com/{{project_name_short}}/usability-misc/blob/master/usr/bin/dist-installer-cli <code>/usr/bin/dist-installer-cli</code>], [https://github.com/{{project_name_short}}/usability-misc/blob/master/.github/workflows/builds.yml Continuous Integration Testing <code>.github/workflows/builds.yml</code>] * '''Development Wiki Page''': [[Dev/Linux Installer]] * '''Development Discussion''': [https://forums.whonix.org/t/whonix-linux-installer-development-discussion/15917 forums discussion] * '''Security''': The <code>dist-installer-cli</code> script is not intended for curl bash piping. However, for a comprehensive discussion on security concerns related to this topic, see [[Dev/curl_bash_pipe|here]].<noinclude> = Footnotes = <references /> {{header}} {{footer}} [[Category:MultiWiki]] </noinclude>