6 ms·
Learning operating system development using Linux kernel and Raspberry Pi
- ObsoleteNerd 6y agoThe offical Raspberry Pi distro of Linux is already called “Raspberry Pi OS”: https://www.raspberrypi.org/downloads/raspberry-pi-os/ https://www.raspberrypi.org/downloads/raspberry-pi-os/
- Yuioup 6y agoRenamed from "Raspbian". Perhaps the article was written before the name change?
- amatecha 6y agoYeah the github repo ( https://github.com/s-matyukevich/raspberry-pi-os https://github.com/s-matyukevich/raspberry-pi-os ) shows it as being created just a little under 2 years ago
- thomond 6y agoThis project seems to go back at least 2 years while Raspbian changed it's name very recently.
- shakna 6y agoRaspbian was renamed to "Raspberry Pi OS" on the 27th of May, 2020. That's so recent you can assume that there'll be a whole bunch of naming conflicts and/or confusion.
- johnnycab 6y agoI hope there is an official release of 64-bit version soon. https://www.raspberrypi.org/forums/viewtopic.php?f=117&t=275370 https://www.raspberrypi.org/forums/viewtopic.php?f=117&t=275...
- teleforce 6y agoIf you are looking to learn operating system concepts using RPi there is a new textbook by Prof. Vanderbauwhede, under ARM textbook initiative [1]. I think for educational purposes it will be very interesting and useful if someone develop from scratch a simple System V UNIX for RPi based on Bach's description in his seminal book on "The Design of the UNIX Operating System" [2]. The book also covers multi processors topic as supported by modern platforms such as RPi. [1]https://www.arm.com/resources/education/books/operating-systems https://www.arm.com/resources/education/books/operating-syst... [2]https://github.com/suvratapte/Maurice-Bach-Notes/blob/master/README.md https://github.com/suvratapte/Maurice-Bach-Notes/blob/master...
- ngcc_hk 6y agodoes it go through the process?
- bla3 6y agoIs the ebook of the textbook a regular PDF/epub/mobi or is it only viewable in their viewer apps? The page doesn't say, and I don't want to spend money on it and then realize it's not a real download.
- jakamau 6y agoI was curious about that as well. The official ARM site doesn't list one but another distributor lists the related ISBN as epub. https://www.vitalsource.com/products/operating-systems-foundations-with-linux-on-the-wim-vanderbauwhede-jeremy-v9781911531203 https://www.vitalsource.com/products/operating-systems-found...
- pumanoir 6y agoThe "book" you download from this website is not an epub. You must use their apps to read it.
- vips7L 6y ago> develop from scratch a simple System V UNIX for RPi A few people seem to have ported xv6 to arm. https://github.com/david50407/xv6-rpi https://github.com/david50407/xv6-rpi https://github.com/houcheng/xv6-armv7/ https://github.com/houcheng/xv6-armv7/
- lewis1028282 6y agoMight be a bit controversial but I found writing drivers for Linux on my raspberry pi helped me understand kernels, virtual memory etc. I used Linux Device Drivers (ldd3) which is free online. The book was written for the 2.6 kernel but someone on GitHub updated the code for the latest kernels.
- stevekemp 6y agoI've never written a driver myself, because all my hardware is supported. But I've certainly added new PCI IDs to existing drivers, and done that kind of low-level learning. I expect if I found a random piece of hardware that was close to an existing one that adding the driver, or updating things so that it worked on the new hardware would be possible. It's just not a situation I've come across. What I found useful/educational was writing a simple linux security module. 1. LSMs are essentially isolated. 2. They don't care about hardware. 3. You can do lots of things with them. Even horrid evils things. For example I put together the following module in which the kernel calls back to userspace every single time you execute a binary, to decide whether it should be permitted or not: https://github.com/skx/linux-security-modules https://github.com/skx/linux-security-modules (And yes, I appreciate that is almost exactly as horrid as it sounds! So much fun to hack around with though.)
- lewis1028282 6y agoYou can just write char drivers that operate a slab of kernel memory, and implement all the syscalls like open, read, write on that piece of memory.
- Narishma 6y agoWhy would it be controversial?
- Frost1x 6y ago>Why would it be controversial? Not OP but my perspective is that much of software development, engineering, and practices become cult like, often without theoretical or empirical basis. I'm rarely surprised anymore when I see criticism of one approach over another. Someone may think "the way" to learn Linux kernel development isn't what OP suggested and there's a cult of people who agree who will adamantly concur to a fault.
- mikece 6y agoIn terms of teaching fundamentals of operating system theory and systems programming, is there such a thing as an operating system kernel written in Python or some language which is meant to be easy to hack on for educational purposes? I wonder how useful that would be for a CS student, taking the complexity of C, C++, or Rust out of the picture and just running a kernel in a VM for educational purposes.
- simion314 6y agoIMO this topic is entangled with hardware, the student needs to do a course in hardware and how CPUs work, do some simple assembly coding, after that C is a natural progression. If C is too complex for some students then system programming and OS development is not for them. For educational and getting started I think https://www.nand2tetris.org https://www.nand2tetris.org is a good source material, the complexity or real world stuff is missing there so you can focus on essentials.
- cwoolfe 6y agoC is a language which is closer to hardware than Python, so you'll find it to be the language of OS programming. In fact, Python is written in C. I think trying to do OS programming in Python would actually be more difficult than learning C. If you are a solid programmer who already knows Python, learning C would only take 2-4 weeks. The benefit is worth the investment. https://stackoverflow.com/questions/10904721/is-it-possible-to-create-an-operating-system-using-python https://stackoverflow.com/questions/10904721/is-it-possible-...
- DC-3 6y agoThere's no point abstracting away the nitty-gritty. OS dev is the nitty-gritty.
- lzlz 6y agoActually using C or C++ is the most straightforward painless way to learn kernel dev. C is not complex at all. What you need to learn first is something like what nand2tetris offers, at least the first part. Usually you will have to do some variation of nand2tetris in the first or second year of undergrad.
- deleted 6y ago[deleted]
- OldTechSucks 6y agoI want to learn about firmware development. I have been playing with rpi gpio and arduino i2c but have no idea how to start with firmware development. please throw at me references, i'm very fragile but i'll take it and learn from.
- ma5ter 6y agoIs there a similar tutorial that support rpi 2 ?
- lukaspu 6y agoI just wanted to say thank you. The resource is really really good. I learned a ton during the first two chapters alone