1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# archinstall
Just a bare bone automated [Arch](https://wiki.archlinux.org/index.php/Arch_Linux) install with optional network deployment instructions based on MAC-address.
Pre-built ISO's can be found here: https://hvornum.se/archiso/
#archinstall@FreeNode :)
# Install a basic Arch Linux
In a live-cd environment, do:
# wget https://raw.githubusercontent.com/Torxed/archinstall/master/archinstall.py
# pacman -S --noconfirm python; python archinstall.py --default
This will install a basic Arch Linux, without interaction, on the first drive it finds *(after user confirms it)*.<br>
Use `--drive=/dev/sdb` etc to change the desired destination, or skip `--default` if you want to get options for your installation.
> NOTE: Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on how to create your own ISO or use a pre-built [guided ISO](https://hvornum.se/archiso/) to skip the python installation step, or to create auto-installing ISO templates. Below is examples and a cheat sheet on how to create such a ISO *(with different flavors)*.
# Features
* Unattended install of Arch Linux
* User guided install of Arch Linux (Like most other distros have)
* YubiKey support for disk and root password (next release)
* Profile / Template based installs
* Supports offline-installation of Arch Linux
* Full disk encryption, locale/region settings and customizable application selection
* Never creates post-install/service scripts (usually used to finalize databases etc)
# Autorun on Arch Live CD (Unattended install)
This guides you on how to create a ISO that has Python and can run the arch installed in **unattended mode.**<br>
We'll need to reconfigure the **releng** profile after it's been copied, to include Python etc.<br>
To do so, we need to add some packages to `packages.x86_64` and add some commands to `customize_airootfs.sh`.
# cd ~/archlive
# echo -e "git\npython\npython-psutil" >> packages.x86_64
# cat <<EOF >> ./airootfs/root/customize_airootfs.sh
cd /root
git clone https://github.com/Torxed/archinstall.git
chmod +x ~/archinstall/archinstall.py
EOF
# mkdir ./airootfs/etc/skel
# echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && sh -c "~/archinstall/archinstall.py --default"' >> ./airootfs/etc/skel/.zprofile
> Note: `~/archlive` might be different on your system, see [ArchISO#Setup](https://wiki.archlinux.org/index.php/archiso#Setup) for more info.
After all those commands are done, you can go ahead and run:
# rm -v work*; ./build.sh -v
Whenever this live-cd boots, from here on now - it'll run `archinstall.py` and attempt to unattendely install a default Arch Linux base OS with `base base-devel` as packages.
Or - if successfull - a MAC-address matches a profile at [/deployments](https://github.com/Torxed/archinstall/tree/master/deployments) for the machine to be installed.
> **CAUTION**: If no parameters are given, **it will devour the first disk in your system** (Usually `/dev/sda`, `/dev/nvme0n1` etc).
## Unattended profile install
Everything in the steps above are the same, except for one line that needs to change to look like this:
# echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && sh -c "~/archinstall/archinstall.py --profile=workstation"' >> ./airootfs/etc/skel/.zprofile
This will unattendely install the [workstation](https://github.com/Torxed/archinstall/blob/master/deployments/workstation.json) profile.
## User guided installation (DEFAULT)
Change the autostart line to match:
# echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && sh -c "~/archinstall/archinstall.py"' >> ./airootfs/etc/skel/.zprofile
This will cause the script to halt and ask for a profile to install before proceeding.
When asked, enter `workstation` for instance - to install based on the [workstation](https://github.com/Torxed/archinstall/blob/master/deployments/workstation.json) template.
> **CAUTION**: If a MAC-address matches under `/deployments`, that profile will forcefully be installed and have presidence over any other profile information.
## With custom webserver for deployment profiles
Again, one line differs from the other install methods, change the following line:
# echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && sh -c "~/archinstall/archinstall.py --profiles-path=http://example.com/profiles"' >> ./airootfs/etc/skel/.zprofile
This will cause the script to look at `http://example.com/profiles/<profile>.json` for instructions.
# Rerunning a installation
# umount -R /mnt; cryptsetup close /dev/mapper/luksdev
# python3 ./archinstall/archinstall.py
> Note: This assumes `--post=stay` is set to avoid instant reboot at the end or if during any time a user pressed `Ctrl-C` and aborted the installation.
# Some parameters you can give it
--drive=</dev/sdX>
Which drive to install arch on, if absent, the first disk under /dev/ is used
--size=100% (Default)
Sets the size of the root filesystem (btrfs)
--start=513MiB (Default)
Sets the starting location of the root partition
(TODO: /boot will take up space from 1MiB - <start>, make sure boot is no larger than 513MiB)
--password=0000 (Default)
Which disk password to use,
--password="<STDIN>" for prompt of password
--password="<YUBIKEY>" for setting a unique password on the YubiKey and use that as a password
(NOTE: This will wipe/replace slot 1 on the YubiKey)
--pwfile=/tmp/diskpw (Default)
Which file to store the disk encryption password while sending it to cryptsetup
--hostname=Arcinstall (Default)
Sets the hostname of the box
--country=SE (Default)
Default mirror allocation for fetching packages.
--packages='' (Default)
Which additional packages to install, defaults to none.
(Space separated as it's passed unchanged to `pacstrap`
--user=<name>
Adds an additional username to the system (default group Wheel)
--post=reboot (Default)
After a successful install, reboots into the system. Use --post=stay to not reboot.
--default
This parameter causes the installation script to install arch unattended on the first disk
--profile=<name>
For instance, --profile=workstation will install the workstation profile.
--profiles-path=https://example.com/profiles
Changes the default path the script looks for deployment profiles.
The default path is 'https://raw.githubusercontent.com/Torxed/archinstall/master/deployments'
Deployment profile structs support all the above parameters and more, for instance, custom arguments with string formatting.
See [deployments/workstation.json](https://github.com/Torxed/archinstall/blob/net-deploy/deployments/workstation.json) for examples.
## End note
![description](description.jpg)
|