Slashdot Mirror


Debian GNU/Hurd 2013 Released

jrepin writes "The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). The Debian GNU/Hurd team announces the release of Debian GNU/Hurd 2013. This is a snapshot of Debian 'sid' at the time of the Debian 'wheezy' release (May 2013), so it is mostly based on the same sources. Debian GNU/Hurd is currently available for the i386 architecture with more than 10,000 software packages available (more than 75% of the Debian archive)."

60 of 264 comments (clear)

  1. Need Clarity by CrimsonKnight13 · · Score: 3, Interesting

    Would anyone mind explaining to me the key differences between Debian Wheezy & Debian GNU/Hurd 2013? What are the benefits of using GNU/Hurd 2013?

    --
    Libera te ex Inferis!
    1. Re:Need Clarity by Anonymous Coward · · Score: 5, Informative

      What are the benefits of using GNU/Hurd 2013?

      There aren't any.

    2. Re:Need Clarity by Pecisk · · Score: 5, Informative

      Debian Wheezy - Linux kernel, GNU tools, 100% of software compiled for i386/64.
      Debian GNU/Hurd 2013 - Hurd kernel, GNU tools, 75% of software compiled for i386/64 (I'm ready to assume it doesn't have support for other platforms but might be wrong).

      Hurd has been conceptual official kernel of GNU project for years (But then Linux came and put Hurd on backburner). Thanks to renewed interest it's development has picked up and therefore we have some actual distribution running with it.

      Main problem for Hurd would be support for hardware who needs closed parts (firmware, binary drivers) as Hurd propably is GPL3 which essentially forbids usage of such things without disclosure to user, essentially killing any chances of having binary Nvidia driver supported. Still, most of open source stuff can be ported to be used with it.

      --
      user@ubuntubox:~$ stfu This server is going down for shutdown NOW!
    3. Re:Need Clarity by Anonymous Coward · · Score: 4, Informative

      http://en.wikipedia.org/wiki/GNU_Hurd

      Lets start with that. Basically a different kernel (BSD and linux are 'monolitic' kernels, MacOSX is a hybrid).

      The idea is everything as much as possible runs in its own process and funnels thru an IPC. The actual kernel does not do much other than scheduling and memory management and IPC.

      The idea is you can upgrade your network stack without rebooting the computer. This was very appealing 20 years ago when rebooting to 15+ mins for some bigger hardware. When you can reboot a computer in under 30 seconds it is not as interesting. It is becoming a bit more interesting today with companies wanting '0 downtime' with SLA's. It was also possible that you could run stuff on another machine and it be considered part of the OS. Cool stuff but in practice it ended up being slower than direct calls in many key instances.

      Now the downside, they have been working on this since 1987. So work is slow, updates few, resets of the project seem to happen every 3-5 years. At this point you have 4 major OS's to choose from that are all very good (2 of them basically being Unix and one that is a very good clone).

      The end user POV of say MacOSX vs Linux vs BSD vs Hurd. Not much. At this point Hurd is basically a research project. Oh I am sure there are a few out there who use it for 'production use'. But not many.

    4. Re:Need Clarity by SirGarlon · · Score: 5, Informative

      There are probably no inherent benefits to using Hurd over Linux - and there are certainly many reasons for picking Linux over Hurd, support being just one of them.

      At this stage of Hurd's development, parent is correct. For daily desktop use, Linux is clearly mature enough and Hurd is very probably not.

      From the perspective of design, Hurd has some good ideas, as the GNU Web site explains. My favorite is:

      the Hurd goes one step further in that most of the components that constitute the whole kernel are running as separate user-space processes and are thus using different address spaces that are isolated from each other. This is a multi-server design based on a microkernel. It is not possible that a faulty memory dereference inside the TCP/IP stack can bring down the whole kernel, and thus the whole system, which is a real problem in a monolothic Unix kernel architecture.

      So there are design features of the Hurd that make it attractive to developers. I can foresee the Hurd maturing to the point where embedded device makers would seriously consider it, for example.

      --
      [Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
    5. Re:Need Clarity by Anonymous Coward · · Score: 5, Informative

      Debian Wheezy - Linux kernel, GNU tools, 100% of software compiled for i386/64.

      Wheezy is also available for other CPU architectures, e.g. ARM and MIPS. And, as a preview, you can use it with a FreeBSD kernel on i386 and amd64 instead of the normal Linux kernel.

      Debian GNU/Hurd 2013 - Hurd kernel, GNU tools, 75% of software compiled for i386/64 (I'm ready to assume it doesn't have support for other platforms but might be wrong).

      You're right, in fact it's only i386, not i386 and amd64.

    6. Re:Need Clarity by dpiven · · Score: 2

      Debian Wheezy - Linux kernel, GNU tools, 100% of software compiled for i386/64.
      Debian GNU/Hurd 2013 - Hurd kernel, GNU tools, 75% of software compiled for i386/64 (I'm ready to assume it doesn't have support for other platforms but might be wrong).

      i386 != x86_64. Hurd is 32-bit only, according to the FAQ.

    7. Re:Need Clarity by LoRdTAW · · Score: 5, Informative

      Wheezy is a GNU/Linux operating system based on the Linux kernel. GNU/Hurd is the GNU operating system based on the Herd kernel. Commonly people simply call GNU/Linux "Linux" but Linux is the kernel which GNU runs atop of.

      If you do a bit of research on Hurd the benefits are quite intriguing. One interesting bit is since Hurd is a microkernel, the concept of kernel-space and user-space disappears as everything runs in userspace. The kernel only worries about memory management, process/thread scheduling and message passing. Services are provided by "servers" running in userspace and talk to each other via messages. Users no longer need root access to do simple tasks like installing software, mounting disks, accessing hardware or other tasks which require root access or sudo because they live in kernel space. Instead they talk to the servers directly. The idea is that by moving services to user space, the need to grant users any type of root access (setuid, su or sudo) is removed. There is still a security hierarchy with a "root" user who has full control of the system, but users never need access to that user or group. No need for root access means less chance that the root account can be compromised. Imagine the problem of "privileged ports" disappearing because those services (ftp, http, etc.) no longer need any sort of root access. They are simply allowed to read/write certain files/directories and access the network. If that service is compromised, it can't gain root access.

      Some have said microkernels are not necessary or that they impose a larger overhead in the form of message passing. That argument was valid ten plus years ago but today we have quad core 1.5GHz cell phones and PC hardware that is so fast that its stagnated the market. Linus Torvalds famously argued against the microkernel with Andrew Tanenbaum (Minix creator who inspired Torvalds) who is in favor of them. Eric S. Raymond once said about Plan 9 (The planned successor to Unix that failed) "There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough.". Hurd may never see production use and like Plan 9 be relegated to a research or pet project of a handful of developers interested in operating system design. I hope it succeeds.

    8. Re:Need Clarity by MBGMorden · · Score: 4, Insightful

      I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux.

      Sorry, but this war has been fought, and your side lost. I'm not using GNU/Linux/x.org/XFCE anymore than others are using Windows/CrystalReports/Office/PhotoShop.

      Listing every single component of the system is stupid. Linux is the kernel, Linux is what gets recognized as the OS. There are a lot of programs that go into making the system usable - each one need not be referenced in the name.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    9. Re:Need Clarity by IRWolfie- · · Score: 4, Interesting

      Naturally I assume you of course call android by the name Linux as well.

    10. Re:Need Clarity by slim · · Score: 5, Insightful

      Listing every single component of the system is stupid. Linux is the kernel, Linux is what gets recognized as the OS. There are a lot of programs that go into making the system usable - each one need not be referenced in the name.

      Mmm, but why do you choose the kernel as the piece so important that you name your whole system after it?

      I'm forever seeing posts that say "Windows sucks and Linux rules, because in Linux I can do stuff like {insert neat adhoc bash script}". But you could run that script in a MacOS terminal, with Darwin replacing the Linux kernel. You could run it in Cygwin, with the combination of the Windows Kernel and the Cygwin compatibility libraries replacing the Linux kernel.

      Linux is great, but it's a thin layer compared to the collection of GNU (mostly) tools that *actually provide the interface people love*.

    11. Re:Need Clarity by paulpach · · Score: 3, Interesting

      I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

      Both GNU components and the Linux kernel come with a written permission to call it whatever you want. I can take all these components, distribute them even verbatim and call them "yomama", and I would be fully compliant with the licenses. The difference is that no one would have a clue what I am talking about.

      For this reason it is correct to call it Linux, or Android or Ubuntu or any other name (subject to trademark laws of course). Just use the name most people are familiar with so they know what you are talking about. Calling these systems GNU is merely a courtesy, a form of respect you pay to the GNU project, not a requirement in any way, and not "the right way" but merely your preference.

    12. Re:Need Clarity by mark-t · · Score: 4, Insightful

      The GNU project was a project to develop a free OS and tools.

      All works developed for the GNU project were released under the GNU license. Numerous other projects were released under the same license as well.

      Linux was a project to develop a free drop-in (and superior) replacement for Minix, and although released under the GNU license, and was distributed with GNU tools, it was never actually part of the GNU project, any more than AIX or HPUX would have become part of the GNU project by replacing their standard tools with GNU equivalents (I personally used an HPUX system at university which had all of the standard tools replaced with GNU ones, but that wouldn't suddenly change the name of that system to GNU/HPUX).

      The notion that without the GNU tools, a Linux distribution would not be usable, and therefore the GNU prefix should be applicable to Linux also ought to apply to Minix itself, which like Linux, was never part of the GNU project (and was released under a different license), but was practically unusable out of the box, and most users of it took the source code to the GNU tools, which was freely and readily available, and compiled them to run under Minix to create a usable system. Minux, starting from approximately v 3 onwards, actually started being distributed with the GNU tools to make it more fully functional out of the box, but nobody ever tries to call Minix GNU/Minix.

      Linux is Linux. GNU/Linux is just a name that people who were tired of waiting forever for Hurd wanted to call it so they feel like they had some closure.

    13. Re:Need Clarity by Cro+Magnon · · Score: 4, Insightful

      One could argue that the OS is Debian (or Fedora or Ubuntu). All of which use the Linux kernel, and the GNU tools.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    14. Re:Need Clarity by slim · · Score: 5, Insightful

      That's entirely pragmatic of you, and that's fine.

      But say you wanted to try out an experimental device driver. In Linux it would be a kernel module. If it went wrong, it could potentially cause a kernel panic and halt your entire system. Or, since it has kernel privileges, it could just quietly spy on some element of your system and phone home with your confidential data without you knowing.

      On a microkernel, your experimental device driver would run in separate memory space to other components. If the experimental driver crashes out, the rest of the system keeps going. It can't spy on your other components, because its access is restricted.

      It may not address a need *you* have, but it may well be useful to others.

    15. Re:Need Clarity by LordLimecat · · Score: 2

      Yall are posting in a troll thread.

      Hint: Google parent's post.

    16. Re:Need Clarity by umeboshi · · Score: 5, Interesting

      Excellent point! I'll remember that one. I just cut to the chase and call all my systems debian.

    17. Re:Need Clarity by Anonymous Coward · · Score: 4, Insightful

      Because people like an easy, pronounceable, memorable label for things.

      It usually goes like:
      GNU: Do you spell it out, "gee en you"? Or is it "new" like the wildebeest? And what's with the recursive acronym (GNU's Not Unix)? Why do you geeks pick such awkward names?
      Linux: Only two possible pronunciations, both easy.

      Given a choice between technically correct and easy, most people will pick easy.

    18. Re:Need Clarity by Skiron · · Score: 4, Funny

      To pretend you are still a hippy in the 70's?

    19. Re:Need Clarity by DrXym · · Score: 3, Insightful

      The war is still ongoing. And it will, as long as we still have to use closed software. You are too old to fight, that's all. Calling it GNU/Linux is simply a way to give credit to the people who started all the Free Software movement. Without GNU, there would be no Linux.

      Most people recognize that a distribution is the sum of its parts (many of which have nothing to do with GNU or the FSF) and therefore don't elevate any particular group above the others and are quite content to refer to the whole lot as Linux. I suspect that the whole GNU/Linux thing is just some underlying resentment that Linux succeeded precisely for the reasons Hurd failed so miserably - because the FSF is big on ideas, not so big on actually bringing them to fruition in a timely and practical fashion.

    20. Re:Need Clarity by buchner.johannes · · Score: 2

      If courts decide GPL2 doesn't cover some loophole and people are abusing Linux in some way that Linus does not like, Linus is screwed. With Hurd, there is a license upgrade path.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    21. Re:Need Clarity by MBGMorden · · Score: 3, Insightful

      No, to do that would be to do the same silliness as the GNU/Linux crowd. The Android system is a separate entity. I don't hark on ideals. It has become standard to refer to that system as "Android". Insisting on putting "Linux" in the name (or making it the name) is just as silly and foolish as insisting that GNU be in the name of what's become commonly called the "Linux" desktop OS.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    22. Re:Need Clarity by hduff · · Score: 2

      What are the benefits of using GNU/Hurd 2013?

      There aren't any.

      There are. You can keep a dying dream alive and foster hope that the Linux poseur can be dethroned and GNU WILL LIVE!

      --
      "I believe in Karma. That means I can do bad things to people all day long and I assume they deserve it." : Dogbert
    23. Re:Need Clarity by devman · · Score: 2

      GNU/Linux is not a OS. Android is an OS, Debian is an OS, Ubuntu is an OS, Arch Linux is an OS. When you make a distro feel free to call it IRWolfie GNU/Linux if you want.

    24. Re:Need Clarity by MBGMorden · · Score: 2

      I think you parsed my intent incorrectly. I wasn't stating the Linux is the kernel and THUS the OS, I was stating that Linux is the kernel AND the OS.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    25. Re:Need Clarity by slim · · Score: 2

      Imagine the problem of "privileged ports" disappearing because those services (ftp, http, etc.) no longer need any sort of root access.

      The "privileged ports" restriction is a historical artefact that should be retired, in my opinion. It supposedly reassures the client that the service they're talking to is blessed by root on the server. That meant something in the days when UNIX only ran on big expensive boxes with admins holding the reins tight; when people generally trusted the routes between hosts. It means almost nothing when everyone and their dog can be root on a system of their own, and you've no idea what NAT routers and MITM exploits are messing with your TCP packets.

      I reckon the risk introduced by programs starting as root, and the programmer having to get the privilege-dropping code right, far outweighs the benefits of privileged ports.

      Services should run as non-root users. The OS should let them bind to low port numbers. Clients should use SSL/SSH/etc. to establish trust, if required -- and never treat a port number as any sort of evidence of trustworthiness.

    26. Re:Need Clarity by femtobyte · · Score: 3, Insightful

      Sorry, but this war has been fought, and your side lost. I'm not using GNU/Linux/x.org/XFCE anymore than others are using Windows/CrystalReports/Office/PhotoShop.

      Actually, people *do* typically refer to their computer software stack at a level appropriate for the task being described. If someone asks, "what did you photoshop that picture with," do you say "Mach microkernel"? --- No, you describe what you're using at a level appropriate to the activity: you might say "Gimp, on Ubuntu." Thus, if your work consists of using GNU utilities and applications, or writing programs linking against GNU libraries (and compiling them with a GNU compiler) --- it's perfectly reasonable to say you're using GNU on Linux (just like someone might say "Office on Windows" to describe their computer work environment, instead of saying "I write company newsletters using a Core i5-3350p").

    27. Re: Need Clarity by Anonymous Coward · · Score: 2, Informative

      You just described how language works. Things are called something because people call them that, regardless of whether or not that is fair or technically correct.

    28. Re:Need Clarity by slim · · Score: 2

      In 1994, at university, I was in much the same situation (except it was only Sun -- we didn't have SGI boxes, and I couldn't make head nor tail of the solitary NeXT box).

      I cut my teeth on SunOS. Then I got a 486 and ran Slackware on it in my dorm room. I found that bash was better than csh (which our admins had made the default shell on SunOS). I found that GNU date was better than SunOS date.

      Then I found that our admins had a /usr/gnu/bin NFS mount for the Sun boxes, which we just had to put in our paths to make SunOS feel like Slackware.

      So for the last three years of my four year course, I was running GNU/Linux at home and GNU/SunOS in the labs.

      The point being that the GNU utilities were the "nice thing" I was interacting with. The kernel was only there to prop them up.

    29. Re:Need Clarity by Waffle+Iron · · Score: 2

      By your definition, Microsoft WIndows must not be an OS. After all, it can't compile itself, because it doesn't come with a compiler.

      Nor is Android; I doubt that it even has a compiler. Even app development for Android is done with a cross compiler on a different system.

      Of course, all of those dilemmas are false, because in reality, the definition of "OS" simply does not contain a requirement for self-compilation.

    30. Re:Need Clarity by fahrbot-bot · · Score: 2

      From the perspective of design, Hurd has some good ideas

      From the perspective of design, Hurd, has some interesting ideas. Unfortunately, they have for the most part, not turned out to be good ones. Microkernels have failed.

      [ citation needed ]

      --
      It must have been something you assimilated. . . .
    31. Re:Need Clarity by Bert64 · · Score: 2

      What about those of us using the Linux kernel with a BSD derived or Android userland?

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    32. Re:Need Clarity by Bert64 · · Score: 3, Insightful

      But today most users would be interfacing with gnome, or kde, or unity etc and are unlikely to touch the gnu tools - ie they do useful stuff in the background, just like the kernel does...

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    33. Re:Need Clarity by mark-t · · Score: 3, Insightful

      GNU carries a philosophy and Linux does not.

      I agree completely with this, which is why I think that trying to prepend "GNU" onto Linux is a rather foolishidea.

    34. Re:Need Clarity by Darinbob · · Score: 2

      Linux has a philosophy, though maybe it's more subtle. When it was new it was "this is cool, try it out". Later on it was "this is practical, use it".

      You can give to a charity without joining a church or movement; similarly you should be able to write, contribute to, and use free software without adopting a structured philosophy.

  2. Re:Oh come on. by telchine · · Score: 5, Funny

    Oh come on. April 1st is over. Everyone knows Hurd is a running gag. It's an ancient meme.

    Ha, indeed! Someone once tried to convince me that Duke Nukem Forever had been released too. I'm not so stupid that I'd fall for that!

  3. Does anyone have any non-silly comments? by serviscope_minor · · Score: 2

    Does anyone here know much about the Hurd?

    I know it got stuck in "which microkernel shall we use" hell for the longest time. They seem to have settled, but it's not clear if the new one is a modern high performance one (under the Mach name), or if they just settled on the older one and suffered a performance hit.

    Also, why is a microkernel OS so apparently difficult to construct?

    As far as I can see, the basic bits of hurd are all in place: the things that make it an operating system that actually works. But what took it so long? Micro kernel based things sound like they ought to be easier to develop (segfaults instead of a lockup, for instance), but apparently they are not.

    Anyone got any experience?

    --
    SJW n. One who posts facts.
    1. Re:Does anyone have any non-silly comments? by i.r.id10t · · Score: 2

      According to RMS in "Revolution OS" the difficulties with their attempt at the microkernel is in the timing of messages back and forth to all the little sub processes/daemons/whatevers

      --
      Don't blame me, I voted for Kodos
    2. Re:Does anyone have any non-silly comments? by Pinhedd · · Score: 4, Interesting

      Microkernel operating systems aren't inherently difficult to construct but there's a very noticeable tradeoff between the performance of a hybrid/monolithic kernel and the security/stability of a microkernel.

      The performance hit comes from the hardware isolated process model used by modern microprocessors. Whenever an application needs to do something outside of its own scope, such as request additional memory, access shared resources, or interface with a device driver it makes a system call. In a monolithic system this requires the processor to switch from the running task to the kernel task, perform the requested action, and then switch back to the running task. If the kernel needs to access the tasks memory, it can access it through segmentation or shared memory with ease because the kernel in a monolithic system has no access constraints.

      In a microkernel system the processor switches from the running task to an interprocess messaging task (part of the microkernel), which then copies the message to the requested server's buffer, switches to the server task, processes the message, switches back to the messaging task, copies the response back to the original client's buffer, and then switches back to the client task.

      Task switches are very expensive in terms of CPU cycles, so minimizing them is key to obtaining performance. Hybrid and Monolithic kernels have a massive performance edge on modern processors because they perform a fraction as many task switches and memory operations whenever a system call is performed.

    3. Re:Does anyone have any non-silly comments? by putaro · · Score: 3, Interesting

      I looked at it a while back with an eye towards doing some work on it, but I'm interested in file systems and large storage and Hurd was limited to a max of 4GB per file because all files were memory mapped all the time and Hurd only runs on 32-bit architectures. So, for me, the amount of work before I could do something interesting was pretty steep.

      I think the main reason that microkernels don't have great performance is because not much work has been put into them. I worked on Apple's Copland OS back in the mid-90's (the "failed" OS before OS X). Copland was a true microkernel and there were a number of performance optimizations that we'd put in. Had it shipped, we probably would have started making some modifications to the CPUs to support the microkernel better as well.

      A big issue for performance is switching between processes. If you have to make multiple process switches for each kernel call that can get slow due to things like reloading the MMU tables, etc. There are a lot of different paths that could be taken. I could imagine a micro kernel, for example, written in Java or similar language running in a VM that enforced fine-grained memory controls, e.g. at the object level. If you used this for memory protection between trusted (e.g. OS level) servers you could avoid the hit of reloading the CPU's page maps. User space separations could be enforced by the CPU for better security.

    4. Re:Does anyone have any non-silly comments? by Pinhedd · · Score: 3, Informative

      >I could imagine a micro kernel, for example, written in Java or similar language running in a VM that enforced fine-grained memory controls, e.g. at the object level. If you used this for memory protection between trusted (e.g. OS level) servers you could avoid the hit of reloading the CPU's page maps. User space separations could be enforced by the CPU for better security.

      Microsoft Research has done a lot of work on this exact idea. They even produced a usable operating system

      http://en.wikipedia.org/wiki/Singularity_(operating_system)

    5. Re:Does anyone have any non-silly comments? by VortexCortex · · Score: 5, Interesting

      Managing the trust graph is why it's hard. Security is always hard. On a monolithic kernel we just say: Uhm, yeah, I trust all these drivers and whatever, even though I probably shouldn't because... well... That's how it works. GNU/HURD/HIRD has a more modular approach that pushes the drivers out of kernel space, but it has some design flaws ( letting a directory node provide its own ".." -- Yikes! ), and the number of developers is next to non-existent.

      Furthermore modern processors are designed for monolithic kernels. Just like x86 has a bunch of cruft from when ASM coders wanted more complex instructions (for less / easier coding), Features like Multiple Execution Ring Levels are missing. ARM gives me Two Rings. AMD x86 gives me Two Rings. Intel x86 gives me 4 rings! A ring level essentially is a hardware supported security level. Each ring allows another "mode" of security. So, with only two rings, I can create an OS that has userspace and kernel mode. With 3 rings I can have Kernel, Trusted Driver/Module/Interface, and Userspace. The barriers required to easily create a secure microkernel don't exist. With only 2 rings we have to decide if userspace or kernel mode is where a module belongs -- They don't belong in either! We Need The One Ring to be an intermediary between Ring Zero (which rules them all) and give Ring 2 to the userland, and in the darkness bind them.

      Everyone's using monoliths, hardware makers give us 2 rings to make that happen. Hell the hardware even prevents adoption of new (more secure) programming paradigms. Even the virtual memory addressing system in modern chipsets is designed to work best with C. I'm working on a more secure language with separate call and data stacks, and code-pointer overwrite protections for heap data, but the x86 / x64 / ARM platforms I'm working on are built for single stacks, and thus stack smashing or buffer overflow is an inherit design flaw. Segmented memory would be great for securing functions on a per call basis -- Swapping Stacks at will, Super easy Co-Routines... but those bits were sacrificed to the More Memory God, and the registers became a part of the virtual addressing system. On 16 bit code I can do some neat things that I can't do on 32bit mode code without a huge headache, because the hardware doesn't support me doing it.

      So, that's why it takes so long. Because we're trying to do stuff in software that the hardware doesn't support. These things are more secure and are great for modularity, but the hardware's designed to do it faster the monolith / C way. Note that to a program it won't matter about whether the filesystem is uber modular, or the device drivers are not in ring 0. Hell, eventually I'll port a C compiler to the multi-stack code.

      Note: I don't work on GNU/HURD/HIRD, just develop my own OSs. Yeah, I could work on Linux or other POSIX OSs, but why? That's not going to advance the state of the art in Operating Systems at all. A reliable design is grand for production systems, but to make the leap from the 80's, we're going to need some new hardware to help us out. Got Viruses? Blame the Chip Maker, Language Implementer (not designer), and Operating System. Seriously, they're all doing it WRONG if security is the goal. With a separate call and data stacks on chip, One Ring more, you could actually have the damn security you want.

    6. Re:Does anyone have any non-silly comments? by Chris+Mattern · · Score: 2

      Also, why is a microkernel OS so apparently difficult to construct?

      In the final analysis, a modular message-passing architecture posed performance problems they were never able to adequately solve, pretty much as the nay-sayers predicting when microkernels were first proposed.

    7. Re:Does anyone have any non-silly comments? by Chris+Mattern · · Score: 4, Funny

      Microsoft Research has done a lot of work on this exact idea. They even produced a usable operating system

      I suppose there's a first time for everything.

    8. Re:Does anyone have any non-silly comments? by tlhIngan · · Score: 4, Informative

      Also, why is a microkernel OS so apparently difficult to construct?

      They aren't. There are many microkernel OSes out there that are successful, like QNX (which has made plenty of noise about how it runs nuclear reactors and such). Hell, even Windows was completely microkernel at one point.

      The main problem is performance. This comes from two problems - repeated kernel requests, and IPC.

      Kernel requests happen because device drivers are run at application level (which provides great isolation). However, device drivers tend to require a lot of stuff at the kernel level (which is why they're typically in the kernel...) - things like interrupts, physical memory access, DMA, memory allocations (both physical and virtual), and such. Each one of those things it can't do alone (because well, it's an application - if applications can do those things, your microkernel is no better than DOS - the goal is to isolate things from each other). So it becomes an kernel API call to request an interrupt, to register an event object (the interrupt handler runs in the driver server as an interrupt thread), to get memory mappings installed, etc. Each API call is a system call in the end, which are generally expensive things because they require context saving and switching (some microkernel OSes use "thread migration" to mitigate this) and so forth.

      The second problem is IPC. All the servers are isolated from each other and can only communicate through IPC mechanisms. So a microkernel has to end up being a message routing and forwarding service as well. Let's say an application wants to read a file it has open. It calls read(), which traps into the kernel (system call, after all), which the kernel then sends a message to the server which can handle the call (filesystem), so it passes the message to the filesystem server and then switches back to user mode so the filesystem server can handle it. The filesystem server then translates it to a block and issues a read to the partition driver (which if it's a separate server is yet another user-kernel-user transition), which then goes to the disk driver (u-k-u). From here, it goes to the bus handler (because said disk can be on SATA, IDE, USB, Firewire) where the transfer actually happens, and then the message winds it way back to the disk driver, the partition driver, the filesystem driver, then the application.

      Switching from user to kernel is expensive - generally requires generating a software interrupt (system call) which triggers into the kernel's exception handler which then has to decode the request. Switching back is generally cheaper (usually just a return instruction which sets the proper mode bits), but you're still taking several mode switches per API call.

      No big surprise, these things add up into a ton of cycles.

      Microkernel OSes have developed means to alleviate the issue - thread migration being a big one (typically a server is implemented as a thread waiting on a mailbox, it gets the message then handles it). Thread migration means the application's thread context isn't saved, but migrated to the kernel, then passed onto the servers as necessary so instead of having to wake up threads and run the server loop, it becomes more expensive function calls, almost like RPC except the thread that called it is where it's executing on.

      In a monolithic OS like Linux, all those messages and IPC are reduced down to function calls (usually through function pointers) - so the application making the system call becomes the only transition - the virtual filesystem handles the call, calls the filesystem driver, which calls the partition driver, which calls the disk driver, which calls the bus driver, ... and then they return up the stack like a typical subroutine call.

      Oh, and Windows NT 3.51 did this as well. Guess what? Graphics performance sucked, which is why in NT 4, Microsoft moved the graphics driver into ring0 (kernel mode), thus creating the ability for poorly written graphics drivers to crash the entire OS. But, graphics are faster because you're not shuffling so much messages around. I think Windows has steadily put more and more of the graphics stack in the kernel since then, as well.

    9. Re:Does anyone have any non-silly comments? by naasking · · Score: 3, Informative

      The performance hit comes from the hardware isolated process model used by modern microprocessors.

      Lets be clear: the performance hit comes from the expensive x86/x64 trap handling. RISC processors are on the order of 30 cycles. x86/x64 is on the order of 2,000-3,000 cycles. The braindead x86 architecture is the only reason microkernels haven't already "taken over the world".

      The L4 and EROS/CapROS microkernels did a lot of small hacks to reduce the above overhead, and they got some pretty decent performance even out of x86. But contrary to your previous claim, x86 makes good microkernels very difficult to construct.

  4. Academic Use by Giant+Electronic+Bra · · Score: 5, Informative

    If you're interested in understanding microkernel OS architectures, then Hurd might be useful to experiment with. Other than that its pretty close to unusuable as there isn't even basic SATA and USB support (IE you're going to have to install on OLD hardware, or much more likely in a VM where you can supply virtualized IDE).

    Honestly, while I certainly don't want to rain on anyone's pet project Hurd has mostly become pointless. Its user space really offers nothing beyond what Linux or other POSIX *nix user spaces offer, and while microkernels are interesting concepts they've never proven to be terribly practical in most applications. Even in terms of microkernel design Hurd is dated. I'd think it would be much more interesting to work on future-looking OSes, say something with a Plan 9-like user space and some more modern experimental kernal with features designed around high core counts and heterogeneous compute resources. Not sure what that is, but I'm sure there are people out there working on stuff like that.

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    1. Re:Academic Use by VortexCortex · · Score: 2

      I agree. However, I think "mostly pointless" is the most moronic phrase. You like viruses? Keep using a single stack for code and data and having no fine grained memory access barriers... Think it's "mostly pointless" to try and solve the malware issue? Well, fuck you then. Say a solution is found, it won't be in a monolithic kernel design. We need at least one more layer between Users and Master of the Universe. Hell, we could even have another level under userspace for "plugins", wouldn't it be grand if a plugin couldn't just take over your whole program? Solving any of these issues is basically what alternate OS development is needed for. What's "mostly pointless" is throwing money and time at the monolithic approach and hoping for innovation in operating systems...

      Not currently usable by end users does not make something mostly pointless. End users don't give a damn about how the OS provides security or other features. HURD is MOST IMPORTANT because it actually does things differently than all the other mainstream OSs. That you can get 75% of the Debian repo running on it is HUGE. If you don't think so, I reiterate: Fuck you, fool.

  5. Re:Oh come on. by Big+Hairy+Ian · · Score: 3, Funny

    Oh come on. April 1st is over. Everyone knows Hurd is a running gag. It's an ancient meme.

    You mean this is "Debian does Dallas"?

    --

    Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

  6. Re:Loss of face if they dumped it by CRCulver · · Score: 4, Informative

    Stallman has already announced that he is content with Linux as the GNU kernel and that he has lost interest in the Hurd project. Hurd is kept alive now by hobbyists interested in alternative kernel designs, not Free Software demagogues.

  7. Re:Loss of face if they dumped it by serviscope_minor · · Score: 5, Informative

    If they dumped Hurd now it would be a complete loss of face

    Yay it's the daily make shit up about the FSF/RMS thread!

    http://blog.reddit.com/2010/07/rms-ama.html

    TL;DR

    http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00000.html

    Seriously, is it hard to google RMS Hurd before posting crap?

    --
    SJW n. One who posts facts.
  8. Round and Round by bigredradio · · Score: 4, Funny

    This was modded informative because the argument is so old, it's coming back as 'vintage' by hipsters.

  9. Re:So how many GNU/whatevers are there by Ogi_UnixNut · · Score: 3, Informative

    There is Debian, with its GNU/BSD version:

    http://www.debian.org/ports/kfreebsd-gnu/

    And Gentoo has their variant:

    http://www.gentoo.org/proj/en/gentoo-alt/bsd/fbsd/

    Those are the only two I know about :)

  10. Re:Oh come on. by MrHanky · · Score: 4, Funny

    The Mayans were pointing to the dawn of a new era, the age of Linux on the desktop, which supposedly will last for the next B'ak'tun until Hurd is up and running on the L4 microkernel.

  11. Re:MIcrokernels are yesterdays tech by Anonymous Coward · · Score: 2, Interesting

    This is rediculous. Modern computers are faster than most people need. We have the cycles to go micro kernel everywhere. There are phone OS that run on a micro kernel! If a phone can do it, so can your PC.

    Consider if android upgraded to a micro kernel. Sure, they couldn't sell A9 chips anymore for tablets, but beyond that it would be awesome. The sound server could restart when something crashed, etc. Tablets and phones are a great example of something that should be always up. No one wants to reboot them.

  12. Technoloy Ecosystem by ikhider · · Score: 3, Insightful

    This is good news. I am glad people are working on BSD(s), Hurd, Minix, and other systems because it ensures technological diversity. It would be a sad state if only GNU/Linux and proprietary systems were developed. If we have a thriving ecosystem of vaious operating systems and kernels, that bodes far better for advancement than a monoculture.

    --
    "SO we bide our time, waiting for a purer kick to bloom and the future is still bleak, uncertain and beautiful" -GSYBE
  13. Re:Loss of face if they dumped it by Zordak · · Score: 2

    Like GNU/Linux. No one cared.

    Hate to break it to you, but we still don't care. Seriously. 99% of the people who use Android have no idea that it has anything to do with Linux. They just call it Android. And of the small minority of people who run "Linux" on the desktop, about 99% (from my observation), just call it "Linux." Richard Stallman and a handful of his groupies are still the only people who still care about putting "GNU" in front of Linux.

    --

    Today's Sesame Street was brought to you by the number e.
  14. Re:Oh come on. by lxs · · Score: 2

    Turns out, he only got up to pee and then went back to sleep.

  15. Hurdles for HURD by unixisc · · Score: 4, Interesting

    Main problem for Hurd would be support for hardware who needs closed parts (firmware, binary drivers) as Hurd propably is GPL3 which essentially forbids usage of such things without disclosure to user, essentially killing any chances of having binary Nvidia driver supported. Still, most of open source stuff can be ported to be used with it.

    Yeah, that is what would make it pretty much a non starter on the desktop, since it's probably GPL3 - or else, its rationale for existence separate from Linux is as strong as the rationale for East Germany or North Korea existing. Since binary blobs would be banned here, they'd be limited to Intel & AMD GPUs, however bad, and then, on top of that, run X, and GNOME 3.whatever in fallback mode, or in real mode if the drivers are liberated. In short, the best use of HURD, where it would be almost guaranteed to work right, is in CLI mode, if one is like RMS and lives in an emacs world. In which case, the login script could just as well include that, one goes into emacs, and then is off doing everything that one does there.

    Just wondering if the "Libre-" Linux crowd will celebrate this, or release a list of 50 reasons why Debian doesn't pass the purity test and therefore, Debian Hurd can't be endorsed? I sure wish gNewSense comes up w/ a HURD distro based on this one.

  16. Re:Oh come on. by bbsalem · · Score: 2

    No, he meant that "The hurd is in the stall, man!"