Create Kernel Driver: Difference between revisions

From bibbleWiki
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.