** Description changed: [ Impact ] The change to rust-coreutils in the initramfs was accidental, only the userspace gnu coreutils was supposed to be replaced with rust-coreutils. We do not want to increase the size of initramfs. This has a much larger impact on devices with small boot partition like Raspberry Pi where we are not able to hold 2 sets of Boot Assets for A/B Boot. Some measurements have been done in https://discourse.ubuntu.com/t/dracut-news-for-ubuntu-26-04-lts-and-26-10/87327/2 Summary: * The compressed initrd size shrinks by 6-8 MB * The uncompressed initrd size shrinks by 12-15 MB * The initrd creation can be 28 % faster (1m45s instead of 2m26s on Pi Zero 2) * Boot time is slightly faster Another big reason for this change: In case of a failure in the initrd, busybox provides a nice interactive shell that is much easier to use than dash. Since busybox is inside the initrd, more tools for debugging are available. Dracut in Ubuntu 26.10 (stonking) has these changes included and uses busybox from the busybox package. The busybox source package in Ubuntu 26.10 (stonking) dropped busybox-initramfs in favor on the normal busybox package. This SRU patches Dracut to use busybox-initramfs. The changes to the busybox package only affect the busybox-initramfs binary and therefore reduces the blast radius. [ Test Plan ] * Check that rust-coreutils in not included in the initrd. This can be done by running: ``` sudo 3cpio -tv /boot/initrd.img | grep cargo ``` This grep should give no result on a fixed system, but show all aliases on an effected system. * The upstream test suite has been changed to test with busybox. A busybox specific autopkgtest test has been added. [ Where problems could occur ] * The initrd might use a binary from rust-coreutils that busybox- initramfs does not provide. Then the initrd would still include the big multicall rust-coreutils binary and all size/speed improvements will become void. * The initrd might use command flags that are not supported by busybox. I have checked all command invocations in the whole dracut source code to check that all used parameters are supported. The worst case scenario: The system would not boot any more. * An external Dracut module might use command flags that are not supported by busybox. In contrast to initramfs-tools the Dracut package provides most modules (like systemd, networking, cryptsetup, mdraid, etc). The worst case scenario: The system would not boot any more. * Bugs in the package installation procedure might be triggered by the upgrade like too small /boot partition or silently produces truncated initramfs (see bug #2157789). There was a security update recently that carried the same risk. [ How to revert ] In case of a regression, users can configure dracut to omit busybox: ``` echo 'omit_dracutmodules+=" busybox "' | sudo tee /etc/dracut.conf.d/omit-busybox.conf sudo dracut -f ``` Alternatively they can remove the prefer_dracutmodules+=" busybox " line from /usr/lib/dracut/dracut.conf.d/01-debian.conf (which would be reverted on the next dracut-core package update). [ Other Info ] * All the Dracut changes have been landed upstream and are tested by the CI there as well. * I have checked all command invocations in the whole dracut source code to check that all used parameters are supported. * I know that this is a bigger patch set and the risk of regression is higher than other SRUs I have done. I am committed to follow-up possible needed fixes. + * Test packages have been published in + https://launchpad.net/~bdrung/+archive/ubuntu/dracut + [ Original report ] Unless there’s a clear reason to change, we should continue using busybox in the initrd due to its smaller footprint. Prior to 25.10, Ubuntu images used different coreutils. gnu coreutils in the root filesystem and busybox in the initramfs. We can keep this approach, with rust-coreutils replacing GNU coreutils.
** Description changed: [ Impact ] The change to rust-coreutils in the initramfs was accidental, only the userspace gnu coreutils was supposed to be replaced with rust-coreutils. We do not want to increase the size of initramfs. This has a much larger impact on devices with small boot partition like Raspberry Pi where we are not able to hold 2 sets of Boot Assets for A/B Boot. Some measurements have been done in https://discourse.ubuntu.com/t/dracut-news-for-ubuntu-26-04-lts-and-26-10/87327/2 Summary: * The compressed initrd size shrinks by 6-8 MB * The uncompressed initrd size shrinks by 12-15 MB * The initrd creation can be 28 % faster (1m45s instead of 2m26s on Pi Zero 2) * Boot time is slightly faster Another big reason for this change: In case of a failure in the initrd, busybox provides a nice interactive shell that is much easier to use than dash. Since busybox is inside the initrd, more tools for debugging are available. Dracut in Ubuntu 26.10 (stonking) has these changes included and uses busybox from the busybox package. The busybox source package in Ubuntu 26.10 (stonking) dropped busybox-initramfs in favor on the normal busybox package. This SRU patches Dracut to use busybox-initramfs. The changes to the busybox package only affect the busybox-initramfs binary and therefore reduces the blast radius. [ Test Plan ] * Check that rust-coreutils in not included in the initrd. This can be done by running: ``` sudo 3cpio -tv /boot/initrd.img | grep cargo ``` This grep should give no result on a fixed system, but show all aliases on an effected system. * The upstream test suite has been changed to test with busybox. A busybox specific autopkgtest test has been added. [ Where problems could occur ] * The initrd might use a binary from rust-coreutils that busybox- initramfs does not provide. Then the initrd would still include the big multicall rust-coreutils binary and all size/speed improvements will become void. * The initrd might use command flags that are not supported by busybox. I have checked all command invocations in the whole dracut source code to check that all used parameters are supported. The worst case scenario: The system would not boot any more. * An external Dracut module might use command flags that are not supported by busybox. In contrast to initramfs-tools the Dracut package provides most modules (like systemd, networking, cryptsetup, mdraid, etc). The worst case scenario: The system would not boot any more. * Bugs in the package installation procedure might be triggered by the upgrade like too small /boot partition or silently produces truncated initramfs (see bug #2157789). There was a security update recently that carried the same risk. [ How to revert ] In case of a regression, users can configure dracut to omit busybox: ``` echo 'omit_dracutmodules+=" busybox "' | sudo tee /etc/dracut.conf.d/omit-busybox.conf sudo dracut -f ``` Alternatively they can remove the prefer_dracutmodules+=" busybox " line from /usr/lib/dracut/dracut.conf.d/01-debian.conf (which would be reverted on the next dracut-core package update). [ Other Info ] * All the Dracut changes have been landed upstream and are tested by the CI there as well. * I have checked all command invocations in the whole dracut source code to check that all used parameters are supported. - * I know that this is a bigger patch set and the risk of regression is - higher than other SRUs I have done. I am committed to follow-up possible - needed fixes. + * I know that this is a bigger patch set (sorry for the 36 patches) and + the risk of regression is higher than other SRUs I have done. I am + committed to follow-up possible needed fixes. - * Test packages have been published in + * Test packages have been published in https://launchpad.net/~bdrung/+archive/ubuntu/dracut [ Original report ] Unless there’s a clear reason to change, we should continue using busybox in the initrd due to its smaller footprint. Prior to 25.10, Ubuntu images used different coreutils. gnu coreutils in the root filesystem and busybox in the initramfs. We can keep this approach, with rust-coreutils replacing GNU coreutils. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2150657 Title: Use busybox instead of rust-coreutils in initrd To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/busybox/+bug/2150657/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
