github archlinux/archinstall v2.1.4

latest releases: v3.0.0, v2.8.6, v2.8.5...
3 years ago

Patch release v2.1.4

Known issues:

  • Installing to a USB device is still a bit iffy at times and some partition layouts might still confuse the installer and these will be fixed in v2.2.0 due to it requiring some re-work of the partition logic - which is to big of a change for this version.
  • MBR and GRUB support will be coming in v2.2.0 (next release)

For more issues, see the issues tab. And thank you for your patience and constructive feedback, it's very much appreciated!

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() 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.
  • Added more verification to time zone selection
  • Added a warning for one experimental 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 and the script your own installation examples have been updated properly.
  • The test instructions and build ISO instructions have been added and modified.
  • The entry-point for the module have moved in to init.py
  • Partial support for hardware raids have been added (still very much an experimental feature)
  • Partition() now has a .uuid property for easy access to the PARTUUID of lsblk
  • BlockDevice() now has a .uuid property for easy access to the UUID of lsblk for the device.
  • Partition().real_device 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() a bit to allow for formatting "odd" boot partitions that doesn't make sense.
  • Partition().mount() will now create the destination by default.
  • archinstall has a new function called .get_partitions_in_use(mountpoint) 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 as a new argument, which can be used to pipe in specific environment variables. It also properly disposes of any open filehandles once done executing.
  • Some general code clean up such as this
  • Installer() no longer installs nano by default as a base package. That is now an optional package in profiles instead.
  • Installer().partitions 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 instead of just one
  • Installer().drop_to_shell() has been added to the API for easy access into the new installation.
  • Installer().detect_encryption() 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 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 layouts. This should enable layouts like be-latin1 to be discoverable which was mentioned in #149.
  • Some NVMe sleeps 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 is detected. This is useful when building your own ISO's that is targeted at offline environments. An example usage of this is archoffline that utilize this as a test.
  • profiles/ now has the ability to masquerade as top_level_profile enabling it to show up in profile listing. And subsequently hide themselves from the top level menu in guided. 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 option.
  • Profiles().packages 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() has been patched and now properly returns a string representing the state, without any ANSI escape codes.
  • Usernames are now properly verified before continuing in the guided installer.
  • The formatting countdown has been moved into archinstall.lib.user_interactions (and exposed as archinstall.do_countdown())
  • Most function logs no longer outputs a black background.
  • Timezones will now default to UTC when skipped.
  • Audio selection will be added to all desktop profiles supporting both Pulse Audio and Pipewire.
  • NetworkManager has been added as a network configuration step. (Note that the gnome (arch package group) 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 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.
  • Until the next release when MBR/BIOS/GRUB support is fixed and added, guided will now issue a warning about EFI not being used to avoid confusion.
  • keyboard layout, mirror selection and package selection 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 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 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, budgie, cinnamon, i3, (https://github.com/archlinux/archinstall/blob/c9e1d4a8c3435401220c1108ac938971ad517a37/profiles/applications/i3-wm.py), lxqt, mate, sway and xfce4
  • awesome no longer installs a browser and things by default.
  • desktop will install some helper packages to make life easier.
  • A new build method 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

Don't miss a new archinstall release

NewReleases is sending notifications on new releases.