
Xv6, a simple Unix-like teaching operating system - rspivak
https://pdos.csail.mit.edu/6.828/2012/xv6.html
======
shavenwarthog2
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.

------
luckydude
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](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 :(

~~~
luckydude
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](https://pdos.csail.mit.edu/6.828/2014/xv6.html)

~~~
luckydude
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.

~~~
achernya
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](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)

~~~
luckydude
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.

------
jlappi
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.

------
IshKebab
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?

------
gravypod
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.

~~~
Samathy
The BrokenThorn OS Dev tutorials have a great section for bootloader
development. [1]

You can find a whole bunch more stuff on the OS Dev Wiki too. [2]

[1]
[http://www.brokenthorn.com/Resources/OSDevIndex.html](http://www.brokenthorn.com/Resources/OSDevIndex.html)
[2] wiki.osdev.org

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

[http://os161.eecs.harvard.edu](http://os161.eecs.harvard.edu)

~~~
mveety
I really like the System/161 simulator that they use with it. They made some
good choices sticking to the simple R3000 MMU model.

