• DevOps
    Case Study

    How we built a resilient multi-account, multi-cloud solution for a Health Tech service provider!

    READ CASESTUDY
    icon

    24/7 DevOps as a Service

    Round-the-clock DevOps for uninterrupted efficiency.

    icon

    Infrastructure as a Code

    Crafting infrastructure with ingenious code.

    icon

    CI/CD Pipeline

    Automated CI/CD pipeline for seamless deployments.

    icon

    DevSecOps

    Integrated security in continuous DevOps practices.

    icon

    Hire DevOps Engineers

    Level up your team with DevOps visionaries.

    icon

    Consulting Services

    Navigate success with expert DevOps consulting.

  • TechOps
    Case Study

    How we built a scalable Odoo solution for a Travel Tech service provider!

    READ CASESTUDY

    WEB HOSTING SUPPORT

    icon

    HelpDesk Support

    Highly skilled 24/7 HelpDesk Support

    icon

    Product Support

    Boost your product support with our expertise.

    MANAGED SERVICES

    icon

    Server Management

    Don’t let server issues slow you down. Let us manage them for you.

    icon

    Server Monitoring

    Safeguard your server health with our comprehensive monitoring solutions.

    STAFF AUGMENTATION

    icon

    Hire an Admin

    Transform your business operations with our expert administrative support.

    icon

    Hire a Team

    Augment your workforce with highly skilled professionals from our diverse talent pool.

  • CloudOps
    Case Study

    How we helped a Private Deemed University in India, save US $3500/m on hosting charges!

    READ CASESTUDY
    icon

    AWS Well Architected Review

    Round-the-clock for uninterrupted efficiency

    icon

    Optimize

    Efficient CloudOps mastery for seamless cloud management

    icon

    Manage

    Automated CI/CD pipeline for seamless deployments

    icon

    Migrate

    Upgrade the journey, Migrate & Modernize seamlessly

    icon

    Modernize

    Simplify compliance complexities with our dedicated services

    icon

    FinOps as a Service

    FinOps as a Service

  • SecOps
    Case Study

    How we built a scalable Odoo solution for TravelTech service provider!

    READ CASESTUDY
    icon

    VAPT

    Vulnerability Assessment and Penetration Testing

    icon

    Source Code Review

    Ensuring source code security ans safe practices to reduce risks

    icon

    Security Consultation

    On demand services for improving server security

    icon

    System Hardening

    Reduced vulnerability and proactive protection

    icon

    Managed SoC

    Monitors and maintains system security. Quick response on incidents.

    icon

    Compliance as a Service

    Regulatory compliance, reduced risk

  • Insights
    Case Study

    How we helped a Private Deemed University in India, save US $3,500/m on hosting charges!

    READ CASESTUDY
    icon

    Blog

    Explore our latest articles and insights

    icon

    Case Studies

    Read about our client success stories

    icon

    Flipbook

    Explore our latest Flipbook

    icon

    Events

    Join us at upcoming events and conferences

    icon

    Webinars

    Watch our educational webinar series

  • Our Story
  • Contact Us

Interested to collaborate?

Get in touch with us!

Ready to elevate your business with certified cloud expertise? Contact us today to learn how our team can help you leverage cloud technology to drive growth, streamline operations, and enhance security.

  • AWSAWS
  • Azure CloudAzure Cloud
  • Google CloudGoogle Cloud
  • Akamai CloudAkamai Cloud
  • OVHOVH
  • Digital OceanDigital Ocean
  • HetznerHetzner
  • Kubernetes Consultancy Services
  • K8s & Cloud native Solutions
  • 24/7 Infrastructure Monitoring
  • DevOps as a Service
  • Cloud CI/CD Solutions
  • White Labeled MSP Support
  • Our story
  • Life@SupportSages
  • Insights
  • Careers
  • Events
  • Contact Us

Connect with us!


LinkedInFacebookXInstagramYouTube

aws partneraws advanced partner
SupportSages

Copyright © 2008 – 2026 SupportSages Pvt Ltd. All Rights Reserved.
Privacy PolicyLegal TermsData ProtectionCookie Policy
Init v/s Systemd

Init v/s Systemd

Daniel Wren

  • 8 min read
Init v/s Systemd

Generating audio, please wait...

Init and systemd are both system and service managers associated with Linux systems. They are responsible for booting the machine once the kernel is loaded, and their tasks range from mounting the original file system, identifying the runlevel or target and loading the operating system accordingly along with activating the services associated with that runlevel and finally displaying the login screen. Init was present in Linux distributions like Redhat 6, CentOS 6 but it got replaced with Systemd in linux distros like Redhat 7, CentOS 7 ,Ubuntu 16.04 etc.

To appreciate the importance of service managers in Linux an overall idea of the Linux booting process is required which is covered in the following section:

1. Linux booting sequence

The process of booting begins with POST (Power On Self Test) where the hardware components of the system are checked for any kind of defects. If any component failure or wrong connection is detected, the booting will fail. Once this stage is cleared, next the firmware is detected which will be BIOS or UEFI. Once the firmware is detected the boot device is selected from boot priority, which is harddisk normally.

1.2. Kernel Initialization

The MBR (Master Boot Record) is then read. MBR consists of 512 bytes which are divided as 446 bytes for bootloader, 64 bytes for mounting table information and 2 flag bytes, meant for error checking and correcting purposes. The bootloader (GRUB 2) contains instructions to load the kernel image (vmlinuz). When the bootloader is loaded we get an interface where we can select the kernel version out of the available ones. The kernel image and the compressed file system image is loaded, then the latter is extracted to obtain a temporary file system. It is required to access the driver software which is essential to detect the original file system and mount it. The initrd and initramfs are two different methods by which the temporary file system is made available to the kernel.

Initrd (Initial ramdisk) was the technique used with earlier linux distros where the compressed image of the entire file system (initrd image) is made available as a special block storage device (/dev/ram) which is then mounted and decompressed. The driver software to access this block storage device is compiled into the kernel. The kernel assumes that the actual file system is mounted and starts /linuxrc which in turn starts /sbin/init. With Initramfs the compressed image is made available as a cpio archive which is unpacked by the kernel using a temporary instance of tempfs which then becomes the root file system. It is followed by executing /init as the first process.

1.3.  System Initialization

This is the stage where the actual file system is mounted. The OS is booted with the desired runlevel or target. Then the services specific to that runlevel or target are activated and once ready the login screen is displayed. All these activities are taken care of by the service managers in Linux. We will go into the details of the two most popular service managers namely Init and Systemd, in the following section.

2. Init service manager

Init is the service manager associated with earlier Linux distros. Init stands for Initialization, it is the first process after booting, act as the parent of all other processes and continues till shutdown. It is assigned a PID of 1. Init is a daemon process. A daemon process is one which does not have a controlling terminal.

Once the actual file system is mounted, the runlevel is identified. There are 7 runlevels associated with Init:

0 -> Shutdown or halt

1 -> Single user mode (root user mode used for troubleshooting)

2 -> Multiuser without network service

3 -> Multiuser with network service

4 -> Undefined

5 -> Graphical mode

6 -> Reboot

Once the runlevel is identified the services corresponding to that runlevel is activated and the login screen is displayed.

2.1 Configuration files of Init

The main configuration file is /etc/inittab. The default runlevel is specified here. The scripts required by each runlevel is specified in /etc/rc.d/rc* directory, where * refers to the runlevel. In this directory, one could find a list of kill (K) scripts and start (S) script. The kill scripts are executed followed by start scripts. The order of script execution is specified by means of sequence number on the script. The scripts are saved at /etc/rc.d directory.

2.2 Drawbacks of Init

Init works based on serial booting principle, so even if the main service fails the sub-services are also checked unnecessarily. Even if the service becomes up before the booting has completed it will not be detected by init. For example, network service is essential for NFS or CIFS to function, so there is no meaning in trying to activate dependant services until the main service is up, but Init will still do it. This is a major disadvantage in terms of booting speed and performance.

If due to some reason Init could not start then, no process will be started and the system will reach a state called Kernal Panic where booting fails. This is also an issue with Init.

3. Systemd Service manager

Systemd is the most recent service manager used in Linux distros. It has the same tasks as Init but the method adopted to achieve the same is quite different. It is based on parallel booting concept where processes and services are started in parallel. This helps to speed up the booting process as services are started in parallel. In Systemd there are no runlevels involved, instead target unit files come into play. Unit files are configuration files what define any entity in systemd environment, whether it is targets or services involved unit files are present for each and every target or service. There are different types of unit files including services, targets, devices, file system mount points and sockets.

With Systemd once the actual file system is mounted, the default target is identified. The targets in systemd are : poweroff.target, rescue.target, multi-user.target, graphical.target and reboot.target. The names somewhat resemble the runlevel naming. Once the target is identified then the services corresponding to that target is activated. Finally the login screen is displayed.

3.1 Configuration files in Systemd

In Systemd /sbin/init is simlinked to /etc/systemd/system/default.target. The default.target file is empty and is simlinked with the presently chosen target file located at /usr/lib/systemd/system/<target name>.target.

3.2 Advantages of Systemd

Systemd uses a parallel booting mechanism where services and processes are started in parallel thereby speeding up the booting process. Another advantage is that if the main service fails the dependent services are bypassed and if the main service becomes up before booting is completed then the dependent services are checked and activated.

3.3 Adding or removing a dependency service for the main service in systemd

The dependency services for a target is defined inside its unit file. The dependency unit files are listed with directives “Wants and “Requires”, where the former states that the dependency may be run along with the unit, but the success state of the dependency is not essential for the success of the target and the latter implies that the success state of dependency is essential for the success state of the target. By removing the entry of the dependency service we do not require, from the unit file of service we can prevent it from getting loaded or activated.

3.4 Creating a new service or target in systemd

In the directory /etc/systemd/system we can find “Wants” directories of different targets having the following format : <target-name>.target.wants . Navigate to the desired target where you want to add the new service. The services considered by that target will be listed there.

To make a new service name named netset.service, open a file with the same name and specify the required services by making use of the “Wants”, “requires”,”Before”, “After” appropriately. For example :

[Unit]
Description = making network connection up
After = network.target
[Service]
ExecStart = /root/scripts/conup.sh
[Install]
WantedBy = multi-user.target
where “After” specifies that this service must only be activated after network.service. “ExecStart” specifies the path of the script file to be executed. The actions that must take place must be specified in the script file as a BASH script. “WantedBy” specifies that this service will be wanted by multi-user.target . 
The service is then enabled so that it is simlinked to that service will be created inside multi-user.wants.target. Now this service will be listed inside the target file and will be available when the corresponding target is used.

4. Comparision of SysV Run Levels and Target Units

Run Level Target Units Description

0 runlevel0.target, poweroff.target Shut down and power off

1 runlevel1.target, rescue.target Set up a rescue shell

2,3,4 runlevel[234].target, multi- user.target Set up a nongraphical multi-user shell

5 runlevel5.target, graphical.target Set up a graphical multi-user shell

6 runlevel6.target, reboot.target Shut down and reboot the system

         Click here to know more. We are always happy to help you.

  • Linux

Everything about SWAP in Linux – why do we need swapping ?

Everything about SWAP in Linux – why do we need swapping ?
  • Linux
  • server
  • Sever management
logo

How to install node.js on your shared server?

How to install node.js on your shared server?
  • server
  • Sever management
logo

How to secure SSH access to your server using TORʼs hidden service ?

How to secure SSH access to your server using TORʼs hidden service ?
  • Linux
logo

How to stand out from the crowd by providing 24*7 customer support?

How to stand out from the crowd by providing 24*7 customer support?
  • Customer Care
logo

Posts by Daniel Wren

An innovative and dedicated IT professional who is very curious to solve and find solutions to seemingly difficult tasks.