2025-11-08 21:52:27 +02:00
2024-01-12 17:30:49 +00:00
2025-11-08 21:52:27 +02:00

'Amelia', an elegant Archlinux installer.

(Shellchecked)


The main concept behind this installer is to take full advantage of the extended automation that contemporary linux ecosystem technologies such as systemd has to offer.

'Amelia' is mainly targeted towards the experienced user that needs a quick installation means.

However, it's easy and intuitive so that probably everybody can use it.

  • Automation:

You can instantly engage menu 'Auto-Navigation' by selecting '[4] Start Installation' in the Main Menu.

The installer will lead you through all the installation steps, screen by screen, until you are satisfied and ready to proceed with the actual installation.

If 'Auto-Navigation' is selected, then before dealing with any of your drives, the installer will ask you if Dual-Booting / Multi-booting with other OS's is desired.

  • If YES, then it will NOT automatically intervene with any of your drive(s). The user will have to utilize the TUI 'Manual Partitioning' option in 'Disk Management' menu, to easily create all needed partitions beforehand.

  • If NO, the installer offers fully automated partitioning solutions.

Virtual Machines supported: QEMU/Kvm / Vmware / Virtualbox / HyperV

Also, there is no support (nor will ever be) for non-GPT platforms, as this installer makes absolute use of uEFI's 'Discoverable Partitions Specification'.

Consequently, it will automate the detection of the underlying/involved partitions, perform sanity checks based on your preferences, and auto-mount/auto-activate these partitions when necessary (e.g. swap), without the use of the fstab file.

By using systemd's latest and greatest features, configuration needed for eg. swapping, hibernation etc. is a thing of the past.

The system manager will automatically, and more importantly, optimally configure parts of the system, greatly simplifying the installation process and making the final system very robust and of course much more reliable.

In particular, when the 'ext4' filesystem is being selected, the 'genfstab' command is not even executed in the script, and your 'fstab' file will be empty (except only if 'Swapfile' use is desired), as systemd's automation takes care of it.

In the same manner, 'systemd' (instead of 'base' & 'udev') will be used in your initramfs, as it provides the tools for the said automation.

The installation process completes in "one-go", meaning after it's over and the system has rebooted, you're done.

If there are errors during the installation process, the installer will exit, informing you accordingly and issuing a logfile in the current working directory, stating what went wrong, for troubleshooting purposes.

This logfile will be issued anyway when the installation finishes, stating what was the last action to have taken place by the installer.

  • Interaction:

There is full interaction with the user.

Visual interaction:

The installer follows a menu-driven, step-by-step principal, presenting you with a sane sequence of installation steps, aided by colored prompts, making the installation process quick, pleasant and intuitive.

If unsure or wish to change your setup, you can do so, as the installer can repeat all necessary stages should you select to 'revise' your choices.

Alternative steps will be smartly offered to you, under certain occasions, to help you complete your purpose.

It takes a few keystrokes only to create a fully fledged installation, which makes it ideal for repetitive use.

Input interaction:

You will be asked to make your own choices, and there will always be a confirmation upon success or failure of the outcome.

You will definitely know what has succeded and if anything went wrong.

The installer has been purposely made in such a way that it will exit if unresolvable errors occur, so it ^should be^ impossible to end up with an errored installation or with parts unfinished.

In a few cases, it will smartly try to remedy the situation by taking certain steps (e.g. unmounting a partition, in case it was already mounted from before) and bring you a few steps back, to re-run installation stages that might help you continue with success.

All stages are informative.

Installer overview:

  • First Check - Warning: [Auto]

A check/detection takes place, notifying you about the mode the installer runs on. There's 2 modes available: 'DEMO' and 'ROOT'.

If you execute the script without elevated privileges (DEMO), you'll be able to browse through the menus but certain actions will not be able to complete, as further access is denied.

Normally you should be runing as ROOT, off the Arch-installation media.

If there is 'terminus-font' detected (already included in the Arch installation media), you will be asked to use this font or its HiDPI version, or you will be prompted to change into tty (and use linux console) if you're just simply test-running the installer in your own system with X or Wayland.

If not, setting different fonts is skipped.

  • Uefi Mode Verification: [Auto]

Checks if the platform runs in uefi mode, and exits if not.

  • Internet Connection Check: [Auto]

Pings Archlinux for connection check and exits if none is found.

  • System Clock Update: [Auto]

Self-explanatory.

  • Machine Detection: [Auto]

The installer informs the user about the pc-system vendor, model, platform {desktop/laptop/server/vm} and cpu microcode package to be installed later on.

Main Menu:

  • [1] Personalization

  • [2] System Configuration

  • [3] Disk Management

  • [4] Start Installation

  • Select 'Start Installation' and let the installer help you through the installation.

You will experience an assisted navigation through all the menus & options available and also engage the 'Smart Partitioning' feature.

Personalization Submenu:

  • [1] Locale & Keyboard Layout Setup
  • [2] User, Root User, Hostname & Shell Setup
  • [3] Shell Selection
  • [ ] Return to Main Menu

System Configuration Submenu:

  • [1] Kernel, Secureboot Signing, Bootloader & ESP Mountpoint
  • [2] Filesystem & Swap Setup
  • [3] Graphics Setup
  • [4] Desktop Setup
  • [5] EFI Boot Entries Deletion
  • [6] Optimizations
  • [ ] Return to Main Menu

Disk Management Submenu:

  • [1] GPT Manager
  • [2] Partition Manager
  • [ ] Return to Main Menu

Personalization Submenu:

  • Locale Selection: [Interactive - Skippable]

Set your locale, choose from the locale list or use default.

Skip for Default: en_US.UTF-8

  • Keyboard Layout Selection: [Interactive - Skippable]

Set your keyboard layout, choose from the keyboard layout list or use default.

Skip for Default: us

  • If you're running the installer in a graphical session (PTS) -not on a TTY (linux console)- this stage is skipped and the layout will default to 'us'.
  • User Setup: [Interactive]

Set username, password and verify.

  • Root User Setup: [Interactive]

Set password and verify.

  • Hostname Setup: [Interactive]

Self-explanatory.

  • Shell Selection: [Interactive]

  • [1] Bash

  • [2] Zsh

  • [3] Fish

Select preferred Shell. Additional packages (eg. auto-completions, auto-suggestions etc. will also be installed)

System Configuration Submenu:

  • Kernel Selection: [Interactive]

  • [1] Linux

  • [2] Linux LTS

  • [3] Linux Hardened

  • [4] Linux Zen

Select between the Linux, Linux LTS, Linux Hardened & Linux Zen Kernels.

  • Secureboot Signing: [Interactive]

Select to sign (or not) all needed binaries for enabling Secure Boot on your system

If Secure Boot is selected, the installer will offer to create a 'Rescue' bootloader entry, especially necessary for UKIs, as editing existing menu entries under Secureboot is not allowed.

Future Secureboot signing (for the installed Kernel, UKI & any other binary involved in the installation process) will also take place automatically, whenever it is needed.

  • Bootloader Selection: [Interactive]

  • [1] Systemd-boot

  • [2] Grub

Select between 'Systemd-boot' & 'Grub'.

  • If 'Systemd-boot' is selected:

(U)nified (K)ernel (I)mages are used exclusively.

If Dual/Multi booting is desired & the ESP is < 200Mb, then an Extended Bootloader Partition (XBOOTLDR) is expected to be present on disk and instead of UKIs the installer will make use of 'Systemd-boot Entries', to save up as much space as possible in the ESP.

  • If 'Grub' is selected:

The user can now select between the 'Standard Boot Path' or the 'Fallback Boot Path' (used for Removable Devices).

  • ESP Mountpoint Selection: [Interactive]

  • [1] Efi

  • [2] Boot

Select between '/efi' & '/boot' as your mountpoint for your ESP.

If Dual-Booting with eg. Windows, meaning having an ESP as little as 100Mb, you could use that ESP with Linux too.

In order to achieve this, create an 'XBOOTLDR' partition using the 'Manual Partitioning' stage, use 'Systemd-boot' as your bootloader and select mounting the ESP to '/efi'.

The installer will take care of the rest.

  • Filesystem Selection: [Interactive]

  • [1] Ext4

  • [2] Btrfs

Select Filesystem to be used (Ext4 / Btrfs).

  • If 'Ext4' is selected:

You will be asked if you'd like a seperate '/home' partition to be created.

Also, a filesystem performance boost will automatically take place by setting the 'fast_commit' option by default during formatting.

  • If 'Btrfs' is selected:

You will be asked to label your 'snapshots' directory.

If 'Btrfs' filesystem with 'Grub' bootloader is selected, then the 'grub-btrfs' package will be installed, and the 'grub-btrfsd' service will be automatically enabled for user convenience.

  • Swap Selection: [Interactive - Skippable]

  • [1] Swap partition

  • [2] Swapfile

  • [3] Zram Swap

Select between Swap partition, Swapfile or Zram Swap.

If 'Swap Partition' or 'Swapfile' is selected, you'll be asked to set desired 'Swap' size.

Leave empty to Skip setting up Swap.

  • Graphics Setup: [Interactive - Skippable]

All detected Graphics hardware will be displayed in colored prompts.

Auto-detection will define the drivers to be installed, hardware acceleration to be enabled and will complete all necessary system configuration (mkinitcpio.conf, kernel parameters etc).

  • If Virtual Machine graphics is detected, the stage is skipped.

  • Xorg DXX drivers (xf86-xxxx-xxxx) for Intel - AMD - Nvidia will NOT be automatically installed.

  • AMD graphics:

'amdgpu' driver support for 'Southern Islands' and 'Sea Islands' graphics is offered through auto-configuring.

  • Nvidia graphics:

Notice that the latest available proprietary graphics drivers will be installed, so should you select 'yes', ensure your graphics subsystem is currently supported by Archlinux. Selecting 'no' will result in using the open-source Nouveau drivers, as expected.

Also, support for disabling Nvidia's 'GSP' is offered, if selecting the 'nvidia' proprietary driver.

When needed, the 'Nvidia Hook' will be automatically created.

Hybrid graphics solutions (optimus, bumblebee, prime etc) are not currently offered during installation.

  • Desktop Setup [Interactive]

In this step, you will be presented with the following list of submenus to choose from:

  • [1] Desktop Selection

  • [2] Arch 'base-devel' Meta-package

  • [3] Web browser Selection

  • [4] Printer & Scanner Support

  • [ ] Return to System Configuration

  • Desktop Selection [Interactive]

  • [1] Plasma

  • [2] Plasma Light (Amelia's Version)

  • [3] Gnome

  • [4] Gnome Light (Amelia's Version)

  • [5] Xfce

  • [6] Cinnamon

  • [7] Deepin

  • [8] Budgie

  • [9] Lxqt

  • [10] Mate

  • [11] Basic Arch Linux (No GUI)

  • [12] Custom Arch Linux

  • [13] Cosmic (Beta)


  • All available desktops, except 'Custom Arch Linux', come with network support (networkmanager).

  • 'Plasma Light' setup will install a lighter KDE Plasma desktop, omitting several not essential packages.

  • 'Gnome Light' setup will install a lighter Gnome desktop, omitting several not essential packages.

  • 'Basic Arch Linux' is literally a basic Arch linux system, consisting of just the following packages: "base, linux-firmware (only if on bare-metal), sudo, *-ucode, nano, pkgstats, vim, networkmanager, e2fsprogs / btrfs-progs (depending on the filesystem selected) and your other current installation preferences/choices.

  • 'Custom Arch Linux' consists of the following packages: "base, linux-firmware (only if on bare-metal), sudo, *-ucode, e2fsprogs / btrfs-progs (depending on the filesystem selected) and your other current installation preferences/choices.

In this step you can create your own system on-the-fly, (using the above Basic Arch Linux system as base), through the following Menus:

  • Custom Arch Linux [Interactive]
  • Add Your Packages [Mandatory]

  • Add Your Services [Skippable]


  • Arch 'base-devel' Meta-package [Interactive - Skippable]

The installer offers to install the 'base-devel' package (as it's not part of the 'base' meta-package) which is typically needed for the majority of use cases.

  • Web browser Selection [Interactive - Skippable]

  • [1] Firefox

  • [2] Chromium

  • [3] Vivaldi

  • [4] Brave Browser

  • [5] Microsoft Edge

  • [6] Zen Browser

  • [6] Opera

  • [6] Google Chrome

Select one of the available browsers or leave empty to skip.

The installer now supports installation of AUR packages OOTB.

[Only *-bin browsers (no compiling needed) are included]

  1. No AUR-helper will be installed.
  2. Deleting this package only takes a typical 'pacman -Rns packagename'.
  • Printer & Scanner Support [Interactive - Skippable]

Select to install (or not) printer & scanner support software.

A baseline package set will be installed and additional (GUI) packages will be installed accordingly, if 'Minimal Plasma' or 'Minimal Gnome' has been selected.


  • EFI Boot Entries Deletion: [Interactive - Skippable]

Choose if you wish to delete any EFI boot entries or skip.

If a 'VM' is detected, this stage is skipped.

  • Optimizations [Interactive - Skippable]

  • [1] Custom Kernel Parameters [Interactive - Skippable]

  • [2] System Watchdogs [Interactive - Skippable]

  • [3] General System Optimizations [Interactive - Skippable]

  • [4] Wireless Regulatory Domain [Interactive - Skippable]

  • [5] Systemd-oomd [Interactive - Skippable]

  • [6] Irqbalance [Interactive - Skippable]

  • [7] Thermald [Interactive - Skippable]

  • [8] Rng-tools [Interactive - Skippable]

  • [9] Rtkit [Interactive - Skippable]

  • [10] Tlp [Interactive - Skippable]

  • [ ] Return to System Configuration

  • Optimizations summary:

    1. The installer offers the convenient option to permanently set your own kernel parameters for boot (eg: 'quiet'), on-the-fly.
    1. The installer asks to disable Watchdogs in the installed system (if not on a critical platform, like a server).

A watchdog is a hardware or software component that keeps track of a system's performance and intervenes if it notices any strange behaviour or malfunctions.

    1. System optimizations will be set.

Where applicable, system files configuration will take place EXCLUSIVELY in the corresponding drop-in directories and never at the original '.conf' files, so the installed system preserves its functionality across updates and maintenance is minimized.

Type 'v' to get a preview of the affected configuration files.

All optimizations used, derived exclusively from the ArchWiki.

    1. Enter your 2-letter Country Code (e.g. 'US') to set the correct wifi regulations for your country.

If a 'VM' is detected, this stage is skipped.

    1. The installer asks to enable the 'systemd-oomd' service, enhancing 'OOM' management which will now be optimally done by the system manager.

'Systemd-oomd' is a system service that uses cgroups-v2 and pressure stall information (PSI) to monitor system and take corrective action before an 'OOM' occurs in the kernel space.

    1. The installer asks to install & enable 'irqbalance', which is a software that distributes hardware interrupts across processors on a multiprocessor system, in order to increase performance.
    1. The installer asks to install & enable 'thermald', which is a daemon used to prevent the overheating of platforms.

This daemon monitors temperature and applies compensation using available cooling methods.

    1. The installer asks to install & enable 'rng-tools', which is a daemon capable of using both environmental noise and hardware random number generators for extracting entropy.
    1. The installer asks to install & enable 'rtkit' & 'realtime-privileges'.

RealtimeKit is a D-Bus system service that changes the scheduling policy of user processes/threads to SCHED_RR, [Realtime Scheduling Mode on request]

When installing 'realtime-privileges', the current user will also be added to the 'realtime' group.

    1. The installer asks to install & enable 'tlp'

Tlp is a laptop battery power saving utility for Linux, working out-of-the-box & easy to further configure

Disk Management Submenu:

  • GPT Manager: [Interactive - Skippable]

  • [1] Create new GPT on selected disk [Destroy any existing GPT/MBR structures]

  • [2] Use the 'gdisk' program interactively [Expert Mode]

  • [3] Return to Previous Menu

Use 'gdisk' to perform various disk operations to any detected drive in your system (e.g. zapping the GPT and create a new one, etc.)

  • Partition Manager: [Interactive]

The'Partition Manager' stage consists of 2 Modes:

  • Automatic Partitioning Mode [consisting of 2 sub-modes]:

  • [1] Smart Mode [Interactive - Skippable]

This mode engages if the user has selected the 'Auto-Navigation' Installation.

It detects user's preferences and selects a partitioning profile/preset based on these preferences (no additional user interaction needed).

If 'Swap' has been selected, the user is asked to specify desired size.

  • [2] Partitioning Presets [Interactive - Skippable]

This mode offers ready-made filesystem compatible Partition Layout Presets with sane defaults to select from.

  • Manual Partitioning Mode [Interactive - Skippable] :

In this mode the user will manage the involved disk(s) manually, using 'cgdisk' with its easy and intuitive ncurses TUI, making the process of managing the partition table, the partitions, setting GUIDs etc. easy and safe(r).

In addition, it shows extended info about the supported partition types and mountpoints that the installer expects to find.

Existence of an "EFI" System Partition and a "Root x86-64" Partition is mandatory and expected, or else the installation cannot continue.

The partitions layout in this stage should reflect your previous choices, e.g. if you chose to use a 'Swap' partition, and it does not exist, now is the time to create it.

If you need a seperate 'Home' partition, create it now or an existing one can also be used.

For the systemd 'auto-gpt-generator' automation to work, all involved partitions MUST reside in the same physical disk/device.

  • Installation Disk Selection & Sanity Check: [Auto]

Select a disk to install Archlinux on.

This step incorporates and performs a Sanity Check on the chosen disk.

This means the installer will verify that the choices you've made so far, are correctly reflected on the partitions layout, before it lets you continue with the installation.

The aim here is to make the installation process error-proof.

It will ensure that an 'EFI' System Partition indeed exists, that a 'Root x86-64' partition exists, that a 'Swap' partition exists IF you chose to use a 'Swap' partition and will also detect an existing seperate 'Home' partition.

If 'systemd-boot' is selected & '/efi' mountpoint for an ESP smaller than 200Mb is also selected, the installer expects an 'XBOOTLDR' extended boot partition to be present/user created.

On top of all that, the installer will scan the partitions on the installation disk and if more than one of each type {root/EFI/home/swap/xbootldr} are detected, then it will Auto-Assign the 1st partition of each (involved) type, to be used by systemd's automation in the installation (as the 'Discoverable Partitions Specifications' dictate). It comes with its own menu/prompts, for proper user interaction.

For convenience, A (TUI) partition/filesystem presentation is presented when multiple partitions of the same type {root/EFI/home/swap/xbootldr} have been detected and the user needs to CONFIRM the Automated Selection made by the installer.

If the Sanity Check fails, the installer will smartly load any necessary stages, so you can correct any errors/omissions.

  • Encryption Setup: [Interactive - Skippable]

Choose if you will enable LUKS encryption on your 'Swap/Root/Home' partitions

Also, you will be asked to Label your partitions.

Again, the scope here is not to create an inpenetrable system (FDE) but a typical decently protected system.

Using 'Secure Boot' with an unencrypted 'EFI System Partition' and a LUKS encrypted 'Root/Home/Swap' partition(s) should suffice for most use cases.

  • Swap Partition Activation: [Auto]

If you chose to create a 'Swap' partition, now it will be activated.

If No Encryption has been selected :

  • Mode Selection: [Interactive]

The installer asks the user to select the preferred disk preparation mode:

  • 'Auto' will perform Formatting, Labeling and Mounting of all of the involved partitions automatically, but it will ask for your confirmation before formatting a separate ext4 'Home' partition (if found), in case you would like to keep it intact.

  • 'Manual' mode will perform the above by asking the user to select which partitions to format, choose desired name to label the partitions, and mount them accordingly.

The 'Auto' mode will switch to 'Manual' mode if errors are encountered (so the user gets control of the procedure), and when the said mini-step is completed (e.g formatting 'EFI') it will continue in 'Auto' mode for the rest of the partitions.

Upon completion, both 'Auto' and 'Manual' mode present the user with a (TUI) summary of the partitions and mounts layout, preparing for the next step.

  • Confirm Installation Status [Interactive]

Decide if you will procceed with the installation.

If you are satisfied with the result (presented to you in the previous step and still showing on screen), answer 'yes'.

If your answer is 'no', then the installer will unmount all mounted partitions and reload 'System Configuration' and all installation stages thereafter, so you can revise your choices until you are satisfied with the outcome.

If LUKS encryption has been selected:

  • Secure Disk Erasure: [Interactive - Skippable]

Since LUKS encryption has been selected in a previous step, the installer offers the option to securely erase the involved drive before continuing with the installation, if so desired. After Drive Secure Erasion, the system needs to be rebooted and will do so automatically, after the given countdown. You will have to re-run the installer.

  • LUKS Encryption: [Interactive - Skippable]

Your selected 'Root x86-64' partition will be encrypted using LUKS.

If a separate 'Home' partition is detected, and the filesystem chosen is 'ext4', then you will be offered the option to encrypt 'Home' too.

Should you choose 'yes' to that option, then auto-configuration will take place, so an extra LUKS password won't be needed to unlock said volume.

Should you choose 'no', the installer will still ask for your confirmation before formatting the 'Home' partition to 'ext4', in case you would like to keep it intact.

This stage cannot offer automatic error-resolving by automatically taking actions such as re-running previous steps of the installation precedure, like [Auto] or [Manual] mode does, as after LUKS encryption has finished, partprobing and informing the kernel about further/new changes requires a system restart.

As a result, if any errors occur at this stage, will eventually terminate the installation, and you will be required to reboot and re-run the installer.

For the same reason, the installer cannot offer the choice of reloading previous phases, as it does in the 'Confirm Installation Status' stage.

Remaining Installation Process:

  • Optimize Pacman: [Interactive]

In this step you can select your preferred country, from the current list of countries that are hosting Archlinux mirrors.

If the field is left empty, the default Reflector's mirrorlist will be used.

If a country from the list is chosen, Reflector will rate its mirrors, using [ l 10 -p https -f 10 ]. If no mirrors are found, it means that the country chosen doesn't fulfill Reflector's set criteria. Try with another country.

Next, you will be asked to enable Arch's 'Multilib' repository in the installed system, if so desired.

  • Pacstrap System: [Auto]

The system will be pacstrapped and your selected setup will be installed.

  • Chroot & Configure System: [Auto]

During this stage, the majority of configuration takes place.

Detection of rotational or solid state drives has already taken place, so 'fstrim.timer' will be activated accordingly for the installation drive.

Also, if a non-rotational drive is being used during installation and LUKS encryption has been selected, then specific options will be applied to open the LUKS container.

Graphics setup, encryption setup, swap/swapfile/Zram Swap activation, swap offset calculation, specific filesystem-based options, pciid database update, auto configuration of your timezone based on your computer's ip address, sudoers file configuration, systemd services activation etc., all happen here.

As mentioned earlier, all configuration takes place ONLY in the respective drop-in directories and never at the original '.conf' files, where applicable.

That's pretty much it.

All instructions used, stem from the Arch wiki.

Any feedback will be greatly appreciated.

S
Description
No description provided
Readme GPL-3.0 1.3 MiB
Languages
Shell 100%