
The history of the GNU operating system, or what happened to Hurd?
- Transfer
Readers are invited to translate the article “Whatever happened to the Hurd? - The story of the GNU OS, ”published in the Linux User & Developer magazine last December.
Work on the GNU operating system has been going on for nearly thirty years - since 1983. For the first time, interest in the Mach microkernel, which was developed at Carnegie Mellon University (CMU), was shown by the Free Software Foundation (FSF) as the core of its operating system back in 1987. ., but its source code was not distributed under a suitable license until 1991. By then, Linus Torvalds was already engaged in his own project to develop a kernel for IBM-compatible computers using the i386 processor.
If Linux had not been written and published under GPLv2 at one time, if it hadn’t fit so well into the environment of existing GNU components and captured the minds and hearts of developers all over the planet, who knows, maybe the whole “movement” would have focused around Hurd, and we would now live in a slightly different world. But the fate of Hurd was influenced not only by the rapid growth in the popularity of Linux or the bet made by the FSF on the microkernel Mach.
At its core, the Hurd architecture is an attempt to embody the spirit and perspective of the software freedom movement in software code. Here are the words of one of the FSF employees of those times: “Perhaps we can say that when we designed the Hurd, we were breathtaking from what was happening around. The software freedom movement has always been (and is) about making users no longer dependent on the whims of software manufacturers. The microkernel architecture of Hurd, the structure and interaction of daemons - to draw an analogy - gave the same freedom to simple users of the system: you are no longer required to obey the system administrator, his draconian policies and rules. Each user could (safely for the system itself and other users) launch any set of daemons, creating the working environment that he or she needed,

Richard Stallman announced his intention to write a full-fledged Unix-like operating system, called GNU (recursive abbreviation GNU's Not Unix!), In September 1983. During this time (before Hurd was born), system components and tools were written that were necessary for development kernels: editors and compilers, Bash, Make, Autoconf, Emacs, GCC, sed, gawk, etc.
GNU paid for itself by selling software products. When work began on Hurd, the FSF began hiring developers. “It was long before the era of broadband Internet, and most often people worked on text terminals, through a modem. Usually we shared one office; if you saw him, you thought that he looked more like a large closet. We were guests at MIT at that time. ”
Linus Torvalds announcedhis “free operating system (just a hobby, nothing professional like GNU) for 386 (486) AT clones” in the comp.os.minix conference a few months before starting work on Hurd. Linus chose a model of a monolithic core, from which purists turned their nose, but which made it possible to quickly get a working core.
Linux was liked by hackers, enthusiasts and scientists, many of whom began to actively participate in the development. The kernel attracted them with its openness, free license and the fact that it could be run on almost any existing device. Linux “caught the wave”, the developer community grew surprisingly fast. Work on Hurd continued, but far from the same activity. People were more interested in GNU / Linux than GNU Hurd.
From the point of view of users, Hurd was still to grow and grow, and Linux, thanks to the efforts of developers, firmly took its place as the "heart" of the GNU operating system. At first, Stallman was skeptical. Early versions of Linux only worked on the IBM 386; According to Stallman himself, “we heard that Linux is practically not ported (now it is not, but they used to say so), and, in addition, Linux is similar in architecture to the Unix kernel. We are writing something much more powerful and advanced. ”
Linux was tightly tied to GCC and the GNU toolkit, developed and matured more and more, especially with the advent of distributions, and soon FSF began to consider it as an acceptable (if not the most optimal and temporary) replacement for the still non-existent kernel of the GNU operating system. Stallman immediately clarified: “There is no operating system called Linux. Linux operating system is GNU. Linux is just a program: the kernel. The kernel is part of the operating system, the lowest-level program that manages other programs, allocating processor time and other resources to them. ”
He insisted that the GNU operating system with Linux be called GNU / Linux as the kernel, so that “people understand that the system exists thanks to an idealistic philosophy. Call it Linux, and you break the philosophy. This is a very serious problem. Linux is not a system, but just part of it ... It is because of the idealistic position that the GNU project is based on, we have this system. ”
Work on Hurd continued, but it soon became apparent that the FSF had embarked on a bumpy path in its quest for excellence. The microkernel required solving a number of rather complicated problems, and many of those who could take on this were busy working on Linux, which could already be used fruitfully. Despite the well-known criticism , for example, by Andy Tanenbaum, the choice of Linus as a monolithic model of the core made it possible to obtain a working system much easier and faster.
Stallman later admitted that “he is solely responsible for the technical decision to develop the GNU kernel based on Mach, which slowed down the development of the system. I thought using Mach would save us time, but it turned out to be wrong. ” In subsequent years, Hurd was ported to various microkernels, from L4 to Coyotos and Viengoos, but he could never boast of the community support and the resources Linux had (and still has).
In the late nineties, a split occurred in the community that led to the emergence of EGCS (pronounced eggs ), an offshoot of GCC whose goal was to step aside from managing FSF development, and the Open Source Initiative (OSI) to promote less radical and uncompromising open source software ideas and ideas.
“The main thing [OSI] wanted to be different from the FSF was that they did not condemn closed software products and did not declare themselves to be a freedom movement, but developed ideas about the economic benefits that free work of enthusiasts can bring for free , just for fun. ” But some saw "its main purpose - to try to politically marginalize Stallman; and an attempt at something unsuccessful. ”
Hurd began to talk about the exit in 1994, when it seems that they managed to launch Emacs; 2001 was indicated as the release date, but this never happened. When Hurd was ported to L4 in 2005, Marcus Brinkman said that “now we can easily explore and develop the system the way we want,” but was forced to admit that “I can build simple applications using my glibc port, but most of them do not start, because they need a file system or, say, calls fork and exec, and I have only stubs there so far. ”
In the mid-nineties, Debian appears on the scene, which thanks to the Debian Guidelineswritten by Bruce Perens becomes the bearer and expression of the “public consciousness” of the FOSS movement, while the FSF has largely moved away from GNU development, focusing mainly on the political issues of the movement.
Since 1998, Debian GNU / Hurd, one of the most active Debian projects producing installation and live CDs, can be considered as a reference version of Hurd, however, it still does not have an official release status. The quality of the Hurd code still does not allow it to be used to solve any real problems, hardware support is also very limited - but it can be fully launched in a virtual machine, try it.
Once the FSF paid programmers to work on GNU projects, but now most of them are volunteers or company employees who are interested in projects like GCC and, accordingly, sponsoring them. Hurd almost fell out of sight, because there is Linux that is already here and now, so there is no special need for another kernel. But the principle and commitment has not disappeared, and perhaps in the future the ideas of GNU Hurd will again be in demand.
Richard tells the story that the GNU kernel was not originally called Hurd.
“First I called him Alix (Alix), that was the name of my girlfriend at that time. She was a Unix system administrator and somehow drew attention to the fact that her name is similar to the names of many Unix systems. She jokingly told her friends that “someone should name the core in honor of me.” I did not say anything then, but decided that I would give her a surprise and name the core Alix. ”
“However, the name did not take root. Michael (now Thomas) Bushnell, the core kernel developer, preferred the name Hurd, and Alix got the name of one of the kernel subsystems — the one that intercepted system calls and processed them by exchanging messages with Hurd servers. ”
“Some time later, Alix and I broke up; she changed her name. At the same time (but independently) there were changes in the Hurd architecture, and the C library began sending messages to the servers directly, which made the Alix component unnecessary and it was removed. ”
“But before all this happened, one of her friends came across her name in the source code of Hurd and informed her about it. So she had the opportunity to find a core named after her. ”
Bushnell chose the name Hurd, partly because it looks like a “herd of antelopes,” partly because Hurd is the recursive abbreviation for “Hird of Unix-Replacing Daemons,” and in turn, Hird is “Hurd of Interfaces Representing Depth. " He said that “we, as far as I know, are the first software product whose name is a pair of mutually recursive abbreviations.”
Thomas Bushnell is currently a Debian developer and Gregorian.

Unlike Linux, a monolithic kernel, Hurd uses a microkernel, and almost all the functionality has been moved from kernel space to user space. The micronucleus is just a layer between the “iron” and everything else that the monolithic core usually does.
In 1996, Thomas Bushnell, one of the main architects of Hurd at an early stage, published his ideas in the article “ Towards a New Strategy of OS design ”.
“GNU Hurd,” he writes, “is designed so that system code is as limited as possible. Programs will interact with only a few subsystems; all other parts of the system are dynamically interchangeable. Users are free to use them at their discretion, will be able to connect new components for the needs of other users. There is no need to first establish trust in the interaction between users (i.e. each other's services). The system is not vulnerable, “trusting” the services of arbitrary users. ” In practice, this means that users do not need to contact a certain super-user (root) and wait until the latter mounts the file system or loads the necessary device driver (as it was in Linux until recently,
“Already at that time it was clear,” recalls one GNU employee, “and it was discussed in academia that the microkernel architecture will have performance problems (mainly due to the large number of context switches due to the need for messaging between daemons , compared to traditional handling of system calls in monolithic kernels). [Richard] Rashid, a researcher at CMU, suggested in his work that this problem is not so serious. Then it seemed, at least to me, that we here at GNU, with scarce funding, manage to not only program and fight for freedom, but also one of the first to implement the latest academic studies of computer science. In any case, the idea was such, and we were very proud of ourselves and were generally happy to be in that place at that time. ”
Hurd was a wonderful adventure and excursion into the most outstanding achievements of the theory of operating systems of its time. GNU's goal was to become both a Unix-like operating system and something similar to Lisp machines, the classic single-user workstations that appeared in AI Lab MIT, one of the main centers of hacker culture, from which Stallman also emerged. “Emacs (with its Lisp extensions) has defined a paradigm for designing interactive programs. At first it was even assumed that the window system would also be based on Lisp. ”
“One of the early changes in the GNU concept occurred when it became clear that the X11 works pretty well, doesn’t“ bend ”, and becomes a free program. Purely practical conclusion: we must take and use. ”
When GNU was just in its infancy, the obvious decision was to find a ready-made kernel that would already be in the public domain.
Richard's first choice was TRIX, which was developed in his native MIT and is mentioned in the GNU manifest. “We have a prototype kernel, but much is still missing for full-fledged Unix emulation,” he wrote in 1984. “When we finish the kernel and the compiler, we can distribute the GNU system under which we can write programs.” In December 1986, GNU programmers still continued to "finish TRIX," and the following year, Stallman became interested in Mach.
Other ideas were considered, for example, the use of the Berkeley Sprite operating system and the BSD kernel. “RMS was a big and consistent supporter of using as much ready-made code as possible (in my opinion, in vain),” Thomas Bushnell recalled later.
“I would immediately take BSD 4.4-Lite and assemble a kernel based on it. I knew this code well, I knew what and how to do it. Now it’s obvious to us that everything would have worked out wonderful, and the world today would have been completely different. RMS wanted to work with people from Berkeley in that direction. Some of them were really interested in this, but there were also those who deliberately delayed the process. Now it seems to me that it was because of their own plans to launch BSDI, for which a BSD 4.4-Lite GNU-based system would be a completely undesirable competitor. ”
According to Bushnell, in the end, Stallman decided that “Mach is a fully working core, 4.4-Lite is only partially ready. We choose Mach. ”
Work on the GNU operating system has been going on for nearly thirty years - since 1983. For the first time, interest in the Mach microkernel, which was developed at Carnegie Mellon University (CMU), was shown by the Free Software Foundation (FSF) as the core of its operating system back in 1987. ., but its source code was not distributed under a suitable license until 1991. By then, Linus Torvalds was already engaged in his own project to develop a kernel for IBM-compatible computers using the i386 processor.
If Linux had not been written and published under GPLv2 at one time, if it hadn’t fit so well into the environment of existing GNU components and captured the minds and hearts of developers all over the planet, who knows, maybe the whole “movement” would have focused around Hurd, and we would now live in a slightly different world. But the fate of Hurd was influenced not only by the rapid growth in the popularity of Linux or the bet made by the FSF on the microkernel Mach.
At its core, the Hurd architecture is an attempt to embody the spirit and perspective of the software freedom movement in software code. Here are the words of one of the FSF employees of those times: “Perhaps we can say that when we designed the Hurd, we were breathtaking from what was happening around. The software freedom movement has always been (and is) about making users no longer dependent on the whims of software manufacturers. The microkernel architecture of Hurd, the structure and interaction of daemons - to draw an analogy - gave the same freedom to simple users of the system: you are no longer required to obey the system administrator, his draconian policies and rules. Each user could (safely for the system itself and other users) launch any set of daemons, creating the working environment that he or she needed,

Just a big closet
Richard Stallman announced his intention to write a full-fledged Unix-like operating system, called GNU (recursive abbreviation GNU's Not Unix!), In September 1983. During this time (before Hurd was born), system components and tools were written that were necessary for development kernels: editors and compilers, Bash, Make, Autoconf, Emacs, GCC, sed, gawk, etc.
GNU paid for itself by selling software products. When work began on Hurd, the FSF began hiring developers. “It was long before the era of broadband Internet, and most often people worked on text terminals, through a modem. Usually we shared one office; if you saw him, you thought that he looked more like a large closet. We were guests at MIT at that time. ”
Linus Torvalds announcedhis “free operating system (just a hobby, nothing professional like GNU) for 386 (486) AT clones” in the comp.os.minix conference a few months before starting work on Hurd. Linus chose a model of a monolithic core, from which purists turned their nose, but which made it possible to quickly get a working core.
Linux was liked by hackers, enthusiasts and scientists, many of whom began to actively participate in the development. The kernel attracted them with its openness, free license and the fact that it could be run on almost any existing device. Linux “caught the wave”, the developer community grew surprisingly fast. Work on Hurd continued, but far from the same activity. People were more interested in GNU / Linux than GNU Hurd.
Idealistic philosophy
From the point of view of users, Hurd was still to grow and grow, and Linux, thanks to the efforts of developers, firmly took its place as the "heart" of the GNU operating system. At first, Stallman was skeptical. Early versions of Linux only worked on the IBM 386; According to Stallman himself, “we heard that Linux is practically not ported (now it is not, but they used to say so), and, in addition, Linux is similar in architecture to the Unix kernel. We are writing something much more powerful and advanced. ”
Linux was tightly tied to GCC and the GNU toolkit, developed and matured more and more, especially with the advent of distributions, and soon FSF began to consider it as an acceptable (if not the most optimal and temporary) replacement for the still non-existent kernel of the GNU operating system. Stallman immediately clarified: “There is no operating system called Linux. Linux operating system is GNU. Linux is just a program: the kernel. The kernel is part of the operating system, the lowest-level program that manages other programs, allocating processor time and other resources to them. ”
He insisted that the GNU operating system with Linux be called GNU / Linux as the kernel, so that “people understand that the system exists thanks to an idealistic philosophy. Call it Linux, and you break the philosophy. This is a very serious problem. Linux is not a system, but just part of it ... It is because of the idealistic position that the GNU project is based on, we have this system. ”
Work on Hurd continued, but it soon became apparent that the FSF had embarked on a bumpy path in its quest for excellence. The microkernel required solving a number of rather complicated problems, and many of those who could take on this were busy working on Linux, which could already be used fruitfully. Despite the well-known criticism , for example, by Andy Tanenbaum, the choice of Linus as a monolithic model of the core made it possible to obtain a working system much easier and faster.
Stallman later admitted that “he is solely responsible for the technical decision to develop the GNU kernel based on Mach, which slowed down the development of the system. I thought using Mach would save us time, but it turned out to be wrong. ” In subsequent years, Hurd was ported to various microkernels, from L4 to Coyotos and Viengoos, but he could never boast of the community support and the resources Linux had (and still has).
Principle and Commitment
In the late nineties, a split occurred in the community that led to the emergence of EGCS (pronounced eggs ), an offshoot of GCC whose goal was to step aside from managing FSF development, and the Open Source Initiative (OSI) to promote less radical and uncompromising open source software ideas and ideas.
“The main thing [OSI] wanted to be different from the FSF was that they did not condemn closed software products and did not declare themselves to be a freedom movement, but developed ideas about the economic benefits that free work of enthusiasts can bring for free , just for fun. ” But some saw "its main purpose - to try to politically marginalize Stallman; and an attempt at something unsuccessful. ”
Hurd began to talk about the exit in 1994, when it seems that they managed to launch Emacs; 2001 was indicated as the release date, but this never happened. When Hurd was ported to L4 in 2005, Marcus Brinkman said that “now we can easily explore and develop the system the way we want,” but was forced to admit that “I can build simple applications using my glibc port, but most of them do not start, because they need a file system or, say, calls fork and exec, and I have only stubs there so far. ”
In the mid-nineties, Debian appears on the scene, which thanks to the Debian Guidelineswritten by Bruce Perens becomes the bearer and expression of the “public consciousness” of the FOSS movement, while the FSF has largely moved away from GNU development, focusing mainly on the political issues of the movement.
Since 1998, Debian GNU / Hurd, one of the most active Debian projects producing installation and live CDs, can be considered as a reference version of Hurd, however, it still does not have an official release status. The quality of the Hurd code still does not allow it to be used to solve any real problems, hardware support is also very limited - but it can be fully launched in a virtual machine, try it.
Once the FSF paid programmers to work on GNU projects, but now most of them are volunteers or company employees who are interested in projects like GCC and, accordingly, sponsoring them. Hurd almost fell out of sight, because there is Linux that is already here and now, so there is no special need for another kernel. But the principle and commitment has not disappeared, and perhaps in the future the ideas of GNU Hurd will again be in demand.
Alix is the true core of GNU
Richard tells the story that the GNU kernel was not originally called Hurd.
“First I called him Alix (Alix), that was the name of my girlfriend at that time. She was a Unix system administrator and somehow drew attention to the fact that her name is similar to the names of many Unix systems. She jokingly told her friends that “someone should name the core in honor of me.” I did not say anything then, but decided that I would give her a surprise and name the core Alix. ”
“However, the name did not take root. Michael (now Thomas) Bushnell, the core kernel developer, preferred the name Hurd, and Alix got the name of one of the kernel subsystems — the one that intercepted system calls and processed them by exchanging messages with Hurd servers. ”
“Some time later, Alix and I broke up; she changed her name. At the same time (but independently) there were changes in the Hurd architecture, and the C library began sending messages to the servers directly, which made the Alix component unnecessary and it was removed. ”
“But before all this happened, one of her friends came across her name in the source code of Hurd and informed her about it. So she had the opportunity to find a core named after her. ”
Bushnell chose the name Hurd, partly because it looks like a “herd of antelopes,” partly because Hurd is the recursive abbreviation for “Hird of Unix-Replacing Daemons,” and in turn, Hird is “Hurd of Interfaces Representing Depth. " He said that “we, as far as I know, are the first software product whose name is a pair of mutually recursive abbreviations.”
Thomas Bushnell is currently a Debian developer and Gregorian.

At the forefront
Unlike Linux, a monolithic kernel, Hurd uses a microkernel, and almost all the functionality has been moved from kernel space to user space. The micronucleus is just a layer between the “iron” and everything else that the monolithic core usually does.
In 1996, Thomas Bushnell, one of the main architects of Hurd at an early stage, published his ideas in the article “ Towards a New Strategy of OS design ”.
“GNU Hurd,” he writes, “is designed so that system code is as limited as possible. Programs will interact with only a few subsystems; all other parts of the system are dynamically interchangeable. Users are free to use them at their discretion, will be able to connect new components for the needs of other users. There is no need to first establish trust in the interaction between users (i.e. each other's services). The system is not vulnerable, “trusting” the services of arbitrary users. ” In practice, this means that users do not need to contact a certain super-user (root) and wait until the latter mounts the file system or loads the necessary device driver (as it was in Linux until recently,
“Already at that time it was clear,” recalls one GNU employee, “and it was discussed in academia that the microkernel architecture will have performance problems (mainly due to the large number of context switches due to the need for messaging between daemons , compared to traditional handling of system calls in monolithic kernels). [Richard] Rashid, a researcher at CMU, suggested in his work that this problem is not so serious. Then it seemed, at least to me, that we here at GNU, with scarce funding, manage to not only program and fight for freedom, but also one of the first to implement the latest academic studies of computer science. In any case, the idea was such, and we were very proud of ourselves and were generally happy to be in that place at that time. ”
Hurd was a wonderful adventure and excursion into the most outstanding achievements of the theory of operating systems of its time. GNU's goal was to become both a Unix-like operating system and something similar to Lisp machines, the classic single-user workstations that appeared in AI Lab MIT, one of the main centers of hacker culture, from which Stallman also emerged. “Emacs (with its Lisp extensions) has defined a paradigm for designing interactive programs. At first it was even assumed that the window system would also be based on Lisp. ”
“One of the early changes in the GNU concept occurred when it became clear that the X11 works pretty well, doesn’t“ bend ”, and becomes a free program. Purely practical conclusion: we must take and use. ”
What else could be
When GNU was just in its infancy, the obvious decision was to find a ready-made kernel that would already be in the public domain.
Richard's first choice was TRIX, which was developed in his native MIT and is mentioned in the GNU manifest. “We have a prototype kernel, but much is still missing for full-fledged Unix emulation,” he wrote in 1984. “When we finish the kernel and the compiler, we can distribute the GNU system under which we can write programs.” In December 1986, GNU programmers still continued to "finish TRIX," and the following year, Stallman became interested in Mach.
Other ideas were considered, for example, the use of the Berkeley Sprite operating system and the BSD kernel. “RMS was a big and consistent supporter of using as much ready-made code as possible (in my opinion, in vain),” Thomas Bushnell recalled later.
“I would immediately take BSD 4.4-Lite and assemble a kernel based on it. I knew this code well, I knew what and how to do it. Now it’s obvious to us that everything would have worked out wonderful, and the world today would have been completely different. RMS wanted to work with people from Berkeley in that direction. Some of them were really interested in this, but there were also those who deliberately delayed the process. Now it seems to me that it was because of their own plans to launch BSDI, for which a BSD 4.4-Lite GNU-based system would be a completely undesirable competitor. ”
According to Bushnell, in the end, Stallman decided that “Mach is a fully working core, 4.4-Lite is only partially ready. We choose Mach. ”
Only registered users can participate in the survey. Please come in.
Have you run GNU Hurd?
- 7.5% Yes, in the virtual machine 123
- 2.6% Yes, on real hardware 43
- 87.2% No 1,427
- 5.1% I use it in production! ;-) 85