minitramfs is a minimal initramfs generator. I use this on my desktop Gentoo system. For my laptop Arch system, I use mkinitcpio. Basically, it's a suckless initramfs generator: it does exactly what I need. You need something else? Patch it, it's only 117 lines. Or use mkinitcpio or dracut, I won't feel bad. Features: - uses existing system tools - password LUKS unlock - SSH remote unlock - firmware loading (trivial, done by kernel) - extremely fast initramfs creation: compression off: ~70ms cold cache, ~30ms warm; lz4 --best: 1.6s - udev/mdev-free module loading - no temporary files during creation - extremely fast initramfs runtime: ~zero overhead compared to direct kernel loading - minimal code: 117 SLOC total (init + make + Makefile + unlock) - pure POSIX shell + POSIX Makefile Drawbacks: - uses existing system tools - pure POSIX shell + POSIX Makefile Usage: 0. Read (skim) https://wiki.gentoo.org/wiki/Custom_Initramfs. 1. Install busybox, dropbear, e2fsprogs if you use ext4, and C toolchain for building 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: a) Put your needed commands in gen_cpio_list. b) Select your desired compressor at the end. Try make comp_bench for a comparison. summary: lz4 is usually best, xz if storage is important above all (saves a few MB but adds ~0.5s to boot), gzip is mediocre on both size and speed, lzo is usually worse than gzip, never use bzip2 or lzma. 4. Customize cpio_list.txt with your required files. Remember that commands must go in ./make (for library detection), and device files except /dev/console and non-empty directories can be omitted. 5. Add your public keys to authorized_keys. Note that dropbear only supports RSA and ECDSA keys. 6. make 7. sudo make install 8. Configure your boot loader/boot manager to use initramfs.img. 9. Use as usual. For remote unlock, SSH to port 2222 and "exec unlock".