Minix 3.2.1 Released
kthreadd writes "Minix, originally designed as an example for teaching operating system theory which was both inspiration and cause for the creation of Linux has just been released as version 3.2.1. Major new features include full support for shared libraries and improved support for USB devices such as keyboards, mice and mass storage devices. The system has received many performance improvements and several userland tools have been imported from NetBSD."
Verry, nice, may look forward into it for my old laptop from 2007 I won in a raffle
People once told me 68K ram was all we needed,
Afaik, NetBSD and Minix are the two most prominent operating systems that advertise clean source code and architecture, suitable for examination by people learning OS principles, as one of their explicit design goals. NetBSD seems more popular as an actual system to use, and is clean architecture has led it to be famously ported everywhere. Does someone have experience with Minix to compare?
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Looking under "Drivers, FS" it would seem that the Minix developers are still focusing on keeping it compatible with qemu and virtualbox, ie, they don't expect anybody to run it on real hardware and use it for real jobs.
http://michaelsmith.id.au
Or is it more for teaching? If its angling to be a serious OS I think they may be wasting their time to be honest - that horse bolted in 1991.
I remember seeing this for the Atari ST back in the day but was put off by the price back then as istr it coming with full manuals and support but at a price. Amazed it's still going.
I want a list of atrocities done in your name - Recoil
Please be aware that MINIX 3 is not your grandfather's MINIX
http://www.cs.vu.nl/~ast/reliable-os/
VM isnt for real jobs? Tell VMware that.. or Microsoft ... These days fewer and fewer people run anything of value on bare hardware, beyond a hypervisor and perhaps support tools depending which HV you chose. ( since not all are self-hosing )
I'm currently in a university course where Minix 3.2.1 is being used to teach OS principles. It's certainly small, and therefore semi-easy to wrap your head around. But I would not agree that its source code is "clean". They have a lot of really old code and suffer from coding guidelines that have changed greatly over time. I've never seen someone mix tabs and spaces so much in a piece of code. And can anyone say "no namespacing"? That said, I don't have much familiarity of the internals of other kernels, but I'm not too impressed by Minix.
I'm pretty sure Linux won this battle long ago. This isn't needed at all.
Okay guys, let's start the flame war. I honestly think the Microkernel is better.
1. Everything is more modular and separated. This just makes sense to me, and I think code would be easier to maintain with a diverse community of people.
2. If the X module dies, the OS can continue running like normal, as long as it's not the base module. For example, as humans, if you lose an arm, you can continue to live. It is losing your "brain module" that will kill you. With Microkernel, there is a lot less rebooting IMO because of a crash. How often have you had to restart your computer to fix an issue? Or remember the blue screen of death with MS?
3. Because of #2, you can "self-heal." If X module crashes, just restart it -- without having to restart the entire system. You can restart sound/etc. services, but sometimes it still doesn't fix it and you have to do a full restart. And if it's not a service but apart of the kernel code, how to restart it?
4. Upgrading and pushing out critical fixes can be faster and more easily done. In fact, if you could have two "brain modules", then you could kick the secondary brain off to upgrade the primary brain.
The main disadvantage I hear about Microkernels are speed and the complexity of message passing between the modules. I use Linux myself because let's face it... GNU/Hurd and Minix just aren't up to snuff. I also prefer the GPL over BSD/MIT/etc. So why do you guys love/hate the microkernel or the monolithic kernel?
The G
This is typical of open source software. As there is no financial incentive to do things properly and no repercussions when it's not, as often as not things are just slapped together with the expectation some other programmer will come along later and clean things up. Maybe. The important thing is to get things to the point where they appear to be working, and move on to the next feature on the list to be added. This is fine for a lot of programs that will be used on an occasional basis by a few people, but for something like an OS it's a recipe for disaster.
I spoke with Andy Tannenbaum when we were at the OSDI conference last October. He said that Minix has a role in the embedded market, especially in places where companies want to avoid the GPL.
It's a large and growing market. Much as I would prefer Linux, I agree that there's plenty of room for Minix in that market.
Actually, in the release announcement, they clearly mentioned that
There are exciting new developments coming in the near future that aren’t part of this release. For example, the MINIX team has been working hard on MINIX/ARM support, of which significant parts have made it to mainline, yet official ARM support is slated for the near future and is not officially part of this release.
This is a great move on their part, since Minix, w/ its microkernel, is just perfect for embedded systems and aside from routers, those tend to run on ARM based platforms. I recall reading somewhere that they were porting it to the Raspberry Pi, and hopefully, to other ARM platforms as well. In fact, something like Minix is perfect for Raspberry Pi, and once their ARM port is complete, it would be a good kernel on which to base whatever else is needed. In fact, the Raspberry Pi guys would do well to join hands w/ Tannenbaum and offer Minix as the OS of choice w/ Raspberry Pi.
Regarding the stuff about the drivers, it was just the Virtio and VBFS that seemed to be about VMs - others, like Ext2 support were about real filesystems. (I'm guessing that for an OS targeted at embedded applications, things like Ext4, Btrfs, ZFS, Hammer, et al wouldn't be appropriate file systems to use)
Well, from Minix 3.2 onwards, they have included NetBSD userland w/ the Minix kernel, so you then have the best of both. I had Minux as a part of my OS course in 1994 (I think it was Minix 1 then), and Tannenbaum's book, which it came w/. Minix 3 is very different in that whereas in the book, at the time, the only microkernel OSs that Tannenbaum discussed were Amoeba and Mach 3, Minix 1 (and even 1.5 & 2) were not microkernel OSs. However, in Minix 3, Tannenbaum converted his theory into practice, and made it a microkernel OS.
One thing I think is that the NetBSD guys should consider adapting this as their kernel, given that they target mainly embedded systems, and Minix, w/ the microkernel, is a much better fit for that. Maybe merge the 2, and make it the standard target for current x86 and ARM systems. Keep the NetBSD kernel only for legacy CPUs, such as SPARCs, POWER and so on. In fact, NetBSD 6.1 ought to include Itanium support - that's precisely the sort of platform that the NetBSD guys can find a niche in.
As an aside, since Tannenbaum has embraced everything BSD for Minix, be it the license, the userland and so on, any story about Minix ought to be tagged under BSD rather than Linux. Also, I don't know whether Minix has been officially certified as Unix or not - if it hasn't been, it's not exactly accurate to file this under 'Unix' either.
Well, Torvalds does not believe in going the microkernel route, and even Tannenbaum is on record (read the same link) as rebutting the allegation about Torvalds lifting code from Minix.
Dunno if I'm replying to a troll or if you genuinely believe what you're saying but whatever...
I'm no open-source advocate and I'm all for people making money from their work, but I think your comment applies as much to commercial consumer-grade software than to open-source.
The profit motive from selling software means that companies will often choose to add new features rather than make current software better. And generally, businesses do that because they think that's what people will pay for.
The quality of commercial software is often determined by the point at which the money put into making something better is no longer paid off by the money to be earned from it. That's natural in business since the purpose in business is to maximize profit.
There's no financial incentive in commercial software to do things well, just well enough that people will buy it. It doesn't even need to be good enough that users will buy it, just good enough that managers will spend company money on it.
If your comments were typical of open-source software, people wouldn't be using it.
Ah, the classic Slashdot Troll comment, which will here succeed in getting a bite. :) But it will be a short bite: this is exactly how proprietary software works as well. You will despair if you ever see the internals of any of the major proprietary software packages you use regularly.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I thought that Minix 3 was done from scratch (which explains why while SPARC and Motorola support was there in 2, it's not there in 3) - the whole OS was re-written to be a microkernel OS. So it would be very strange if it had old code in the kernel. They didn't pay much attention to userland - in Minix 3.0, they were using the old userlands of Minix, and only in 3.2.0 did they embrace NetBSD for the rest of the system.
Is the GNU Hurd kernel a good choice for teaching or OS study in general?
I'd certainly not suggest using it as a server OS over the likes of FBSD, Debian or RedHat. But for embedded systems, it's certainly more appropriate - I'd definitely recommend it over the likes of something like TinyCore Linux. All those people getting Raspberry Pis or Arduinos or things like that - Minix is the right solution.
It seems to me that the tradeoffs Minix makes lends itself to better hardening and security, let alone simplicity and maintainability in the code base. I am excited to see what the Minix community produces now that they have some dedicated developers and are using NetBSD pkgsrc for userland. Cheers!
One more thing - in Minix, like in FBSD, LLVM/Clang is now the default compiler instead of GCC
Indeed. I think the only reason people don't talk about this as often as they could are NDAs. If people could openly discuss such things in the corporate world without fear of litigation, career suicide, and criminal charges, we'd see some improvement in terms of quality of work and efficiency.
One of the reasons why most businesses breed mediocrity is because of the closed culture. The reason so many succeed is because so many others follow the same "best practices". The few that successfully break ahead, even slightly, do quite well as long as they can hold their own otherwise.
One thing I think is that the NetBSD guys should consider adapting this as their kernel, given that they target mainly embedded systems, and Minix, w/ the microkernel, is a much better fit for that. Maybe merge the 2, and make it the standard target for current x86 and ARM systems.
Merging kernels is no trivial job. The only reasonable thing that could be done would be to have the BSD kernel sitting on the top of a microkernel, just like MacOS X does.
Comment removed based on user account deletion
It pains me that I don't have mod points to properly respond to your pedantry.
If the Minix kernel is BSD-licensed, another thought would be for Debian to try it instead of Hurd, depending upon which microkernel is farther along...
Minix has always been a microkernel OS
Not really. Minix2 was a hybrid architecture.
Does that refer to Andrew S. Tanenbaum?
Minix was/is not confined to the academia
It also runs the machines in your local bowling allies
Muchas Gracias, Señor Edward Snowden !
I have some experience with Minix, from 1995, when I modified the memory allocation algorithm for a class at University :). I don't think it's an OS I would actually use though!
Yeah it was my first Unix because my old XT couldn't run Linux (which was *very* new at the time). It was great to mess around with, and I managed to hack together a driver for my wang hard drive controller, but the lack of a TCP sockets stack really limited its usefulness.
Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
Minix must be cool, it is sponsored by the European union. Long live socialism!
As was Minix 1 & 1.5
I find it intensely annoying too. But I ackowledge his right to write as he pleases. And that I'm under no compulsion to read it.
I don't deny his rights to write it, nor my rights to not read it. That doesn't mean it is beyond criticism.