En el arranque init llama al script /etc/rc.d/rc (en el se define por ejemplo si se iniciara en modo interactivo o no) y le entrega como argumento el nivel de ejecución, luego ejecutara el contenido de la carpeta correspondiente al runlevel que tenga en /etc/inittab, por defecto es runlevel 5 /etc/rc5.d/ (inicia las X). init para saber que scripts tiene que ejecutar (de la carpeta /etc/init.d/) y con que argumentos, consulta el contenido de /etc/inittab y si por ejemplo allí figura id:5:initdefault: (que debe iniciar en el nivel 5) entonces init consultara el directorio /etc/rc5.d/ en el cual encontrara vínculos simbólicos (a algunos scripts que se encuentran en /etc/init.d/) donde estos empiezan por una S o por una K, seguidos de un número y del nombre del servicio y ejecutara los scripts que empiezan por S siguiendo un orden ascendente (numérico) y cuando init salga de un nivel de ejecución a otro inferior, ejecutara todos los scripts que empiezan por K siguiendo un orden descendente. Para más información ver man boot.
init n n es el runlevel al que pasare, si n es 0 detiene el sistema , 6 reinicia el nodo, 1 paso a modo mono-usuario.
init 5 se suele usar desde la consola, para reiniciar o levantar la interfaz gráfica, cuando no carga, o esta se ha colgado.
Puedes ver los comandos relacionados: update-rc.d, telinit, sysv-rc-conf, o ejecutar en modo gráfico el programa Boot-Up-Manager para controlar los procesos que se inician en el arranque del sistema (en los diferentes runleves).
Keep it conimg, writers, this is good stuff.