[artix-general] Kernel 6.16.1

Javier je-vv at e.email
Wed Aug 20 12:15:42 CEST 2025


On 2025-08-19 02:34 AM, artist wrote:
> For the fallback I use command:
> 
> booster build --universal --force /boot/booster-linux-fallback.img
> 
> I haven't checked the docs on this but it seems to work similar when I used it.
> 
> artist

Thanks for sharing @artis !  And sorry for late answer.

tl;dr:  The man page sort confirms your use, there a few not so nice things which don't prevent its usage, see the end for them.  And 37M with "universal" looks good compared to ~150M:

> % ls -l /boot/booster-linux*.img
> -rw-r--r-- 1 root root  37M Aug 20 03:20 /boot/booster-linux-fallback.img
> -rw-r--r-- 1 root root 6.2M Aug 20 03:20 /boot/booster-linux.img

What "--universal" adds, according to the booster man page, is:

> --universal Add wide range of modules/tools to allow this image boot at different machines.

It can as well be set in the config file, but that's not what one wants:

> universal  is  a  boolean flag that tells booster to generate a universal image. By default booster generates a host-specific image that includes kernel modules used at the current host. For example if the host does not have a TPM2 chip then tpm modules are ignored. Universal image includes many kernel modules and tools that might be needed at a broad range of hardware configurations.

Not sure if similar in nature to the fallback mkinitcpio generated images, but for sure more than when not applying "--universal".

As for fallback if looking at "linux.preset" one realizes that for the fallback image generation the "-S autodetect" flag is the only thing added, which according to the mkinitcpio man page:

>        -S, --skiphooks hooks
>            Skip hooks when generating the image. Multiple hooks should be comma-separated. This option can be specified multiple times.

means removing the "autodetect" hook.  This hook is what allows the default image to be way shorter than the fallback one, since:

> % mkinitcpio -H autodetect
> ==> Help for hook 'autodetect':
> This hook shrinks your initramfs to a smaller size by autodetecting the needed
> modules. Be sure to verify included modules are correct and none are missing.
> This hook must be run before other subsystem hooks in order to take advantage
> of auto-detection.  Any hooks placed before 'autodetect' will be installed in
> full.

As mentioned before, although the default mkinitcpio image is a bit more than twice as much the default booster image, it has a reasonable size of 14M, nothing particularly concerning.  So that's pretty much OK.  What got really big is the fallback mkinitcpio image.  And as "mkinitcpio" hadn't change recently that I'm aware of, but linux (the kernel) has, it might be now artix is building more modules than before, or that linux added a bunch of new stuff that artix decided to build as  modules, and now mkinitcpio is finding those bunch of modules.  Or it might be a bunch of pre existent modules on prior versions of linux were renamed (I believe this is not possible given linux policies to not change anything if it's not broken or without a good reason).  The thing is that if not trying to auto detect the needing modules, mkinitcpio is most probably adding a bunch of unneeded stuff which most probably it was not adding before.

But all in all, although removing the "autodetect" hook on mkinitcpio might not be 1:1 equivalent to adding the flag "universal" to booster, since booster seems to be more effective on filtering out not needed stuff, and even with the "universal" flag there seems to be some reasoning on which might be the modules required on different machines for the specific linux version, and not just selecting every module found.

So I'm convinced with booster.  The sad thing is that I believe booster by being written in go can support only x86 and arm (which to be honest covers what artix does, but it doesn't seem to be hope in the horizon for risc-v.

Now the not so nice things:

- Missing a pacman hook and the helper to generate the booster fallback image when in need.  The option is to whether modify the current scripts (which will get overwritten on booster upgrades), or creating new separate scripts while not available.  It'd be nice if artix would include it in both scripts, "regenerate_images" and "booster-install" and with the same command as the non fallback one.  I'm inclined to modify them both, and have and old copy of both to copare them in case of changes.

- Not nicely integrated with "grub-mkconfig".  See: https://github.com/anatol/booster/issues/29.  The best work around, though still not perfect, is https://github.com/anatol/booster/issues/29#issuecomment-1148497160, which consists on modifying "/etc/grub.d/10_linux" to properly identify booster images as "initrd_real" ones, but that is not enough, pretty close.  I had to also remove the booster particular entry detection at bottom so that the booster image doesn't get duplicated, and instead a detection entry for the booster fallback image and add it as a "fallback" entry.  With all that grub-mkconfig works wonders, at least as I'd expect it.  It'd be nice if artix would add "booster-${version}.img" "booster-${alt_version}.img" into that array, which is what I did, although most probably they'll get overwritten as well.  It would be even nicer if that would be adopted upstream, but I don't even know if upstream is arch, grub, or what else...  See PS for a snapshot of the final grub.cfg I got...  So far all these changes might get overwritten upon upgrade.  I do have copies on "mine" sub-dirs though.

- Non default keyboard layers are impacted by not being able to use the vconsole flag as I already mentioned, see https://github.com/anatol/booster/issues/234.  For this there's no work around unfortunately, but one can live with it if having whether a numpad or if one knows what the en-us mapping layout is even though the keyboard one is different.

- Booster is a world package, so not treated exactly the same as mkinitcpio which is a system package.  The good thing is that although a system package mkinitcpio can be removed, but I'm not sure if there's a difference in upgrades urgency or things like that given the difference.

- Written in Go, which I find uncommon for system software such as this.  I just have to deal with it, :)

- I prefer GPL license and even more if GPL+ or AGPL+, dracut-ng has a GPL-2 one which although not GPL3 at least I'd prefer it to MIT which is not bad but not GPL, but ohh well, dracut is not as simple and probably to get it to the nice small footprint of booster several modules configurations would be needed I guess, and it won't ever match the booster speed on generation I'd guess, and its main advantage is being written in C.  I'm sticking with booster any ways.

Once again @artis, many thanks !

-- 
Javier


PS:  My final gub.cfg after my changes on grub.d/10_linux...

> ### BEGIN /etc/grub.d/10_linux ###
> menuentry 'Artix Local GNU + Linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-6767f8c9-a707-4ec2-ab2b-13d6532c9a03' {
>     load_video
>     insmod gzio
>     insmod part_gpt
>     insmod ext2
>     search --no-floppy --fs-uuid --set=root f0e4d553-eb92-4fa6-bf02-cc183fdeb586
>     echo    'Loading Linux linux ...'
>     linux   /vmlinuz-linux root=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 rw rootwait rootfstype=ext4 rootflags=commit=60,discard cryptdevice=UUID=cbfdfff2-af60-46b1-b29b-df0e5667c108:root:allow-discards,no-read-workqueue,no-write-workqueue rd.luks.options=discard,no-read-workqueue,no-write-workqueue rd.luks.name=cbfdfff2-af60-46b1-b29b-df0e5667c108=root  nouveau.config=NvGspRm=1 resume=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 resume_offset=4161536 iommu=pt intel_iommu=on loglevel=3 quiet
>     echo    'Loading initial ramdisk ...'
>     initrd  /intel-ucode.img /booster-linux.img
> }
> submenu 'Advanced options for Artix Local GNU + Linux' $menuentry_id_option 'gnulinux-advanced-6767f8c9-a707-4ec2-ab2b-13d6532c9a03' {
>     menuentry 'Artix Local GNU + Linux, with Linux linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-6767f8c9-a707-4ec2-ab2b-13d6532c9a03' {
>         load_video
>         insmod gzio
>         insmod part_gpt
>         insmod ext2
>         search --no-floppy --fs-uuid --set=root f0e4d553-eb92-4fa6-bf02-cc183fdeb586
>         echo    'Loading Linux linux ...'
>         linux   /vmlinuz-linux root=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 rw rootwait rootfstype=ext4 rootflags=commit=60,discard cryptdevice=UUID=cbfdfff2-af60-46b1-b29b-df0e5667c108:root:allow-discards,no-read-workqueue,no-write-workqueue rd.luks.options=discard,no-read-workqueue,no-write-workqueue rd.luks.name=cbfdfff2-af60-46b1-b29b-df0e5667c108=root  nouveau.config=NvGspRm=1 resume=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 resume_offset=4161536 iommu=pt intel_iommu=on loglevel=3 quiet
>         echo    'Loading initial ramdisk ...'
>         initrd  /intel-ucode.img /booster-linux.img
>     }
>     menuentry 'Artix Local GNU + Linux, with Linux linux (fallback initramfs)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-6767f8c9-a707-4ec2-ab2b-13d6532c9a03' {
>         load_video
>         insmod gzio
>         insmod part_gpt
>         insmod ext2
>         search --no-floppy --fs-uuid --set=root f0e4d553-eb92-4fa6-bf02-cc183fdeb586
>         echo    'Loading Linux linux ...'
>         linux   /vmlinuz-linux root=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 rw rootwait rootfstype=ext4 rootflags=commit=60,discard cryptdevice=UUID=cbfdfff2-af60-46b1-b29b-df0e5667c108:root:allow-discards,no-read-workqueue,no-write-workqueue rd.luks.options=discard,no-read-workqueue,no-write-workqueue rd.luks.name=cbfdfff2-af60-46b1-b29b-df0e5667c108=root  nouveau.config=NvGspRm=1 resume=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 resume_offset=4161536 iommu=pt intel_iommu=on loglevel=3 quiet
>         echo    'Loading initial ramdisk ...'
>         initrd  /intel-ucode.img /booster-linux-fallback.img
>     }
>     menuentry 'Artix Local GNU + Linux, with Linux linux (recovery mode)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-recovery-6767f8c9-a707-4ec2-ab2b-13d6532c9a03' {
>         load_video
>         insmod gzio
>         insmod part_gpt
>         insmod ext2
>         search --no-floppy --fs-uuid --set=root f0e4d553-eb92-4fa6-bf02-cc183fdeb586
>         echo    'Loading Linux linux ...'
>         linux   /vmlinuz-linux root=UUID=6767f8c9-a707-4ec2-ab2b-13d6532c9a03 rw single rootwait rootfstype=ext4 rootflags=commit=60,discard cryptdevice=UUID=cbfdfff2-af60-46b1-b29b-df0e5667c108:root:allow-discards,no-read-workqueue,no-write-workqueue rd.luks.options=discard,no-read-workqueue,no-write-workqueue rd.luks.name=cbfdfff2-af60-46b1-b29b-df0e5667c108=root  nouveau.config=NvGspRm=1
>         echo    'Loading initial ramdisk ...'
>         initrd  /intel-ucode.img /booster-linux-fallback.img
>     }
> }
> 
> ### END /etc/grub.d/10_linux ###


More information about the artix-general mailing list