/etc/mkinitcpio.conf.pacnew: systemd and other differences

From here I have this hooks-line in /etc/mkinitcpio.conf, created 13.10.2025:

HOOKS=(base udev autodetect microcode kms modconf block keyboard keymap consolefont plymouth filesystems fsck)

Thanks again @cscs and @Teo!

Actually I have a file /etc/mkinitcpio.conf.pacnew, created about two months later 12.12.2025 with this hooks-line:

HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)

What happened and how to proceed with these files?
Thank you!

Upstream changed by default to systemd based hooks.
Here is the table comparison.

You can leave it as is, i doubt the old hooks will be deprecated in some more years to come. But if you change to systemd your init will be a bit smaller and the system will boot 1-3 seconds faster.

Note that if you use encryption you will also need an edit in the kernel line because of the difference in the syntax, otherwise the system will not boot after the change!

1 Like

Thank you @Teo,
I don’t use encryption.

So remove the file /etc/mkinitcpio.conf.pacnew and that’s it?

Well you can try the new hooks. Just look at the table on the arch wiki for how to replace. And have a bootable usb to chroot if something goes wrong.

1 Like

The ones from /etc/mkinitcpio.conf.pacnew or those from /etc/mkinitcpio.conf? Anything against removing the .pacnew-file?

New hooks are in the .pacNEW of course :slight_smile:
Me personally, i have also ditched the abomination called plymouth but you can add it/keep it if you want.

2 Likes

Hmm,

and my system actually uses the .pacNEW or the other ones? I’m absolutely confused now and appreciate your recommendation for my next step:

  1. remove the file /etc/mkinitcpio.conf.pacnew?
  2. put the content from /etc/mkinitcpio.conf.pacnew into /etc/mkinitcpio.conf and after that remove /etc/mkinitcpio.conf.pacnew?
  3. Something else …

I missed the text flying up the screen as it boots up, so I also purged plymouth… it never had time to show my splash screens anyway!

HOOKS=(base systemd autodetect microcode modconf kms keyboard keymap sd-vconsole block filesystems fsck)

Works nicely for me.

You need to read a bit about mkinit and pacnews. You never blindly delete or copy .pacnew over, you inspect, analyse, compare and merge.
Until then leave it be. Your system uses the current file, not the pacnew.

Here is some reading

And a topic where a user learned to deal with his pacnews and asked for many of the common files

And THE Tutorial:

3 Likes

A .pacnew file, regardless of what part of the system it comes with, is the newest default version of the configuration file as it comes from upstream. It has the .pacnew filename suffix because an update will never overwrite your existing configuration files.

So the idea is that you look at the .pacnew file and compare it to the existing file, and — if necessary — merge the settings from the new file into your existing configuration file.

3 Likes

Thanks a lot @Aragorn, the part

was really helpful for me! The comparison you mentioned, I did in my initial post. I’m thinking to use the Hooks from @Ben

Do you agree?

@andreas85: Just found your pacnew-tutorial. Could you perhaps add a section mkinitcpio.conf.pacnew? As discussed f.e. here there are lots of chances to create trouble.strong text

1 Like

I would agree - though I did add amd64, because I have a ryzen 5600G (edited from my post).

Not entirely. The keymap hook is redundant when using sd-vconsole.

Also, the basehook is essentially pointless now. With the systemd hook, the only thing base still offers is an emergency busybox shell, but — crucially — that emergency shell is locked by systemd for security reasons, and requires a special boot parameter to unlock.

3 Likes

Ok, we’ve got some experts in the house :folded_hands:t2:

HOOKS=(systemd autodetect microcode modconf kms keyboard block filesystems fsck)

How’s this?

TBH I was lazy to research much, I just left base as it was there in the pacnew.

Also I added COMPRESSION_OPTIONS=(-T0 -3)

No real issues with ‘redundant’ though, just feeling a slight urge to mess with it.

That one’s good. :wink:

If you use btrfs for the filesystem that /boot is on, then you should use “COMPRESSION=cat”, and therefore no compression options should be set, because there is no compression with cat. — it is short for “concatenate”, just as in the event of the shell command.

2 Likes

Noticed I had sd-vconsole as well and also have no fsck in mine.Removed sd-vconsole and left fsck out as I am pretty sure was not needed when using xfs.

sd-vconsole replaces both keymap and consolefont, and is the recommended hook if you use the systemd hook instead of base and udev.

fsck is still needed with xfs. It is however not recommended with btrfs, given that btrfs uses a very different filesystem integrity check all of its own, and it uses that every time the filesystem is mounted.

5 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.