Firstly, suspend might be an option compared to hibernation for your subsequent startups if you can suffer a slow startup the very first time.
Otherwise look up “Linux from scratch” .
A lot of boot time is decompressing and mounting initrd, loading modules there, mounting the root filesystem, jumping to that.
Build a kernel that has exactly the minimum modules needed for your system, skip initrd and jump straight to a root filesystem and call your init binary (it can be BusyBox even) do exactly what’s needed there to get your network+graphics card up and running with a single shell script, done.
Also look at COW filesystems. Read only base with an overlay file for writes. Discard that file on each boot and you basically have a system that is always at the same state on startup.
Firstly, suspend might be an option compared to hibernation for your subsequent startups if you can suffer a slow startup the very first time.
Otherwise look up “Linux from scratch” .
A lot of boot time is decompressing and mounting initrd, loading modules there, mounting the root filesystem, jumping to that.
Build a kernel that has exactly the minimum modules needed for your system, skip initrd and jump straight to a root filesystem and call your init binary (it can be BusyBox even) do exactly what’s needed there to get your network+graphics card up and running with a single shell script, done.
Also look at COW filesystems. Read only base with an overlay file for writes. Discard that file on each boot and you basically have a system that is always at the same state on startup.