This GitHub repo (and a few others) contain the prereqs, lab setup (hardware & software), and the reference source code for this course.
- Successfully completed the 'Linux Kernel Internals & Module Development' (L2-LVC) course -or- have the equivalent skill sets: at a minimum: Linux OS architecture, basics of writing a Loadable Kernel Module (LKM), clear VM concepts, kernel memory (de)alloc APIs, at least the basic kernel synchronization mechanisms (mutex & spinlock), etc
- Good working knowledge of the 'C' programming language
- Optional / Advantageous: Experience working in kernel-space and/or embedded Linux helps.
To aid with the prereqs, the instructor will provide a few PDFs that cover the really essential prereq topics before session commencement. If not provided to you after enrollment, pl contact the instructor and request access to the same.
Practically, it's important that, bare minimum, you try out in a hands-on manner and understand the following LKMs (Loadable Kernel Modules):
- hello, world
- show monolithic
- Memory: slab (de)alloc basics
- Memory: slab (de)alloc, actual memory size used
- Locking: mutex lock basic usage
- Locking: spinlock basic usage
-
Ensure you have access to a ‘test’ Linux system. It can be a Virtual Machine (VM) running off a Windows/Linux/MacOS host, or (preferably for the 'Embedded Linux & Yocto' courses) a stand-alone native Linux system.
-
We generally recommend using a recent Ubuntu LTS release (f.e. Ubuntu 22.04 LTS), though other recent distros (Fedora/Debian/...) should be okay as well.
- For details on installing an Ubuntu Linux VM, please refer this Lab Setup document.
TL;DR:
- The latest version of the Lab Setup doc’s here
- kaiwanTECH YouTube tutorial: Setting up an Ubuntu Linux VM.
Though not mandatory, it will help tremendously if you have matching (or close) hardware to what will be taught and demonstrated during the course, thus allowing you to get an awesome hands-on experience: An embedded target board, a Single Board Computer (SBC); any one of these is fine:
- Raspberry Pi (any model: Pi Zero, 3B, 4 or 5) ; f.e., Buy Raspberry Pi Model 4B
Detailed Guide: Getting started with your Raspberry Pi
- TI BeagleBone Black (Aarch32) Buy
TI Beagle boards: Getting Started Guides
- TI PocketBeagle 2 (Aarch64) Buy
TI Beagle boards: Getting Started Guides
- We expect you have the USB/power cable, microSD card, with the OS pre-installed on it. (If unaware, just Google for resources related to stuff like this.)
You will learn to write Linux device drivers for these sensors/devices (among other driver types. Note that the suggested links below are India-centric, you can of course purchase these from any preferred / appropriate e-comm site or store):
-
USB Wireless laser presenter (input driver for it’s buttons)

-
Breadboard, jumper wires, a few LEDs, a pushbutton or two, 1k resistor.
(You’ll understand that we have no relationship with the hardware suppliers shown here and hence cannot guarantee price, availability, quality.)




