* '''Script Name Verification''': The installer checks for valid script names, such as dist-installer-cli, {{kicksecure_wiki |wikipage=VirtualBox/Installer |text=virtualbox-installer }}, {{project_name_short_lowercase}}-cli-installer-cli, {{project_name_short_lowercase}}-xfce-installer-cli. * '''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 signify, curl, rsync, and vboxmanage (for VirtualBox users) are installed using the distribution's package manager (APT or DNF). * '''Repository Settings''': ** Debian and Derivatives: *** For bullseye (oldstable): Enables the Debian backports and fasttrack repositories. *** For bookworm (stable): Same as above. *** For trixie (testing): Enables the Debian unstable repository and configures APT pinning to prefer packages from testing over unstable so only VirtualBox gets installed from unstable and no other dependency packages are unnecessarily pulled from unstable. *** For sid (unstable): Installs from Debian unstable repository. ** Ubuntu: Installs from the Ubuntu repository. Might sound complicated but it's actually quite simple in case of Ubuntu. Install from the usual, "normal", official packages.ubuntu.com. From the usual suite. For example, if using suite jammy, it installs from jammy. 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 backports and fasttrack repositories at time of writing.) ** Fedora and Derivatives: Enables the virtualbox.org (Oracle) repository. ** Updates: The preferred repository for VirtualBox installation may vary in the future based on availability. Updated installers might fetch VirtualBox from the Debian fasttrack repository, virtualbox.org (Oracle) repository, or the {{Kicksecure}} repository. ({{project_name_short}} 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 virtualbox-installer. Because that is not required if only installing VirtualBox using virtualbox-installer.) ) * '''Virtual Machine Handling''': ** For previously imported VMs, users are prompted to boot the virtual system(s). (Not for virtualbox-installer. .) ** For previously downloaded VM files, authenticity and integrity checks are run. (Not for virtualbox-installer. .) ** For first-time users, 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 virtualbox-installer. .) * Inform user if VMs are already running and abort installation. (Not for virtualbox-installer. .) '''Additional Features:''' * '''Download Resumption''': Utilizes rsync internally to enable download resumption capabilities. * '''Integrity Checking''': Offers a streamlined integrity verification process, facilitated by rsync. * '''Download from Oracle Repository''': When using --oracle-repo 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. Might at times provide a newer VirtualBox version. * '''Onion Support''': Allows for downloads from onion sources with the --onion command line option whenever possible. (For example Oracle does not provide an onion repository.) * '''Default Download Directory''': Files are saved in the ~/dist-installer-cli-download 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 dist-installer-cli 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 /usr/bin/dist-installer-cli], [https://github.com/{{project_name_short}}/usability-misc/blob/master/.github/workflows/builds.yml Continuous Integration Testing .github/workflows/builds.yml] * '''Development Wiki Page''': [[Dev/Linux Installer]] * '''Development Discussion''': [https://forums.whonix.org/t/whonix-linux-installer-development-discussion/15917 forums discussion] * '''Security''': The dist-installer-cli 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]]. = Footnotes = {{header}} {{footer}} [[Category:MultiWiki]]