Re: Hurd technical questions (Mach, SMP, etc)
Date: Sat, 13 Mar 1999 10:36:07 -0600 (CST)
From: Troy Benjegerdes <firstname.lastname@example.org>
I've just got the hurd running on a dual Pentium Pro machine, and I've got
a couple of Mach related questions. First, is there an equivalent of the
'linux-kernel' mailing list for kernel related issues?
You could send things to email@example.com, although most Hurd
developers read debian-hurd too.
First, could someone fix the boot messages that say 'partition check: hda
hda1 hda2 hda3' to reflect that Mach uses hd0s1, etc. I found this rather
confusing at first, until I realized it whas probably lifted directly from
the Linux code ;)
Yes it is the output from the Linux driver. The point is that we try
to make only the minimum amount of changes to the origional sources as
possible. And since this would only be a cosmetic change, I don't
think it is a priority right now.
Second, does Mach support SMP at all? Does the hurd have equivalents of
the linux /proc/cpuinfo and /proc/interrupts? What will it take to get SMP
At this moment GNU Mach does not support SMP. I believe OKUJI
Yoshinori has been working on getting SMP (from OSF Mach 3) into
GNU Mach, but I don't know if he's been successful. In principle there
are Mach calls to get the number of processors in your machine and
manage these processors.
In looking at the Hurd reference manual, I see this:
Currently (April 1998), the Hurd is quite dependent on the GNU Mach
microkernel, which is a derivative of the University of Utah's Mach
4. However, the Hurd developers are all-too-aware of the limitations of
What are some of the limitations of Mach? How does it compare to osfMach3
(which I am familiar with from working with MkLinux on PowerMacs)?
There are some differences with OSF Mach. Both GNU Mach and OSF Mach
are derived from Mach 3, but they both provide some extensions to the
things in Mach 3, and some extensions are implemented in slightly
different ways. In addition to this the OSF people made some changes
to the Mach 3 API, and they made some rather invasive changes to MiG.
Finally, I'm contemplating either porting the Hurd servers to osfMach3 so
I can run it on my PowerMac, or merging osfMach and GNU Mach to accomplish
the same thing.
I have done some work on this. I added multiboot support to OSF Mach
(which is relevant if you want to run the Hurd on top of OSF Mach on
the ix86), did some work to add the extensions to GNU people made to
their version of MiG to the OSF version. Here is a list of things I
think need to be done to get the Hurd run on OSF Mach:
* Change the few cases where the Hurd is using Mach calls that have
been changed or dropped in OSF Mach.
* Update the parts from libmach included in glibc from OSF Mach.
* Write a new version of the serverboot program (the bootstrap task
called directly by Mach) and the default pager, compatible with the
way OSF Mach handles these things.
In addition to this to get it to run on a PowerPC, you'll have to
write the PowerPC Mach- & Hurd-specific libc code. Look at the
i386-specific code in `sysdeps/mach/i386' and `sysdeps/mach/hurd/i386'
to get an idea of the amount of code that has to be written. Since
there is a Linux PowerPC port most of the other PowerPC-specific code
has already been written.