My vmlinux is 12.4MB, which incorporates the initramfs (and all firmware/modules). Standard Linux kernel as downloaded from
kernel.org (I track the 4.14 series for its longer
Jan 2024 EOL date). Downloading the kernel source and building with initramfs incorporated takes less than a hour for the first run, a few minutes for repeat rebuilds (changes) - which is relatively slow as my laptop is just a 4GB 2 core (make -j3). Built with localyesconfig ... so device specific (which in itself is a security feature). For kernel point releases I just download, extract, copy in my refined kernel .config and initramfs_data.cpio, make menuconfig, save that and make -j3. I also build/run with the latest stable
busybox (presently 1.31.1).
I use Fatdog's devX as the toolchain (means to build it). I also used a cut-down version of Fatdog's "Bulldog" initrd for the original initramfs.
I did have overlayfs and squashfs support being built into the kernel (along with having mksquashfs and unsquashfs installed), but more recently have dropped those. I just rebuild for any changes, and could always install/use rsync for persistence/changes if needed/desired.
21Mb initial ram used after bootup.
Includes :
Auto wifi net connects on bootup, after prompting for the usb to be unplugged
calcurse for diary/calendar
mc for file manager, text editor, program launcher (F2 user menu)
OpenSSH (so full version that can sshfs mount ..etc.)
Full Telnet version (busybox version is too limited for my needs)
encfs ... so DATA folder on hdd is encrypted (if laptop lost/stolen)
screen (terminal multiplexor)
simple-mtpfs (for mounting my android phone via usb)
sshfs for mounting the android phone via wifi/LAN (using SSHelper installed on the phone).
lynx - primarily just used for pasting copied text such as url's into my phone via SSHelpers copy/paste web page interface.
With that I typically boot, load up screen, load mc in a window, and then connect to hashbang via a ssh tunnel from where I can irc, email, surf, visit BBS's ..etc. I also tend to wifi mount (sshfs) my android phone, so if there's a url posted in irc or wherever I can use screen's copybuffer to copy that url and paste it into my phone's clipboard ... and then long press the chrome's url bar to paste that link. I also use the phone for playing videos/sounds etc. (and google speak for doing searches etc.). I attach the usb to the phone primarily so its charging from the laptop whilst being used.
I encode (encrypt) the .ssh folder (keys), along with having passwords for private key access, so if the usb is lost/stolen both the ssh servers and keys are obscured.
Works well for me, but is old-school (mc/screen/tui/cli). Somewhat gentoo style build methodology. I've recompiled some things using static, but just copied other things over from Fatdog along with the associated libs. It's my primary (default) boot, and boots in a second or so (few seconds before wifi net connected). My other boot is Fatdog i.e. the more common gui type desktop - for when I want a full gui type desktop for word processing/google, video editing, whatever. I did have kexec installed so I could directly load fatdog without having to loop back through BIOS, but found that it wasn't any quicker using kexec than simply ctrl-alt-del'ing and booting Fatdog via BIOS.