What is init.d | /etc/init.d | Linux Service Management Package

Here we are going to discuss init, init.d. If you are a Linux or Linux-based operating system user, then it becomes mandatory for you to know about the terms what is init or init.d? This is the initialization of a Linux-based operating system like Android.

Hello people! Welcoming you all again to the Gossipfunda blogs. If you guys use a laptop or desktop or mobile phone or a tablet/ iPad, you know very well that the device has an operating system that is also a code and is made feasible to the users by developing UI (User Interface) for them. If you are normal people, that is you use these devices just for the fulfillment of your needs, and you have no relation with the architecture or backend of the system, then you will find this article irrelevant and uninteresting. But there is no loss in gaining extra knowledge. But, if you are a tech-whitz and have an interest in development (for example, Android Development) and knowing about how the system works, then you must go through this complete article.

what is init.d

So, without any further delay, let’s move on, but do not miss Kali Linux on Android.

What is init?

Initialization is abbreviated as init. In Unix and Unix-based operating systems like Linux and others, init is the foremost operation that is initiated by the kernel when the computer system boots. It is a daemon (a computer program that keeps running in the background and is not directly controlled by the user) action that runs continuously till the system is shut down. Generally, process identifier1 is allotted to init. It ignites the rest of the processes being the parent.

What is init.d?

It is a more relatable term for Linux operating system users. Init.d is a directory containing a number of scripts to start/ stop/ restart/ reload for different services on your computer system. If we will see the architecture, we shall find that under the /etc directory, there are several directories with the name rc#.d where # is an integer reflecting the particular initialization level in the range 0 to 6. Inside each of these directories are the shell scripts that direct various processes. These scripts usher in with ‘K’ or ‘S’ and ‘K’ scripts always run prior to ‘S’ scripts. The system services function together between the directories very smoothly.

Now here comes the role of /etc/init.d. If you want to manually start or stop any process, you have to use the scripts present in the /etc/init.d directory. It is the conventional service management system of Linux OS. The scripts are run as commands and the commands are structured as – /etc/init.d/command OPTION where the command is the service in demand and OPTION is one of the scripts for that particular service. The list of OPTIONs is as follows:

  • Start
  • Stop
  • Restart
  • Reload
  •  Force-reload
See also  Bluestacks Alternative: Top Free Alternatives to BlueStacks

Some of the common services are as follows:

  • Networking
  • Mysql
  • Sshd
  • Dovecot
  • Ftpd
  • Apache2
  • Samba etc.

So, for example, for stopping any network, the command will be – /etc/init.d/networking stop.

You may need to restart the system if you make any changes. For this purpose use – /etc/init.d/networking restart.

*Init.d plays a crucial role in the sphere of Android customization and development. It also permits users to install shell scripts and mods that run during the booting process only.

Difference between /etc/init/ and /etc/init.d/

/etc/init.d accomodates shell scripts utilized by the System V init tools (SysVinit). This is the conventional service management pack for Linux, holding the init program (It is the first process that comes in operation when the kernel finishes initialization) along with some infrastructure for starting and stoping services and configure them. Especially, files in /etc/init.d are code scripts that react to start, stop, restart, and reload (when supported) commands to handle a specific service. These scripts can be called on straight away or generally through some supplementary trigger (ordinarily the availability of a symbolic link in /etc/rc?.d/).

/etc/init possesses configuration files pre-owned by Upstart. Upstart is a new service management package advocated by Ubuntu. The files present in /etc/init are configuration files directing Upstart when and how to start, stop, reload the configuration, or query the status of a service. Here the point to note is that Ubuntu is transforming from SysVinit to Upstart. As a result, most of the services adhere to SysVinit shell scripts even though the Upstart configuration files are endorsed. As a matter of fact, the scripts of SysVinit go through a compatibility layer in Upstart.

The extension ‘.d’ at the end of directory names basically denotes a directory having a lot of scripts and configuration files for a particular situation. For instance, /etc/apt/sources.list.d directory has concatenated files to make virtual sources, the list /etc/network/if-up.d holds scripts that are run during the network interface activation. This structure is basically utilized when each entry is delivered by a different source in the directory, so that each and every package can put its own plug-in deprived of parsing even a solitary configuration file to reference itself.

Init.d Android

As we know that Android is an operating system based on Linux operating system, hence it possesses similarities with Linux. Same as Linux, Android also makes use of the custom init method during the boot process. Now the question is what does it do in Android OS? As we saw in the case of Linux, it runs code scripts present inside /etc/init.d directory, therefore in the case of android, it runs scripts present inside the /system/etc/init.d folder.

*By default ROMs do not support init.d but can be customized if you need to use it on them.

 How to append init.d support in Android?

Essentially there are two ways to permit init.d in Android. So, let’s take a look on them :

  1. Init.d support in the kernel or the native init.d support
  2. Making use of install-recovery.sh file for enabling init d
See also  Convert WAV to MP4 or WLMP to MP4

*Before moving ahead with the second method check the availability of the install-recovery.sh file because most of the android devices (not all) have this file that comes into operation when the system boots.

*It is always advised to take the complete android backup prior to proceeding with any of the two methods.


  • A PC with Linux or Windows operating system
  • A rooted mobile phone
  • Basic knowledge regarding the usage of command prompt or terminal

 *As an initial step inspect whether the Android phone supports init.d or not

To check the working of init d :

  • Look for /system/etc/init.d/ folder with the help of file manager. Root access is a must to browse /system/.
  • If the device has /system/etc/init.d/ folder then there is the probability of already having init.d support.

If init d support is not available then opt for kernel patching

How to add init.d support in the kernel?

In this section, we shall see how we can add init.d support in the kernel. Though there are ways by which we can add init.d support in rom but it is always best to add init d support by your kernel . So, let’s look at the steps for making it kernel ready.

  1. Firstly, unpack the kernel and ramdisk in a sequential order.
  2. Then, after the first step open Init.rc with a text editor such as word pad, etc.
  3. Now, after Init.rc is opened, add these codes at the end, before the paragraph in which there is a “stop bootanim” command is present:


 service sysinit/system/bin/sysinit


* You have to search for the paragraph with the “stop bootanim” command.

  • Now, Save, Exit and repack ram disk and boot.img.

How to add init.d support in the ROM?

  1. First of all open /system/bin/sysinit.
  2. Then add this code:
export PATH=${PATH}:/system/bin:/system/xbin
chmod 777 /system/etc/init.d/*
logwrapper busybox run-parts /system/etc/init.d/
  • After adding the code, set permissions of sysinit to 777 or 555(rwxrwxr-x | rwxrwxrwx )
  • Now, at last make a directory at system/etc and name it init.d.

Universal init.d

It is an open-source, root application for emulating the behavior of the init.d kernel mechanism.

Now, a question may arise: what is the init d kernel mechanism? So, to answer this question, this mechanism is an automatic execution of the shell scripts present within the /system/etc/init.d folder each time the system boots.

This is a universal method because everything happens on the app side and modification of system files is not required. It checks the behavior of the init.d kernel mechanism. It checks when a device is rebooted and executes the scripts located in /system/etc/init.d.

Also, init.d support granting mechanism comes with a kernel-sided init d mechanism to support detection, so that your int.d scripts does not execute more than once, as it just increases the boot time. A file is created in your sdcard when you run the test. It shall generate a little init.d script that is responsible for creating a file. After rebooting, it shall check for the file produced by a generated script which is indeed been created in order to regulate whether your kernel already has init.d support built-in or not.

See also  Why is google map so slow?

Additional functionality to this app is the capability to edit, manage, run and delete the init d scripts by just pressing a button.

*You can visit the following github repository for the source code of the above application.

You can also contribute at the same.

What is init d Toggler?

Init.d toggler is a very simple application which permits you to disable or enable init.d support.

As of now, we know that init.d holds scripts such as tweaks, here I am adding more information that the scripts with the permissions of at least RWX-RX-RX (755) present inside this directory are executed during boot process.

Busybox and Root are essentials to execute init d scripts flourishingly.

So, let’s see what does two functions of init.d toggler do:

Enable init.d


  • Modify /system/etc/install-recovery.sh
  • Place /system/bin/sysinit file
  • Make /system/etc/init.d dir

Disable init.d


  • Restore /system/etc/install-recovery.sh
  • Remove /system/bin/sysinit file
  • Remove /system/etc/init.d dir


In this article we started gaining knowledge with the introduction of init. Then we increased our knowledge spehe to init.d. Next we saw the difference between /etc/init/ and /etc/init.d/. Next, we explored init d for android. As we know that Linux is an open-source operating system, hence other operating-systems can be developed with some modifications in it. Same is the case with Android as it is also a Linux-based open-source operating system. Hence it also has an init process during the boot process. Therefore, it became mandatory to discuss it in continuation.

Further, we discussed about checking the availability of init.d in our device. And if it is not available at hand, then how to append it in the kernel. The next section was dedicated to Universal init.d and then was the init d toggler. It seemed to be a very small term but there are so many things to discuss. Even this article of more than 1500 words could not cover the whole relatable things to init.