Schard hat dich ja schon "hingestoßen", wo und warum dieser Hook im initramfs-Image ausgeführt wird.
Der cleanup stößt eigentlich nur die beiden udevadm-Aufrufe in run_cleanuphook() an, diese sollten definitiv keine 30s benötigen.
Du kannst folgendes recht einfach testen (alles als root):
a) Sichere das Skript
cp /usr/lib/initcpio/hooks/udev /root/
b) Editiere das Skript in /usr/lib/initcpio/hooks/udev und füge ein paar Zusätze ein:
run_cleanuphook() {
msg ":: Start cleanup..."
udevadm --debug control --exit
udevadm --debug info --cleanup-db
msg ":: End cleanup..."
msg ":: Sleep another 20s. Time to read..."
sleep 20
}
Durch die msg "Start cleanup" kannst du nun kontrollieren, ob deine 30s jetzt wirklich durch das Abarbeiten dieser zwei Aufrufe verbraten werden, d.h. die msg "End cleanup" dürfte dann erst *nach* den 30s erscheinen.
Falls dem wirklich so ist, dann erhältst du durch die zusätzlichen --debug Optionen ggf. Hinweise auf Fehler (normaleweise erscheinen durch --debug eigentlich nur 2 kurze Zeilen zusätzlich bei mir hier).
Das zusätzliche sleep von 20s gibt dir ggf. die notwendige Zeit das zu lesen, abzuphotographieren etc.
c) Damit das wirksam wird mußt du ein neues initramfs-Image erstellen, z.B.:
mkinitcpio -g /boot/t-initramfs-linux.img
Im Bootloader-Eintrag kannst du durch temporäres Editieren (Grub: e auf dem Booteintrag drücken, Syslinux: die TAB-Taste) nun für die initrd=../initramfs-linux.img Zeile/eintrag eben t-initramfs-linux.img verwenden, also das oben erstellte neue Image. Das hat den Vorteil, das du weder die Bootloader-Konfig dauerhaft verändern müßtest noch dein "originales" initramfs-Image beeinträchtigt würde.
d) Hinterher kannst du einfach die gesicherte udev-Datei wieder zurückkopieren:
cp /root/udev /usr/lib/initcpio/hooks/
Und auch das testweise erstellte initrams-Image löschen: /boot/t-initramfs-linux.img
//Edit: Poste doch ggf. auch mal deine /etc/mkinitcpio.conf