While Neal Walfield [interview] finished the initial memory management framework for the L4/Hurd port [story], Marcus Brinkmann was busy porting essential parts of glibc, namely getting the process startup code working and thus actual programs to run. This rather small step is at the end of a giant leap towards the first bootstrapping phase and opens the way for future development.
His latest patches and the add-on to glibc (which are maintained in the hurd-l4 CVS repository for the time being) enable Thread Local Storage (TLS) and Thread Specific Data (TSD) (which are prerequisites for glibc's Native POSIX Threading Library (NPTL) [story]) and also make glibc's startup and initialization code run all the way until invoking main().
This makes it possible to link a program statically against glibc and have it run in place of the bootstrap filesystem server. To this end, Marcus was able to port banner(6) to Hurd/L4, which thus has the honour of being the first user application running on the L4 port.
Concerning the future, Marcus says: "I think that this basically concludes the first step of the initial bootstrap phase. [...] we can now easily explore and develop the system in any way we want. The dinner is prepared."
From: Marcus Brinkmann Subject: TLS/TSD support and startup/initialization working Date: Thu, 27 Jan 2005 17:54:11 +0100 Hi, with the changes of today, the glibc patch set in CVS supports startup and initialization up to the invocation of the main() function - this means important things like malloc() work. Of course, there is a lot of cheating going on, and the implementation is full of gaps and stubs. But this step forward means that we can do easy testing by just writing a program and linking it to glibc, and run it as the "bootstrap filesystem" server. TLS/TSD seems to work without any problems - important things like the default locale are set up correctly, and thus strerror() works. __thread variables are supported, glibc uses them itself. There were a couple of fixes and extensions needed in wortel and the startup code, but it wasn't so much. My understanding of the glibc code has reached an all-time high (not that this required much ;) If you want to reproduce all this, you need to configure, make and install the software as usual. It is important that your compiler can find the installed header files afterwards! Only then you can reconfigure your source with "--enable-libc" and try to build the C library according to the README. Static linking against this new libc should be possible after (manual) installation, I guess, but I always use a very hackisch and long gcc command line to cheat myself into a binary that I can then use as "filesystem server" (the last one in the list) in the GRUB configuration. See the README for details. I think that this basically concludes the first step of the initial bootstrap phase. By being able to link a program against glibc, and by booting all the way up to that programs main() function, we can now easily explore and develop the system in any way we want. The dinner is prepared! :) Thanks, Marcus
COOL! Keep up the good work,
COOL!
Keep up the good work, Hurd devs! ^_^
Like the first comment ^^
Like the first comment ^^
Wish I was more of a programmer and less of a student so I too could help on hurd.
nah being a student makes you
nah being a student makes you perfect for this project. Thats about all they've accomplished so far.
Banner on hurd?
Hurd is running banner, woohoooo. That's a sentation.
Re: Banner on hurd?
Hurd is running banner
You are either confused or the story was not clear enough: Not 'the Hurd' has ported banner, but Marcus has ported banner to the new, shiny, totally alpha 'Hurd on L4' port. The current (mostly) stable Hurd runs on the GNU Mach microkernel. However, the Hurd developers believe that there are fundamental problems with GNU Mach, which can be solved by using the L4 microkernel. This project is called Hurd/L4 and is in a very early phase of development, you can find further information here.
The regular Hurd on GNU Mach system is pretty mature and porting issues here involve GNOME or Mozilla, not banner.
Michael
Acronym fun
The article writer needs some sort of acronym checker...
It's TSD, not TDS. And it's NPTL, not NTPL.
TLS/TSD
His latest patches and the add-on to glibc enable Thread Local Storage (TLS) and Thread Specific Data (TSD) ...
Well, TLS and TSD are just different names for the same thing (hence the "/" and not "and" in the original post).
My coverage
Great news! I also covered this news together with an overview of HURD and L4 history on my site, here.