* Script name verification: The installer checks for valid script names, such as dist-installer-cli, {{kicksecure_wiki
|wikipage=VirtualBox/Installer
|text=virtualbox-installer-cli
}}, {{project_name_short_lowercase}}-cli-installer-cli, {{project_name_short_lowercase}}-lxqt-installer-cli.
* Command-line parsing: The installer 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 are not 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: Repository selection and configuration depends on platform and distribution release.
** Debian and derivatives: Repository logic depends on the Debian release in use.
*** bookworm (oldstable): Enables the Debian backports and fasttrack repositories.
*** trixie (stable): Enables the virtualbox.org (Oracle) repository.[
This is because Debian Trixie's ]fasttrack repository does not have VirtualBox yet, and Debian Sid's build of VirtualBox is not compatible with Trixie any longer.
*** sid (unstable): Installs from Debian unstable repository.
** Ubuntu: Installs from the Ubuntu repository. [
Might sound complicated but it is 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 does not. That is 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. 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-cli. [
Because that is not required if only installing VirtualBox using ]virtualbox-installer-cli.)
)
* VirtualBox configuration: System configuration is automatically added to prevent VirtualBox from conflicting with KVM, without breaking functionality for either VirtualBox or KVM.
* Virtual machine handling: VM-related steps depend on whether VMs are already present and on installer mode.
** Previously imported VMs: Users are prompted to boot the virtual system(s). (Not for virtualbox-installer-cli. .)
** Previously downloaded VM files: Authenticity and integrity checks are run. (Not for virtualbox-installer-cli. .)
** 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-cli. .)
* Running VM detection: Inform user if VMs are already running and abort installation. (Not for virtualbox-installer-cli. .)
'''Additional Features:'''
* Download resumption: Utilizes rsync internally to enable download resumption capabilities.
* Oracle repository downloads: When using --oracle-repo command line option, downloads VirtualBox from Oracle repository. This is the default for Fedora-based distributions. It is 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.
* Digital signature verification: Uses APT (which verifies digital software signatures). When using the --oracle-repo, installs Oracle's repository and signing key.
* Integrity checking: Offers a streamlined integrity verification process, facilitated by rsync.
* 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 {{Github_link|repo=usability-misc|path=/blob/master/man/dist-installer-cli.1.ronn|text=dist-installer-cli man page}}.
* Checks: [[Nested Virtualization]], secure boot enabled check.
'''Developer Information:'''
* Source code: {{Github_link|repo=usability-misc|path=/blob/master/usr/bin/dist-installer-cli|text=/usr/bin/dist-installer-cli}}, {{Github_link|repo=usability-misc|path=/blob/master/.github/workflows/builds.yml|text=Continuous Integration Testing .github/workflows/builds.yml}}
* Development wiki page: [[Dev/Linux_Installer|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]]