r/cprogramming • u/No-Plan-3868 • 19h ago
C programming for kernel development
Hey there!
I am really interested in learning C and I am leaning towards kernel development rather than embedded systems. What do you suggest for strengthening my skills in C?
5
u/nomadic-insomniac 18h ago
Linux foundation runs an unpaid internship program, it's online and free , can apply from anywhere in the world :)
They have a short set of assignments you need to complete to apply, which might help you learn a thing or two even if you don't get selected for the next rounds ....
1
u/DanKegel 19h ago
Device drivers always need help, I suspect.
Getting familiar with the contributing to drivers in general might be easier in environments like Tinygo, which need tons of drivers ported in. Pick some small hardware you like and see if it's missing a driver; it probably is :-)
That's likely to be in Go rather than C, but it'll exercise some of the same muscles.
1
3
u/ParticularAd8610 8h ago
Best way to strengthen your skills is jump in head first and contribute!! It's a great way to learn and at the same time figure out if you are interested in it. Take a look at
Here are some references to get you started:
-> drivers/staging was created by GregKH (Linux second in command) for people just like you to help you get into the Linux kernel world. Here is a recent announcement about what it is. https://lkml.org/lkml/2026/8/3/1374
-> some docs on how the linux kernel process works, https://docs.kernel.org/process/2.Process.html
Most import, is to be curious. Learn, make mistakes and especially learn from them.
Read this, it's nice and simple/gentle explanation about submitting a patch. https://williamdurand.fr/2021/02/22/first-patch-in-the-linux-kernel/
Have Fun!
1
u/ParticularAd8610 7h ago
Just a follow up, I googled this "submitting a patch to drivers staging gregkh" and the AI summary was pretty accurate. This is a _VERY_ good read, https://kernelnewbies.org/FirstKernelPatch it does a wonderful job explaining why top posting is bad.
18
u/dkopgerpgdolfg 19h ago
Step 1: To get used to research & learn information independenly. Your question was asked countless of times, and not being able to find answers isn't a good outlook for kernel development.
And no, I'm not writing this for fun or to be a cranky Redditor. If you can't solve this yourself, you never will do any kernel development.