2.1.1 Configuring Init

There are three ways you can change the behaviour of the init system. Those are:

  1. Kernel Command Line

    On GRUB, you can edit the kernel command line parameters, which will be parsed as variables on the init system. Not all of the parameters will be acted upon, but all of them will be set as variables on the init script. For example an example command line, and how it is interpreted.

    BOOT_IMAGE=/boot/vmlinuz root=/dev/sda2 rw loglevel=3 quiet
    

    This command line will be parsed to set the following variables:

    BOOT_IMAGE=/boot/vmlinuz
    root=/dev/sda2
    rw=1
    loglevel=3
    quiet=1
    

    Some of these variables, such as ‘rw=/=ro’, ‘loglevel’, and ‘quiet’, will be used by the init system to change the behaviour of the startup.

  2. /etc/init/rc.conf’ file

    However, the kernel command line isn’t the only place to set your boot parameters. You can specify variables here as well, although note that the kernel command line always gets the priority for these variables since they can be set just before boot.

  3. Init Hooks

    Init hooks are for custom personal commands that the user may want to add to alter their boot. These can be used to load kernel modules, modify interfaces, and lot more. Those hooks are added to the ‘/etc/init’ directory with the hook name as the suffix. For example, a boot script will be placed as ‘/etc/init/my-hook.boot’. Currently, there are 4 hooks that the user can use.

    early-boot

    Run after pseudo-filesystems are mounted.

    boot

    Run before the boot stage is completed.

    pre.shutdown

    Run first when shutting down.

    umount

    Run just before filesystems are unmounted.

    post.shutdown

    Run just before the system is halted.