An initializer script to create a new workspace, so that I don't have to manually install everything I want/need.
The device this installation will use (for example /dev/sdb
).
All the information on this device will be lost.
This is a required option, there is no default value.
The name of the installation. This will determine some settings such as the bootloader ID.
Which packages to install using pacman / pacaur in stage 3.
Which locales are enabled? Does not have to be the full locale;
for example: en_US fi_FI
would enable all locales starting with these values
Which timezone to use?
You can check the available timezones in /usr/share/zoneinfo
Which partitions to create (there should be an example of this)
Where to mount the installation temporarily for writing.
For example: /mnt
If omitted, the mount folder will be a temporary folder in /tmp
.
Use grub as the bootloader. Currently the script only supports this bootloader.
Use UEFI boot instead of BIOS boot.
Unmount the filesystems after installation
Default: 1
TODO: If any specifics are needed to be provided, we can just turn the options straight into the corresponding settings.
For example: OOS_NETWORK_MAC_ADDRESS
becomes mac-address
in the system connections.
Or, if you want to, OOS_NETWORK_KEY_MGMT
becomes key-mgmt
, etc...
Which network driver to support?
Currently only wpa_supplicant is supported, however nmcli is also planned.
Default: wpa_supplicant
SSID of the network to connect to. This needs to be supplied - we need internet connection to install. TODO: Could this be probed?
Password of the network to connect to. TODO: These settings could be probed as well
The partition table label to use (default: gpt
)
Please note: If you use something else than GPT, such as MBR, you need to make sure your partition list is <4 partitions, as logical partitions aren't supported.
Which LANG to set in locale.conf?
The hostname to use - this is usually the same as the INSTALL_NAME, but can be overwritten by this option.
The bootloader ID to use - this is usually the same as the INSTALL_NAME, but can be overwritten by this option.
Use partitioning
Use remount
Use strapping
Use skeleton
Use reboot
Use bootloader installation
Use pacstrap
Skip some confirmations and fast track to the installation process.
How much to wait when an error (like when mounting) happens.
Which shell are we running?
Which architecture are we using?
If possible to tell, which distribution of linux are we using?
Which additional packages are needed in the installation process?
Default packages that are installed in any case
Location of the install.d
directory.
This directory will contain the stages for the installation.
Location of all of the awk scripts used by the script.
Location of all of the helper scripts
Where will the install.conf
be located?
This file will be used to contain the configuration throughout the installation.
Location of all of the skeleton folders that will be used by the installation. User skeletons are stored in a different location
The way I see is that the installation step contains three phases. Without going too philosophical, here is a list of those:
A setup phase that should work with every setup, it's main task is to choose which phase to pick next.
This phase is where there is a shell of some kind, but not necessarily all the tools required to complete an arch installation.
The installation script should detect this phase and then do all in its capability to get the process to Phase 2.
The dream would be to be able to say curl workspace-server.net/script.sh | bash -
or similar, and have a interrupt-less installation from there.
This is a phase which works in an arch-like linux installation, and the toolset is readily available to complete the installation. The installation script should again detect this phase (we can also be booted from phase 1) and clone a new arch installation to whatever disk was provided. There are some things we could do in chroot, but most of it is left for Phase 3. In the end of Phase 2 we reboot to Phase 3. On arch installations, the script can simply skip to this step as the tools are already there.
This is the last phase, which is already booted into the new installation. Some final configurations are set in this phase. After this phase the script should finish and leave the user in a working installation (with or without a reboot.)
The initializer script is yet to be completed; this is because my "workspace" consists of a variety of tools that I variate between, and as everything is subject to change it's hard to pin down everything I want in my installation script. However, I believe it will grow with time.