2025-02-08 17:01:11 +01:00
## Setup env
On NixOS:
- Ensure Linux Kernel is the same as you configuration.
Otherwise, change linux_dev variable with you kernel variant and change flake.lock nixpkgs with your version.
- Use direnv allow or nix develop to setup shell.
On other distros:
2025-02-10 13:03:56 +01:00
1. With Nix env, .envrc, change line by `use flake .#other`
2. Without Nix env, you need to setup LINUX_MODULES_FOLDER to linux modules folder of your distro (ex: `/lib/modules/$(uname -r)` ) in your shell (bashrc)
2025-02-08 17:01:11 +01:00
## make : targets list
- all : Compiling kernel
- clean : Cleaning build folder
All subfolder is configured to use LINUX_MODULES_FOLDER env variable set by flake develop
## How test module
Step 1: Load module
```bash
sudo insmod [module_name].ko
```
**Warning**: Can fail if secure boot is enabled
Step 2: Check logs
```bash
sudo dmesg | tail
```
Step 3: Unload module
```bash
sudo rmmod [module_name].ko
2025-02-08 17:33:19 +01:00
```
## Usefull links
- https://www.kernel.org/doc/html/latest/
2025-02-08 20:56:42 +01:00
- https://elixir.bootlin.com/linux/v6.13/source/
## Notes
1. Find required headers files
```
nix shell nixpkgs#bear
cd 01_basic_module/
bear --append --output ../.vscode/compile_commands.json -- make -C $LINUX_MODULES_FOLDER/build M=$PWD modules
```
Search -I args and -D args