All you need to know to use make the Linux kernel support your own hardware.
Overview
Everything you need to know to make the Linux kernel boot on your new embedded board and write drivers for its specific hardware devices. Learn how to describe your hardware with the device tree, and debug the kernel code (written by yourself or by the community).
Also learn how to contribute changes back to the upstream version of Linux, to reduce your own maintenance costs, make support for your hardware ubiquitous and enjoy contributions from the Linux kernel developer community.
Using progressive but challenging practical labs and varied techniques to make the learning always stimulating and fun, and above all to make it stick. At least 75% of the time is dedicated to practical activities.
Description
Type | In-person |
Mix | 25% theory – 75% practical activities |
Language | English |
Max participants | 8 |
Duration | 5 days |
Hardware | BeaglePlay board with TI Sitara AM625 SoC (ARM64) |
Linux kernel version | 6.12 (LTS) used in practical labs |
Prerequisites | Familiarity with the Linux command line |
Upcoming sessions (in-person and online)
Trainer | Dates | Cost | Register |
Michael Opdenacker | Jun 9-13, Avignon, France 40 hours – 9:00 to 18:00 Seats left | 2,990 EUR or 3,190 USD + 20% V.A.T. | ![]() |
Michael Opdenacker | Jul 15-18, 22-25, online 15:00 to 19:00 UTC+2 Seats left | 2,490 EUR or 2,690 USD 1 | ![]() |
1 Only for individuals (all countries) and French companies: + 20% V.A.T.
Also available on-line or through private sessions worldwide. Ask us for a quote.
Agenda
Part 1: Configuring, building, booting and kernel modules
- Demo: Build a Linux kernel for a different board and boot it.
- Big picture: bootloader, kernel and user-space.
- Get a cross-compiling toolchain.
- Retrieve Linux kernel sources. Understand the Linux release process and choose a version for your project.
- Configure the Linux kernel. Guided tour of most interesting options.
- Cross-compile the kernel. Speed up this build.
- Boot the kernel from the bootloader. Device Tree and kernel command line
- Kernel coding constraints. Writing a kernel module.
Part 2: Device model – Bus, drivers and devices
- How the kernel abstracts and binds busses, devices and drivers.
- Case of busses supporting device enumeration: USB and PCI
- Platform devices and drivers.
- Device Tree: how to describe hardware that cannot be detected.
- Example: the I2C bus.
- Pin multiplexing.
- Writing an I2C device driver – Exchange your first bytes with the hardware.
- Device tree validation
Part 3: Kernel frameworks, memory and I/O
- Character driver operations: read, write, ioctl(). Exchanging data with user-space.
- Kernel frameworks: abstracting devices in user-space.
- Example: the input subsystem.
- Completing the I2C driver: exposing device data to userspace.
- Kernel memory allocation – Understanding memory usage statistics.
- Reserving and mapping I/O memory (registers).
- Application: write data to board serial ports.
Part 4: Interrupts, deferring work, locking
- Application: allow user space to write to serial ports.
- Processes and scheduling. Waiting for a condition.
- Support for interrupts to process hardware events.
- Application: read data received on the serial ports.
- Managing concurrency issues. Lock based and lock-less primitives. Debugging locks.
- Torture the serial driver using full kernel preemption. Expose bugs due to concurrency issues and fix them through locking.
- Direct Memory Access (DMA): illustration on a network driver
Part 5: Board support, debugging, testing and contribution
- How to support a new board. How SoCs are supported.
- Available techniques for kernel debugging.
- Debug and fix a broken kernel driver with multiple issues.
- Kernel testing.
- Performance analysis with perf and ftrace.
- Kernel development best practices: error handling, coding conventions, using the checkpatch.pl script.
- Locate specific issue by bisecting kernel code.
- How to contribute to the upstream Linux kernel.
- Add your name to kernel history by submitting your first patch(es).
- Getting involved: ideas for kernel contribution.
- Conferences and useful resources.
- Q&A session.
What’s special in our in-person courses
Much better interactivity with the instructor and other learners compared to an online setting. It’s also much easier to get help.
Board and accessories provided: except for the Linux computers, electronic boards and accessories are provided by Root Commit for the duration of the course.
Course never postponed: once you are registered to one of our public sessions (after we receive your payment), you are sure to participate at the expected dates. We don’t postpone sessions, even with a very small number of participants.
Majority of practical activities, representing at least 75% of learning time.
Short lectures only: sequences of theory never exceed 30 minutes, and are interleaved with quick or longer practice. Too long series of lectures are hard to digest, especially in an online setting.
Technical and teaching experience: courses taught by an industry veteran with more than 20 years of experience in embedded Linux and 30 years using and advocating for Free and Open Source Software.
See also: Why choose Root Commit courses?
Practical details
Registration
To register to one of our sessions (in-person or on-line), please send us an e-mail mentioning:
- Which session(s) you are interested in
- The name(s) of people to register
- Your company name (unless paying by yourself)
- An invoicing address
- An EU VAT number (if working for a company in the European Union)
If you have more than 4 people to register, you may consider ordering an on-site, in-person training session. Just ask us.
Venue

The session will take place at Hotel Mercure Pont d’Avignon Centre (map).
The hotel offers a discounted rate for participants to our session. If you are interested in staying there, call them and let them know about your participation. Otherwise, many affordable hotels and accommodation solutions are available within walking distance in Avignon. The Avignon city center is great for relaxing and having dinner in the evenings.
Going to Avignon is also an opportunity to visit the famous Provence region in France before or after the course.
How to get to Avignon
See the Getting to Avignon official guide.
By train or by BUS

Given its low carbon emissions and fast connections to other cities in France, rail is Root Commit’s recommended way to reach Avignon, either directly from your home town if you live close enough in Europe, or from the Paris (3 hours) or Marseille (60 to 90 minutes) airports.
Here are websites on which you can book your tickets:
BY CAR
If driving is the most convenient solution for you, and if you find accommodation in the Avignon City Center, keep in mind that you will have to find a car park which will add up to the total cost (~50 EUR for a weekly pass). You probably won’t need your car at all during the course, but will find it handy if you wish to visit the area on the week-end. The most convenient parking lot for the venue is Palais des Papes.
To make your drive to Avignon more enjoyable and environmental friendly, have you tried carpooling? BlaBlaCar is a service that works great in France.
By plane
The airports that are closest to Avignon are:
- Marseille: the closest airport. You will have to take a shuttle to the nearby train station, and from there, you can get to the Avignon Centre train station. Expect a transit time from 90 minutes to 2 hours. See instructions.
- Lyon: you have fast train connections (50 minutes) between the Lyon airport train station and the Avignon TGV train stations. Otherwise, with regular trains, you can get to Avignon in about 2 hours.
- Paris Charles de Gaulle: though further away, there are fast (3 hours) connections between the Paris airport and Avignon TGV train stations. If you’re coming from far away, flying to Paris and then taking the fast train to Avignon can be faster than taking another flight from Paris (or another European city) to Marseille. Unless you get a direct flight to Marseille, it also much better in terms of CO2 emissions. Of course, you could also enjoy a few days in Paris before or after the course.
What do I need to bring?
PC running Linux
For this session, you will need a laptop computer running a native installation of Linux, with one of the distributions currently supported by the Yocto Project. This way, you can practice with your preferred distribution, as you would do in your real job. We suggest Ubuntu 24.04 if you don’t have any preference yet.
If you haven’t installed Linux on your laptop yet, most Linux distributions will allow you to install Linux alongside Windows, after making enough free space. Note that we don’t support the use of Virtual Machines (to run Linux from inside another operating system), as from our experience, connecting the Linux VM to the board and other devices is an endless source of distractions. Using VMs also causes a substantial loss of compiling performance.
This laptop should have at least 8 GB of RAM, a CPU with at least 4 physical cores and at least 50 GB of free disk space (100 GB for the Yocto course). It should also be equipped with a micro-SD card reader (internal or external).
What is provided?
The following is provided in our in-person public sessions:
- Electronic board and all its required accessories, for the duration of the course
- Lunch, morning and afternoon breaks are included.
- Electronic copies of the lecture and practical lab materials.
- Electronic training certificate, after successful completion of the course, which can be shared on your LinkedIn profile and on other social media.
FAQ
Q: It is possible to leave a little earlier on the last day?
A: Yes, if necessary for some participants, we will make sure that all lectures are over before 4:00 pm.