github archlinux/archinstall v2.3.1

latest releases: 3.0.1, v3.0.0, v2.8.6...
2 years ago

Breaking Changes

There should be no breaking changes. But btrfs support is still in early shape so some layouts might still not be "supported".
But do note that some errors that went silently by before, now raises exceptions. Such as archinstall.Filesystem().partprobe().

Deprecated features

  • /home will be changed for next release, and instead of being set to MIN_SIZE_TO_ALLOW_HOME_PART it will be a user question that users can opt-in rather than us pushing it as a best practice. It was after reports that this was a desired behavior that we introduced it. But it's caused more trouble than it's worth. So anyone who wants a separate /home in the future will be asked so. Or they can do archinstall --dry-run to generate a /var/log/archinstall/user_disk_layouts.json and modify it to add a /home volume.
    For this version tho, we've increased the / volumes to 40 GiB to make it a bit more spacious.

New features

  • Default timeout in systemd-boot has changed from 5 to 15 seconds.
  • BTRFS subvolume default layout has changed to something that hopefully works with snapper/timeshift (not tested, but in theory should worK):
    "@": "/",
    "@home": "/home",
    "@log": "/var/log",
    "@pkg": "/var/cache/pacman/pkg",
    "@.snapshots": "/.snapshots"
    
  • archinstall.Installer() now keeps track of which packages have been installed with archinstall.Installer().pacstrap() in the variable archinstall.Installer().installed_packages.
  • archinstall.Installer().add_user() now calls a new plugin hook called plugin.on_user_created(self, user). This is used by the Application profile pipewire to enable user services pipewire-pulse.service and pipewire-media-session.service for new users.
  • Application profile pipewire has been added.
  • only_hd example was added, to be used in testing but also as an example of how to use archinstall to only perform disk operations.
  • @archinstall.plugin decorator has been added to support code to define plugins in-runtime. (used by the pipewire application profile. It's a bit rudimentary at the moment, this will be changed in coming versions)
  • mountpoint will not be set, even for / or /home if using subvolumes. This is because subvolumes have precedence in this release as we've changed the default layout to support a @ entry.

Bug fixes

  • btrfs subvolumes now get properly mounted recursively.
  • GRUB got --removable added as a parameter to support UEFI.
  • Users and Superuser questions should now properly be asked even if a root password was set. In the future, the menu system is re-worked (scheduled for v2.4.0), so this will work even better. But for now we only patched this behavior.
  • archinstall.Installer() now calls self.mkinitcpio('-P') upon exit, so that any changes done during installation by packages, profiles or plugins now get generated as a last step, right after genfstab.
  • archinstall.Installer().mount_ordered_layout() now deals with btrfs subvolumes in a more complex manner to support the new above default layout.
  • archinstall.Boot() now properly shuts down after shutdown was sent to the temporary boot of the installation session.
  • save_user_configurations() was added in the guided installer to properly save user configurations during --dry-run. Only partial configurations was saved before.
  • archinstall.Installer().add_bootloader() now supports subvolumes properly.
  • Swapped lsblk for blkid as blkid behaves more as we expect in junction with partprobe. It seams lsblk doesn't wait/understand/care about the kernel updating it's internal cache and will return "results" immediately. We haven't found a way around that, so we swapped to blkid which appears to be able to detect and wait for kernel changes before returning results *(the delay here is <0.1 seconds, but enough to cause issues such as #813 and #885
  • Improved uuid comparison by making sure they're compared fairly by using .lower() on both the real UUID and the asked for UUID for proper comparison. Which addresses #885
  • archinstall.manage_btrfs_subvolumes was introduced as a means to fixing the somewhat rudimentary btrfs support. This allows us to more properly support crazy btrfs subvolumes. See some (not to be used in production) examples here: #637, #787 & #838
  • archinstall.Filesystem().partuuid_to_index() now has an incremental time delay for each time it does not find the requested PARTUUID. And it also uses blkid for the actual PARTUUID lookup.
  • archinstall.Filesystem().partprobe() now only calls partprobe on itself, not the entire collection of blockdevices. It also raises an exception if it could not (such as on loop devices some times).
  • archinstall.Filesystem().add_partition() now raises an exception if it could not add the partition instead of silently continuing. This was mainly caused by .partprobe() silently passing by, but add_partition() did not have an exception handling either so. That is addressed now. This should also fix #885
  • archinstall.get_mount_info() will now properly set a BlockDevice() for each Partition() object, which should correspond to the partition path. For instance /dev/sda1 will have a BD of /dev/sda. And /dev/mapper/luksdev will have /dev/sda as well if it resides there.
  • archinstall.partprobe() (the overall generally exposed function, not the same in Filesystem()) got a five second sleep put to it to avoid issues where partprobe() would tell the kernel to update it's partition cache but immediately release and subsequent commands relying on the information wouldn't be able to find it.
  • archinstall.Partition().size no longer reports back a size for loop-devices, mainly because lsblk can't reliably return the data and returns a high exit code instead.
  • archinstall.Partition().uuid now uses self._safe_uuid instead which uses blkid for the same reasons as above. Also has an incremental timeout for each retry if it cannot return the PARTUUID.
  • archinstall.Partition().device_path now supports btrfs subvolume partitions by splitting out the btrfs subvolume name before returning the device path.
  • archinstall.Partition().bind_name returns the btrfs subvolume bind name, for instance @home
  • archinstall.Partition().partprobe() was introduced to call partprobe on the partition and only the partition. Also has a one second sleep on success to avoid subsequent calls to possibly have partial data for the same reasons as above.
  • archinstall.Partition().format() now unifies partition names like fat32 -> vfat and ntfs -> ntfs3. This addresses #834
  • archinstall.Partition().mount() now handles btrfs subvolumes seamlessly by setting subvol=X as mount options.
  • /var/log/archinstall/cmd_output.txt has been added to be able to grab cmd output after the fact.
  • archinstall.Installer() now sets storage['installation_session'] to itself upon every initation.
  • A internal sed call has changed from s/x/y/ to s%x%y% to avoid issues with subvolume paths containing /
  • The postgresql Application profile now uses run_as instead of runas (spelling error caused the profile to break)
  • The xorg profile now properly sets amdgpu before the radeon modules when generating a new initramfs.

Don't miss a new archinstall release

NewReleases is sending notifications on new releases.