Looking at the bootup sequence for Linux's scheduler per each individual CPU core in your machine...
It 1st retrieves a CPU variable holding the runqueues & transiently grabs a lock on it, clears some counts & sets a timestamp, invokes a helper to init some properties & a lock for the Completely Fair Scheduler (CFS), invokes another helper to init some linkedlists/bitflags/priorities/counters/lock (some of which can be compiletime-enabled) for the RealTime scheduler, ...
1/3?
... invokes another helper to init some counters & other properties (bandwidth ratio via another helper) for the DeadLine scheduler, inits more properties (some via a helper, & a couple more in turn) if fair-group scheduling's compile-time enabled, invokes a couple more helpers if compile-time enabled to retrieve a timesamp it stores & to init some more RT properties, sets the next scheduling class to be the idling one, sets various other properties, creates a list for the CFS, ...
2/3?