One possibility is that your /boot partition is completely full, and when you last updated the kernel mkniticpio tried to generate new images, but didn't have enough space, and you were left with a bad (truncated) initramfs.
The solution would be to chroot into your filesystem with an Arch Linux LiveUSB, clean up /boot of any unneeded files, and then manually regenerate the initramfs.
Detailed step by step:
- First, boot an Arch Linux LiveUSB.
- Identify your
/ and /boot partitions with fdisk -l
- Mount the root partition:
mount /dev/{rootpartition} /mnt/
- Mount
/boot into your root partition: mount /dev/{bootpartition} /mnt/boot
- Chroot into your system:
arch-chroot /mnt
- Remove existing
initramfs images, and any unnecessary vmlinuz kernels from /boot/.
- Regenerate the initramfs with
mkinitcpio -P
Pay attention to the output of the last command. If you're getting bsdtar errors this likely means /boot is still full. You can use df -h /boot to check disk usage.
If that's the case, you can either increase the size of /boot, or check how the initramfs is being generated in /etc/mkinitcpio.conf, and remove any modules you don't need from your configuration. In particular, if you're on NVIDIA, you may wish to remove the modules listed in this section if you're not facing display issues.