I have 2 KaOS installations
One on uefi and using systemd-boot bootloader.
The other is on bios-legacy and using grub2 bootloader.

The default HOOKS line in /etc/mkinitcpio.conf on both is using udev and looks like
HOOKS="base udev autodetect modconf block keyboard keymap resume filesystems"

I tried to change HOOKS to systemd on both systems.
I have no problem on the bios-legacy system and the HOOKS line is....
HOOKS="systemd autodetect modconf block keyboard keymap filesystems fsck"

But when I tried to change the uefi system HOOKS line similarly to systemd, the system will not boot and remain stuck with a black screen. I have to chroot into the system and reverse the change back to udev in the HOOKS line and the system boots without problem.

So currently my HOOKS line in /etc/mkinitcpio.conf in the working systems are...

bios-legacy grub
HOOKS="systemd autodetect modconf block keyboard keymap filesystems fsck"

uefi systemd-boot
HOOKS="base udev autodetect modconf block keyboard keymap filesystems"

My question: Why would systemd HOOKS not work on uefi but on bios-legacy?
The only other difference besides uefi/bios-legacy is systemd-boot and grub2 bootloaders.

Thanks.

AFAIK, base and udev are always required, see https://git.archlinux.org/mkinitcpio.git/tree/mkinitcpio.conf#n27
And KaOS is set up for busybox, not systemd for mkinitcpio hooks, so a systemd hook is not part of it. (seems BIOS does not need base & udev, when autodetect is set).
Maybe this discussion is helpful:
https://wiki.archlinux.org/index.php/Talk:Mkinitcpio#Improvements_for_the_Common_hooks_table_and_section_about_systemd_hook

That's for the reply. I've seen these links and perhaps I am not proficient enough to understand what is written.
I'll let things stay as it is, after all both are working very well.

Cheers.