Preseed Kali Linux from a mini ISO
My journey to a customized automated installation
When I install a new Kali Linux, I like to do it automatically. So I forked a Kali Linux preseed configuration and fitted it to my needs. This was roughly three month before Offensive Security added that preseed configuration to their GitHub. But it did not work with the mini ISO of Kali and the command you have to type was very long and annoying. I got frustrated. So I decided to dive deeper and generate a better preseed configuration. I could have stopped there. It works for me. But I wanted to document at least what I have done, so that the next one facing this problem would have a small guide.
Note: I excluded all dead ends from this article, because there were a lot of them and it would be unbearable to read. I try hard and I fail hard, so I tried harder and failed harder. 🤪
Maybe the preseed configuration I have generated does not fit your needs. It probably wont. This is why I try to explain my way and the finished preseed configuration so that you can change it yourself!
Tailor this to your needs: https://github.com/honze-net/kali-linux-custom-preseed/blob/master/kali-mini-preseed-custom.cfg
This article assumes that you use the mini ISO (~40MB). Maybe other ISOs will work, but you will have to put a bit of work into that. Secondly I use VirtualBox most of the time. So the guest additions will be included. If you use a different hypervisor, you should exchange the package for guest additions.
If you want to install Kali Linux to bare metal, I recommend doing a manual installation. If you need to deploy Kali Linux to large quantities of metal, then you are on your own, but I am sure that you know what you are doing, anyway. 🙂
I recommend to do a minimal manual installation first. Take note of every option you set during the installation. Finish the installation and then list all packages you need to have a fully installed system. This way you can change your custom packages more easily and you have more control over packages, which tend to bloat. For example compare
gnome-core. There is a lot room for optimization, but I recommend solving one problem at a time! For now I use these packages:
gnome kali-linux-full virtualbox-guest-x11 This is close to the installation of a regular Kali Linux from a weekly ISO.
Maybe you want to record your installation process with video capturing so you can rewind and play back. I took notes with pen and paper.
Fork an existing preseed configuration
I heavily recommend forking an existing and working preseed configuration! So you want to start with the
kali-linux-rolling-preseed.cfg from the Offensive Security GitHub. For a better understanding I compare this to my configuration. I removed all comments, empty lines and sorted it, because I rearranged some lines in my configuration for convenience. Here is the relevant
diff in handy chunks:
< d-i console-keymaps-at/keymap select us
< d-i debian-installer/locale string en_US.UTF-8
> d-i console-keymaps-at/keymap select de
> d-i debian-installer/locale string de_DE.UTF-8< d-i keyboard-configuration/xkb-keymap select us
> d-i keyboard-configuration/xkb-keymap select de< d-i time/zone string US/Eastern
> d-i time/zone string Europe/Berlin
As you can see, I am from Germany. So you want to use your own keymap, locale and time zone. Here you can refer to your notes from your manual installation.
< d-i mirror/country string enter information manually< d-i mirror/http/proxy string< d-i passwd/make-user boolean false
I also stripped three lines, which (I think) are not needed. Mirrors and user creation work in Kali different than in vanilla Debian. So these lines should not have no effect. If you ever experience problems, please ping me and I will update this guide accordingly.
> wireshark-common wireshark-common/install-setuid boolean true
During the installation
wireshark will ask you a question about groups and setuid etc. This answers the question, so that the installation runs without interruption.
> tasksel tasksel/first multiselect minimal
> d-i pkgsel/include string gnome kali-linux-full virtualbox-guest-x11
These two lines are the key difference between a normal installation and a mini ISO installation. If you use the regular preseed file with the mini ISO, you will get nothing but a black terminal. If you add these to your preseed file, it will do a minimal installation and then add all packages which are listed. This is a bit anticlimactic, but I want to point out that you can customize the heck out of it. You can install every package you like, so after the preseed installation has finished, you can start working instead of having the system upgraded and packages installed.
You can replace
gnome with a different window manager. For example:
You can replace
kali-linux-full with more or less tools as described here:
You should replace
virtualbox-guest-x11 with your guest additions, if you use something else than VirtualBox:
open-vm-tools-desktop fuse (VMware)
After you created and uploaded your own preseed configuration file, you can boot the mini ISO, press
auto url=<your-preseed-URL> and hit return. Lean back and enjoy your ride! 😎
The preseeding mechanism comes from the Debian installer and they have nice Wiki: https://wiki.debian.org/DebianInstaller/Preseed