Arch Linux installer - guided, templates etc.
Go to file
Anton Hvornum 0dfc0d6195 Fixed so that partition listing doesn't overwrite on each request, ruining some checks down the line if the filesystem has been formatted or not 2020-07-06 16:23:23 +02:00
deployments Update gitea.json 2019-12-03 23:56:33 +01:00
helpers Fixed so that partition listing doesn't overwrite on each request, ruining some checks down the line if the filesystem has been formatted or not 2020-07-06 16:23:23 +02:00
.gitignore Working partition and encryption+mount phase. Now to the installer and re-work that. 2020-06-30 21:22:28 +00:00
LICENSE.md Update LICENSE.md 2019-10-03 13:35:25 +02:00
README.md Update README.md 2020-07-01 08:54:14 +02:00
archinstall.py Added a PArtition() class that supports mounting and formatting. Also reworked the installation flow a bit to be a bit more clear while sacrificing some automation. Maybe I'll revert some changes and 'automatically' do certain things, but for now this shouldn't impact anyone to much 2020-07-06 15:46:19 +02:00
description.jpg Added a description 2018-04-07 17:27:39 +02:00
exceptions.py Starting to rework the entire codebase to be context friendly. Annotations is next after one successful install. 2020-06-29 08:55:25 +00:00
installer.py Added a PArtition() class that supports mounting and formatting. Also reworked the installation flow a bit to be a bit more clear while sacrificing some automation. Maybe I'll revert some changes and 'automatically' do certain things, but for now this shouldn't impact anyone to much 2020-07-06 15:46:19 +02:00
logo.png Added a new logo 2020-06-28 16:34:05 +00:00
logo.psd Added a new logo 2020-06-28 16:34:05 +00:00
test_archinstall.py Fixed some stuff 2019-11-17 23:06:09 +00: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)

# 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://raw.githubusercontent.com/Torxed/archinstall/master/installer.py
# pacman -S --noconfirm python; python install.py

This will start a guided install with the same safety checks as previous.

Run using PIP and Python module:

# pip install archinstall
# python -m archinstall

Again, a guided install starts with safety checks.
This assumes tho that Python and Pip is present (not always the case on the default Arch Linux ISO), see above for pre-built ISO's containing Python+pip

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


hdd = archinstall.select_disk(archinstall.all_disks())
disk_password = getpass.getpass(prompt='Disk password (won\'t echo): ')

with archinstall.Filesystem(hdd, archinstall.GPT) as fs:
    fs.use_entire_disk('luks2')
    with archinstall.Luks2(fs) as crypt:
        if hdd.partition[1]['size'] == '512M':
            raise OSError('Trying to encrypt the boot partition for petes sake..')

        key_file = crypt.encrypt(hdd.partition[1], password=disk_password, key_size=512, hash_type='sha512', iter_time=10000, key_file='./pwfile')
        unlocked_crypt_vol = crypt.mount(hdd.partition[1], 'luksloop', key_file)

        with archinstall.Installer(unlocked_crypt_vol, hostname='testmachine') as installation:
            if installation.minimal_installation():
                installation.add_bootloader()

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

                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 desktop (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