Home

Awesome

TaxiDriver

Linux Kernel Module for RPM/WPM and usermode driver with examples.

Features

Compiling

Prerequises :

sudo pacman -S git linux-headers OpenGL cmake
yay -S sdl3-git

Upstream Linux Kernel

To compile the driver you'll need to be at least on kernel version v6.5 (i used the arch kernel).<br>

legacy Linux Kernel

To build for an older Linux Kernel ex. 5.15 change KERNEL_UPSTREAM preprocessor definition in TaxiDriver.h: #define KERNEL_UPSTREAM 0 or if you use cmake only change required in CmakeLists.txt: add_compile_definitions(TaxiDriver PRIVATE KERNEL_UPSTREAM=0)

Compiling and running :

git clone --recursive https://github.com/ALittlePatate/TaxiDriver

Kernel Module

choose and write a MAJOR number ex. 506 in install.sh and validate for uniqueness grep "506" /proc/devices

# sudo mknod /dev/TaxiDriver c <choose Major Number> 0
# cmake is still incomplete
cd km && ./install.sh

system might still choose to set a different one, so read the number that is in use, after TaxiDriver is loaded, with grep "TaxiDriver" /proc/devices and adjust in mknod and reload TaxiDriver. After loading the Driver, you should find a line saying that TaxiDriver was loaded with X major code.

sudo dmesg | grep TaxiDriver

Unload the driver :

# sudo make unload
sudo rmmod TaxiDriver
sudo rm /dev/TaxiDriver

Usermode Target/Test Application

cd um/test && make
./test_app

Usermode Driver Application

cd um && make
./main

Known Issues

If you find anything not listed above. Please open up Issues on the Repo and provide the build log showing the issue with LANG=C make with all of your steps and envoirment info to reproduce.

Missing Features in development

Contact

If you have a problem regarding the code, open an issue or make a pull request, i'll be happy to add your contribution !<br> If you need to contact me for any other reasons, message me at _.patate on discord.