Arch Linux installer - guided, templates etc.
Go to file
Anton Hvornum 181d4097c8 A more honest README for now. 2020-07-07 00:42:24 +02:00
archinstall Prepped readme for pypi. Also updated setup.py to reflect a better project name when uploading to pypi. 2020-07-06 22:52:54 +02:00
docs Converted the lib to a pip supported structure to make packaging easier. Also tweaked some minor issues and added the AUR function 2020-07-06 18:44:42 +02:00
examples Moved the example installation to examples 2020-07-06 22:26:29 +02:00
profiles Renaming deployments to profiles 2020-07-06 22:23:29 +02:00
.gitignore Adding some more gitignores 2020-07-06 22:29:46 +02:00
LICENSE Create LICENSE 2020-07-06 18:09:35 +02:00
README.md A more honest README for now. 2020-07-07 00:42:24 +02:00
setup.py Hotfix for pypi 2020-07-06 22:56:46 +02:00

README.md

drawing

Just another guided/automated Arch Linux installer with a twist. The installer also doubles as a python library to access each individual installation step for customized installs.

Pre-built ISO's can be found here which autostarts archinstall (in a safe guided mode): https://hvornum.se/archiso/

Usage

Run on Live-CD (Binary)

Currently this method is not supported until v2.1.0, this due to the rework of the contextualized approach.

# wget https://gzip.app/archinstall
# chmod +x archinstall; ./archinstall

This downloads and runs a "compiled" (using nuitka) version of the project.
It defaults to starting a guided install with some safety checks in place.

Run on Live-CD with Python:

# wget https://github.com/Torxed/archinstall/archive/v2.0.1.tar.gz
# tar xvzf v2.0.1.tar.gz
# cd archinstall-2.0.1
# pacman -S --noconfirm python; python examples/main_example.py

This will ask for a disk and a password before wiping the entire disk.

Run using PIP and Python module:

# pip install archinstall
# python -m archinstall examples/main_example.py

This assumes tho that python >= 3.8 and pip is present (not always the case on the default Arch Linux ISO), see above for pre-built ISO's containing Python+pip or follow the docs to see how to build an ISO yourself.

Currently not supported, but is planned for v2.0.5 or v2.1.0.

Scripting an installation

Assuming you're building your own ISO and want to create an automated install process.
This is probably what you'll need, a minimal example of how to install using archinstall as a Python library.

import archinstall, getpass

# Unmount and close previous runs
archinstall.sys_command(f'umount -R /mnt', surpress_errors=True)
archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', surpress_errors=True)

# Select a harddrive and a disk password
harddrive = archinstall.select_disk(archinstall.all_disks())
disk_password = getpass.getpass(prompt='Disk password (won\'t echo): ')

with archinstall.Filesystem(harddrive, archinstall.GPT) as fs:
    # Use the entire disk instead of setting up partitions on your own
    fs.use_entire_disk('luks2')

    if harddrive.partition[1].size == '512M':
        raise OSError('Trying to encrypt the boot partition for petes sake..')
    harddrive.partition[0].format('fat32')

    with archinstall.luks2(harddrive.partition[1], 'luksloop', disk_password) as unlocked_device:
        unlocked_device.format('btrfs')
        
        with archinstall.Installer(unlocked_device, hostname='testmachine') as installation:
            if installation.minimal_installation():
                installation.add_bootloader(harddrive.partition[0])

                installation.add_additional_packages(['nano', 'wget', 'git'])
                installation.install_profile('workstation')

                installation.user_create('anton', 'test')
                installation.user_set_pw('root', 'toor')

                installation.add_AUR_support()

This installer will perform the following:

  • Prompt the user to select a disk and disk-password
  • Proceed to wipe said disk
  • Sets up a default 100% used disk with encryption
  • Installs a basic instance of Arch Linux (base base-devel linux linux-firmware btrfs-progs efibootmgr)
  • Installs and configures a bootloader
  • Install additional packages (nano, wget, git)
  • Installs a network-profile called workstation (more on network profiles in the docs)
  • Adds AUR support by compiling and installing yay

Creating your own ISO: Follow ArchISO's guide on how to create your own ISO or use a pre-built guided ISO to skip the python installation step, or to create auto-installing ISO templates. Further down are examples and cheat sheets on how to create different live ISO's.

End note

description