Wednesday, June 14, 2006

Playing around with Minix

I like the idea of writing device drivers and operating system components in other languages, as mentioned in a previous post about Haskell and Minix.

I installed Minix 3 and ran it under qemu to try it out. It's very functional but doesn't have much in the way of software or 'nice to have' features yet. But the source is all there and its very easy to build and follow.

I went looking for the book describing the internals of Minix, Operating Systems, Design and Implementation, and it's about $105 US online. Ouch. I tried a few Wellington bookstores and Capital Books had a copy for $110 NZ. They're probably the only bookstore in Wellington that was even likely to have a copy as they are specialists in technical books.

Now the task is to build/port some of the language implementations under Minix and try a simple driver. As I know very little about Minix I'm documenting the user aspects (setting it up, porting software, etc) in a weblog I setup for that purpose.

The interesting thing about that weblog is I'm hosting it on a Minix 3 system, running 'httpd' which comes with Minix. It's also running under 'qemu' on the same user mode linux machine as this weblog. There are some issues with doing that but it'll be interesting to see how it works - and it gives me a network facing Minix machine to experiment with. I suspect, due to the multiple levels of indirection, it's unlikely to handle load too well but we'll see.

Categories:

5 Comments:

Blogger wayo said...

I'm using Minix 3 on vmware player. Maybe a Factor port is in order... :-)

5:33 PM  
Blogger Chris Double said...

A Factor port would be fun to use for sure. Device drivers in factor...

So far I've got Spidermonkey Javascript built so I'll see where I get to with that.

5:36 PM  
Blogger Slava Pestov said...

I'd be interested in seeing a Factor port too. Does Minix have mprotect()?

6:58 AM  
Blogger Chris Double said...

Unfortunately not. It does not have any of the nice Linux memory management api's. Which makes ports of some things a tad difficult!

2:45 PM  
Blogger Slava Pestov said...

A port is still possible, however it will not have stack underflow/overflow detection. Perhaps the listener loop can do this check instead. Living in the wild side, so to speak.

3:01 PM  

Post a Comment

<< Home