That's right, you read it correctly. Here's a quick How-To install Kali 2024.1 on a SteamDeck, and more importantly, some of the extra steps needed to make it run nicely, and some of the caveats it brings.
I'm far from THE FIRST to install Kali on a SteamDeck on a MicroSD card, but I couldn't find any concise "How-To"s, and I ran in to a few issues/caveats along the way. They're far from insurmountable, but I figured this would be a nice opportunity to add some new content to my site. Maybe someone else will come along, and help build upon what I am starting here...?
Kali installs and works "fine", but it doesn't work "perfectly" out of the box, so there's some post-install work needed to really get it to work well. Please be sure to read this all through, especially the CAVEATS, before following along with your own SteamDeck yourself.
So here goes!
**NOTE FOR KALI 2024.3
The install process itself is generally the same, but the post-install is significantly different, and the caveats and booting is different too. But I have also updates Steam and SteamOS since this was originally written too, and I am unsure precisely how which is affecting the other and in what manner. I have a new article in the works, updated for 2024.3, which I will link here when it is complete.
But Why...?
Why not...? It's what I do. I hack things. Besides, at 8 CPU cores and 16 GB RAM, it's nothing to turn your nose up for most anything you'll be doing with Kali. I also read that the SteamDeck's WiFi radio was rather powerful and capable of being used in monitor mode, but I have yet to confirm that myself, that's coming. Suffice to say, it makes a nice, portable, somewhat incognito, hacking device. I can't wait to plug in an RTL-SDR and do some radio stuff.
Prerequisites
In order to accomplish this, there's a few things you need in order to go through this article:
- A SteamDeck (obviously). Be aware that some of these steps can only be "undone" by totally reimaging the SteamDeck. For basic Steam games, this isn't much of a big deal, you can just redownload them. But any and all customizations (ie, DeckyLoader, non-Steam games and apps, emulators, etc...) should be backed up. Expect to need to re-image your SteamDeck. Don't use your partner's SteamDeck.
- Advanced Kali/Linux knowledge. I'll be skimming over some details and you will need to know enough to fill in the blanks yourself. Maybe if/when things can work a bit more "perfectly", I can write up more details, but for now, I'm just getting this out here.
- USB-C "Dock". I used the official SteamDeck Dock, but I have read that more generic USB-C Docks (like this) can work as well. As long as it has enough USB ports (3+). It will also need to be able to provide power to the SteamDeck via the USB-C connection.
- Bootable Kali installer on a USB drive.
- MicroSD card that will have Kali installed on to it, with a USB adapter or just plugged in to the USB Dock if that's what you have. You'll probably want at least 32-64 GB space. You can't install to the MicroSD Card inserted in to the SteamDeck. You'll be able to boot from it inseted in the SteamDeck afterwards, but the initial install needs to be via USB adapter (or dock).
- Non-bluetooth Keyboard/Mouse. This is primarily for the install process and some of the initial setup. Kali itself will also necessitate a keyboard, but you can use a bluetooth one later on when it's all done.
Initial Install
- To start things off, connect your powered off SteamDeck to your dock, and everything else connected to the dock.
- To power on the SteamDeck, press and hold the Volume Down button while you press the Power Button. This will bring you to the Boot Menu.
- In the Boot Menu, select your Kali USB.
- This will start the Kali install process.
- NOTE: The whole thing is rotated to the left. I tried many ways to edit the boot options to rotate the screen to the right, but I wasn't able to get anything to work.
- Complete the install with the following details:
- Install to the MicroSD Card
- Do NOT use Encrypted LVM
NOTES
This WILL mess with the SteamDeck's default boot options.It WILL DEFAULT to the Kali OS, rather than SteamOS, and if you remove the SD Card, it will still TRY to boot to Kali, but you will get grub errors. This can be undone, but REQUIRES a SteamOS reinstall:
https://help.steampowered.com/en/faqs/view/1B71-EDF2-EB6D-2BB3
Later on we'll install rEFInd which can help with this.
POST INSTALL
Auto Login
After the initial install and power off, unplug the USB stick and MicroSD adapter, and insert in the MicroSD in to the SteamDeck directly. Volume Down + Power again to pull up the Boot Menu, and select the kali option to boot in to Kali. The login screen and desktop will default rotated to the left. The desktop is easily fixed/rotated through the Display Settings after you log in, but this does NOT affect the login screen (that still remains rotated left). We SHOULD be able to address this by editing the appropriate LightDM config file, but again, nothing I did was able to resolve the issue. My solution here was to simply enable autologin:
https://wiki.debian.org/LightDM
The system-wide LightDM configuration file is found at /etc/lightdm/lightdm.conf
Look up these lines in the lightdm config file, uncomment them, and customize to your preference:
[Seat:*]
autologin-user=
autologin-user-timeout=0
Touchscreen
At this point, if you've been adventurous, you might have noticed that although the desktop display has been rotated, the TOUCH screen has not. There are, and I have tried, all kinds of fancy solutions and scripts that "monitor" gyro inputs and screen rotation to rotate the touch along with it, but again, nothing worked. I suspect the gyro has something to do with it, and it being part of the "controller" of the SteamDeck, and not the "screen" like a tablet or phone. So on to a much simpler way to to rotate the touchscreen:
https://askubuntu.com/questions/368317/rotate-touch-input-with-touchscreen-and-or-touchpad
https://wiki.ubuntu.com/X/InputCoordinateTransformation
First, install xinput:
sudo apt install xinput
Once complete, click Start, "Session and Startup"
Add a startup application:
- Name: Rotate Touch Screen
- Command: xinput set-prop "FTS3528:00 2808:1015" --type=float "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
- Trigger: on login
Advanced Controller and Steam On-Screen Keyboard
The basic controls do not NEED Steam to be installed:
- Right trackpad as mouse
- Right trigger as left click
- Left trigger as right click
But if you want to ADD/EDIT/CHANGE the controls, you can only do so through Steam.
Steam has a lot of requirements it can (and will) install itself, except for one. Install xterm:
sudo apt install xterm
Download and install the Steam client:
https://store.steampowered.com/about/?snr=1_14_4__global-header
https://cdn.cloudflare.steamstatic.com/client/installer/steam.deb
sudo dkpg -i steam_latest.deb
Start the Steam client. The starting part is important here as the Steam client will download all it's extra files and install additional required packages. Once that's completed, you can login to Steam and get your controller config and Steam on-screen keyboard! Go ahead and press the Steam + X buttons to pull up that on-screen keyboard.
"But Kali already has it's own on-screen keyboard!" Yeah, it does. But it doesn't do the fancy touchpad typing that the Steam keyboard does. And maybe you can re-map the Steam + X buttons to open that up instead. But why do all that extra work for an inferior option when we have a perfectly good option already good to go?
In this state, you will need to manually start the Steam client in order for the on-screen keyboard to come up. The basic controls, like the right trackpad controlling the mouse, will still be there, but if you want that keyboard and controller customization, you need the Steam client to be running. If you want the Steam client to start automatically, do NOT use the Steam's built-in autostart; this will always make Steam start fullscreen. In fact, while we're in Steam here, let's make sure it is disabled so we can make our own custom start option:
Click the Steam menu option, select Settings.
Select the Interface tab, and make sure the "Run Steam when my computer starts" option is turned off. It should be by default, but just to make sure.
Now, to create the custom startup, go back to the "Session and Startup" settings we used previously for the touchscreen rotation.
Add a startup application:
- Name: Steam Client
- Command: /usr/bin/steam -nochatui -nofriendsui -silent
- Trigger: on login
At this point, we are pretty much done with Kali. You can come back later to finish up your own further customizations, but for now, we have more work to do; we're not totally done yet.
Shut down the SteamDeck.
SteamOS Boot
To boot back in to SteamOS, you will once again need to hold the Volume Down button while pressing the Power button to get in to the Boot Menu. From here, you can select SteamOS.
To make SteamOS the default boot again, we'll need to install rEFInd in SteamOS:
https://github.com/jlobue10/SteamDeck_rEFInd
NOTE: Unfortunately, this can NOT (yet) be used to "properly" dual-boot in to Kali on the MicroSD.
Run rEFInd with the following details:
- SteamOS as the default OS
- Timeout as 1 or 2 seconds
- A "secondary" option is required, just select Steam again
Feel free to customize the background and icons to your liking.
Then create and install the config.
NOTES
- If you re-install Kali, it will revert to Kali for the default boot, so will need to re-run rEFInd after EVERY Kali (re-)install.
- This is imperfect. My first go-through all this had consistent SteamOS default boot, but now it seems to default to the last booted OS. More on this in the CAVEATS at the end.
(Mostly) DONE!
Yeah, you read it right, at this point you're pretty much done. It's that "simple" (hahahaha).
Your next steps should (and probably would) be to go back in to Kali and finish up your own customizations (like install AutoRecon, kali-linux-everything, or anything else), though I would advise against making it remotely accessible via SSH or RDP or the like. But if you have gotten this far, you know what you're doing, so you do you.
CAVEATS
The SteamOS usage and functionality (aside from the default boot OS issue detailed below) remains untouched, so no worries on affecting any of your gameplay, that's all fine.But I would say that, at this stage, it's still not quite "perfect"; there's a few things that don't work quite right or as expected...:
- No audio device detected by default on Kali 2024.01
- Not that it is impossible to set up, just Kali does not include the full/proper drivers for audio by default.
- Do not use reboots from either SteamOS nor Kali; power off and on again.
- Something about reboots does not allow for a really proper boot process
- Default Boot.
- A lot of pain, time, and frustration went in to this one. On my first few times through this process with Kali 2023.4, rEFInd was able to permanently set rEFInd as the default boot, and you could only get to Kali with the Volume Down + Power boot menu. This is fine for me, the idea here was to have a "disguised" hacking device, so rEFInd/SteamOS as the default worked fine. But my later attempts with Kali 2024.1 don't give the same results. At this time, the default boot seems to be the last booted OS; so if you were in SteamOS and powered off, you will default in to rEFInd/SteamOS. Same with Kali, if you pwered off from Kali, your next default boot will be Kali. Just keep that in mind if you need any kind of plausible deniability (A.K.A., a cover story). Hopefully in the future this will change, but for now, this is what I have experienced.
- Changing the boot OS.
- In order to change from the default booting OS, you will need to use the Volume Down + Power boot menu to select the OS you want to go to. Again, fine if changing from SteamOS and you need plausible deniability. But it requires that degree of manual intervention, and either planning ahead or remembering what you were last booted in to.
- MicroSD Card.
- If you are using SteamOS and booting in to SteamOS, you don't need to keep the MicroSD card inserted, you can take it out. But taking out the card does NOT remove kali from the Boot Menu list. So if you were to power off from Kali, remove the MicroSD card, and power back on without changing the boot OS, you WILL get some grub errors. If you do, it's no big deal, just press and hold the power button to force power off the SteamDeck, and either inset the MicroSD card to boot kali, or Volume Down + Power to get to the Boot Menu and select rEFInd/SteamOS. Not a really serious deal-breaker for me, but certainly something to be aware of.
DONE DONE!
And that's it, there you have it, that's all I have for you (for now). Hopefully the future has some changes and updates to how this all goes down, and I will probably be following up with another article at that time, so stay stuned., Until then, enjoy your new portable incognito hacking device!