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 toMIN_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 doarchinstall --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 to40 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 witharchinstall.Installer().pacstrap()
in the variablearchinstall.Installer().installed_packages
.archinstall.Installer().add_user()
now calls a new plugin hook calledplugin.on_user_created(self, user)
. This is used by the Application profilepipewire
to enable user servicespipewire-pulse.service
andpipewire-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 callsself.mkinitcpio('-P')
upon exit, so that any changes done during installation by packages, profiles or plugins now get generated as a last step, right aftergenfstab
.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 aftershutdown
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
forblkid
asblkid
behaves more as we expect in junction with partprobe. It seamslsblk
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 toblkid
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 & #838archinstall.Filesystem().partuuid_to_index()
now has an incremental time delay for each time it does not find the requestedPARTUUID
. And it also usesblkid
for the actualPARTUUID
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, butadd_partition()
did not have an exception handling either so. That is addressed now. This should also fix #885archinstall.get_mount_info()
will now properly set aBlockDevice()
for eachPartition()
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 inFilesystem()
) got a five second sleep put to it to avoid issues wherepartprobe()
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 becauselsblk
can't reliably return the data and returns a high exit code instead.archinstall.Partition().uuid
now usesself._safe_uuid
instead which usesblkid
for the same reasons as above. Also has an incremental timeout for each retry if it cannot return thePARTUUID
.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 likefat32 -> vfat
andntfs -> ntfs3
. This addresses #834archinstall.Partition().mount()
now handles btrfs subvolumes seamlessly by settingsubvol=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 setsstorage['installation_session']
to itself upon every initation.- A internal
sed
call has changed froms/x/y/
tos%x%y%
to avoid issues with subvolume paths containing/
- The
postgresql
Application profile now usesrun_as
instead ofrunas
(spelling error caused the profile to break) - The
xorg
profile now properly setsamdgpu
before theradeon
modules when generating a new initramfs.