• To modify a configuration file. You have multiple, better options like using configuration
management to automatically install a modified configuration file or installing a configu-
ration package that will put a file in a configuration directory (when available) or that will
divert the original configuration file.
• To update to a newer upstream version. Again, it is better to work with developers to update
the package directly in Debian or Kali. With the rolling release model, updates are rather
quick to reach end users.
Among all the available packages, there are some that are building blocks of Kali Linux and that
could be interesting to fork in some situations:
•
kali-meta: this source package builds all the kali-linux-* and kali-tools-* meta packages and
notably
kali-linux-default, which defines what packages are installed in the default Kali Linux
ISO image.
•
desktop-base: This source package contains various miscellaneous files that are used by de-
fault in desktop installations. Consider forking this package if you would like to show your
organization’s brand in the default background or change the theme of the desktop.
•
kali-menu: this package defines the structure of the Kali menu and provides
.desktop
files
for all applications that should be listed in the Kali menu.
10.3.2. Creating Configuration Packages
Now that we have touched on PXE booting and discussed configuration management with Salt-
Stack as well as package forking, it is time to wrap these processes up into a practical example and
extend the scenario by creating a custom configuration package to deploy a custom configuration
to multiple machines semi-automatically.
In this example, you will create a custom package that sets up and utilizes your own package repos-
itory and GnuPG signing key, distributes a SaltStack configuration, pushes a custom background,
and provides default desktop settings in a unified way to all your Kali installations.
This may seem like a daunting task (especially if you glance through the
Debian New Maintainer
Guide
2
) but fortunately for us, a configuration package is mainly a sophisticated file archive and
turning it into a package is rather easy.