Please try out dracut

worked here

System:
Supermicro
at /sys/To be filled by O.E.M.
X9SRH-7F/7TF
Root mount:
/dev/sda2 on / type ext4 (rw,relatime)
Distributor ID: Ubuntu
Description: Ubuntu Plucky Puffin (development branch)
Release: 25.04
Codename: plucky
ZFS 2.3

For the use case we are talking about here, locally-generated initrds, mkosi-initrd is not intended in the first place. Dracut will remain around for that for the foreseeable future in all distros.

mkosi-initrd’s use case is pre-built initrds, and we already have a solution for that: core-initrd and snapped kernels, as used on FDE desktop images.

mkosi-initrd is used also fully intended to be used for locally built initrds. The image will be customized for local crypttab, cmdline, modules, firmware, but still be built from packages for all the rest. I have documented this some time ago at https://wiki.debian.org/EFIStub#With_mkosi-initrd

While you can do that it’s not advisable due to the significant overhead involved.

Building from packages is for sure a bit slower due to dpkg, but I wouldn’t say it’s a deal breaker

I use dracut in ubuntu since 22.04, I never had single problem, it is powerful and easy to config.
I actually installed the dracut binary package, and removed initramfs-tools. I do not want hybrid config. I think it works more stable without initramfs-tools

I’m not sure if this is related to dracut

$ sudo dpkg --configure -a
Setting up grub-pc (2.12-5ubuntu9) ...
error: unexpected argument '-Z' found

  tip: to pass '-Z' as a value, use '-- -Z'

Usage: cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

For more information, try '--help'.
dpkg: error processing package grub-pc (--configure):
 installed grub-pc package post-installation script subprocess returned error exit status 1
Setting up apparmor (4.1.0~beta5-0ubuntu9) ...
+ . /usr/share/debconf/confmodule
+ [ !  ]
+ PERL_DL_NONLAZY=1
+ export PERL_DL_NONLAZY
+ [  ]
+ exec /usr/share/debconf/frontend /var/lib/dpkg/info/apparmor.postinst configure 4.1.0~beta5-0ubuntu6
+ . /usr/share/debconf/confmodule
+ [ ! 1 ]
+ [ -z  ]
+ exec
+ [  ]
+ exec
+ DEBCONF_REDIR=1
+ export DEBCONF_REDIR
+ . /lib/apparmor/rc.apparmor.functions
+ PARSER=/sbin/apparmor_parser
+ PARSER_OPTS=--write-cache
+ [ no = yes ]
+ [ n = y ]
+ [ -d /etc/apparmor.d ]
+ PROFILE_DIRS=/etc/apparmor.d
+ ADDITIONAL_PROFILE_DIR=
+ [ -n  ]
+ AA_STATUS=/usr/sbin/aa-status
+ SECURITYFS=/sys/kernel/security
+ SFS_MOUNTPOINT=/sys/kernel/security/apparmor
+ STATUS=0
+ dpkg --compare-versions 4.1.0~beta5-0ubuntu6 lt-nl 2.13-7
+ dpkg --compare-versions 4.1.0~beta5-0ubuntu6 lt-nl 2.13-7
+ dpkg --compare-versions 4.1.0~beta5-0ubuntu6 lt-nl 2.5~pre+bzr1362-0ubuntu2
+ db_get apparmor/homedirs
+ _db_cmd GET apparmor/homedirs
+ _db_internal_IFS= 

+ IFS= 
+ printf %s\n GET apparmor/homedirs
+ IFS=

+ read -r _db_internal_line
+ IFS= 

+ RET=
+ return 0
+ mktemp
+ tmp=/tmp/tmp.wrf0fgLfRW
+ cat
+ [ -n  ]
+ cat
+ mkdir -p /etc/apparmor.d/tunables/home.d
+ mv -Z -f /tmp/tmp.wrf0fgLfRW /etc/apparmor.d/tunables/home.d/ubuntu
error: unexpected argument '-Z' found

  tip: to pass '-Z' as a value, use '-- -Z'

Usage: mv [OPTION]... [-T] SOURCE DEST
       mv [OPTION]... SOURCE... DIRECTORY
       mv [OPTION]... -t DIRECTORY SOURCE...

For more information, try '--help'.
dpkg: error processing package apparmor (--configure):
 installed apparmor package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of grub-efi-amd64-signed:
 grub-efi-amd64-signed depends on grub-efi-amd64 | grub-pc; however:
  Package grub-efi-amd64 is not installed.
  Package grub-pc is not configured yet.

dpkg: error processing package grub-efi-amd64-signed (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 grub-pc
 apparmor
 grub-efi-amd64-signed

I decided to go all in on this Lubuntu VM

1 Like

I asked around; are you using the Rust coreutils instead of the regular one?

If so, GRUB’s packaging isn’t quite adapted for it yet. You could either revert to the regular coreutils, or try patching it manually (not recommended).

If you aren’t actually using the Rust coreutils, then this is very curious, please explain more.

Oh! that could be it…

Haha

That doesn’t show after I reverted it

1 Like

Does clevis-dracut work in 24.10? It doesn’t seem to work in 24.04, although it was strangely working for me until a recent update.

I need Clevis to connect to a Tang server.

I notice that clevis-dracut seems to be supported in 25.04.

Thanks

25.04 releases this Thursday. Upgrade when it’s offered (usually a week or two after release) and try it after you’ve upgraded if you want to experiment with it for best results.

Success on Plucky with hostonly and tpm2-tss

System:
Dell Inc.
XPS
XPS 15 9510
Root mount:
/dev/mapper/nvme0n1p5_crypt on / type ext4 (rw,relatime,errors=remount-ro)

Up and running on both Ubuntu 22.04 and 24.04, Desktop and Laptop usage.

A couple of adaptations made this fly, some rather hacky:

/etc/dracut.conf is extended by

install_items+=" /etc/alternatives/default.plymouth "
omit_drivers+=" nvidia nvidia_drm nvidia_modeset "
persistent_policy="by-uuid"
use_fstab="yes"
hostonly="yes"
hostonly_cmdline="no"
File /usr/sbin/plymouth-set-default-theme, mode 755
----
if [ -f /etc/alternatives/default.plymouth ] ; then
	echo `ls -la /etc/alternatives/default.plymouth | awk -F\/ '{print $NF}' | sed -e "s/.plymouth$//g"`
else
	echo "text"
fi

Plymouth works this way, also with luks2 disk encryption.
Masking Nvidia Kernel Modules made suspend work on laptops with Nvidia graphics card.

File: /usr/local/sbin/update-initramfs, mode 755
----
echo This is not Ubuntu update-initramfs
echo "$@"
/usr/bin/dracut -f 2> /dev/null > /dev/null

Systems are managed by fai

It is working, independent to choice of bootloader grub or systemd-boot and persists system upgrades.

initramfs-tools are purged from the system, both dracut-core and dracut are installed.

Felt less painful than making initramfs-tools ignore nvidia modules. I guess Ubuntu 24.10 improved on apt / dpkg integration making the hack of overwriting update-initramfs obsolete.

So I just ran apt full-upgrade

update-initramfs: deferring update (trigger activated)
dpkg: cycle found while processing triggers:
 chain of packages whose triggers are or may be responsible:
  dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut -> dracut
 packages' pending triggers which are or may be unresolvable:
  dracut: update-initramfs
dpkg: error processing package dracut (--configure):
 triggers looping, abandoned
Errors were encountered while processing:
 dracut
Error: Sub-process /usr/bin/dpkg returned an error code (1)

Then when I re-ran:

$ sudo apt update && sudo apt full-upgrade 
Hit:1 http://deb.xanmod.org releases InRelease
Hit:2 http://security.ubuntu.com/ubuntu devel-security InRelease
Hit:3 https://ppa.launchpadcontent.net/graphics-drivers/ppa/ubuntu devel InRelease           
Get:4 https://dl.anyware.hp.com/RWNdFtxzXyopO6wn/pcoip-client-beta/deb/ubuntu jammy InRelease [3,129 B]
Hit:5 http://ca.archive.ubuntu.com/ubuntu devel InRelease     
Hit:6 http://ca.archive.ubuntu.com/ubuntu devel-updates InRelease
Hit:7 http://ca.archive.ubuntu.com/ubuntu devel-backports InRelease
Hit:8 http://ca.archive.ubuntu.com/ubuntu devel-proposed InRelease
Get:9 https://dl.anyware.hp.com/RWNdFtxzXyopO6wn/pcoip-client-beta/deb/ubuntu noble InRelease [3,108 B]
Get:10 https://dl.anyware.hp.com/jR4ERCfTQYhyaADh/pcoip-client/deb/ubuntu jammy InRelease [3,124 B]
Get:11 https://dl.anyware.hp.com/jR4ERCfTQYhyaADh/pcoip-client/deb/ubuntu noble InRelease [3,103 B]
Fetched 12.5 kB in 1s (11.3 kB/s)
1 package can be upgraded. Run 'apt list --upgradable' to see it.
Warning: Conflicting distribution: http://security.ubuntu.com/ubuntu devel-security InRelease (expected devel-security but got questing)
Warning: Conflicting distribution: https://ppa.launchpadcontent.net/graphics-drivers/ppa/ubuntu devel InRelease (expected devel but got questing)
Warning: Conflicting distribution: http://ca.archive.ubuntu.com/ubuntu devel InRelease (expected devel but got questing)
Warning: Conflicting distribution: http://ca.archive.ubuntu.com/ubuntu devel-updates InRelease (expected devel-updates but got questing)
Warning: Conflicting distribution: http://ca.archive.ubuntu.com/ubuntu devel-backports InRelease (expected devel-backports but got questing)
Warning: Conflicting distribution: http://ca.archive.ubuntu.com/ubuntu devel-proposed InRelease (expected devel-proposed but got questing)
The following packages were automatically installed and are no longer required:
  gcc-14-base:i386  libhidapi-hidraw0  libwxbase3.0-0v5         nvidia-firmware-570-570.124.04
  libabsl20230802   libjxl0.7          libwxgtk3.0-gtk3-0v5     nvidia-firmware-570-570.144
  libclang-cpp18    libllvm18          libxml2:i386             nvidia-firmware-570-570.153.02
  libclang1-19      libllvm19          linux-headers-6.14.0-13  pkg-config
  libfuse3-3        libmanette-0.2-0   linux-tools-6.14.0-13    screen-resolution-extra
Use 'sudo apt autoremove' to remove them.

Not upgrading:
  sudo-rs

Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 1
  1 not fully installed or removed.
  Space needed: 0 B / 19.6 GB available

Continue? [Y/n] 
Setting up dracut (107-1ubuntu3) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for dracut (107-1ubuntu3) ...
update-initramfs: deferring update (trigger activated)
dpkg: cycle found while processing triggers:
 chain of packages whose triggers are or may be responsible:
  dracut -> dracut
 packages' pending triggers which are or may be unresolvable:
  dracut: update-initramfs
dpkg: error processing package dracut (--configure):
 triggers looping, abandoned
Errors were encountered while processing:
 dracut
Error: Sub-process /usr/bin/dpkg returned an error code (1)

Ups. That’s a bug that my recent dracut upload causes. Can you file a Launchpad bug against dracut? I’ll fix that after the weekend. I should add an autopkgtest for that.

sorry. Been busy

I’ll do that as soon as I can (it was running in one of my VMs)

No worries. I created the bug report myself: Bug #2116073 “dracut 107-1ubuntu3 fails to install: triggers loo... : Bugs : dracut package : Ubuntu

It is fixed in dracut 107-1ubuntu4 which is currently in dracut-proposed.

1 Like

I am going to report is a success. My system I built myself the following specs:
Motherboard: Asus ROG Crosshair X870E
CPU: AMD Ryzen™ 7 9800X3D
Ubuntu: 24.04.3 LTS
Root mount: /dev/mapper/cryptroot on / type btrfs (rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=256,subvol=/@)

Success in Kubuntu 24.04 with two LUKS partitions unlocked at boot via cryptab: one root, one mdraid → luks → lvm → ext4.

System: custom desktop OS build (Nvidia RTX4090 GPU, Ryzen 7 5800X CPU)
Root mount:
/dev/mapper/luks-[redacted] on / type ext4 (rw,relatime)

My LUKS setup is peculiar as it involves non-discoverable fido2 keys, which don’t play great with initramfs but dracut handles OK!

Details on the LUKS fido2 issue for those interested. initramfs-generated boot asks for the fido2 token even if you already unlocked the password key slot, then refuses to boot without the fido2 key. dracut understands the fido2 cryptsetup options (e.g., fido2-device=auto) which initramfs does not, and only requires a single key slot to be unlocked to proceed.

Not sure if this is expected, but dracut did not include the nice GUI elements initramfs boot has (e.g., motherboard + OS logos w/ LUKS password entry GUI prompt). dracut just gave me plain tty prompts. Hopefully official dracut config for Ubuntu will bring back the aesthetics?

@bdrung I saw that Fedora 44 will have a very interesting feature that modernizes the live media and adds a persistent layer when we write the iso to a USB storage device. This could be achieved thanks to dracut. Here are the details: https://fedoraproject.org/wiki/Changes/ModernizeLiveMedia

My question is: something is already mapped to do the same with Ubuntu, or can I open a bug report so this feature can analyzed and implemented in the future? What do you think?

@fictiontoreality A bunch of work went into the plymouth integration (the GUI part) in Ubuntu 25.10 and later. Ubuntu 25.10 and later should show the password prompt in the GUI.

@mhalano We ported several modules in cloud-initramfs-tools to dracut. This included persistent device overlay support (see feat(overlayfs): add persistent device overlay support by nadzyah ¡ Pull Request #1929 ¡ dracut-ng/dracut-ng ¡ GitHub).

The Fedora 44 change lives in a separate package and I haven’t seen it outside of Fedora. I see no reason why this should be specific to Fedora. IMO the best place for this code is the upstream dracut project.

So in case you are interested and have time for it: You could have a look at the features in dracut and the features of Fedora 44. Come up with a comparison (a quick look indicates that it uses systemd more). Are there new features? Then you could file a feature request against upstream dracut project for adding those improvements. Bonus points for providing test cases that could be added to the test suite.