With directory layout differences between Red Hat, Debian, Suse and other distros one needs to set the variables for the elements below -----------------+------------------+---------------+----------------+ | Red Hat | Debian | Suse | -----------------+------------------+---------------+----------------+ CONFIG_LEAF_DIR | sysconfig | default | sysconfig | SUBSYS_DIR | /var/run/subsys | /var/run | /var/run | INITD_DIR | /etc/rc.d/init.d | /etc/init.d | /etc/init.d | -----------------+------------------+---------------+----------------+ The existence of these directories are tested at build-time (on the build host, via the "setvar_dir" macro in Config.mk) and for some scripts at run-time. If the Red Hat directory exists, it is used; otherwise the Debian one is used. You can override this by setting the variables in the environment or your ".config" (which is included by .config). To add support for new distributions that don't use the above locations, one must grep for the above elements and add appropriate checks. For example if a new distro uses /etc/bork as its config dir, it's not sufficient to set CONFIG_LEAF_DIR=bork; one must also add tests for the existence of the bork dir in every context where config files are read.