I needed a bit of a break from “real work” recently, so I started a new programming project that was low-stakes and purely recreational. On April 21st, I set out to see how much of a Unix-like operating system for x86_64 targets that I could put together in about a month. The result is Bunnix. Not including days I didn’t work on Bunnix for one reason or another, I spent 27 days on this project.
↫ Drew DeVault
Bunnix’ creator, Drew DeVault, has quite a bit of experience with writing operating systems, as they’re also the creator of Helios, an experimental microkernel operating system. Bunnix is remarkably capable for a 30-day project, and comes with support for both BIOS and UEFI boot, and it’ll boot on real hardware too. It doesn’t have USB support though, so if you’re going the real hardware route, you’ll need to take that into account for mouse and keyboard input.
Bunnix has a relatively solid set of drivers, taking the short development time into account: among other things, there’s PCI, AHCI block devices, serial ports, framebuffers, and ext4 support. The kernel supports a virtual filesystem, a /dev filled with block devices, a terminal emulator, and more. Bunnix is single-user for now, so it doesn’t enforce file permissions, but DeVault states it should be relatively easy to implement multiuser support.
A unique characteristic of Bunnix is that’s written mostly in Hare, complemented by some C. Hare is a relatively new programming language, which we touched on late last year when it was ported to OpenBSD. Implementing file systems proved to be one of the difficulties during development, partly due to Hare.
I also learned a lot about mixing source languages into a Hare project, since the kernel links together Hare, assembly, and C sources – it works remarkably well but there are some pain points I noticed, particularly with respect to building the ABI integration riggings. It’d be nice to automate conversion of C headers into Hare forward declaration modules. Some of this work already exists in hare-c, but has a ways to go. If I were to start again, I would probably be more careful in my design of the filesystem layer.
↫ Drew DeVault
DeVault’s post about Bunnix gives a lot more insight into the development of Bunnix, so I’d highly suggest to head on over to read more. Do note that DeVault considers Bunnix “done”, in the sense that the learning experience is over, and aside from a few random developments here and there, they won’t be doing any work on it anymore.
Unix clones are so overused … Now, a Multics clone would be really cool.
Obviously it’s this chaps own time to do with itas he wants but I cant help think he could have lent his considerable talents to an established project that adds something new – maybe something smaller where he could make a real impact like 9Front?
Why? I mean, why?
We don’t know his proficiency level nor his knowledge of internals. He’s still learning. His approach to learning is from scratch. Or would you also tell the people collaborating in LFS to move away and help an “established project”?
Well… programming is a non-ending learning thing anyway.
IMHO, learning the innards from scratch is a better long-time approach for a properly developed programmer rather than merely fixing others bugs/adding snippets to another people project.
How dare that dude not get your approval on how and what he should invest his time and effort. Am I right?
Everyone here has agreed he can do what he wants to do with his time. but at the same time people are allowed to have and express their own opinions about it. That is the whole point of having comments is it not?
If doing something makes someone happy then it’s all that matters, but I also agree with Quizzler that unix clones have been done to death and I don’t think there’s any wrong with saying it.
It looks like jgfenix is the one who said this about unix clones when I said Quizzler, oh well.
The comments from jgfenix and Squizzler are rooted in envy, vomiting coulda/woulda/shoulda to deflect from what he did. He did what he wanted to do, at no one else’s expense. Drew likes to code, happens to have spent his time coding an OS and a website called OSNews posted about that OS.
No one is trying to stop him coding whatever, I think the posters were making the point that an incomplete and abandoned OS like this is of no use to anyone.
Drew DeVault is a very capable programmer and his contribution to free software have been extremely impactful. I’ve, personally, moved many of my personal projected to SourceHut, which is a great alternative to GitHub. Additionally, he’s don’t a lot of other things. Most recently, he’s been concentrating on developing the Hare programming language, which this OS uses. That was his goal, use Hare code an OS. Why hate on his work? He proved you can get something fairly complex, such as a Unix-like OS, written in this new language. Which is certainly quite an achievement. I can’t help but agree with tux2bsd, all this hate can be nothing more than envy.
It is of use to him and whoever finds it useful. That’s all that should matter in terms of usefulness of a hobby project.