In embedded systems, the system may also be without ramdisk - the root partition is directly mounted and init started from there.
Yes, but I do believe it is more common in older desktop systems, actually. It requires that the partition is not compressed, which makes it problematic on non-SSD Flash-based media with limited write cycles (especially SD cards), as the longevity of Flash can be severely negatively impacted unless it is mounted read-only. Mounting the filesystem read-only means additional integration work, since many services (and even core OS components like
mount) really don't expect that, and need workarounds. Plus, you need relatively lots of Flash for it. It is more common to have a smaller Flash but more RAM, with Flash containing a compressed image of the filesystem, making it inherently read-only; and since the filesystem is in RAM, it does not need to be read-only, making the userspace easier to integrate.
In some cases, like Live installations, you can combine the two using filesystem overlays. Basically, your base filesystem is mounted read-only, but is overlaid by a RAM-based filesystem overlay that contains the differences to the read-only data in RAM. These can be very useful in many cases, especially since you can easily detect modified files, and copy them to semi-permanent storage. The downside is that long-running overlays collect also unneeded data, especially filesystem metadata (access timestamps), so the memory needed by the overlay tends to slowly grow, making it difficult to estimate the long-term RAM requirements of such systems.
There is a BIG step missing in all these descriptions : the Memory initialisation ! Without that NOTHING will happen. And that is NOT part of the OS !
Very true. It is the part that comes before even early boot, before even the bootloader, and is part of the stuff one needs ROM for; the part equivalent to BIOS and EFI on desktop machines.
I glossed over it, because I've personally never implemented it myself; only stuff from the bootloader onwards. I'm glad you and DC1MC brought it up.
Joke: How can you tell the systemd haters?
If you knew what it really is and what it does to your system, you'd hate it too. There is a reason it is never used in embedded systems.
About a decade ago, the Linux kernel live-patching system became so robust, that you could fix a running kernel without having to reboot. Then we got kexec, which allows a kernel to essentially restart or switch to a newer version without having to reboot. We had robust, stable machines with high uptimes, and reboots were rare; we could even create and apply security patches without rebooting. Powerful times.
Nowadays, because of systemd, Linux distributions require regular reboots because of userspace updates. Postpone them, and your system starts behaving oddly. Some, like Debian, will most likely switch to a
two-reboot sequence to do core userspace updates, simply because the structure and implementation of systemd cannot handle severe changes in the running system.
We have gone backwards, several decades, and completely lost the gains made in software engineering in the last two decades. Why?
You really, really don't understand the harm it has done until you investigate systems integration at the lowest level, like RoGeorge is going to do. And when you do, you either accept that crap tastes acceptable because billions of flies cannot be wrong, or you become a "systemd hater".
You joke, but it is a deadly serious matter if you care about your tools. It is like stainless tool steel being replaced with low-grade cast aluminium, because it looks sufficiently similar, but is easier to produce and polish; and most people need neither the longevity or the strength of stainless tool steel. And you are the one making jokes about those complaining about the replacement.
Shame on you, retiredfeline.