Create Kernel Driver: Difference between revisions
Jump to navigation
Jump to search
Line 39: | Line 39: | ||
*Block Device e.g. fs, drive | *Block Device e.g. fs, drive | ||
*Network Device e.g. nic | *Network Device e.g. nic | ||
=How it works= | |||
User space, talks to kernel space, using system calls. The device drivers implement, two types of systems calls, one type file operations, the other hardware management or ioctl. |
Revision as of 04:23, 20 January 2025
Introduction
This seems like a way to create a VM for kernel development so thought I might take some notes
Setup Multipass
Install
snap install multipass
Create box
multipass shell
Edit /etc/ssh/sshd_config and change
KbdInteractiveAuthentication yes
Reload daemon
sudo systemctl daemon-reload
restart daemon
sudo systemctl restart ssh.service
set passwd
sudo passwd ubuntu
get IP (never knew this)
hostname -I
Setup VS Code
Go to extensions and in remote development extension. Connect via ssh
Restart Multipass
List what we have
multipass list
For this we just type
multipass shell
Install Software for Driver Development
To do this
sudo apt update sudo apt upgrade sudo apt install build-essential linux-headers-$(uname -r) kmod
Making Driver
Linux treats everything like a file and lets you do the following
- Open
- Close
- Read
- Write
- Seek
You can create a
- Char Device e.g. uart
- Block Device e.g. fs, drive
- Network Device e.g. nic
How it works
User space, talks to kernel space, using system calls. The device drivers implement, two types of systems calls, one type file operations, the other hardware management or ioctl.