04-26-2024, 12:30 PM
To be clear, Systemd has nothing to do with booting the linux kernel. The tool that controls the actual bootup of the computer and selecting an operating system to boot would be something like grub or the Windows Boot Manager. Both are capable of booting linux and Windows, though in the case of Windows Boot Manager, the startup partition would still need grub to properly boot a linux kernal.
Systemd and it's predecessor init, are the first process run by the linux kernel after boot is complete and all hardware is identified. Systemd replaced a previous tool used to manage the system startup sequence called init. As the initial post indicates, it's pid 1. The first process run by the kernal after boot is complete.
Both of these utilities are responsible for starting all the system and user processes to bring a system up to a usable state, typically dictated by a runlevel. Both typically start and stop other processes as the system requests, creating dependencies (like the network should be started and configured before attempting to start a network dependent service like a VPN.) and ordered starting/stopping of services.
Functionality synopsis aside, both utilities have their pros and cons, as with any tool. Systemd is much more aware of the system level utilities running, and depends more on them to properly bring a system up from 'kernal is booted' to 'desktop on the screen', or 'login prompt.' Init on the other hand is much more of the old UNIX paradigm where a tool should do exactly one thing and do it well. But modern linux environments have basically outgrown init.
I was skeptical of systemd initially, but after learning it's abilities and see it do the job it's designed to do well, I'm a fan. It simplified a lot of things, and makes the startup sequence easier to control. Also feels a lot less clunky than init and it's various script directories in /etc and using numerical prefixes on shell scripts to control load orders.
On Debian at least, systemd has gone above and beyond regarding backwards compatibility with old init scripting methods of doing things, so that's a big bonus to me. On all my installations of Debian, I'm still using some init scripts and some systemd 'module config' files. So..yeah!
Hope this helps someone.
Systemd and it's predecessor init, are the first process run by the linux kernel after boot is complete and all hardware is identified. Systemd replaced a previous tool used to manage the system startup sequence called init. As the initial post indicates, it's pid 1. The first process run by the kernal after boot is complete.
Both of these utilities are responsible for starting all the system and user processes to bring a system up to a usable state, typically dictated by a runlevel. Both typically start and stop other processes as the system requests, creating dependencies (like the network should be started and configured before attempting to start a network dependent service like a VPN.) and ordered starting/stopping of services.
Functionality synopsis aside, both utilities have their pros and cons, as with any tool. Systemd is much more aware of the system level utilities running, and depends more on them to properly bring a system up from 'kernal is booted' to 'desktop on the screen', or 'login prompt.' Init on the other hand is much more of the old UNIX paradigm where a tool should do exactly one thing and do it well. But modern linux environments have basically outgrown init.
I was skeptical of systemd initially, but after learning it's abilities and see it do the job it's designed to do well, I'm a fan. It simplified a lot of things, and makes the startup sequence easier to control. Also feels a lot less clunky than init and it's various script directories in /etc and using numerical prefixes on shell scripts to control load orders.
On Debian at least, systemd has gone above and beyond regarding backwards compatibility with old init scripting methods of doing things, so that's a big bonus to me. On all my installations of Debian, I'm still using some init scripts and some systemd 'module config' files. So..yeah!
Hope this helps someone.