8 ms·
Linux Kernel Teaching
- organicfigs 7y agoAwesome! I can't wait to dig through this, I've been wanting to contribute to the linux kernel for over 2 years but no one on the linux mailing lists seemed interested in helping a newbie (so much for kernel newbies). Thanks for putting this together.
- pengaru 7y agoIf you want to contribute, fix bugs found by syzbot [0], there's an endless backlog there. It's the fastest way to get your hands dirty, familiar with a variety of subsystems, and land meaningful, appreciated patches upstream. [0] https://syzkaller.appspot.com/upstream https://syzkaller.appspot.com/upstream
- organicfigs 7y agoThank you, made my March a little better :)
- megous 7y agoOr pick a random SBC from Aliexpress or something you have catching dust at home, and try to improve the mainline Linux support for it. That will get you opportunities to learn more deeply the various kernel subystems, too. Especially around driver and arch code. That's what I did anyway.
- osandov 7y agoFeel free to email me at $my_username@$my_username.com. I'd be happy to help you get started.
- navidr 7y agoNot the op. But can I email you too? I’ve same condition.
- osandov 7y agoAbsolutely, same goes for anyone else who comes across this and is interested in kernel development.
- rtkaratekid 7y agoI’ll be reaching out :) Hopefully you’re not overwhelmed with the hordes of people wanting to get into kernel development XD
- arkj 7y agoYou can always head to kernel newbies and the linux insides git pages.
- snvzz 7y agoI find other systems (such as netbsd) to have a fairly more readable codebase and friendlier community. It was very easy for me to make some contributions there.
- highspeedmobile 7y agoI pretty much agree with this. For example, the BSD Handbook and documentation is the point of call for a newbie entering into the community and the codebase is much more readable than the Linux kernel. Last time I checked, the kernel-newbies site doesn't seem to be beginner friendly and aside from following the IRC channel, the mailing list is still the way to do code reviews there, which is quite frankly pre-historic and very unfriendly for beginners sending patches at best. At least for FreeBSD, they uses Phabricator for code reviews, HaikuOS uses Gerrit and SerenityOS uses GitHub and they seem to be the other OSes that have both good documentation about their kernels and their userland APIs. Perfect places to start learning about operating systems and kernels in general.
- jfkebwjsbx 7y agoPrehistoric? It is actually how the Git workflow was designed to work, and it is a standard method that does not require third-party services nor tools. Just your mail agent. Sending patches is as easy as sending one in GitHub or any other web-based system. The problem is that you (and many others) have never done it, and so anything different is harder. You should consider that if learning a handful of CLI commands is such a problem for you, perhaps it is not the system that is being unfriendly to you, but that you are unfriendly to learning anything else that is not your way.
- highspeedmobile 7y ago> Sending patches is as easy as sending one in GitHub or any other web-based system. Its still prehistoric in projects like the Linux Kernel, from a beginners point of view compared to GitHub, Gerrit or GitLab, which most of the active contributors are already working at large companies who's work requires contributing to it, thus already have invested in time and money learning the contribution process. To look at the LKML and do code reviews via back and forth emails looks simple for a veteran Linux developer at a large company but very arcane for a student sending a patch to the kernel. > The problem is that you (and many others) have never done it, and so anything different is harder. Your assumption is quite funny here as I have done both and I can tell you that most of the beginners particularly students are introduced into open-source via GitHub or even GitLab these days and its used as a starting point into contributing to a OS project. IIRC, ReactOS and FreeBSD has retained more student contributors from Google Summer of Code than say GNU/Hurd, by both improving the contribution process for beginners. I still wouldn't recommend beginners to learn about OSes in general by contributing to the Linux kernel due to the above reasons. Project making contributions more accessible for beginners isn't a bad thing, its actually how they attract potential long term contributors to stay on, rather than to make things simple only for veteran developers. > You should consider that if learning a handful of CLI commands is such a problem for you, perhaps it is not the system that is being unfriendly to you, but that you are unfriendly to learning anything else that is not your way. There's my point, it is still beginner unfriendly. Beginners these days would start with Github or Gitlab with a GUI to send PRs to a different OS project and wouldn't bother learning tons of CLI commands to send a patch in a email + code reviews. It is therefore favours veteran developers at large companies who stay on being long term contributors than the old days of random Linux enthusiasts doing this, which I'm very surprised you don't see the contribution process prehistoric from a beginners eyes. Perhaps something needs to change...
- mettamage 7y agoI suppose you did, but if you didn't there are some kernel programming courses out there of various universities.
- ndesaulniers 7y agohttps://nickdesaulniers.github.io/blog/2017/05/16/submitting-your-first-patch-to-the-linux-kernel-and-responding-to-feedback/ https://nickdesaulniers.github.io/blog/2017/05/16/submitting... `make W=1` to enable additional warnings, find a warning and send a fix. (`make W=123`)
- jfkebwjsbx 7y agoWhich mailing lists? Note that the LKML is not the place to ask!
- navidr 7y agoDoes this contain videos?
- filereaper 7y agoAny additional material on cgroups and namespaces?
- TACIXAT 7y agoI'd be interested in the next course on BPF and KVM.
- rtkaratekid 7y agoBPF has some pretty good docs out there if you just poke around the BCC GitHub repo (libbpf-tools/ is a good one) you’ll find a lot of them. I was able to start building programs using libbpf, but a lot of the “understood” info about the kernel is what’s been slowing me down, so I’m psyched to go through all this material and learn.
- mikeyouse 7y agoThe Linux Foundation recently released a free course as well titled "A Beginner's Guide to Linux Kernel Development" - haven't taken it yet, but another resource for the community: https://training.linuxfoundation.org/resources/free-courses/a-beginners-guide-to-linux-kernel-development/ https://training.linuxfoundation.org/resources/free-courses/...
- deniscepko2 7y agoI have looked at this one, it is useful if you do know about Linux internals already. It just introduces you to the development process (how to commit your code and etc.)
- ignoramous 7y agoHere's another freely available beginner's resource on Linux internals by u/0xAX [0]: https://0xax.gitbooks.io/linux-insides/content/index.html https://0xax.gitbooks.io/linux-insides/content/index.html [0] https://news.ycombinator.com/submitted?id=0xAX https://news.ycombinator.com/submitted?id=0xAX
- grng3r 7y agoGreat, thanks for this contribution. So helpful this just came at the moment when I got my hands on The Linux Programming interface book, hopefully this will all help myself to contribute, thanks guys
- saagarjha 7y agoSomeone here probably knows this, so I figured I'd ask: I submitted a small patch to the kernel a while back and I made a typo in it and it broke the tests, and then I couldn't figure out how to get the test bot to pick up my new patch and by that point I assume anyone who would possibly have reviewed my patch stopped bothering. Is there something I should do to get it looked at again?
- DSingularity 7y agoE-mail the person maintaining the sub-system you are modifying.
- saagarjha 7y agoI had Al Viro CC'd on the emails when I sent it to linux-fsdevel. Are you saying I should send it to him again, directly? (The patch, for reference: https://github.com/saagarjha/linux/commit/4867a403decc364c8b0f4cb533bce8419e070e06 https://github.com/saagarjha/linux/commit/4867a403decc364c8b.... I figured I should also take this opportunity to check to make sure there's nothing wrong with it that might cause it to be ignored.)
- Jahak 7y agoCool, thank you very much!
- rtkaratekid 7y agoStarted getting into kernel stuff for work. Does anyone have a good idea what kind of market demand there is for kernel devs or similar skill sets? Being new to this I absolutely love it, but have no idea. The resources shared by everyone here are so helpful! I’ve been muddling through by reading the docs, source code, and various messages on the mailing list and... it’s been a little painful.
- rustybolt 7y agoThe direct demand is low; the Linux kernel is open source so framing yourself as a 'kernel developer' probably is not a very good way to be an ideal candidate for a job opening. On the other hand, most developers and even some non-developers recognize that kernel development is hard. If you have a name in the kernel development world this will certainly help your reputation. Likewise, if you have a good knowledge of Linux this will certainly help you for certain job openings (kernel development is probably a great background for most low-level job entries).
- easytiger 7y agoLots of work reconfiguring major distros and their latency disastrous configurations
- giancarlostoro 7y agoI would imagine it would be really handy for embedded systems.
- 7y ago
- ivanfon 7y agoI miss the Eudyptula Challenge [0], I never got around to complementing it. It was a series of 20 challenges to introduce you to Linux kernel development, and it was done entirely over email. I think it's been shut down for a few years now, I'm not sure when or if it'll come back at this point. [0] http://eudyptula-challenge.org/ http://eudyptula-challenge.org/
- jplayer01 7y agoAw man. That sounds pretty cool. I guess there isn't anything comparable out there? I'm interested in contributing to the Linux kernel, but it's just so hard to get into it.
- tarruda 7y agoIt is still possible to find the exercises/answers on github, so anyone can complete the challenge on their own.
- eatonphil 7y agoYep! A quick search turned this up. https://github.com/agelastic/eudyptula https://github.com/agelastic/eudyptula
- alicestyles 7y agoI have never loved Linux.