14 comments

[ 0.16 ms ] story [ 40.0 ms ] thread
This is an excellent little project to play with if you want to learn more about the functions of the kernel. The accompanying book is a great resource and provides relatively simple projects.
This is an excellent tool for learning Unix-type systems. At < 10K lines, it's much smaller than Linux v1, but has most of the parts of a more mature kernel. The source code is clear, and well documented in its own booklet.

Highly recommended.

Huh, I think HN killed their git server, I started the clone and it's just sitting there doing nothing after 100K. Eventually dies with:

pdos.csail.mit.edu[0: 128.52.129.126]: errno=Connection timed out

Just FYI for anyone else trying. I looked and this seems to be a mirror that contains the branch they mention:

https://github.com/sometimesfood/xv6

and you might need this (I did):

sudo apt-get install libc6-dev-i386

but the stock qemu didn't seem to work, their server is kaput, and no mirror on github :(

I contacted them and they said use this:

git://github.com/mit-pdos/xv6-public.git

And OP should correct the original link to:

https://pdos.csail.mit.edu/6.828/2014/xv6.html

Has anyone gotten their qemu to compile? I patched around this problem (I have gcc 4.something):

ansel:~/xv6/qemu ./configure --disable-kvm ERROR: glib-2.12 required to compile QEMU

and then hit this one:

ansel:~/xv6/qemu ./configure --disable-kvm

ERROR: DTC not present. Your options: (1) Preferred: Install the DTC devel package (2) Fetch the DTC submodule, using: git submodule update --init dtc

got the submodule, did a make:

Makefile:116: * target pattern contains no `%'. Stop.

I'm on Ubuntu 14.04.3 and up to date.

Which qemu are you cloning? When we taught 6.828 over IAP term we ported the patches to qemu 1.7.0 and put them up at https://github.com/geofft/qemu. I see the repo has a 2.3.0 and 2.4.0 branch now too. I last built 1.7.0 on Debian 6 (squeeze); newer Debian and Ubuntu should work fine. (Make sure you have libsdl1.2-dev installed)
I got it to work but I have no idea how. I tried all the branches and the official sources, they all failed the same way. I deleted and recloned the 1.7.0 branch and that worked. Shrug.

Thanks for your help.

MIT PDOS also cleaned up its infrastructure a while back. Jon (a student there who does cool scalability research) replaced the old ailing server that hosted a lot of things and that wasn't really maintained by anybody with a set of modern vms, not sure if he also moved over the public git server...
Are there any projects like that that show people how to write a bootloader? I have been wanting to write something like Xv6 except I want to write everything that will be running except BIOS code.

I have yet to find something on bootloader code.

Harvard also has something similar for their OS course (now used outside of Harvard as well) called OS/161.

http://os161.eecs.harvard.edu

I really like the System/161 simulator that they use with it. They made some good choices sticking to the simple R3000 MMU model.
Seems a bit sad to me that we're still teaching a 40 year old OS. Hasn't computing advanced since then? Where's the Plan9-like teaching OS?