* '''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]]