Hurd Traffic #38 For 8 Mar 2000

By Zack Brown

Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers?
Are you without a nice project and just dying to cut your teeth on an OS you can try to modify for your needs?
Are you finding it frustrating when everything works on minix? No more all-nighters to get a nifty program working?
Then this post might be just for you :-)
-- Linus Torvalds, 1991

Table Of Contents

Mailing List Stats For This Week

We looked at 54 posts in 174K.

There were 26 different contributors. 14 posted more than once. 3 posted last week too.

The top posters of the week were:


1. Hurd On VMWare/plex86; Philosophy Of Using Free Software
29 Feb 2000 - 5 Mar 2000 (22 posts) Archive Link: "Hurd on VMware ?"
Topics: Bootloaders, Emulators: VMWare, Emulators: plex86
People: Norbert NemecOKUJI YoshinoriMarcus BrinkmannJim FranklinBrent Fulgham

The possibility of installing the Hurd under VMWare was first covered in Issue #8, Section #1  (19 Jun 1999: VMWare And The Hurd) , where others had also tried it with some success. It came up again briefly in Issue #9, Section #2  (22 Jul 1999: Partition Sizing; VMWare; Booting From A Disk Image) , where Marcus Brinkmann said he couldn't recommend it because it was slow and nonfree. It next appeared briefly in Issue #23, Section #1  (25 Oct 1999: New Tarball Tested) .

This time, Norbert Nemec had a bit of trouble installing the Hurd under VMWare, but finally figured it out himself. Someone asked how he'd done it, and he described the procedure:

Ok, here are the steps I took:

  1. Start out a new VMware environment from scratch. Use a virtual disk for hda (~1GB, or whatever you like to). Swap partition should go to a separate disk hdb - that way you can make this disk non-persistent once the plain swap partition is there and it will not grow any larger that way. cdrom gets disk hdc (IDE secondary master)
  2. To partition those virtual disks, you will need to boot the virtual machine from floppy or cd somehow. The virtual bios supports CD booting (enter bios setup with *shift*-F2 - not just F2!) so that should not be a problem. Most linux distributions support a rescue system from CD.

    Just make it one large partition (type 83) on the first disk and one on the second disk (type 82). Now you need to format the installation partition (mke2fs -o hurd /dev/hda1)

  3. Leave VMware.
  4. Now you can use to mount the first partition on the first virtual disk to - say /mnt
  5. use cross-install /mnt just like you would do it to a real partition. Alternatively untar the tarball to /mnt.
  6. Unmount the virtual partition. (I.e. stop which stays running in one console as long as the partition is mounted.)
  7. Boot you VMware using a grub-floppy and have fun.

For using the network you may either use bridged-networking, which makes your hurd machine behave just like a completely separate machine within the real physical ethernet.

if you don't have ethernet connection or do not want to risk fiddling around with it, choose host-only networking. That should allow you wo work comfortably with the hurd without having to use that sick native console and without haveing to run a separate linux machine. Unfortunately I have not managed yet to get anywhere beyond being able to ping in both directions.

Someone was ecstatic about this, and installed the Hurd under VMWare for themselves. He added that the ability to make the Hurd think a SCSI drive was actually IDE solved the problem of being unable to boot from a SCSI disk. Marcus pointed out that the real problem still remained, though (and reiterated that VMWare was not a free solution). Jim Franklin recommended grub 0.5.94 for fixing SCSI problems, adding that Brent Fulgham had solved his SCSI problems that way. OKUJI Yoshinori chided, "GRUB 0.5.94 hasn't been released yet. Don't call the CVS version as if it were a public release, otherwise we would be very confused (like in the case of Autoconf). Anyway, 0.5.94 will appear very soon, though." Jim took the criticism and said he'd be more careful.

Norbert also replied to Marcus' admonition about VMWare's non-free status. He agreed it was a disadvantage, but not a fatal one, so long as we didn't become dependant on it. He also pointed out that once the developers had solved the basic problems that VMWare allows users to work around, there would be little or no need for VMWare. Lars Brinkhoff gave a pointer to the free FreeMWare ( (now renamed plex86), but acknowledged that it was nowhere near ready.

Marcus defended and clarified his stance against using non-free software:

I think that there will always be people who will pull the convenience argument. "Just this little piece of non-free software until there is a free replacement". There is always a further little piece of convenient non-free software out there that might be desireable to some.

However, I really don't care very much if you use some non-free software or not. I just wanted to point it out to those who might wonder why VMWare is not widely advocated if it is such a cool thing.

Throughout the discussion, several people repeated that they wanted to stay away from philosophical debate. But at a certain point, Jim gave pointers to "What Is Free Software" ( and "XEmacs vs. GNU Emacs" ( , and said:

This question has touched on philosophy whether we wish it to or not. This is the reason I stopped using Xemacs and started using emacs even though I prefer Xemacs. I am not perfect as far as use "free" software is concerned and my job requires me to use "non-free" operating systems and software as well. As far as my debian system goes I am slowly working towards a "free" system there. I am not even perfect in that regard at this time.

Without the fsf and gnu philosophy, Debian, linux, the hurd might not exist as free software today. I have the utmost respect for the fsf and gnu philosophy. Enough said.


2. Release Schedule
2 Mar 2000 - 5 Mar 2000 (2 posts) Archive Link: "Next release?"
People: Thomas Bushnell

David Pettersson asked when version 0.3 of "Debian/Hurd" would be out, and Thomas Bushnell explained:

Debian/Hurd is the full Debian system, running on the Hurd. Debian is already up to version number 2.1, with 2.2 soon to appear. So the first Debian/Hurd system will be numbered more than 2.2.

The Hurd source itself will get released as 0.3 when the core deveoplers make a punch list of things we really want to have working, and then decide that current bugs are sufficiently gone as to make a release appropriate. That is an entirely separate thing from deciding that Debian/Hurd itself is releasable, which depends on the total state of the system, and not just the Hurd itself.


3. A Simple Translator
2 Mar 2000 (1 post) Archive Link: "run (another sample translator)"
People: Marcus Brinkmann

Marcus Brinkmann posted this long announcement and explanation:

here is another sample translator for you to play with, if you are curious how this translator thing works.

It has probably some security issues if not used carefully, and it is not more robus than the hello example, so don't expect production quality.

It accepts any command plus options as arguments, and provides a stream of the commands output. For example:

$ settrans -c fortune /hurd/run /games/fortune -s
$ cat fortune
Logic doesn't apply to the real world.

-- Marvin Minsky

It is possible to specify commands with a lot of output: The output is read on demand (try for example "/hurd/run_find_/index.html").

It is possible to specify only the command without full path, it will search in the standard locations (as execvp does), however, I don't know which PATH settings a translator sees, so be careful.

The command runs as the user who owns the underlying node, and not as the user who reads the file!

You can use it for example to create random email signatures. Write a script which generates a sig for you, and put it in ~/bin/gen_sig (or similar). Then do:

$ settrans -c ~/.signature /hurd/run ~/bin/gen_sig

and it will work with every mail user agent that reads .signature, without any special setup.

Compilation and Installation:
gcc -g -o run run.c -lshouldbeinlibc -lfshelp -lports -ltrivfs
cp run /hurd/run

Of course, you don't need to put it in /hurd/run as root. You can just as well compile it as any user and put it in ~/hurd/run or whereever. Just use the new path in the settrans command as well.

I did some last minute cleanup, so hopefully I didn't manage to add a buglet, too. :)

No other options are accepted, btw. If you have ideas how this translator could be extended, let me know. For example, I could provide an option to merge stderr with stdout, so one sees error messages in the file.

Another idea will lead to a wholly different translator: Mapping the commands with the options into the filesystem hierarchy like this:
$ cat /run/fortune
$ cat /run/fortune/-s

A prefix could be used to allow empty arguments as well:
$ cat /run/echo/EMPTY
$ cat /run/echo/EMPTYEMPTY

Well, that requires a bit more work, though, as this translator would provide a directory. Enough crazy ideas for today. Another related idea btw is a cgi-bin translator, so that cgi is implemented outside of the browser. Pretty trivial variation of the above, actually.

There was no reply.


4. 'crashme' For The Hurd Finds Leak
2 Mar 2000 (3 posts) Archive Link: "Hurd test"
People: Roland McGrath

Stefan Weil was trying (and succeeding) to crash the Hurd by using up its available resources, specifically RAM and swap. He tried a series of one-liners, all of which succeeded in crashing the machine eventually. The first one-liner he posted was

while true; do ls /usr/include >/dev/null; vmstat --terse --no-header; done

But he corrected this in a subsequent post, because systems without development packages installed, could have an empty /usr/include directory. He suggested

while true; do echo /bin/* >/dev/null; vminfo 4 | wc; done

instead. These would crash the system, with errors of "Bus error" and "(default pager): dropping data_request because of previous paging errors". For systems with more RAM and swap, he also recommended just

while true; do echo /bin/* >/dev/null; done

and added that running several of these in the background would speed up the crash. He also pointed out that, while the processes were running, 'ps axf' would sometimes give some garbage output. Roland McGrath replied:

Thanks very much for your reports. I was able to reproduce this problem without crashing my system by trying a similar test case in a filesystem that was not my root filesystem. This way, you can diddle that filesystem server and kill it before it gets out of hand if necessary, without taking down anything else. In general, I recommend doing this for any filesystem problem you find.

Thanks to your test case I was able to track down this leak and fix it. The problem also occurred in ufs, and I fixed it there too. The bug appeared whenever a `readdir' call hit the end of a directory whose total size was greater than a page, at which time the filesystem would leak a chunk of untouched memory as large as the page-rounded total size of the directory (/bin is about 3 pages, for example).


5. Installation Report
2 Mar 2000 - 3 Mar 2000 (4 posts) Archive Link: "New user install report"
People: Marcus BrinkmannMatthew Vernon

Jason Henry Parker followed Matthew Vernon installation guide (which he felt was an excellent document), and posted his experiences. First, he thought the guide should be updated to reflect the new --download option to 'cross-install'. That would have saved him a lot of time downloading packages by hand, but he only learned about it after he'd finished his installation.

Next, John reported that Hurd filesystems needed to be created with '-O none' in 'mke2fs', to prevent the filesystem from receiving 2.2 enhancements. He felt this should be the default when creating filesystems with the '-o' option (telling 'mke2fs' not to assume that the filesystem will be used on the same OS it's being created under). Marcus Brinkmann replied, "The latest packages and grub should handle the new format just fine."

Also, John had had to remove 'modules/gconv' from the list of optional packages to install, in 'cross-install'. To this, Marcus replied, "Well, cross-install was indeed badly out of date, I will upload a new version in a few minutes. Sorry for any inconvenience."


6. PPP Saga Continues
4 Mar 2000 (2 posts) Archive Link: "PPP support"
People: Igor KhavkineKunihiro IshiguroMarcus BrinkmannThomas Bushnell

The subject of getting PPP working under the Hurd was first covered in Issue #26, Section #3  (28 Nov 1999: PPP Under The Hurd) , then again in Issue #28, Section #3  (13 Dec 1999: FTP And PPP On The Hurd) , and most recently in Issue #34, Section #1  (21 Jan 2000: Porting PPP) .

This time, Igor Khavkine (who had participated in the discussion in Issue #34) reported:

I decided to take a look at pppd sources and see what would need to be done to port it. From first glance, the platform dependent parts of the code deal with the following: add an entry to the network interface table, get low level info from the interface, send/receive data from an interface and configure the tty (the serial port, or anything that emulates it like a pppoe daemon).

First what's completely lacking in pfinet is the ability to add and configure new interfaces, like for a second network card for example. The file hurd/pfinet.defs contains a stub for such a call, but I didn't see it implemented anywhere. Also the only type of interfaces that's supported by pfinet is ethernet and loopback. This functionality will have to be implemented any way in order to support utilities like ifconfig.

A thought that crossed my mind was instead of trying to add support for ppp0 like interfaces to pfinet, one could support a generic "tunneling" interface that would be used as a bridge between the linux networking code in pfinet and an outside daemon like pppd or a translator.

Aside from the above, would there be any other problems in the way of porint pppd? I remember that gnumach was lacking support for character devices (or something simmilar) which was needed by ppp, is that still the case?

Marcus Brinkmann quoted an email by Kunihiro Ishiguro:

I hacked pfinet and some other files (include glibc) to support route addition, deletion and showing current routing table which exists in pfinet process. Currently pfinet supports only one interface, so there are some restrictions exist. But I believe this hack will useful to everybody who uses pfinet.

The patches is available under below URL:

Speaking for himself, Marcus added, "I don't claim I understand something about it, but Thomas and Rland spoke about a "pump" server whch fetchs the ip and other stuff and forwards it to pfinet when the connection is build up. You should really contact Thomas Bushnell BSG ( if you are interested in working on a hurdish correctly solution."







We Hope You Enjoy Hurd Traffic

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License, version 2.0.