It would have to match the CPU, ASIC and Bootloader yes. That is also the problem we mostly have; one or more of those don't match up.
FastIron probably uses a monolithic application, it really depends on what SDK they got from Broadcom.
Generally there are a few components to it:
- Bootloader, this brings up the CPU and Memory and sometimes storage
- OS, this runs all applications
- Application(s), might be many smaller ones or one big fat 'do it all'
ICOS and QNOS generally do:
- U-boot as a loader
- Linux as the OS
- A few kernel modules and a switch application for the rest, and some extra applications for SSH, the CLI, and HTTP
Previously VxWorks was more popular, and that can do without U-boot on certain platforms.
- Some other loader as a loader
- VxWorks with embedded application, one big monolithic blob
- Maybe some storage with 'extra' applications, but that is not common with VxWorks
Modern NOS, ONL, SONiC etc, they do it differently
- Bootloader and/or Firmware, can even be PC-style BIOS or UEFI and GRUB instead of U-Boot
- Linux OS
- Perhaps a bunch of docker containers
- Abstraction interface which is the only place the 'magic' NDA software from the Switch ASIC vendor lives
- Common applications for switching, routing management
Many switches that try to deal with a market where Cisco is big try to mimic their CLI and with that some of the architecture. It's also faster and cheaper to just write all those 'embedded' things into one big do-it-all application. At the same time, it's less flexible, has a bigger risk (if that one big application crashes, the whole thing no longer works and has to reboot/reset), and for every switch hardware you have to recompile the entire thing. This is where SDKs at different levels come in. For the 'fat' applications they might use a 'do everything'-SDK, but for more modern approaches they might use a super smal ASIC-only SDK, or a somewhat bigger abstraction-SDK (i.e. with Linux Switchdev), or a complete SAI binary.