Next up in Linux's initialization sequence is its harvesting of random numbers, in case you've got something to secure or want to have fun! In short this involves harvesting some initial sources of randomness.
Depending on build flags it 1st mixes in some uninitialized RAM. Then it feeds in randomness provided by the CPU (via a couple CPU-specific routines) a fixed number of times, followed by the configured UTS-name & commandline args. Then it might reseed or "credit" the entropy counter.
1/3
To mix some bytes of entropy into this "pool" it invokes the Blake2s hash function. This in turn splits the bytes up into blocks adding a counter & some magic numbers before repeatedly shuffling the bits around. Or its specially optimized on ARM32 or x86 CPUs.
There's a flag (and getter macro) for whether the CRNG is ready, in which case another helper which (once said queues are ready) enqueues itself to be called at a computed time, reinits blake2s hashing with CPU-specific seeds, ...
2/