Guided installation
Archinstall ships with a pre-programmed Guided Installer guiding you through the mandatory steps as well as some optional configurations that can be done.
Note
Other pre-programmed scripts can be invoked by executing archinstall <script>
(without .py). To see a complete list of scripts, run archinstall --script list
or check the source code scripts directory.
Note
It’s recommended to run archinstall
from the official Arch Linux ISO.
Warning
The installer will not configure WiFi before the installation begins. You need to read up on Arch Linux networking before you continue.
Running the guided installation
To start the installer, run the following in the latest Arch Linux ISO:
archinstall
Since the Guided Installer is the default script, this is the equivalent of running archinstall guided
The guided installation also supports installing with pre-configured answers to all the guided steps. This can be a quick and convenient way to re-run one or several installations.
There are two configuration files, both are optional.
--config
This parameter takes a local or remote .json
file as argument and contains the overall configuration and menu answers for the guided installer.
Note
You can always get the latest options for this file with archinstall --dry-run
, this executes the guided installer in a safe mode where no permanent actions will be taken on your system but simulate a run and save the configuration to disk.
Example usage
archinstall --config https://domain.lan/config.json
The contents of https://domain.lan/config.json
:
{
"__separator__": null,
"additional-repositories": [],
"archinstall-language": "English",
"audio_config": null,
"bootloader": "Systemd-boot",
"config_version": "2.6.0",
"debug": false,
"disk_config": {
"config_type": "manual_partitioning",
"device_modifications": [
{
"device": "/dev/sda",
"partitions": [
{
"btrfs": [],
"flags": [
"boot"
],
"fs_type": "fat32",
"length": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 99982592
},
"mount_options": [],
"mountpoint": "/boot",
"obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9",
"start": {
"sector_size": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 512
},
"total_size": null,
"unit": "sectors",
"value": 34
},
"status": "create",
"type": "primary"
},
{
"btrfs": [],
"flags": [],
"fs_type": "fat32",
"length": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 100000000
},
"mount_options": [],
"mountpoint": "/efi",
"obj_id": "13cf2c96-8b0f-4ade-abaa-c530be589aad",
"start": {
"sector_size": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 512
},
"total_size": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 16106127360
},
"unit": "MB",
"value": 100
},
"status": "create",
"type": "primary"
},
{
"btrfs": [],
"flags": [],
"fs_type": "ext4",
"length": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 15805127360
},
"mount_options": [],
"mountpoint": "/",
"obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b",
"start": {
"sector_size": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 512
},
"total_size": {
"sector_size": null,
"total_size": null,
"unit": "B",
"value": 16106127360
},
"unit": "MB",
"value": 301
},
"status": "create",
"type": "primary"
}
],
"wipe": false
}
]
},
"disk_encryption": {
"encryption_type": "luks",
"partitions": [
"3e75d045-21a4-429d-897e-8ec19a006e8b"
]
},
"hostname": "archlinux",
"kernels": [
"linux"
],
"locale_config": {
"kb_layout": "us",
"sys_enc": "UTF-8",
"sys_lang": "en_US"
},
"mirror_config": {
"custom_mirrors": [],
"mirror_regions": {
"Sweden": [
"https://mirror.osbeck.com/archlinux/$repo/os/$arch",
"https://mirror.bahnhof.net/pub/archlinux/$repo/os/$arch",
"https://ftp.myrveln.se/pub/linux/archlinux/$repo/os/$arch",
"https://ftp.lysator.liu.se/pub/archlinux/$repo/os/$arch",
"https://ftp.ludd.ltu.se/mirrors/archlinux/$repo/os/$arch",
"https://ftp.acc.umu.se/mirror/archlinux/$repo/os/$arch",
"http://mirror.bahnhof.net/pub/archlinux/$repo/os/$arch",
"http://ftpmirror.infania.net/mirror/archlinux/$repo/os/$arch",
"http://ftp.myrveln.se/pub/linux/archlinux/$repo/os/$arch",
"http://ftp.lysator.liu.se/pub/archlinux/$repo/os/$arch",
"http://ftp.acc.umu.se/mirror/archlinux/$repo/os/$arch"
]
}
},
"network_config": {},
"no_pkg_lookups": false,
"ntp": true,
"offline": false,
"packages": [],
"parallel downloads": 0,
"profile_config": null,
"save_config": null,
"script": "guided",
"silent": false,
"swap": true,
"timezone": "UTC",
"version": "2.6.0"
}
--config
options
Warning
All key and value entries must conform to the JSON standard. Below is human readable examples with links, effectively breaking the syntax. Adapt the descriptions below to suit your needs and the JSON format.
Note
Scroll to the right in the table to see required options.
Key |
Value(s) |
Description |
Required |
---|---|---|---|
additional-repositories |
Enables one or more of the testing and multilib repositories before proceeding with installation |
No |
|
archinstall-language |
Sets the TUI language used (make sure to use the ``lang`` value not the ``abbr``) |
No |
|
audio_config |
Audioserver to be installed |
No |
|
bootloader |
Bootloader to be installed (grub being mandatory on BIOS machines) |
Yes |
|
debug |
|
Enables debug output |
No |
disk_config |
Read more under Disk Configuration |
Contains the desired disk setup to be used during installation |
No |
disk_encryption |
Read more about under Disk Encryption |
Parameters for disk encryption applied on top of |
No |
hostname |
|
A string defining your machines hostname on the network (defaults to ``archinstall``) |
No |
kernels |
[ linux, linux-hardened, linux-lts, linux-rt, linux-rt-lts, linux-zen ] |
Defines which kernels should be installed and setup in the boot loader options |
Yes |
custom-commands |
Read more under Custom Commands |
Custom commands that will be run post-install chrooted inside the installed system |
No |
locale_config |
{kb_layout: lang, sys_enc: Character encoding, sys_lang: locale} |
Defines the keyboard key map, system encoding and system locale |
No |
mirror_config |
{custom_mirrors: [ https://… ], mirror_regions: { “Worldwide”: [ “https://geo.mirror.pkgbuild.com/$repo/os/$arch” ] } } |
Sets various mirrors (defaults to ISO’s ``/etc/pacman.d/mirrors`` if not defined) |
No |
network_config |
`see options under Network Configuration` |
Sets which type of (if any) network configuration should be used |
No |
no_pkg_lookups |
|
Disabled package checking against https://archlinux.org/packages/ |
No |
ntp |
|
enables or disables NTP during installation |
No |
offline |
|
enables or disables certain online checks such as mirror reachability etc |
No |
packages |
[ <package1>, <package2>, … ] |
A list of packages to install during installation |
No |
parallel downloads |
0-∞ |
sets a given number of parallel downloads to be used by pacman |
No |
profile_config |
`read more under the profiles section` |
Installs a given profile if defined |
No |
script |
guided (default), minimal, only_hdd, swiss, unattended |
When used to autorun an installation, this sets which script to autorun with |
No |
silent |
|
disables or enables user questions using the TUI |
No |
swap |
|
enables or disables swap |
No |
timezone |
sets a timezone for the installed system |
No |
Note
If no entries are found in disk_config
, archinstall guided installation will use whatever is mounted currently under /mnt/archinstall
without performing any disk operations.
Options for --creds
Creds is a separate configuration file to separate normal options from more sensitive data like passwords. Below is an example of how to set the root password and below that are description of other values that can be set.
{
"!root-password" : "SecretSanta2022"
}
Key |
Values |
Description |
Required |
---|---|---|---|
!encryption-password |
|
Password to encrypt disk, not encrypted if password not provided |
No |
!root-password |
|
The root account password |
No |
!users |
{
"username": "<USERNAME>",
"!password": "<PASSWORD>",
"sudo": false
}
|
List of regular user credentials, see configuration for reference |
Maybe |
Note
!users
is optional only if !root-password
was set. !users
will be enforced otherwise and the minimum amount of users with sudo privileges required will be set to 1.
Note
The key’s start with !
because internal log functions will mask any keys starting with explamation from logs and unrestricted configurations.