Unsupported Version
This article applies to an unsupported version of Ubuntu. More info...


(quick note: dapper package currently broken, location for repo/download has kinda moved, check http://blog.space-based.de/2006/05/initngs-apt-repo-has-a-new-home/ for more info, but you can build initng with no dependency problems from the source package)

note since Ubuntu 6.10 sysvinit has been replaced with upstart, which has similar features to InitNG, so InitNG is not needed

Init System, Next Generation

Initng is a full replacement of the old and in many ways deprecated sysvinit tool. It is designed with speed in mind, doing as much as possible asynchronously. In other words: It will boot your Unix-system much faster, and give you more control and statistics over your system. The basic premise is that startup commands can be launched as soon as their dependencies are met. This limits the effect of bottlenecks like I/O operations; while one program is performing I/O, another can be utilizing the processor. Initng tracks the individual service dependencies in its configuration files. It is designed to use a minimum of system resources and to boot your system quickly and safely.

  • It is currently available as a DEB for i386 and amd64.

  • For PPC Architecture look here (German)

  • There is no repository yet.

  • The most recent initng version is 0.6.7.

  • The most recent initng-ifiles version is 0.0.5.

  • These instructions are for Ubuntu Dapper (from initng 0.6.0).


If you are upgrading or downgrading, it is recommended that you boot into Ubuntu via a normal boot and uninstall the old version first (e.g. in Synaptic).

As of version 0.6.0, InitNG has been split into two DEB files; the first package (initng) contains the program itself while the second (initng-ifiles) contains the various scripts InitNG needs. As initng is dependent on initng-ifiles, initng will not properly install unless initng-ifiles is either installed first or at the same time.

Version 0.6.7

These instructions were tested on Dappper.

  • Add the following lines to /etc/apt/sources.list (don't forget to do apt-get update after it):

deb http://debian.space-based.de/debs/ experimental main
deb-src http://debian.space-based.de/debs/ experimental main

You can also add these repositories via Synaptic (GUI) by following these instructions.

  • Build initng from source package to avoid dependency problems (copy and paste both lines together into the terminal):

sudo apt-get install build-essential && sudo apt-get source initng && sudo apt-get build-dep initng && cd initng-0.6.7 && sudo dpkg-buildpackage && cd ../
  • Install packages initng and initng-ifiles:

sudo dpkg -i initng_0.6.7*.deb && sudo apt-get install initng-ifiles

You can also install initng-ifiles and initng via Synaptic. Start Synaptic, and search for "initng-ifiles." Once done installing initng-ifiles, search for and install initng. If you are having dependency issues with initng, follow these instructions.

  • (if this is a new installation) edit your GRUB list:

gksu gedit /boot/grub/menu.lst

Make a duplicate Ubuntu entry and rename its title to something like Ubuntu (InitNG). At the end of the kernel line, add:


Once you have made a duplicate entry, your list should look like this, because you duplicated the first entry. Therefore, the second entry should look exactly like the first entry with the exception of the difference in title, and the addition of "init=/sbin/initng" to the kernel line:

## ## End Default Options ##

title           Ubuntu (InitNG)
root            (hd0,4)
kernel          /boot/vmlinuz-2.6.15-25-386 root=/dev/hda5 ro quiet splash init=/sbin/initng
initrd          /boot/initrd.img-2.6.15-25-386

title           Ubuntu, kernel 2.6.15-25-386
root            (hd0,4)
kernel          /boot/vmlinuz-2.6.15-25-386 root=/dev/hda5 ro quiet splash
initrd          /boot/initrd.img-2.6.15-25-386'''

  • To ensure that it boots to GUI session, run the following command:

sudo ng-update add daemon/gdm
  • Remove the debian specific network script (for Dapper), or it will not work properly:

sudo ng-update del ifupdown-debian
  • Because the path to modprobe and alsactl are different between debian and ubuntu, we need to create some link

sudo ln -s /sbin/alsactl /usr/sbin/alsactl
sudo ln -s /sbin/modprobe /usr/sbin/modprobe
  • Now you will need to configure the runlevel to fit your system.
    • If you have a printer, add cupsd : 'sudo ng-update add daemon/cupsd'
    • If you use an HP printer, you will also need to add hpssd and hpiod : 'sudo ng-update add daemon/hpiod daemon/hpssd'
    • If you use NetworkManager, the Novell's tool to manage network, follow this

    • To use vmware follow this

    • If your processor don't use speedstep, remove it : 'sudo ng-update del system/speedstep'
    • If acpi is disabled at startup, you need to remove acpid : 'sudo ng-update del daemon/acpid'
    • If you use fuse to have read access on an NTFS partition, you have to do a little tweak

    • Users of AIGLX need to do a little change to

    • And probably more. If you need help go to the Forums Thread or join #initng on freenode

    • To configure and manage InitNG, you can also install a gui. More information there

  • To be able to see the wonderfull ubuntu usplash at startup, follow this

  • Reboot (using the InitNG GRUB entry) and enjoy the speed

NetworkManager with InitNG

First be sure that you comment out the line of the interface you want to control with NM in /etc/network/interfaces as mentioned here

To use NetworkManager, simply add it to the runlevel:

sudo ng-update add NetworkManager

You will have to modify the script, therefore, open it in a text editor with the following line:

gksu gedit /etc/initng/daemon/NetworkManager.i

Clear the entire file (CTRL-A for "Select All," and then delete the text), and replace it with this:

# This is a i file, used by initng parsed by install_service

service daemon/NetworkManager/prepare {
        need = system/bootmisc;
        script start = {
                [ -d /var/lib/NetworkManager ] || /bin/mkdir -p /var/lib/NetworkManager
                [ -d /var/run/NetworkManager ] || /bin/mkdir -p /var/run/NetworkManager
                chmod 755 /var/lib/NetworkManager

daemon daemon/NetworkManager {
        need = system/bootmisc daemon/dbus daemon/NetworkManager/prepare system/modules/capability daemon/hald daemon/dhcdbd;
        exec daemon  = /usr/sbin/NetworkManager;
        pid_file = /var/run/NetworkManager/NetworkManager.pid;

You will also need to modify dhcdbd

gksu gedit /etc/initng/daemon/dhcdbd.i

and replace the following:

exec daemon = /usr/sbin/dhcdbd --system;

with the line below:

exec daemon = /sbin/dhcdbd --system;

Restart and that should solve the problem

Vmware with InitNG

The script provide by initng to run vmware don't do exactly what we want. A workaround is to launch the sysvinit script instead . That's quite simple:

  • First we need to create a new script, that we will call vmware2.i

gksu gedit /etc/initng/daemon/vmware2.i

And past this in it.

service daemon/vmware2 {
        need = system/bootmisc virtual/net;
        exec start = /etc/init.d/vmware-player start;
        exec stop = /etc/init.d/vmware-player stop;

Info (!) You will probably have to change /etc/init.d/vmware-player by the one you have in /etc/init.d, this one is for vmware-plyer install from the repository, and so the name of the script may change if you install an other version of vmware

save and exit

  • Add this script to the runlevel

sudo ng-update add daemon/vmware2
  • Restart and that's done.

Using fuse with InitNG

In order to mount NTFS partition with read access using fuse, you need to load the fuse module before your NTFS partition is mounted. So we need to tweak a bit the moutfs.i script:

  • Open mountfs.i

gksu gedit /etc/initng/system/mountfs.i
  • At line 5, change

need = system/initial system/mountroot system/checkfs;


need = system/initial system/mountroot system/checkfs system/modules;
  • And that's all. Easy, isn't it.

Get running AIGLX with InitNG

The latest version of AIGLX need the latest driver to work. They are provide by the linux-dri-module package which provide also a script to load them at startup. This is a sysvinit script. We need to do the same for InitNG.

  • Open modules.i

gksu gedit /etc/initng/system/modules.i
  • At line 44, you will see the following lines:

if [ -x /sbin/lrm-manager ]
        /sbin/lrm-manager --quick

This launch the linux-restricted-module. We will use the same structure to launch the linux-dri-module. So just after that, add the following:

if [ -x /sbin/ldm-manager ]
        echo "Loading DRI..."
        /sbin/ldm-manager --quick
  • And that's all.

Usplash with InitNG

The usplash support is not compiled by default, but you can enable it easily. IMPORTANT : You will need at least initng version 0.6.7

  • First, download this package and install it.

  • Change your kernel line:

gksu gedit /boot/grub/menu.lst

At the end, in your intng entry change the option of your kernel line to:

ro quiet init=/sbin/initng-usplash splash
  • Restart and enjoy.


Daniel Malmgren has made a wonderfull gui to configure initNG

"With initng-conf-gtk you can easily start, stop and restart services and daemons. A nice feature is that all service states are updated in realtime. It also features an easy to use runlevel editor where you can create new runlevels, modify existing ones and the possibility to edit services and daemons (to reach this functionality simply double click a row in the service list)."

You can download here, which is the debian package of this great application.

Just install it and it should be in the System Tools menu (if it is not, just launch sudo initng-conf-gtk in a terminal).

See also

InitNG (last edited 2009-07-13 13:21:49 by kmitch87)