Archinstall

Latest version: v2.8.3

Safety actively analyzes 706267 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 12

2.1.4rc2

Patch release v2.1.4 (Release Candidate)
================================

Attached below is an **unofficial** Arch Linux ISO that ships this specific release candidate.
Since this is an unsupported ISO, please help the support out by not asking questions about it anywhere but here or in the archinstall channels.

**Known issues**: Installing **to** a USB device is still a bit iffy at times.

Experimental features:
* *"Use `/mnt` as is"* 124 has been added as a new option in the formatting process. This function is tested, but internet is filled with people who use exotic partitioning layouts and such. So this feature is bound to break at some points. Feedback is very welcome especially around this new feature. `lsblk` output has been added to the logs, so submitting that log should be sufficient for us to replicate certain layouts and file formats.

This release contains the following:
* *(breaking change)* [Installer()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eL37-R37) has been re-worked quite a bit to accomodate 124. This meant that `partition` and `boot_partition` are no longer used, instead, a single installation directory is given which adds more degrees of freedom for the installer - as it no longer *"cares"* what partitions are being used. As long as it can run `pacstrap` in said directory, the installer will try to figure out what packages to source additionally to deal with the file system's in play. It also no longer sets a hostname by default, instead `.set_hostname()` should be called on the installation. *(see the minimal example for information on how the new workflow should look like)*.
* `argon2id` is being used by default instead of `argon2i` after some discussions here on GitHub, with a future plan of making this configurable through `--PBKDF=<implementation name>`.
* 124 has been implemented and allows for more complex partition layouts. See note above surrounding this feature.
* The install log now contains `lsblk` output to better help diagnose potential partitioning issues.
* Added information regarding unattended installations in the readme
* IP addresses are now verified when entering them
* Time zone input will now loop instead of default to UTC when a **invalid** time zone is given *(leaving blank will however default to UTC still as mentioned below)*
* `generic_select` have been improved quite a bit. It now supports `allow_empty_input=False` which will loop over the choices until a valid is given as well as a `sort=True` which sorts the listing. Lastly `options_output=False` have been added to hide any output of the list, enabling the programmer to print their own list prior to selecting the options *(options still has to be given to `generic_select`, but these can be different from the output printed, enabling for more programatically understandable options returned from `generic_select` while allowing for presenting user friendly options)*
* "Keep partitions" now forces the user to select at least `/` and `/boot`
* A `.editorconfig` to help contributors use and follow some guidelines when contributing
* Added a mission statement to the project
* Simplified and consolidated the build process.
* [minimal.py](https://github.com/archlinux/archinstall/blob/master/examples/minimal.py) and the [script your own installation](https://github.com/archlinux/archinstall#scripting-your-own-installation) examples have been updated properly.
* The [test instructions](https://github.com/archlinux/archinstall#testing) and [build ISO instructions](https://github.com/archlinux/archinstall/wiki/Building-and-Testing) have been added and modified.
* The entry-point for the module have moved in to [__init__.py](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/archinstall/__init__.py)
* Partial support for hardware raids [have been added](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R82-R84) *(still very much an experimental feature)*
* `Partition()` now has a [.uuid](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R206-R215) property for easy access to the PARTUUID of `lsblk`
* `BlockDevice()` now has a [.uuid](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R129-R140) property for easy access to the UUID of `lsblk` for the device.
* `Partition()`[.real_device](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R234-R237) now always returns the parent device, not only when it's encrypted. This means that `/dev/mapper/luksloop` will return `/dev/sda2` for instance, and `/dev/sda2` will return `/dev/sda`. For a more consistent behavior.
* Relaxed the `Partition()`[.safe_to_format()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R273-R281) a bit to allow for formatting "odd" boot partitions that doesn't make sense.
* `Partition()`[.mount()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R383) will now create the destination by default.
* `archinstall` has a new function called [.get_partitions_in_use(mountpoint)](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R590-R607) which can look up a folder/mountpoint and analyze which block devices are mounted there (recursively). This helps the `Installer()` to understand which partitions is mounted and what packages to source.
* `archinstall.sys_command()` now take [environment_vars](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-4b1ae0a69adb92795bf24c05708559d253512bd3b6fe994b2f9f7a88309d2696R79) as a new argument, which can be used to pipe in specific environment variables. It also properly disposes of [any open filehandles](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-4b1ae0a69adb92795bf24c05708559d253512bd3b6fe994b2f9f7a88309d2696R266-R270) once done executing.
* Some general code clean up such as [this](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-d39c5771ecacdcd8a8216c41e300b2c0df140c7a871e99f2b29994a85b78cc86L6-R6)
* `Installer()` [no longer installs nano](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eL37-R37) by default as a base package. That is now an optional package in profiles instead.
* `Installer()`[.partitions](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR51) have been added to facilitate easy access to the current partitions in play during this installation.
* `Installer().enable_service()` now takes [an arbitrary number of services](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR182-R186) instead of just one
* `Installer()`[.drop_to_shell()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR194-R196) has been added to the API for easy access into the new installation.
* `Installer()`[.detect_encryption()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR263-R269) has been added to the API to crudely but conveniently detect if there's encryption in play at the given pacstrap location.
* `Installer().minimal_installation()` now [patches mkinitcpio](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR276-R300) instead of blindly writing a string. This is prep-work for the future, where there will be API hooks such as `on_mkinitcpio` that will pipe these variables to external functions for patching.
* `archinstall.list_keyboard_languages()` should [no longer be limited to QWERTY](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-349e0306916a31b2d10e2e2c6be53ee68427130fe66150a64f26a70575ae0f7bR7) layouts. This should enable layouts like `be-latin1` to be discoverable which was mentioned in 149.
* Some [NVMe sleeps](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-77fb925cf17751bd67029d4b5d84614fc2e01b1a78be872405a2fb2426db4f66R130-R131) have been added to combat the issues during formatting/encryption/unlocking where commands release us before the kernel is done updating.
* `list_mirrors()` now support [offline mode](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-3a34aa93b1dbcbf57a9ecf6a0dc5737b8bee9a2bfaf6032e1c50efd799a0f6c1R79-R83) is detected. This is useful when building your own ISO's that is targeted at offline environments. An example usage of this is [archoffline](https://github.com/Torxed/archoffline) that utilize this as a test.
* [profiles/](https://github.com/archlinux/archinstall/tree/master/profiles) now has the ability to masquerade as [top_level_profile](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-c020f06bfd45245769ec3b87d62176bb0e3ad7e54751caa91099f28f2611aeb5R198-R203) enabling it to show up in profile listing. And subsequently hide themselves from the top level menu in [guided](https://github.com/archlinux/archinstall/blob/master/examples/guided.py). This helps a lot with maintaining a clean list of profiles at the first presentation. All desktop profiles have now been moved under the [desktop](https://github.com/archlinux/archinstall/blob/master/profiles/desktop.py) option.
* `Profiles()`[.packages](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-c020f06bfd45245769ec3b87d62176bb0e3ad7e54751caa91099f28f2611aeb5R205-R223) is a new property in the API to access potential package definitions. *(experimental feature and will not take full effect until `v2.2.0`)*
* [service_state()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-8b88989818da3b8e89018b3bff85119ab8bf6f20a95c86f4594151e1966a9da9R10) has been patched and now properly returns a string representing the state, without any ANSI escape codes.
* Usernames are now [properly verified](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R22-R30) before continuing in the guided installer.
* The formatting countdown has been moved into [archinstall.lib.user_interactions](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R32-R65) *(and exposed as `archinstall.do_countdown()`)*
* Most function logs no longer outputs a [black background](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R71).
* Timezones will now [default to UTC](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R133-R135) when skipped.
* [Audio selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R145-R151) will be added to all desktop profiles supporting both Pulse Audio and Pipewire.
* [NetworkManager](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R161-R162) has been added as a network configuration step. *(Note that the [gnome (arch package group)](https://archlinux.org/groups/x86_64/gnome/) still contains `NetworkManager` as a dependency and will be installed, but not activated unless this new option is chosen)*
* Some general fixes for `out of range` issues [have been fixed](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R234-R237) in various ways.
* Searching for a keyboard layout that doesn't exist, [no longer crashes but will ask you until a valid result is found](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R343-R351).
* Until the next release when MBR/BIOS/GRUB support is fixed and added, guided will now [issue a warning about EFI not being used](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR6-R8) to avoid confusion.
* [keyboard layout](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR17-R22), [mirror selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR31-R36) and [package selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR191-R208) now longer causes hard crashes when faulty configuration is entered, instead it will loop back and ask for input again until valid input is given. These crashes were a design choice when releasing this project to avoid potential issues slipping through. This reduced complexity of the code and logic and ensured that no issues fell through the cracks, but it came at the cost of user experience so this is being changed one function at a time to allow for proper testing before being "made pretty".
* [audio selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR323-R332) will only be performed if a desktop profile was chosen, or if the `--audio` flag was given to guided.
* Guided [will now ask if you want to drop into a shell](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR352-R358) for post configuration upon a successful installation.
* Gnome and KDE have been polished a bit to enable a more minimal installation, which should make the footprint on the disk much smaller.
* A lot of profiles have been added: [alacritty](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/alacritty.py), [budgie](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/budgie.py), [cinnamon](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/cinnamon.py), [i3](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/i3.py), (https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/i3-wm.py), [lxqt](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/lxqt.py), [mate](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/mate.py), [sway](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/sway.py) and [xfce4](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/xfce4.py)
* [awesome](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-78ecad89c47a929ee91dfd09bea208fadee359b5dfb07954cd68ec6cd6c30ac7R9) no longer installs a browser and things by default.
* [desktop](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-77e411262e1038a5da0dd3815b55c2ebc5747dbe29c8929635efba3af5c33cd3R9) will install some helper packages to make life easier.
* [A new build method](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-fa602a8a75dc9dcc92261bac5f533c2a85e34fcceaff63b3a3a81d9acde2fc52R1-R39) to make building the python library a bit more future compliant
* Updated references to the old project URL to the new Arch Linux official GitHub account
* A lot of spelling errors have been corrected

2.1.4rc1

Patch release v2.1.4 (Release Candidate)
================================

Attached below is an **unofficial** Arch Linux ISO that ships this specific release candidate.
Since this is an unsupported ISO, please help the support out by not asking questions about it anywhere but here or in the archinstall channels.

**Known issues:**
* entering keyboard layouts directly by *name* in the first prompt is partially broken. Entering `us` for instance is broken, but entering by number works or after a search you can enter `us`. It just needs that first search to populate the list properly internally by name.

This release contains the following:
* *(breaking change)* [Installer()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eL37-R37) has been re-worked quite a bit to accomodate 124. This meant that `partition` and `boot_partition` are no longer used, instead, a single installation directory is given which adds more degrees of freedom for the installer - as it no longer *"cares"* what partitions are being used. As long as it can run `pacstrap` in said directory, the installer will try to figure out what packages to source additionally to deal with the file system's in play. It also no longer sets a hostname by default, instead `.set_hostname()` should be called on the installation. *(see the minimal example for information on how the new workflow should look like)*.
* A `.editorconfig` to help contributors use and follow some guidelines when contributing
* Added a mission statement to the project
* Simplified and consolidated the build process.
* [minimal.py](https://github.com/archlinux/archinstall/blob/master/examples/minimal.py) and the [script your own installation](https://github.com/archlinux/archinstall#scripting-your-own-installation) examples have been updated properly.
* The [test instructions](https://github.com/archlinux/archinstall#testing) and [build ISO instructions](https://github.com/archlinux/archinstall/wiki/Building-and-Testing) have been added and modified.
* The entry-point for the module have moved in to [__init__.py](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/archinstall/__init__.py)
* Partial support for hardware raids [have been added](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R82-R84) *(still very much an experimental feature)*
* `Partition()` now has a [.uuid](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R206-R215) property for easy access to the PARTUUID of `lsblk`
* `BlockDevice()` now has a [.uuid](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R129-R140) property for easy access to the UUID of `lsblk` for the device.
* `Partition()`[.real_device](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R234-R237) now always returns the parent device, not only when it's encrypted. This means that `/dev/mapper/luksloop` will return `/dev/sda2` for instance, and `/dev/sda2` will return `/dev/sda`. For a more consistent behavior.
* Relaxed the `Partition()`[.safe_to_format()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R273-R281) a bit to allow for formatting "odd" boot partitions that doesn't make sense.
* `Partition()`[.mount()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R383) will now create the destination by default.
* `archinstall` has a new function called [.get_partitions_in_use(mountpoint)](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-de72788d774e24383a05298142e3cb72b53329e0cef82eb19fd9716bfc667c58R590-R607) which can look up a folder/mountpoint and analyze which block devices are mounted there (recursively). This helps the `Installer()` to understand which partitions is mounted and what packages to source.
* `archinstall.sys_command()` now take [environment_vars](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-4b1ae0a69adb92795bf24c05708559d253512bd3b6fe994b2f9f7a88309d2696R79) as a new argument, which can be used to pipe in specific environment variables. It also properly disposes of [any open filehandles](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-4b1ae0a69adb92795bf24c05708559d253512bd3b6fe994b2f9f7a88309d2696R266-R270) once done executing.
* Some general code clean up such as [this](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-d39c5771ecacdcd8a8216c41e300b2c0df140c7a871e99f2b29994a85b78cc86L6-R6)
* `Installer()` [no longer installs nano](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eL37-R37) by default as a base package. That is now an optional package in profiles instead.
* `Installer()`[.partitions](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR51) have been added to facilitate easy access to the current partitions in play during this installation.
* `Installer().enable_service()` now takes [an arbitrary number of services](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR182-R186) instead of just one
* `Installer()`[.drop_to_shell()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR194-R196) has been added to the API for easy access into the new installation.
* `Installer()`[.detect_encryption()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR263-R269) has been added to the API to crudely but conveniently detect if there's encryption in play at the given pacstrap location.
* `Installer().minimal_installation()` now [patches mkinitcpio](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR276-R300) instead of blindly writing a string. This is prep-work for the future, where there will be API hooks such as `on_mkinitcpio` that will pipe these variables to external functions for patching.
* `archinstall.list_keyboard_languages()` should [no longer be limited to QWERTY](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-349e0306916a31b2d10e2e2c6be53ee68427130fe66150a64f26a70575ae0f7bR7) layouts. This should enable layouts like `be-latin1` to be discoverable which was mentioned in 149.
* Some [NVMe sleeps](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-77fb925cf17751bd67029d4b5d84614fc2e01b1a78be872405a2fb2426db4f66R130-R131) have been added to combat the issues during formatting/encryption/unlocking where commands release us before the kernel is done updating.
* `list_mirrors()` now support [offline mode](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-3a34aa93b1dbcbf57a9ecf6a0dc5737b8bee9a2bfaf6032e1c50efd799a0f6c1R79-R83) is detected. This is useful when building your own ISO's that is targeted at offline environments. An example usage of this is [archoffline](https://github.com/Torxed/archoffline) that utilize this as a test.
* [profiles/](https://github.com/archlinux/archinstall/tree/master/profiles) now has the ability to masquerade as [top_level_profile](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-c020f06bfd45245769ec3b87d62176bb0e3ad7e54751caa91099f28f2611aeb5R198-R203) enabling it to show up in profile listing. And subsequently hide themselves from the top level menu in [guided](https://github.com/archlinux/archinstall/blob/master/examples/guided.py). This helps a lot with maintaining a clean list of profiles at the first presentation. All desktop profiles have now been moved under the [desktop](https://github.com/archlinux/archinstall/blob/master/profiles/desktop.py) option.
* `Profiles()`[.packages](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-c020f06bfd45245769ec3b87d62176bb0e3ad7e54751caa91099f28f2611aeb5R205-R223) is a new property in the API to access potential package definitions. *(experimental feature and will not take full effect until `v2.2.0`)*
* [service_state()](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-8b88989818da3b8e89018b3bff85119ab8bf6f20a95c86f4594151e1966a9da9R10) has been patched and now properly returns a string representing the state, without any ANSI escape codes.
* Usernames are now [properly verified](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R22-R30) before continuing in the guided installer.
* The formatting countdown has been moved into [archinstall.lib.user_interactions](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R32-R65) *(and exposed as `archinstall.do_countdown()`)*
* Most function logs no longer outputs a [black background](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R71).
* Timezones will now [default to UTC](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R133-R135) when skipped.
* [Audio selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R145-R151) will be added to all desktop profiles supporting both Pulse Audio and Pipewire.
* [NetworkManager](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R161-R162) has been added as a network configuration step. *(Note that the [gnome (arch package group)](https://archlinux.org/groups/x86_64/gnome/) still contains `NetworkManager` as a dependency and will be installed, but not activated unless this new option is chosen)*
* Some general fixes for `out of range` issues [have been fixed](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R234-R237) in various ways.
* Searching for a keyboard layout that doesn't exist, [no longer crashes but will ask you until a valid result is found](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-991834f970d8b0af702afcd0581ed8edc8fd87c0aec535af2d375e04b0518a43R343-R351).
* Until the next release when MBR/BIOS/GRUB support is fixed and added, guided will now [issue a warning about EFI not being used](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR6-R8) to avoid confusion.
* [keyboard layout](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR17-R22), [mirror selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR31-R36) and [package selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR191-R208) now longer causes hard crashes when faulty configuration is entered, instead it will loop back and ask for input again until valid input is given. These crashes were a design choice when releasing this project to avoid potential issues slipping through. This reduced complexity of the code and logic and ensured that no issues fell through the cracks, but it came at the cost of user experience so this is being changed one function at a time to allow for proper testing before being "made pretty".
* [audio selection](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR323-R332) will only be performed if a desktop profile was chosen, or if the `--audio` flag was given to guided.
* Guided [will now ask if you want to drop into a shell](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-98d75a109b5337cd7d7c948d2cfc2379bcc51be22dfa3ca6491765f0e0bcaaabR352-R358) for post configuration upon a successful installation.
* Gnome and KDE have been polished a bit to enable a more minimal installation, which should make the footprint on the disk much smaller.
* A lot of profiles have been added: [alacritty](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/alacritty.py), [budgie](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/budgie.py), [cinnamon](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/cinnamon.py), [i3](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/i3.py), (https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/i3-wm.py), [lxqt](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/lxqt.py), [mate](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/mate.py), [sway](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/sway.py) and [xfce4](https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/xfce4.py)
* [awesome](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-78ecad89c47a929ee91dfd09bea208fadee359b5dfb07954cd68ec6cd6c30ac7R9) no longer installs a browser and things by default.
* [desktop](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-77e411262e1038a5da0dd3815b55c2ebc5747dbe29c8929635efba3af5c33cd3R9) will install some helper packages to make life easier.
* [A new build method](https://github.com/archlinux/archinstall/compare/v2.1.3...v2.1.4-RC1#diff-fa602a8a75dc9dcc92261bac5f533c2a85e34fcceaff63b3a3a81d9acde2fc52R1-R39) to make building the python library a bit more future compliant
* Updated references to the old project URL to the new Arch Linux official GitHub account
* A lot of spelling errors have been corrected

2.1.3

Not secure
This is a minor release and addresses some smaller bugs that were creeping around.

* A inconsistency was detected when trying to format a disk/partition that previously had encryption enabled and going to a setup where encryption was not used. This was identified by Didr and the issue was that the `Partition().encrypted` flag was carried over from the internal cache *(created initially when building the cache to present to the user during initialization)*.
- The `.encrypted` flag is now more accurately set by correctly identifying file system as reported by the kernel rather than our own internal cache after `.format` is called. It also checks the parent device if there is one to not falsely check on unlocked encrypted devices.
* 116 has partially been corrected, in that the log will fall back to `./` if archinstall couldn't put the log in `/var/log/archinstall`
* `sys_command` now has a better working `workdir` flag to put logs and execute from.
* Removed `vfat` as a root-partition option
* Fixed an issue where completely empty drives would cause a glitch due to `.has_content()`'s `mount` command would crash due to *"wrong fs type"*.

No new features were added.

2.1.2

Not secure
New features
==========
* `BlockDevice()` now has four new functions as well as "improved" cache *(still some improvements to be done)*:
- `BlockDevice().partition_table_type` which returns `GPT` or `MBR` depending on which is used
- `.has_partitions()` which returns the number of partitions
- `.has_mount_point(path)`, returns `True` if any of the block device partitions have been mounted to the given `path`
- `.flush_cache()` which clears the internal partition cache and forces a refresh of the current partitions *(mainly useful for internal use when formatting etc)*
* `BlockDevice()` are now iterable and will iterate over the partitions *(`for partition in BlockDevice("/dev/sda"):`)*.
* `BlockDevice()` will now auto fill information about itself if no information is given during initialization.
* Throughout the [guided.py](https://github.com/Torxed/archinstall/blob/master/examples/guided.py) installation, arguments are now supported from the command-line in to the script via `--argument=value`. This helps testing and enables scripts to utilize archinstall example installations *(minimal and others will get an overhaul soon too)*.
* `Partition()` has a lot of new additions, mainly safety features and a bit of re-work to support more complex partition layouts
- `.target_mountpoint` which sets the desired mount point once the partition is formatted and complete
- `.allow_formatting` *(Bool)* dictates if the archinstall formatter is allowed to touch the partition or not. By default all partitions are set to `False` which ensures that for instance Windows partitions is left untouched. This protection can be overridden by `BlockDevice().keep_partitions = False` which tells archinstall that it's ok to wipe all partitions no matter what individual partitions dictates.
- `Partition()` now auto-mounts if `mountpoint` is given, which is not to say the same as `target_mountpoint` which is post-formatting.
- `Partition()` will now correctly identify itself as encrypted by checking its file system during initialization, which will trigger additional user input / library actions depending on certain conditions.
- `Partition()` is now sortable among other partitions *(and strings)*, based on the full path name of itself.
- `.detect_inner_filesystem()` a helper function that will attempt to detect any inner file systems automatically by decrypting the partition using any supplied password.
- `.has_content()` will mount the partition to a temporary location and check if there's any content inside that temporary mount location. Useful to check if `/boot` has content for instance.
- `.safe_to_format()` will return a *bool* depending on some criteria. If `.allow_formatting` is `False` for instance, then `.safe_to_format()` will also return `False`.
- `.encrypt(*args, **kwargs)` is a helper/wrapper around setting up and calling `luks2().encrypt(*args, **kwargs)`.
- `.format()` has some new safety checks/features implemented to avoid accidental formatting.
- `.unmount()` *(`.umount` is an alias)* will attempt to unmount the partition.
- `.filesystem_supported()` is a new helper function that will format the partitions selected file system against `/dev/null` to determine if the format is supported, or if the selected file format isn't supported by archinstall.
* `Filesystem()` has been re-worked quite a bit to incorporate some new partition flexability. It now supports existing partition schemes by simply honoring what flags are set in `Partition()`. But some new features, logic and flags are:
- Will now check `self.blockdevice.keep_partitions`, and if `False` will initiate a new disk label wiping any existing partitions.
- `.find_partition(mountpoint)` will iterate the partitions for the selected drive and find any partition with the given mount point and return that partition.
- `.use_entire_disk()` have been re-worked completely to accommodate a new way of formatting. This function instead of actually formatting, will simply create a file system definition, and mark the partitions as ready to be formatted and set the protective flags accordingly. And if encryption is specified, will mark the correct partitions as encrypted triggering further actions later on in the library calls.
* `disk.py` also has `get_mount_info(path)` to get information based on a mount-point
* `disk.py` also has `get_filesystem_type(path)` which will return a single string representing the file system on that path
* `archinstall.exceptions.SysCallError` now has a property that can be fetched during a `try/catch`, which is `err.exit_code` which might be useful to debug/set actions depending on a syscall that exits as non-zero.
* `JSON_Encoder` now properly creates a copy of dictionaries rather than replacing keys in the existing dictionary *(the old behavior would overwrite keys and values, causing confusion with the benefit of being more memory conservative)*
* `luks2()` now has some additional parameters, `key_file` and `auto_unmount`. The key-file is just to avoid hard-coded locations for key-file lookups. And `auto_unmount` will automatically close the encrypted partition once the `__exit__` function is called.
- `.mapdev` is also a new property which holds the location of the luks mapper device created during `cryptsetup open`.
- If the partition is being used when we try to call `.encrypt()`, `luks2()` will now attempt to close the device as well as unmount the location where it's mounted and then re-run the `.encrypt()` call.
- Any partition within the encryption will inherit safety-flags once the partition is unlocked. This means if the encrypted partition `/dev/sda2` is selected for formatting, then so will `/dev/sda2 -> /dev/mapper/luksdev` as an example.
- `.format()` is a helper function that will attempt to run `cryptsetup -q -v luksErase` on the encrypted partition.
* `log()` will now default to `LOG_LEVELS.Info` if nothing else is specified.
* `Profile()` will now remember the initilization-namespace given, and `.load_instructions()` can overwrite the namespace during loading of instructions to circumvent potential `if __name__ == "filename"` logics. But once `Profile().install()` is called, the original namespace is restored in favor or triggering those `if __name__ == "filename"` again.
* `Profile()` also has a new helper function called `.has_prep_function()`, which will return `True` if thereis a `def _prep_function()` defined in the profile - but `if __name__ == 'moduleName'` also has to be defined for this helper function to return `True`. This to avoid *"stray code"* to be executed when we try to call `profile._prep_function()` in isolation.
* `Application()` now also resets the namespace prior to executing `.install()`.
* `lib/user_interactions.py` have gotten quite a few new helper functions:
- `get_terminal_height()` and `get_terminal_width()` which returns what it sounds like, the size of the current terminal in terms of character columns and character lines.
- `get_longest_option()` which returns the longest length of any given option within a list.
- `get_password()` which is a helper function to get a password with verification from the user 106
- `print_large_list()` which enables columinzation of largers sets of options courtesy of ninchester and fixes 81.
- `ask_for_superuser_account()` which asks for a single super-user account and has a `force=True` option to enable sticky-asking.
- `ask_for_additional_users()` now asks to create additional users and have the ability to ask and determinate and distinguish between normal users and superusers.
- `ask_for_a_timezone()` can ask and verify selected time zones.
- `ask_to_configure_network()` Now contains questions and options surrounding network configuration. This supports the option to copy existing configurations as well as configuring a specific interface for DHCP or static IP configuration.
- `ask_for_disk_layout()` will ask if the user wants to abort, keep an existing partition layout of wipe the entire drive
- `ask_for_main_filesystem_format()` will ask which file system to use for the root partition `/`, asking from a hard coded set of file systems.
* [examples/guided.py](https://github.com/Torxed/archinstall/blob/master/examples/guided.py) has been re-written more or less entirely. Most of the logic is the same and in the same order. The key differences being that the example now has the steps in functions and they are in order of execution. It also supports arguments via `archinstall.arguments` which translates `python guided.py --argument=value` into `archinstall.arguments['argument']`. It also has a completely re-written partitioning logic to support more flexible partitions.
* The profile `awesome` has been slimmed down further.

Bugs and fixes
===========
* `set_timezone` now properly removes any existing timezone that might be default in the installation 64.
* `set_locale()` no longer adds encoding in the `locale` string, since that's another parameter to [set_locale()](https://github.com/Torxed/archinstall/blob/e0611c276c82b54649b062f7980de7bcf20b5a01/archinstall/lib/installer.py#L161)
* Although not as clean as I would want it, this first generation fix enables encrypted partitions using file formats [other than btrfs](https://github.com/Torxed/archinstall/compare/v2.1.1...v2.1.2#diff-283d51110d004467e254215ad93e4dfcf0188beb22d9f878bb7088c12076dd2eR301-R308) by setting up `mkinitcpio.conf` *"properly"*. In the future, I wish to not overwrite the config as it might interfere with future default Arch Linux changes. But for now this should work.
* `add_bootloader` no longer defaults to a configuration file called `arch.conf`, which worked great in older versions of archinstall where flexability wasn't *really* that important. But since we now support multiple partiton layouts and multi-boot, this had to change 51.
* `Profile()` have been improved and re-worked a bit. Profiles installation function `.install()` no longer set the super-global variable `installation`, instead, `installation.install_profile(profile)` is now responsible for setting this variable. Since we need to install profiles through a installer instance, this makes more sense and also ensures that empty profile instances such as `Profile(None, "awesome")` which has `None` as the installation instance, can still be used for sanity checks - but not installations. This overall logic might be re-worked in the future, but **the global variable `installation` won't be accessible until `.install_profile()` is called** *(perhaps we move this to the `__init__()` function of `Installation()` in the future)*.

This version closes the following issues:
* 64
* 81
* 101
* 51
* 106
* 46

Honorable mentions:
* General improvements to language in user input questions.
* Improved build instructions under the Github wiki
* `lib/disk.py` has some preparations added for `MBR` disk setups which is a work in progress in PR 113
* Trying to use `pathlib.Path()` in as many places as possible

2.1.2rc3

This is a release candidate meant for testing purposes only.
Below is a short list of things that has been crossed off from the [v2.1.2](https://github.com/Torxed/archinstall/milestone/1) release so far.

- [x] [Partitions should have more flexible file system options](https://github.com/Torxed/archinstall/issues/46)
- [x] [Create a helper function for getting credentials input](https://github.com/Torxed/archinstall/issues/106)
- [x] [Install dhcp client by default *(or warn about not having a dhcp/static ip configured)*](https://github.com/Torxed/archinstall/issues/101)
- [ ] ~[Support an already installed system](https://github.com/Torxed/archinstall/issues/49)~
- [x] [Add option to support time zones](https://github.com/Torxed/archinstall/issues/64)
- [x] [Multi boot support](https://github.com/Torxed/archinstall/issues/51)
- [x] [Improve selecting from large lists](https://github.com/Torxed/archinstall/issues/81)
- [ ] ~[Profiles should be able to trigger additional (non default) kernel boot params](https://github.com/Torxed/archinstall/issues/91)~
- [ ] ~[BTRFS subvolumes to support tools like Snapper with rollbacks etc.](https://github.com/Torxed/archinstall/issues/93)~

*(More in-depth detail on all the changes will follow on the actual release day of v2.1.2, since some changes sneak in as bonus features)*.

2.1.2rc2

This is a release candidate meant for testing purposes only.
Below is a short list of things that has been crossed off from the [v2.1.2](https://github.com/Torxed/archinstall/milestone/1) release so far.

- [x] [Partitions should have more flexible file system options](https://github.com/Torxed/archinstall/issues/46)
- [x] [Create a helper function for getting credentials input](https://github.com/Torxed/archinstall/issues/106)
- [ ] [Install dhcp client by default *(or warn about not having a dhcp/static ip configured)*](https://github.com/Torxed/archinstall/issues/101)
- [ ] [Support an already installed system](https://github.com/Torxed/archinstall/issues/49)
- [ ] [Add option to support time zones](https://github.com/Torxed/archinstall/issues/64)
- [x] [Multi boot support](https://github.com/Torxed/archinstall/issues/51)
- [ ] [Improve selecting from large lists](https://github.com/Torxed/archinstall/issues/81)
- [ ] [Profiles should be able to trigger additional (non default) kernel boot params](https://github.com/Torxed/archinstall/issues/91)
- [ ] [BTRFS subvolumes to support tools like Snapper with rollbacks etc.](https://github.com/Torxed/archinstall/issues/93)

*(More in-depth detail on all the changes will follow on the actual release day of v2.1.2, since some changes sneak in as bonus features)*.

Page 7 of 12

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.