(We jumped to 2.5.0 instead of 2.4.3 because of the amount of breaking changes to the API calls)
Breaking changes
Partition().uuid
now properly reports the UUID as reported bylsblk -o+UUID
and notPARTUUID
. A newPartition().part_uuid
has been introduced where thePARTUUID
is needed. This was required in order to get the FIDO2 support to work.archinstall/lib/disk/btrfs.py
->archinstall/lib/disk/btrfs/.*
(functions should be exposed as previously, but some mistakes might exist)- Where applicable,
Partition()
is not always returned anymore when working with partitions, insteadBTRFSPartition
might get returned in its place if it contains a BTRFS filesystem. This is so that certain functionality tied strongly to BTRFS can be delt with accordingly and not get mixed with the Partition code.BTRFSPartition
extendsPartition
and will behave in the same way, just the type will be different and some features have moved to theBTRFSPartition
class.Partition.subvolumes
will get deprecated in the future but stays for now. mount_subvolume()
have been removed, instead a instance calledBtrfsSubvolume
has been added and can be accessed throughBTRFSSubvolume.subvolumes
which in turn has a.mount()
function..mountpoint
of different block device instances should now returnpathlib.Path
instead ofstr
.archinstall.get_filesystem_type()
no longer splits or expects paths with subvolume names in them.MapperDev.mountpoint
now returns apathlib.Path
instead of a stringPartition.mountpoint
now returns apathlib.Path
instead of a string- Partially fixed a bug in the menu system related to btrfs subvolumes
luks2.unlock
now returnsBTRFSPartition
if it detectsbtrfs
inside the unlocked device, otherwise returnsPartition
as usual.genfstab()
is no longer called automatically, insteadinstallation.genfstab()
has to be called in a appropriate time. This in order to fix the semi-urgent issue of #1276
This will get improved in the next version with the logic described here #1133 but got pushed forward due to time limitation.
Known issues
The following issues are known and can cause some issues, but have workarounds such as editing the file passed to --config
for instance and re-running archinstall with the flag
- ⚠️ If multiple partitions are encrypted, the password might bleed in to the
install.log
#1062 and passwords are still stored on/tmp
#1111 - Some guided partitioning issues related to btrfs subvolumes - #1278
- Missing translations in some places depending on language (and in general)
- On some hardware, swap (zram) doesn't work #1230
/etc/locale.gen
(and possibly/etc/locale.conf
) might get double entries set #1200
Deprecated API calls
archinstall.get_mount_info()
has been deprecated,archinstall.findmnt()
has been added instead, and subsequent parsing is done where needed.
Profile changes
awesome
has been slimmed down to the absolute bare minimum. No file browser, picture viewer or screenshot utility will be installed. #1247qtile
no longer getsdmenu
installed for menu handling, instead the built-in run menu will have to be used #1243
New features:
- FIDO2 (HSM) support for
systemd-boot
when unlocking disk encryption has been added #1196 with a master password as backup during enrollment (This is in very early beta and have only been tested with an older blue Yubikey. Nitrokey and modern Yubikey's are en route for testing. PIN entry and different devices have not been thoroughly tested.) - A new disk preview has been added to the main menu.
- A new disk layout preview has been added to the main menu, and general disk layout view improvements.
- A user preview has been added to the main menu.
archinstall.general.JSON
encoder now supports encodingpathlib.Path
objects.--config
,--disk-layout
and--creds
now all support remote loading thanks to the changes injson_stream_to_structure
. A slight bug caused only--config
to support this method of operation.Partition.format()
now supports aretry=True
call, that will attempt one retry of a format, in case there's a kernel delay while updating some internal cache, and simply sleeping and retrying will work.- Improved user management and creates a new user-structure in
--config
thanks to #1220:{ "!root-password": "<root password>", "!users": [ { "username": "<USERNAME>", "!password": "<PASSWORD>", "sudo": false }, { "username": "<SUDO_USERNAME>", "!password": "<PASSWORD>", "sudo": true } ] }
Installation.create_users()
have been added to deal with the new layout structure, individual users can still be created throughInstallation.create_user()
.archinstall.Deprecated
exception has been added, it can be logged and finally raised before completely removing a piece of code.archinstall.get_fido2_devices()
returns adict[/dev/path] = {"manufacturer" : ..., "product" : ...}
of all available FIDO2 devicesarchinstall.fido2_enroll(hsm_device, partition, password)
has been added to enroll FIDO2 devices as a unlocking mechanism to a partition. Password is required due to the workflow of archinstall who will enroll a master password first, this it to automate operations. Post configuration can remove this master password if needed.- Different menu types have been added, such as
MenuSelectionType.Selection
,MenuSelectionType.Esc
,MenuSelectionType.Ctrl_c
. This in order to handle the different return types of menu selections. Ctrl+C
now clears the current option, andEsc
properly backs out without modifying changes - Thanks to @svartkaninLocale language
andLocale encoding
has been brought to the main menu as it should be ready for general use now.network-manager-applet
will now be installed if a desktop profile was used, andNetworkManager
was chosen as the network manager of choice.systemd-networkd
will not for instance get this installed even under a desktop profile. Probably expected behavior but I felt like mentioning it anyway.Partition.uuid
now uses global timeout values before giving upProfile()
has gotten a.name
and a.is_desktop_profile
property,name
returns the basename of the profile path, andis_desktop_profile
returns a boolean whether the profile belongs to the desktop group.- General improvements to translations and more languages have been added.
- Polish - Thanks to @MedzikUser
- Portuguese - Thanks to @lucaspcamargo
- Russian - Thanks to @Alexmelman88
- Urdu - Thanks to @mfgbhatti
- Brazilian Portuguese - Thanks to @cain-dev
- Turkish - Thanks to @wiseweb-works & @AlperShal
- Italian - Thanks to @gdonisi
- Czech - Thanks to @tajnymag and @walken11
- Spanish - Thanks to @castillofrancodamian
archinstall.udevadm_info(path)
has been added to returnudevadm info /path
information in adict
like fashionarchinstall.log()
now supports the colodteal
(as well as an alias calledgrey
which translates togray
)archinstall.mount_ordered_layout()
now uses a queue system for mounts, where mount calls are frozen using lambda calls and then sorted. In the future there might be a plugin opportunity here, as well as the option to inject mounts into this process without needing to go through the layout process.
Bug fixes / Tweaks
- Fixed a severe issue (#1197) where
Mark as encrypted
option in the guided partitioning tool would mark all partitions for encryption. This due to a function calledselect_encrypted_partitions()
that was neglected and acted as a bit of a prototype function for future work, which would allow selecting which partitions to encrypt. This function is now developed as intended and an option to select one or more encrypted volumes will be presented - without additional partitions being encrypted. - Fixed a bug where
children
wouldn't always exist in thelsblk
report - We hid the Arch ISO (and similar devices) from the disk selection #1275
Menu.yes_no()
was causing a bug, that has been fixedDISK_RETRY_ATTEMPTS
has been lowered from 20 to 5 to improve overall experience in timing. This may result in some older hardware timing out - if so please do report it.BlockDevice
properties are for the most part cached properties, meaning the information will not update between calls.BlockDevice.get_partition
has been optimized- Added a warning when the selected disk is too low on space to suggest a automatic layout
SysCommandWorker
now longer breaks whencmd
is a string and it's trying to output to the cmd_log. It only worked with lists previously.SysCommand*
now properly changes directory only for the child process, previously both the parent and the forked process would change directory to the specifiedworking_directory
, and both would change back immediately. This has been corrected so only the parent changes back immediately after forking.SysCommand
now supportsworking_directory
parameter, and passes it toSysCommandWorker
as expected.archinstall.Boot()
which boots an installation now has a bit better error handling in terms of exit code by having better debug output.json_stream_to_structure
now supports loading resources remotely.- The menu system now only takes into account the visible menu entries when structuring the layout. Previously hidden items would also account for the layout dimensions.
Save configuration -> All
now properly saves all configurations, including disk configurations. There is still a small discrepancy between the automated save of configuration during installation and this save option. It's a known issue and will be fixed in the next release.