minitramfs is a minimal initramfs generator, in the "suckless" style: it does exactly what I need. You need something else? Patch it, it's only 85 lines. Or use mkinitcpio or dracut, I won't feel bad. Features: - uses existing system tools - LUKS password unlock - SSH remote unlock - firmware loading - extremely fast initramfs creation with no temporary root: COMPRESSOR=cat: ~80ms cold cache, ~30ms warm COMPRESSOR="lz4 --best": 1.6s - udev/mdev-free module loading - minimal runtime overhead - minimal code: 85 SLOC total (init + make + Makefile + unlock) Drawbacks: - uses existing system tools - requires exact module list Usage: 0. Read (skim) https://wiki.gentoo.org/wiki/Custom_Initramfs. 1. Install busybox, dropbear, e2fsprogs for e2fsck, and C toolchain for gen_init_cpio. 2. Adjust ./init as required: a) Adjust networking as required. For example, use static IP instead of DHCP, or you don't use eth0, but remember that myinitramfs has no udev, so no predictable interface names. For PCI path based naming, try something like $(cd /sys/bus/pci/devices/0000:08:00.0/net; echo *). b) Adjust UUID (most likely yours is not the same as mine) c) Change or remove fsck for non-ext4 roots d) Put whatever you want: usr mount, NFS root, whatever. 3. Adjust ./make as required. Mainly, put your needed commands in gen_cpio_list. 4. Customize cpio_list.txt with your required non-executable files. 5. Add your public keys to authorized_keys. 6. make && sudo make install 8. Configure your boot loader/manager to use initramfs.img. 9. Use as usual. For remote unlock, SSH to port 2222 and "exec unlock".