Dracut -> mkinitcpio; issues/hints

Preparing to change from dracut to mkinitcpio because the zfs modules on both are broken for my use case, but the zfs module for mkinitcpio is less broken and I’ve already hacked it to work on manjaro, and since I would be rather be running eos and would rather get rid of the manjaro install, this is what I need for the moment so I can progress converting my eos ext4 install to zfs install.

Any gotchas or other hints in general for the conversion from dracut to mkinitcpio?

The installation page says it can be done “easily”, but I guess that is more easy for those familiar with both, and I am only a little familiar.

I didn’t find anything specific in the eos wiki or the arch wiki.

Perhaps @dalto can help, he know some zfs.

Thanks. I’m sure dalto knows how both work, and the interactions with a transform, however I didn’t want to hassle him directly unnecessarily. This isn’t a zfs specific thing, zfs is just one reason I’m migrating so I can better manage the existence of multiple deep zfs roots in one zpool. After I have my current partial solution working a little better and broken and fixed a few times, I will also be better informed to try my luck with the dracut module. Better understanding of both dracut and mkinitcpio is also an advantage of the process of transition. I already have some experience with mkinitramfs from debian which is similar to mkinitcpio.

I’m just after any hints, tips, gotchas that might arise with a generic migration on one to the other, and also back. I’m sure I would prevail in the end, but pre-warned of issues makes for a smoother, less frustrating transition. Of course, it might be trivial, and I’m wasting people’s time … that is always a possibility, but since I’ve asked here, I would also report back here anything interesting along the way.

The basic process is very simple.

For systemd-boot:

  • Install kernel-install-mkinitcpio from the AUR
  • Configure mkinitcpio.conf
  • Run sudo reinstall-kernels

For grub:

  • Remove eos-dracut
  • Install mkinitcpio
  • Remove dracut
  • Configure mkinitcpio.conf
  • Run sudo mkinitcpio -P

The reason we don’t have instructions is that the “configure mkinitcpio.conf” step is specific to you hardware and needs. There is not an easy way to explain how to do that. However, if you already know how to do that part the steps are very straightforward.

The biggest “gotcha” is that you need to be careful not to remove dracut before installing mkinitcpio or you may remove your kernels.

4 Likes

Thanks @dalto, the grub gotcha was why I asked, although I would have balked at removing kernels and reconsidered the process. I have my existing manjaro mkinitcpio.conf, and I was planning on copying the existing working from the eos install initrds, and kludging some grub menu entries for them before jumping off the cliff. Have to be more careful since this is an ext4 install, so no snapshots as fallback, although reinstall wouldn’t be that bad, maybe I’ll bundle up the ext4 install for backup, < 6GB.

I recall, IIRC dalto, saying that the initramfs was big because of nvidia drivers? I’m using amdgpu, and seems like default initramfs for EOS is similarly big, however manjaro is much smaller, so room to investigate for improvements, this is with both using mkinitcpio, and the same HOOKS:

HOOKS=(zfshost base udev sleep autodetect modconf kms keyboard keymap block zfs filesystems fsck)

Manjaro:

$ ls -l /alt/boot/init*img
-rw------- 1 root root 107688020 Jul 25 14:57 /alt/boot/initramfs-6.1-x86_64-fallback.img
-rw------- 1 root root  69097344 Jul 25 14:56 /alt/boot/initramfs-6.1-x86_64.img

EOS:

$ ls -l /boot/init*lts*img
-rw------- 1 root root 69993686 Jul 25 15:05 /boot/initramfs-linux-lts-fallback.img
-rw------- 1 root root 40022000 Jul 25 15:11 /boot/initramfs-linux-lts.img

EOS saved dracut initramfs:

$ ls -l /boot/dracut/init*lts*img
-rw------- 1 root root 45282474 Jul 23 16:36 /boot/dracut/initramfs-linux-lts-fallback.img
-rw-r--r-- 1 root root 19522509 Jul 23 16:36 /boot/dracut/initramfs-linux-lts.img

So a little work to get down to dracut level, and more to get down to manjaro level.

Eh, I am reading that right? It looks like Manjaro is the largest, followed by EOS mkinitcpio, with dracut being the smallest.

Also, dracut with nvidia can me much larger than any of those.

Seems like I need my eyes examined, or at least use ls -lh. I was imagining another order of magnitude it seems.

1 Like

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