index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | README.md | 201 |
@@ -26,44 +26,60 @@ Assuming you are on an Arch Linux live-ISO: # archinstall +#### Advanced Some additional options that are not needed by most users are hidden behind the `--advanced` flag. ## Running from a declarative configuration file or URL -Prerequisites: - 1. Edit the [configuration file](https://github.com/archlinux/archinstall/blob/master/examples/config-sample.json) according to your requirements. +`archinstall` can be run with a JSON configuration file. There are 2 different configuration files to consider, +the `user_configuration.json` contains all general installation configuration, whereas the `user_credentials.json` +contains the sensitive user configuration such as user password, root password and encryption password. -Assuming you are on a Arch Linux live-ISO and booted into EFI mode. +An example of the user configuration file can be found here +[configuration file](https://github.com/archlinux/archinstall/blob/master/examples/config-sample.json) +and example of the credentials configuration here +[credentials file](https://github.com/archlinux/archinstall/blob/master/examples/creds-sample.json). - # archinstall --config <path to user config file or URL> --disk-layout <path to disk layout config file or URL> --creds <path to user credentials config file or URL> +**HINT:** The configuration files can be auto-generated by starting `archisntall`, configuring all desired menu +points and then going to `Save configuration`. + +To load the configuration file into `archinstall` run the following command +``` +archinstall --config <path to user config file or URL> --creds <path to user credentials config file or URL> +``` # Available Languages -Archinstall is available in different languages which have been contributed and are maintained by the community. +Archinstall is available in different languages which have been contributed and are maintained by the community. Current translations are listed below and vary in the amount of translations per language ``` English -Deutsch -Español -Français +Arabic +Brazilian Portuguese +Czech +Dutch +French +Georgian +German Indonesian -Italiano -Nederlands -Polskie -Português do Brasil -Português -Svenska -Türkçe -čeština -Русский -اردو -Ελληνικά -தமிழ் +Italian +Korean +Modern Greek +Polish +Portuguese +Russian +Spanish +Swedish +Tamil +Turkish +Ukrainian +Urdu ``` -Any contributions to the translations are more than welcome, and to get started please follow [the guide](https://github.com/archlinux/archinstall/blob/master/archinstall/locales/README.md) +Any contributions to the translations are more than welcome, +to get started please follow [the guide](https://github.com/archlinux/archinstall/blob/master/archinstall/locales/README.md) -# Help? +# Help or Issues Submit an issue here on GitHub, or submit a post in the discord help channel.<br> When doing so, attach the `/var/log/archinstall/install.log` to the issue ticket. This helps us help you! @@ -86,73 +102,111 @@ Therefore, Archinstall will try its best to not introduce any breaking changes e # Scripting your own installation -You could just copy [guided.py](https://github.com/archlinux/archinstall/blob/master/examples/guided.py) as a starting point. - -However, assuming you're building your own ISO and want to create an automated installation process, or you want to install virtual machines onto local disk images, here is a [minimal example](https://github.com/archlinux/archinstall/blob/master/examples/minimal.py) of how to install using archinstall as a Python library:<br> - -```python -import archinstall, getpass - -# Select a harddrive and a disk password -harddrive = archinstall.select_disk(archinstall.all_blockdevices(partitions=False)) -disk_password = getpass.getpass(prompt='Disk password (won\'t echo): ') - -# We disable safety precautions in the library that protects the partitions -harddrive.keep_partitions = False - -# First, we configure the basic filesystem layout -with archinstall.Filesystem(harddrive, archinstall.GPT) as fs: - # We create a filesystem layout that will use the entire drive - # (this is a helper function, you can partition manually as well) - fs.use_entire_disk(root_filesystem_type='btrfs') - - boot = fs.find_partition('/boot') - root = fs.find_partition('/') - - boot.format('vfat') - - # Set the flag for encrypted to allow for encryption and then encrypt - root.encrypted = True - root.encrypt(password=disk_password) +## Scripting interactive installation -with archinstall.luks2(root, 'luksloop', disk_password) as unlocked_root: - unlocked_root.format(root.filesystem) - unlocked_root.mount('/mnt') +There are some examples in the `examples/` directory that should serve as a starting point. - boot.mount('/mnt/boot') +The following is a small example of how to script your own *interative* installation: -with archinstall.Installer('/mnt') as installation: - if installation.minimal_installation(hostname='minimal-arch'): - installation.add_bootloader() - - installation.add_additional_packages(['nano', 'wget', 'git']) - - # Optionally, install a profile of choice. - # In this case, we install a minimal profile that is empty - installation.install_profile('minimal') - - user = User('devel', 'devel', False) - installation.create_users(user) - installation.user_set_pw('root', 'airoot') +```python +from pathlib import Path + +from archinstall import Installer, ProfileConfiguration, profile_handler, User +from archinstall.default_profiles.minimal import MinimalProfile +from archinstall.lib.disk.device_model import FilesystemType +from archinstall.lib.disk.encryption_menu import DiskEncryptionMenu +from archinstall.lib.disk.filesystem import FilesystemHandler +from archinstall.lib.user_interaction.disk_conf import select_disk_config + +fs_type = FilesystemType('ext4') + +# Select a device to use for the installation +disk_config = select_disk_config() + +# Optional: ask for disk encryption configuration +data_store = {} +disk_encryption = DiskEncryptionMenu(disk_config.device_modifications, data_store).run() + +# initiate file handler with the disk config and the optional disk encryption config +fs_handler = FilesystemHandler(disk_config, disk_encryption) + +# perform all file operations +# WARNING: this will potentially format the filesystem and delete all data +fs_handler.perform_filesystem_operations() + +mountpoint = Path('/tmp') + +with Installer( + mountpoint, + disk_config, + disk_encryption=disk_encryption, + kernels=['linux'] +) as installation: + installation.mount_ordered_layout() + installation.minimal_installation(hostname='minimal-arch') + installation.add_additional_packages(['nano', 'wget', 'git']) + + # Optionally, install a profile of choice. + # In this case, we install a minimal profile that is empty + profile_config = ProfileConfiguration(MinimalProfile()) + profile_handler.install_profile_config(installation, profile_config) + + user = User('archinstall', 'password', True) + installation.create_users(user) ``` This installer will perform the following: -* Prompt the user to select a disk and disk-password -* Proceed to wipe the selected disk with a `GPT` partition table on a UEFI system and MBR on a BIOS system. -* Sets up a default 100% used disk with encryption. +* Prompt the user to configurate the disk partitioning +* Prompt the user to setup disk encryption +* Create a file handler instance for the configured disk and the optional disk encryption +* Perform the disk operations (WARNING: this will potentially format the disks and erase all data) * Installs a basic instance of Arch Linux *(base base-devel linux linux-firmware btrfs-progs efibootmgr)* * Installs and configures a bootloader to partition 0 on uefi. On BIOS, it sets the root to partition 0. * Install additional packages *(nano, wget, git)* +* Create a new user > **Creating your own ISO with this script on it:** Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on how to create your own ISO. +## Script non-interactive automated installation + +For an example of a fully scripted, automated installation please see the example +[full_automated_installation.py](https://github.com/archlinux/archinstall/blob/master/examples/full_automated_installation.py) + ## Unattended installation based on MAC address -Archinstall comes with an [unattended](https://github.com/archlinux/archinstall/blob/master/examples/unattended.py) example which will look for a matching profile for the machine it is being run on, based on any local MAC address. -For instance, if the machine that [unattended](https://github.com/archlinux/archinstall/blob/master/examples/unattended.py) is run on has the MAC address `52:54:00:12:34:56` it will look for a profile called [profiles/52-54-00-12-34-56.py](https://github.com/archlinux/archinstall/blob/master/profiles/52-54-00-12-34-56.py). +Archinstall comes with an [unattended](https://github.com/archlinux/archinstall/blob/master/examples/mac_address_installation.py) +example which will look for a matching profile for the machine it is being run on, based on any local MAC address. +For instance, if the machine the code is executed on has the MAC address `52:54:00:12:34:56` it will look for a profile called +[52-54-00-12-34-56.py](https://github.com/archlinux/archinstall/default_profiles/tailored.py). If it's found, the unattended installation will commence and source that profile as its installation procedure. +# Profiles + +`archinstall` ships with a set of pre-defined profiles that can be chosen during the installation process. + +| *Desktop* | *Server* | +|---------------|------------| +| Awesome | Cockpit | +| Bspwm | Docker | +| Budgie | Lighttpd | +| Cinnamon | Mariadb | +| Cutefish | Nginx | +| Deepin | Postgresql | +| Enlightenment | Tomcat | +| Gnome | httpd | +| Kde | sshd | +| Lxqt | | +| Mate | | +| Qtile | | +| Sway | | +| Xfce4 | | +| i3-wm | | + +The definitions of the profiles and what packages they will install can be seen directly in the menu or +[default profiles](https://github.com/archlinux/archinstall/default_profiles) + + # Testing ## Using a Live ISO Image @@ -167,8 +221,7 @@ you can replace the version of archinstall with a new version and run that with 4. Now clone the latest repository with `git clone https://github.com/archlinux/archinstall` 5. Enter the repository with `cd archinstall` *At this stage, you can choose to check out a feature branch for instance with `git checkout v2.3.1-rc1`* -6. Build the project and install it using `python setup.py install` - *If you get a 'No Module named setuptools' error, run `pacman -S python-setuptools`* +6. Build the project and install it using `pip install` After this, running archinstall with `python -m archinstall` will run against whatever branch you chose in step 5. |