I have an antique server with qemu set up to run Xv6.[1] I wanted somebody to go through the course with me.[2] So far nobody has come aboard, and I haven't really started. If anyone here might be interested, please feel free to get in touch: notoles@metalvps.com. It would be super great to have a few friends along! Thank you!
So far, ten people have emailed expressing interest in joining our Xv6 study group. Plus three more said hello.
My idea is to start on the course itself tomorrow or the next day. I expect to invest at least an hour a day in the course itself. I also expect to post my notes and progress somewhere.
We can fill in the group structure as we go along. Maybe we all can keep in touch via email, irc, Jitsi, an HN thread, or set up our own Xv6 study group forum?
I am delighted to be in contact with so many other students! We have room for a few more if anyone else wants to join. Thank you all so much!
For those interested in a slightly more readable code and modern build system, shameless plug of my attempt at some xv6 modernization: https://github.com/NewbiZ/xv6
One of my favorite classes in college was Operating Systems, taught by Peter Fröhlich at Johns Hopkins. We modified and built new xv6 features. Here's the course webpage, with the excellent and fun assignments:
I'm working my way through this[1] operating systems book and a few of the exercises[2] require customizing and compiling Xv6. It's so cool to code your own scheduler or syscall and see it working on a actual OS.
Also, XINU, “ Operating System Design - The Xinu Approach”[0]
The book isn’t free, but I’ve found it to be fun to work through. The projects are centered around building and running on small boards like beaglebone, Galileo, and more recently raspi (although this isn’t covered in the book.)
I just scanned the Xv6 book [0] and it seems the book's exercises aren't really to build an OS from scratch, but modify an existing bare-bones OS.
When looking at the Xinu book index, it's not clear to me if the Xinu book is different. Does the Xinu book show how to write an OS from scratch or is the book also about making small changes to an existing OS?
I've taken the class at Purdue. The way the class works it was divided into 4 "projects" where you had to add features to Xinu. In my semester those were: a more advanced scheduler, locks, process permissions, and a file-system.
Excellent. I'm working on a local undergraduate class chain to reach Compiler, Operating System and Computer Graphics. The school is peanut comparing to MIT so we don't have difficult labs as in MIT or Berkeley's courses. I'll take MIT's after I get the basics from my university. Hopefully this can smooth the cliff a bit.
I really liked tinkering on os-161 from ops-class.org (Harvard) a few years back. They have a youtube channel with all of the video courses and various assignments including new features and bug fixing.
Eh, guess it depends on what you're using to compare them. A lot of things are POSIX-compliant. Heck, Windows NT was literally developed because the military wanted POSIX compliance. I consider something Unix-like if it is similar in structure and design to historic Unixes, or at least Linux. MINIX seems to be neither.
> Tru64 UNIX and QNX have Micro-kernels, DragonFlyBSD and MacOS Hybrid.
You're reading too much into my comment. The original PDP-7 (and later PDP-11) Unix are monolithic kernels. The most popular Unix variants or clones today (Linux, Free/Net/OpenBSD) are all monolithic kernels.
Tru64 is long dead. QNX has a niche market. DragonFly ... not much market share.
MacOS? As you say, hybrid, not microkernel, and is hardly successful in the same space that the monolithic kernel Unices are (ie. servers).
It's not hard to argue that Unix has historically been a monolithic design, and that those have been the most successful, even if you can certify various microkernels.
Of course this comment may not hold for another 50 years, but it is certainly true of the last 50.
> And its really not my problem if you think a unix has to be mono..thats just wrong and you know it.
It's not really my problem if you think I said UNIX has to be a monolith, since I never said that.
Xv6 is a reimplementation based on the original v6 UNIX design. As a teaching tool for the historical design of UNIX, it's a great place to start. If you want to study Unix-like microkernels, then MINIX and Tanenbaum's books are a great place to start.
If you want to study hybrid Unix-like systems, then the Darwin source code might be a good place to start. MacOS as a popular, hybrid, desktop Unix is pretty much an anomaly in the course of Unix history.
Study whatever you want, but for beginners to OS design, it's easier to understand hybrid and microkernel systems if you first know what a monolithic kernel is, and how various modern versions of Unix evolved from that in my personal opinion.
Nobody really gives a rat's ass about UNIX certification in the real world ... except MacOS fans.
I hear this a lot - but given that consumer choice is pretty much taken out of the equation, I don't really consider popularity to be applicable. People don't buy Intel CPU's because of the Minix ME.
I don't know quite what you mean? MINIX isn't free, which is pretty big for a student project. In fact people may have started a similar project(not big like GNU) to due to its price.
Maybe simplicity?
Something that can be understood easily in a few weeks, and then you may start implementing whatever features you find useful. Oh, and Xv6 is buildable under 1 minute on modern machine, and don't need a custom-build toolchain.
I agree it definitely did lots well, but "it lasted over half a century" isn't a great argument for that. There are huge network effects with platform APIs that allow terrible things to persist simply because that's what everyone else uses.
It's not better, just for a different use-case. That's why every single universal-os is based in 60-90 tech. Your tires are useless for tanks or trains, but wheels are universal.
Let's see how good your tire's are in a chariot race:
>>Any iron tire for racing would be a very thin strip of iron on the outside of the wooden rim, best when heat-shrunk on the wood, to consolidate the whole wheel.
Your base is ~unix=wheel and on top your pressure-sensor=Kubernetes (for example), below is your always on disk-brake=x86 ;)
Your comment is almost certainly the stupidest thing I have ever read on HN.
I look forward to more insightful comments from you in this vein:
"I'm not sure how I feel about universities (which should be teaching modern history) teaching ancient 27BC stuff like the Roman Empire. Do you really want a new generation of people who think the Roman Empire was perfect and cannot be improved upon?"
I'm sure students would benefit more from MIT running courses such as "7.1729: An Introduction to 23 Not-Invented-Here JavaScript Frameworks" /s
Again, for historical reasons it's probably not a bad idea. But yes it would be a bad idea to teach students C and send them out into the world with the idea that writing C is how you're supposed to do it.
>But yes it would be a bad idea to teach students C and send them out into the world with the idea that writing C is how you're supposed to do it.
So your student have to tell Linus:
Sorry cant help you with your kernel that's not how you're supposed to do it, please learn Rust and rewrite your kernel RN! I don't know in what wannabe rainbow world you live.
BTW Students can think for themself, they honestly DONT believe you if you tell them unix or c nor rust are flawless, teaching something does not mean it's perfect but one way to do it.
I have an antique server with qemu set up to run Xv6.[1] I wanted somebody to go through the course with me.[2] So far nobody has come aboard, and I haven't really started. If anyone here might be interested, please feel free to get in touch: notoles@metalvps.com. It would be super great to have a few friends along! Thank you!
Best wishes and kindest regards,
Tom
[1] https://lowendbox.com/blog/how-to-compile-the-3-items-needed...
[2] https://lowendbox.com/blog/invitation-to-join-me-for-mits-fr...