summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/advantages.mdwn14
-rw-r--r--hurd/authentication.mdwn6
-rw-r--r--hurd/binutils.mdwn6
-rw-r--r--hurd/building/cross-compiling.mdwn178
-rw-r--r--hurd/building/cross-compiling/Makefile168
-rw-r--r--hurd/building/cross-compiling/discussion.mdwn6
-rw-r--r--hurd/building/example.mdwn6
-rw-r--r--hurd/concepts.mdwn6
-rw-r--r--hurd/console.mdwn4
-rw-r--r--hurd/critique.mdwn8
-rw-r--r--hurd/dde.mdwn22
-rw-r--r--hurd/dde/guide.mdwn158
-rw-r--r--hurd/debugging.mdwn6
-rw-r--r--hurd/debugging/gdb.mdwn6
-rw-r--r--hurd/debugging/gdb/noninvasive_debugging.mdwn6
-rw-r--r--hurd/debugging/glibc.mdwn6
-rw-r--r--hurd/debugging/rpctrace.mdwn24
-rw-r--r--hurd/debugging/translator.mdwn8
-rw-r--r--hurd/debugging/translator/capturing_stdout_and_stderr.mdwn13
-rw-r--r--hurd/debugging/translator/gdb.mdwn6
-rw-r--r--hurd/documentation.mdwn20
-rw-r--r--hurd/documentation/auth.html6
-rw-r--r--hurd/documentation/hurd-and-linux.html47
-rw-r--r--hurd/documentation/hurd-and-linux.mdwn (renamed from hurd/open_issues/libfshelp_in_hurdlibs.mdwn)9
-rw-r--r--hurd/documentation/hurd-paper.html760
-rw-r--r--hurd/documentation/hurd-paper.mdwn11
-rw-r--r--hurd/documentation/hurd-talk.html1061
-rw-r--r--hurd/documentation/hurd-talk.mdwn11
-rw-r--r--hurd/documentation/translators.html6
-rw-r--r--hurd/faq.mdwn10
-rw-r--r--hurd/faq/old-stuff.mdwn10
-rw-r--r--hurd/faq/old_faq.txt6
-rw-r--r--hurd/faq/release.mdwn8
-rw-r--r--hurd/faq/slash_usr_symlink.mdwn8
-rw-r--r--hurd/faq/smp.mdwn17
-rw-r--r--hurd/faq/still_useful.mdwn46
-rw-r--r--hurd/faq/top.mdwn16
-rw-r--r--hurd/gcc.mdwn6
-rw-r--r--hurd/glibc.mdwn9
-rw-r--r--hurd/glibc/hurd-specific_api.mdwn8
-rw-r--r--hurd/glibc/internals.mdwn35
-rw-r--r--hurd/history.mdwn91
-rw-r--r--hurd/history/hurd-announce47
-rw-r--r--hurd/history/hurd-announce2143
-rw-r--r--hurd/history/hurd-flash22
-rw-r--r--hurd/history/hurd-flash1025
-rw-r--r--hurd/history/hurd-flash1125
-rw-r--r--hurd/history/hurd-flash1276
-rw-r--r--hurd/history/hurd-flash13120
-rw-r--r--hurd/history/hurd-flash1462
-rw-r--r--hurd/history/hurd-flash1560
-rw-r--r--hurd/history/hurd-flash2152
-rw-r--r--hurd/history/hurd-flash377
-rw-r--r--hurd/history/hurd-flash4101
-rw-r--r--hurd/history/hurd-flash523
-rw-r--r--hurd/history/hurd-flash646
-rw-r--r--hurd/history/hurd-flash717
-rw-r--r--hurd/history/hurd-flash873
-rw-r--r--hurd/history/hurd-flash939
-rw-r--r--hurd/history/port_to_l4.mdwn102
-rw-r--r--hurd/hurd_hacking_guide.mdwn8
-rw-r--r--hurd/interface.mdwn14
-rw-r--r--hurd/interface/dir_link.mdwn11
-rw-r--r--hurd/interface/dir_lookup.mdwn11
-rw-r--r--hurd/interface/dir_mkdir.mdwn11
-rw-r--r--hurd/interface/dir_mkfile.mdwn11
-rw-r--r--hurd/interface/dir_notice_changes.mdwn11
-rw-r--r--hurd/interface/dir_readdir.mdwn11
-rw-r--r--hurd/interface/dir_rename.mdwn11
-rw-r--r--hurd/interface/dir_rmdir.mdwn11
-rw-r--r--hurd/interface/dir_unlink.mdwn11
-rw-r--r--hurd/interface/file_chauthor.mdwn11
-rw-r--r--hurd/interface/file_check_access.mdwn11
-rw-r--r--hurd/interface/file_chflags.mdwn11
-rw-r--r--hurd/interface/file_chmod.mdwn11
-rw-r--r--hurd/interface/file_chown.mdwn11
-rw-r--r--hurd/interface/file_exec.mdwn11
-rw-r--r--hurd/interface/file_get_fs_options.mdwn11
-rw-r--r--hurd/interface/file_get_storage_info.mdwn11
-rw-r--r--hurd/interface/file_get_translator.mdwn11
-rw-r--r--hurd/interface/file_get_translator_cntl.mdwn11
-rw-r--r--hurd/interface/file_getcontrol.mdwn11
-rw-r--r--hurd/interface/file_getfh.mdwn11
-rw-r--r--hurd/interface/file_getlinknode.mdwn11
-rw-r--r--hurd/interface/file_lock.mdwn11
-rw-r--r--hurd/interface/file_lock_stat.mdwn11
-rw-r--r--hurd/interface/file_notice_changes.mdwn11
-rw-r--r--hurd/interface/file_reparent.mdwn11
-rw-r--r--hurd/interface/file_set_size.mdwn11
-rw-r--r--hurd/interface/file_set_translator.mdwn11
-rw-r--r--hurd/interface/file_statfs.mdwn11
-rw-r--r--hurd/interface/file_sync.mdwn11
-rw-r--r--hurd/interface/file_syncfs.mdwn11
-rw-r--r--hurd/interface/file_utimes.mdwn11
-rw-r--r--hurd/interface/fs.mdwn25
-rw-r--r--hurd/interface/fs/00.mdwn30
-rw-r--r--hurd/interface/fs/01.mdwn20
-rw-r--r--hurd/interface/fs/02.mdwn36
-rw-r--r--hurd/interface/fs/03.mdwn19
-rw-r--r--hurd/interface/fs/04.mdwn19
-rw-r--r--hurd/interface/fs/05.mdwn23
-rw-r--r--hurd/interface/fs/06.mdwn21
-rw-r--r--hurd/interface/fs/07.mdwn19
-rw-r--r--hurd/interface/fs/08.mdwn21
-rw-r--r--hurd/interface/fs/09.mdwn24
-rw-r--r--hurd/interface/fs/10.mdwn20
-rw-r--r--hurd/interface/fs/11.mdwn19
-rw-r--r--hurd/interface/fs/12.mdwn19
-rw-r--r--hurd/interface/fs/13.mdwn60
-rw-r--r--hurd/interface/fs/14.mdwn67
-rw-r--r--hurd/interface/fs/15.mdwn23
-rw-r--r--hurd/interface/fs/16.mdwn20
-rw-r--r--hurd/interface/fs/17.mdwn41
-rw-r--r--hurd/interface/fs/18.mdwn34
-rw-r--r--hurd/interface/fs/19.mdwn29
-rw-r--r--hurd/interface/fs/20.mdwn20
-rw-r--r--hurd/interface/fs/21.mdwn19
-rw-r--r--hurd/interface/fs/22.mdwn19
-rw-r--r--hurd/interface/fs/23.mdwn27
-rw-r--r--hurd/interface/fs/24.mdwn24
-rw-r--r--hurd/interface/fs/25.mdwn25
-rw-r--r--hurd/interface/fs/26.mdwn20
-rw-r--r--hurd/interface/fs/27.mdwn29
-rw-r--r--hurd/interface/fs/28.mdwn19
-rw-r--r--hurd/interface/fs/29.mdwn20
-rw-r--r--hurd/interface/fs/30.mdwn20
-rw-r--r--hurd/interface/fs/31.mdwn21
-rw-r--r--hurd/interface/fsys.mdwn15
-rw-r--r--hurd/interface/fsys/00.mdwn23
-rw-r--r--hurd/interface/fsys/01.mdwn19
-rw-r--r--hurd/interface/fsys/02.mdwn33
-rw-r--r--hurd/interface/fsys/03.mdwn22
-rw-r--r--hurd/interface/fsys/04.mdwn58
-rw-r--r--hurd/interface/fsys/05.mdwn20
-rw-r--r--hurd/interface/fsys/06.mdwn20
-rw-r--r--hurd/interface/fsys/07.mdwn19
-rw-r--r--hurd/interface/fsys/08.mdwn23
-rw-r--r--hurd/interface/fsys/09.mdwn19
-rw-r--r--hurd/interface/fsys_forward.mdwn11
-rw-r--r--hurd/interface/fsys_get_options.mdwn11
-rw-r--r--hurd/interface/fsys_getfile.mdwn11
-rw-r--r--hurd/interface/fsys_getpriv.mdwn11
-rw-r--r--hurd/interface/fsys_getroot.mdwn11
-rw-r--r--hurd/interface/fsys_goaway.mdwn11
-rw-r--r--hurd/interface/fsys_init.mdwn11
-rw-r--r--hurd/interface/fsys_set_options.mdwn11
-rw-r--r--hurd/interface/fsys_startup.mdwn11
-rw-r--r--hurd/interface/fsys_syncfs.mdwn11
-rw-r--r--hurd/io_path.mdwn9
-rw-r--r--hurd/libchannel.mdwn6
-rw-r--r--hurd/libfshelp.mdwn29
-rw-r--r--hurd/libhello_example.mdwn6
-rw-r--r--hurd/libihash.mdwn4
-rw-r--r--hurd/libnetfs.mdwn13
-rw-r--r--hurd/libpager.mdwn6
-rw-r--r--hurd/libports.mdwn16
-rw-r--r--hurd/libstore.mdwn39
-rw-r--r--hurd/libstore/bunzip2_store.mdwn12
-rw-r--r--hurd/libstore/concat_store.mdwn12
-rw-r--r--hurd/libstore/copy_store.mdwn25
-rw-r--r--hurd/libstore/device_store.mdwn12
-rw-r--r--hurd/libstore/examples/ramdisk.mdwn32
-rw-r--r--hurd/libstore/file_store.mdwn12
-rw-r--r--hurd/libstore/gunzip_store.mdwn12
-rw-r--r--hurd/libstore/ileave_store.mdwn12
-rw-r--r--hurd/libstore/nbd_store.mdwn12
-rw-r--r--hurd/libstore/part.mdwn26
-rw-r--r--hurd/libstore/query_store.mdwn12
-rw-r--r--hurd/libstore/remap_store.mdwn12
-rw-r--r--hurd/libstore/task_store.mdwn12
-rw-r--r--hurd/libstore/typed_store.mdwn12
-rw-r--r--hurd/libstore/url_store.mdwn12
-rw-r--r--hurd/libstore/zero_store.mdwn19
-rw-r--r--hurd/libtrivfs.mdwn31
-rw-r--r--hurd/logo.mdwn24
-rw-r--r--hurd/logo/boxes-redrawn.pngbin1764 -> 0 bytes
-rw-r--r--hurd/logo/boxes-redrawn.svg50
-rw-r--r--hurd/neighborhurd.mdwn6
-rw-r--r--hurd/networking.mdwn6
-rw-r--r--hurd/ng/discussion.mdwn13
-rw-r--r--hurd/ng/issues_with_mach.mdwn8
-rw-r--r--hurd/ng/limitations_of_the_original_hurd_design.mdwn6
-rw-r--r--hurd/ng/position_paper.mdwn6
-rw-r--r--hurd/open_issues.mdwn20
-rw-r--r--hurd/open_issues/cvs_tasks_file.mdwn14
-rw-r--r--hurd/open_issues/cvs_todo_file.mdwn14
-rw-r--r--hurd/open_issues/gdb_non-stop_mode.mdwn21
-rw-r--r--hurd/open_issues/gdb_pending_execs.mdwn23
-rw-r--r--hurd/open_issues/gdb_thread_ids.mdwn17
-rw-r--r--hurd/open_issues/some_todo_list.mdwn119
-rw-r--r--hurd/open_issues/wrong_reply_message_id.mdwn15
-rw-r--r--hurd/porting.mdwn14
-rw-r--r--hurd/porting/guidelines.mdwn271
-rw-r--r--hurd/porting/system_api_limitations.mdwn31
-rw-r--r--hurd/reference_manual.mdwn6
-rw-r--r--hurd/running.mdwn11
-rw-r--r--hurd/running/arch_hurd.mdwn13
-rw-r--r--hurd/running/debian.mdwn30
-rw-r--r--hurd/running/debian/BtsFiling.mdwn52
-rw-r--r--hurd/running/debian/DebianAptOffline.mdwn6
-rw-r--r--hurd/running/debian/GnuDebianRelationship.mdwn4
-rw-r--r--hurd/running/debian/MediaPressKitDiscuss.mdwn2
-rw-r--r--hurd/running/debian/after_install.mdwn2
-rw-r--r--hurd/running/debian/creating_image_tarball.mdwn6
-rw-r--r--hurd/running/debian/faq.mdwn13
-rw-r--r--hurd/running/debian/faq/2_gib_partition_limit.mdwn8
-rw-r--r--hurd/running/debian/faq/512_mib_ram_limit.mdwn23
-rw-r--r--hurd/running/debian/faq/apt_umount.mdwn10
-rw-r--r--hurd/running/debian/faq/bad_hypermeta_data.mdwn6
-rw-r--r--hurd/running/debian/faq/debugging_inside_glibc.mdwn6
-rw-r--r--hurd/running/debian/faq/debugging_translators.mdwn10
-rw-r--r--hurd/running/debian/faq/dev_random.mdwn8
-rw-r--r--hurd/running/debian/faq/df.mdwn6
-rw-r--r--hurd/running/debian/faq/eata.mdwn13
-rw-r--r--hurd/running/debian/faq/free_memory.mdwn6
-rw-r--r--hurd/running/debian/faq/hurd_console.mdwn6
-rw-r--r--hurd/running/debian/faq/kernel_logs.mdwn6
-rw-r--r--hurd/running/debian/faq/other_repositories.mdwn6
-rw-r--r--hurd/running/debian/faq/ps_hangs.mdwn9
-rw-r--r--hurd/running/debian/faq/reporting_bugs.mdwn6
-rw-r--r--hurd/running/debian/faq/sata_disk_drives.mdwn6
-rw-r--r--hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn6
-rw-r--r--hurd/running/debian/faq/xserver-common.mdwn6
-rw-r--r--hurd/running/debian/package_troubleshooting.mdwn4
-rw-r--r--hurd/running/debian/patch_submission.mdwn6
-rw-r--r--hurd/running/debian/porting.mdwn34
-rw-r--r--hurd/running/debian/porting/adduser.mdwn26
-rw-r--r--hurd/running/debian/porting/gcc.mdwn48
-rw-r--r--hurd/running/debian/porting/gcc/c++.mdwn39
-rw-r--r--hurd/running/debian/porting/gcc/libmudflap.mdwn72
-rw-r--r--hurd/running/debian/porting/git-core-2.mdwn46
-rw-r--r--hurd/running/debian/porting/git-core.mdwn25
-rw-r--r--hurd/running/debian/porting/libdbd-sqlite3-perl.mdwn26
-rw-r--r--hurd/running/debian/porting/pth.mdwn15
-rw-r--r--hurd/running/debian/porting/runit.mdwn17
-rw-r--r--hurd/running/distrib.mdwn19
-rw-r--r--hurd/running/faq.mdwn20
-rw-r--r--hurd/running/faq/native-install_doesnt_finish.mdwn24
-rw-r--r--hurd/running/gentoo.mdwn32
-rw-r--r--hurd/running/gnu.mdwn14
-rw-r--r--hurd/running/gnu/create_an_image.mdwn12
-rw-r--r--hurd/running/gnu/setup.mdwn8
-rw-r--r--hurd/running/gnu/universal_package_manager.mdwn27
-rw-r--r--hurd/running/live_cd.mdwn11
-rw-r--r--hurd/running/qemu.mdwn33
-rw-r--r--hurd/running/qemu/babhurd_image.mdwn67
-rw-r--r--hurd/running/qemu/microsoft_windows.mdwn6
-rw-r--r--hurd/running/qemu/networking.mdwn6
-rw-r--r--hurd/running/qemu/networking/sharing_files.mdwn6
-rw-r--r--hurd/running/vmware.mdwn6
-rw-r--r--hurd/running/vmware/discussion.mdwn6
-rw-r--r--hurd/settrans.mdwn6
-rw-r--r--hurd/status.mdwn59
-rw-r--r--hurd/status/hurd-fvwm-screenshot-2009-11-12.pngbin0 -> 195807 bytes
-rw-r--r--hurd/subhurd.mdwn6
-rw-r--r--hurd/subhurd/running_a_subhurd.mdwn8
-rw-r--r--hurd/syncfs.mdwn15
-rw-r--r--hurd/toolchain.mdwn6
-rw-r--r--hurd/translator.mdwn47
-rw-r--r--hurd/translator/auth.mdwn6
-rw-r--r--hurd/translator/cvsfs.mdwn6
-rw-r--r--hurd/translator/devfs.mdwn6
-rw-r--r--hurd/translator/emailfs.mdwn6
-rw-r--r--hurd/translator/examples.mdwn6
-rw-r--r--hurd/translator/exec.mdwn12
-rw-r--r--hurd/translator/ext2fs.mdwn16
-rw-r--r--hurd/translator/fatfs.mdwn10
-rw-r--r--hurd/translator/magic.mdwn6
-rw-r--r--hurd/translator/mboxfs.mdwn6
-rw-r--r--hurd/translator/nsmux.mdwn121
-rw-r--r--hurd/translator/pfinet.mdwn6
-rw-r--r--hurd/translator/pfinet/implementation.mdwn6
-rw-r--r--hurd/translator/pfinet/ipv6.mdwn15
-rw-r--r--hurd/translator/pflocal.mdwn6
-rw-r--r--hurd/translator/procfs.mdwn6
-rw-r--r--hurd/translator/procfs/htop.mdwn6
-rw-r--r--hurd/translator/procfs/killall.mdwn6
-rw-r--r--hurd/translator/procfs/procps.mdwn6
-rw-r--r--hurd/translator/procfs/top.mdwn6
-rw-r--r--hurd/translator/short-circuiting.mdwn88
-rw-r--r--hurd/translator/storeio.mdwn8
-rw-r--r--hurd/translator/stowfs.mdwn8
-rw-r--r--hurd/translator/tmpfs.mdwn17
-rw-r--r--hurd/translator/tmpfs/notes_bing.mdwn9
-rw-r--r--hurd/translator/tmpfs/notes_various.mdwn14
-rw-r--r--hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn73
-rw-r--r--hurd/translator/unionfs.mdwn146
-rw-r--r--hurd/translator/unionmount.mdwn11
-rw-r--r--hurd/translator/wishlist_1.mdwn6
-rw-r--r--hurd/translator/wishlist_2.mdwn2
-rw-r--r--hurd/translator/writing/example.mdwn6
-rw-r--r--hurd/translator/xmlfs.mdwn6
-rw-r--r--hurd/virtual_file_system.mdwn8
-rw-r--r--hurd/virtualization.mdwn6
-rw-r--r--hurd/what_is_the_gnu_hurd.mdwn8
-rw-r--r--hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn8
-rw-r--r--hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn8
297 files changed, 3938 insertions, 4610 deletions
diff --git a/hurd/advantages.mdwn b/hurd/advantages.mdwn
index ff8c5560..ba3a134b 100644
--- a/hurd/advantages.mdwn
+++ b/hurd/advantages.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2001, 2002, 2008 Free Software Foundation,
+[[!meta copyright="Copyright © 2001, 2002, 2008, 2010 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The Hurd is not the most advanced kernel known to the planet (yet),
but it does have a number of enticing features:
@@ -58,3 +58,11 @@ but it does have a number of enticing features:
The Hurd is real software that works Right Now. It is not a research
project or a proposal. You don't have to wait at all before you can start
using and developing it.
+
+---
+
+One advantage of the Hurd's separation of kernel-like functionality into
+separate components ([[servers|translator]]) is that these can be constructed
+using different programming lanugages, a thing that is not easily possible in a
+monolithic kernel. Essentially, only an interface from the programming
+environment to the RPC mechanism is required.
diff --git a/hurd/authentication.mdwn b/hurd/authentication.mdwn
index 14144d8e..2d6084bf 100644
--- a/hurd/authentication.mdwn
+++ b/hurd/authentication.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
UIDs on the Hurd are separate from processes. A process has
[[capabilities|capability]] designating so-called UID vectors that
diff --git a/hurd/binutils.mdwn b/hurd/binutils.mdwn
index 97c93602..76b0ae60 100644
--- a/hurd/binutils.mdwn
+++ b/hurd/binutils.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[General_information|/binutils]] about the binutils.
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn
index 80239860..d5beade9 100644
--- a/hurd/building/cross-compiling.mdwn
+++ b/hurd/building/cross-compiling.mdwn
@@ -1,31 +1,34 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# `cross-gnu`
[[Thomas_Schwinge|tschwinge]] has written a shell script for building a
complete cross-build environment for GNU/Hurd systems.
-For now, find the shell scripts at
-<http://nic-nac-project.de/~schwinge/tmp/cross-gnu> and
-<http://nic-nac-project.de/~schwinge/tmp/cross-gnu-env>.
+Find it in the [[source repositories/incubator]], *cross-gnu* branch.
## Using
Read through it. Understand it. Only then use it by following the next steps.
-/!\ Be made aware that -- while it is of course possible to build a working
-cross-compiler -- this is not trivial to do. You'll have to patch source
-packages. See the following list about needed patches, which have not yet been
-installed in the upstream repositories.
+
+## Status
+
+/!\ Please note that these cross toolchains does not yet encompass all of the
+functionality that native toolchains provide. For example, there is only
+support for C and C++ so far, but not for other languages. A bunch of fixes /
+enhancements of [[glibc]] are missing. We're working towards minimizing these
+differences, as well as towards pushing all patches upstream.
### Supported Versions of Source Packages
@@ -35,138 +38,95 @@ guarantee is given. Always the preferred version is listed first.
* `src/binutils`: [[GNU_Binutils|binutils]]
- * CVS `binutils-2_19-branch`
-
- $ mkdir binutils-2_19-branch
- $ cd binutils-2_19-branch
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
- co -r binutils-2_19-branch binutils
-
- The sources are rooted in `binutils-2_19-branch/src/`. Also use these
- commands for updating, instead of the usual `cvs update`.
-
- * The 2.19 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
- also be fine.
-
- * CVS `binutils-2_18-branch`
+ * CVS `binutils-2_20-branch`
- $ mkdir binutils-2_18-branch
- $ cd binutils-2_18-branch
+ $ mkdir binutils-2_20-branch
+ $ cd binutils-2_20-branch/
$ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
- co -r binutils-2_18-branch binutils
+ co -r binutils-2_20-branch binutils
- The sources are rooted in `binutils-2_18-branch/src/`. Also use these
+ The sources are rooted in `binutils-2_20-branch/src/`. Also use the above
commands for updating, instead of the usual `cvs update`.
- * The 2.18 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
- also be fine, as should be all other recent releases.
+ * Release of the 2.20 series from <ftp://ftp.gnu.org/gnu/binutils/>
+ should also be fine.
* `src/gcc`: [[GNU_Compiler_Collection|gcc]]
- * SVN `gcc-4_1-branch`
+ * SVN `gcc-4_5-branch`
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch
-
- Prepare:
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch
- $ ( cd gcc-4_1-branch/ && contrib/gcc_update --touch )
+ Patches:
- * Releases of the 4.1 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine.
-
- * SVN `gcc-4_2-branch`
-
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch
-
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
Prepare:
- $ ( cd gcc-4_2-branch/ && contrib/gcc_update --touch )
+ $ ( cd gcc-4_5-branch/ && contrib/gcc_update --touch )
- * Releases of the 4.2 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine, but need the same set of patches as the `gcc-4_2-branch`
- needs.
+ * SVN `gcc-4_4-branch`
- * SVN `gcc-4_3-branch`
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_3-branch
+ Patches:
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
Prepare:
- $ ( cd gcc-4_3-branch/ && contrib/gcc_update --touch )
-
- * Releases of the 4.3 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine, but need the same set of patches as the `gcc-4_3-branch`
- needs.
-
- * SVN `trunk` -- upcoming 4.4 series
+ $ ( cd gcc-4_4-branch/ && contrib/gcc_update --touch )
- $ svn co svn://gcc.gnu.org/svn/gcc/trunk
-
- Prepare:
-
- $ ( cd trunk/ && contrib/gcc_update --touch )
+ * Releases of the 4.5 and 4.4 series from <ftp://ftp.gnu.org/gnu/gcc/>
+ should also be fine, but need the same set of patches as the
+ `gcc-4_5-branch` needs.
* `src/gnumach`: [[GNU_Mach|microkernel/mach/gnumach]]
- * CVS `gnumach-1-branch`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd ↩
- co -r gnumach-1-branch gnumach
- $ mv gnumach gnumach-1-branch
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/gnumach.git gnumach
Prepare:
- $ ( cd gnumach-1-branch/ && autoreconf -vfi )
+ $ ( cd gnumach/ && autoreconf -vi )
* `src/mig`: [[microkernel/mach/mig/GNU_MIG]]
- * CVS `HEAD`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/mig.git mig
Prepare:
- $ ( cd mig/ && autoreconf -vfi )
+ $ ( cd mig/ && autoreconf -vi )
* `src/hurd`: [[GNU_Hurd|hurd]]
- * CVS `HEAD`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/hurd.git hurd
- * `src/glibc`: [[GNU_C_Library|glibc]]
-
- * CVS `glibc-2_7-branch`
+ * `src/libpthread`: [[libpthread]]
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
- co -r glibc-2_7-branch glibc
- $ mv libc glibc-2_7-branch
+ * Git `tschwinge/Peter_Herbolzheimer` branch
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00030.html>
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/libpthread.git libpthread
+ $ cd libpthread/
+ $ git checkout origin/tschwinge/Peter_Herbolzheimer
- * Recent releases of the 2.7 series from <ftp://ftp.gnu.org/gnu/glibc/>
- should also be fine, but need the same set of patches as the
- `glibc-2_7-branch` needs.
-
-<!--
-
- * CVS `HEAD`
-
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
- co glibc
- $ mv libc glibc-HEAD
+ * `src/glibc`: [[GNU_C_Library|glibc]]
- * TODO.
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00026.html>
+ * Git `tschwinge/Roger_Whittaker` branch
--->
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/glibc.git glibc
+ $ cd glibc/
+ $ git checkout origin/tschwinge/Roger_Whittaker
<!--
@@ -207,7 +167,7 @@ the following.
The system you're running the script on (the *build* system) needs to have a
basic compiling environment installed, i.e., a C compiler with the basic
libraries and `make`. You might also need `flex` and `bison`. For building
-recent version of GCC (e.g., the upcoming 4.3, which is not yet supported)
+recent version of GCC (4.3 onwards)
you'll need to have development packages of GMP and MPFR installed.
@@ -236,29 +196,13 @@ flow by. In the end you should see a message: *[...]/cross-gnu: Everything
should be in place now.*
-### Makefile
-
-A [[Makefile]] has been written to automate the above steps. You will require
-an Internet connection and atleast 1.5 GiB of hard-disk space. Just run...
-
- make
-
-... to build the toolchain. To clean up, use...
-
- make clean
-
-
### Staying Up-To-Date
You can re-run `cross-gnu` to rebuild the parts of the sources that have
changed since the last run. This will save a lot of time compared to starting
from scratch again. Also, it is especially useful if you aren't working with
-unpacked tarballs, but on CVS's branches or want to quickly get a new tool
-chain with patches you applied to the source trees. However: do *not* use this
+unpacked tarballs, but on CVS's / SVN's / Git's branches or want to quickly get
+a new toolchain
+with patches you applied to the source trees. However: do *not* use this
technique when doing major changes to the source trees, like switching from GCC
-4.0 to GCC 4.1.
-
-
-# References
-
-* <http://lists.gnu.org/archive/html/bug-hurd/2004-09/msg00030.html>
+4.4 to GCC 4.5.
diff --git a/hurd/building/cross-compiling/Makefile b/hurd/building/cross-compiling/Makefile
deleted file mode 100644
index 7a6a9524..00000000
--- a/hurd/building/cross-compiling/Makefile
+++ /dev/null
@@ -1,168 +0,0 @@
-# "HurdToolchainMakefile" - a Makefile for setting up Hurd toolchain builds
-
-# Copyright (C) 2007 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2, or (at your option) any later
-# version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Written by Shakthi Kannan <shakthi.kannan@qvantel.com>.
-
-
-## Variables
-TOPDIR=.
-DOWNLOADS=${TOPDIR}/downloads
-ROOT=${TOPDIR}/root
-SRC=${ROOT}/src
-GLIBC_DIR=${SRC}/glibc
-PATCH0_DIR=patch0
-PATCH1_DIR=patch1
-
-## Patches
-PATCH1 = 0003-2007-09-13-H.J.-Lu-hongjiu.lu-intel.com.patch \
- 0005-Hurd-specific-kernel-features.h.patch \
- 0007-2007-10-05-version-of-stat.patch.patch \
- 0008-r2425-of-debian-patches-hurd-i386-local-atomic-no-mu.patch \
- 0010-r2425-of-debian-patches-hurd-i386-local-gscope.diff.patch \
- 0012-r2425-of-debian-patches-hurd-i386-local-no-strerror_.patch \
- 0013-r2626-of-debian-patches-hurd-i386-local-tls-support.patch \
- 0014-r2591-of-debian-patches-hurd-i386-local-tls.diff.patch \
- 0015-r2630-of-debian-patches-hurd-i386-submitted-libc_onc.patch \
- 0016-Include-stdint.h.patch \
- 0017-r2598-of-debian-patches-any-local-stdio-lock.diff.patch \
- 0018-r2650-of-debian-patches-hurd-i386-submitted-strtoul.patch \
- 0019-2007-11-12-Aurelien-Jarno-aurelien-aurel32.net-Tho.patch \
- 0020-r2656-of-debian-patches-any-submitted-sched_h.diff.patch \
- 0022-2007-11-18-Roland-McGrath-roland-frob.com.patch
-
-PATCH0 = 0009-2007-07-22-version-of-init-first.c_vs._GCC_4.1.patch.patch \
- 0011-2007-02-08-version-of-resolv_res_send.c.patch.patch
-
-all: create_dir get_sources apply_glibc_patches build_all
-
-## Create directories
-create_dir:
- cd ${TOPDIR}
- mkdir ${DOWNLOADS}
- mkdir -p ${SRC}
-
-get_sources: get_cross_gnu get_binutils get_gcc get_gnumach get_mig get_hurd get_glibc
-
-get_cross_gnu:
- @ echo " ___ _ __ ___ ___ ___ __ _ _ __ _ _ "
- @ echo " / __| '__/ _ \/ __/ __|_____ / _\` | '_ \| | | |"
- @ echo "| (__| | | (_) \__ \__ \_____| (_| | | | | |_| |"
- @ echo " \___|_| \___/|___/___/ \__, |_| |_|\__,_|"
- @ echo " |___/ "
- cd ${DOWNLOADS}; \
- wget http://nic-nac-project.de/~schwinge/tmp/cross-gnu
- @ echo " ___ _ __ ___ ___ ___ __ _ _ __ _ _ ___ _ ____ __"
- @ echo " / __| '__/ _ \/ __/ __|_____ / _\` | '_ \| | | |_____ / _ \ '_ \ \ / /"
- @ echo "| (__| | | (_) \__ \__ \_____| (_| | | | | |_| |_____| __/ | | \ V / "
- @ echo " \___|_| \___/|___/___/ \__, |_| |_|\__,_| \___|_| |_|\_/ "
- @ echo " |___/ "
- cd ${DOWNLOADS}; \
- wget http://nic-nac-project.de/~schwinge/tmp/cross-gnu-env; \
- chmod +x cross-gnu; \
- chmod +x cross-gnu-env
-
-get_binutils:
- @ echo " _ _ _ _ _ "
- @ echo "| |__ (_)_ __ _ _| |_(_) |___ "
- @ echo "| '_ \| | '_ \| | | | __| | / __|"
- @ echo "| |_) | | | | | |_| | |_| | \__ \\"
- @ echo "|_.__/|_|_| |_|\__,_|\__|_|_|___/"
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src co -r binutils-2_18-branch binutils; \
- mv src binutils
-
-get_gcc:
- @ echo " __ _ ___ ___ "
- @ echo " / _\` |/ __/ __|"
- @ echo "| (_| | (_| (__ "
- @ echo " \__, |\___\___|"
- @ echo " |___/ "
- cd ${SRC}; \
- svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch; \
- mv gcc-4_1-branch gcc; \
- ( cd gcc/ && contrib/gcc_update --touch )
-
-get_gnumach:
- @ echo " _ "
- @ echo " __ _ _ __ _ _ _ __ ___ __ _ ___| |__ "
- @ echo " / _\` | '_ \| | | | '_ \` _ \ / _\` |/ __| '_ \ "
- @ echo "| (_| | | | | |_| | | | | | | (_| | (__| | | |"
- @ echo " \__, |_| |_|\__,_|_| |_| |_|\__,_|\___|_| |_|"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach; \
- ( cd gnumach/ && autoreconf -vfi )
-
-get_mig:
- @ echo " _ "
- @ echo " _ __ ___ (_) __ _ "
- @ echo "| '_ \` _ \| |/ _\` |"
- @ echo "| | | | | | | (_| |"
- @ echo "|_| |_| |_|_|\__, |"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig; \
- ( cd mig/ && autoreconf -vfi )
-
-get_hurd:
- @ echo " _ _ "
- @ echo "| |__ _ _ _ __ __| |"
- @ echo "| '_ \| | | | '__/ _\` |"
- @ echo "| | | | |_| | | | (_| |"
- @ echo "|_| |_|\__,_|_| \__,_|"
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
-
-get_glibc:
- @ echo " _ _ _ "
- @ echo " __ _| (_) |__ ___ "
- @ echo " / _\` | | | '_ \ / __|"
- @ echo "| (_| | | | |_) | (__ "
- @ echo " \__, |_|_|_.__/ \___|"
- @ echo " |___/ "
- cd ${SRC}; \
- cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc co -r glibc-2_7-branch glibc; \
- mv libc glibc
- mkdir ${GLIBC_DIR}/${PATCH0_DIR}
- mkdir ${GLIBC_DIR}/${PATCH1_DIR}
-
-get_patch0: $(PATCH0)
-
-get_patch1: $(PATCH1)
-
-$(PATCH1):
- wget -r -np -nd -P ${GLIBC_DIR}/${PATCH1_DIR} http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/$@
- cd ${GLIBC_DIR}; \
- patch -p1 < ${PATCH1_DIR}/$@
-
-$(PATCH0):
- wget -r -np -nd -P ${GLIBC_DIR}/${PATCH0_DIR} http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/$@
- cd ${GLIBC_DIR}; \
- patch -p0 < ${PATCH0_DIR}/$@
-
-apply_glibc_patches: get_patch0 get_patch1
-
-build_all:
- ROOT=${TOPDIR}/root ; \
- export PATH="$(PATH):$(DOWNLOADS)" ; \
- echo $$PATH ; \
- . ${DOWNLOADS}/cross-gnu-env ; \
- ${DOWNLOADS}/cross-gnu
-
-clean:
- rm -rf downloads root *~
diff --git a/hurd/building/cross-compiling/discussion.mdwn b/hurd/building/cross-compiling/discussion.mdwn
index f75e9e3e..dbe317ad 100644
--- a/hurd/building/cross-compiling/discussion.mdwn
+++ b/hurd/building/cross-compiling/discussion.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
What happens if the external link goes down? Is there any way to store files
within the wiki itself? --[[vincentvikram]]
diff --git a/hurd/building/example.mdwn b/hurd/building/example.mdwn
index afa18d8a..bf31bf7e 100644
--- a/hurd/building/example.mdwn
+++ b/hurd/building/example.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
I checked out the source code on my Ubuntu GNU/Linux system connected to the
Internet using:
diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn
index e416f1e6..e8183d79 100644
--- a/hurd/concepts.mdwn
+++ b/hurd/concepts.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[Translator]]
* [[Virtual_File_System]]
diff --git a/hurd/console.mdwn b/hurd/console.mdwn
index 3895531b..4f976efd 100644
--- a/hurd/console.mdwn
+++ b/hurd/console.mdwn
@@ -16,10 +16,6 @@ The latest Hurd package in Debian has all that is needed to run (dunno about hur
Additional information about the console can be found in the [Hurd Console Tutorial](http://uwhug.org.uk/index.pl?Hurd_Console_Tutorial)
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="What_is_the_new_console_"> What is the new console? </a>
**_The new Hurd console features:_**
diff --git a/hurd/critique.mdwn b/hurd/critique.mdwn
index dacd7bb8..c432cc17 100644
--- a/hurd/critique.mdwn
+++ b/hurd/critique.mdwn
@@ -1,12 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta title="A Critique of the GNU Hurd Multi-server Operating System"]]
Neal Walfield and Marcus Brinkmann wrote a paper titled [*A Critique of
the GNU Hurd Multi-server Operating
diff --git a/hurd/dde.mdwn b/hurd/dde.mdwn
new file mode 100644
index 00000000..dedb7d10
--- /dev/null
+++ b/hurd/dde.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2009, 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+ * [[community/gsoc/project ideas/driver glue code]]
+
+ * [[open issues/user-space device drivers]]
+
+ * [[open issues/device drivers and io systems]]
+
+---
+
+There is an effort going on to make [[/DDE]] usable in GNU/Hurd
+userspace.
+
+See Zheng Da's [[project page|zhengda]], as well as another [[guide]].
diff --git a/hurd/dde/guide.mdwn b/hurd/dde/guide.mdwn
new file mode 100644
index 00000000..6518e0e4
--- /dev/null
+++ b/hurd/dde/guide.mdwn
@@ -0,0 +1,158 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+If you haven't: install hurd to partition
+get grub image
+boot hurd in single user (change grub entry accordingly to the installed partition)
+
+> $ export TERM=mach
+
+> $ ./native-install
+
+reboot to other debian
+
+suppose hurd partition is hdd1
+
+as root
+
+> $ mount /dev/hdd1 /mnt -t ext2
+
+> $ cd /mnt/etc/apt
+
+> $ echo "deb http://ftp.debian-ports.org/debian unreleased main" >> sources.list
+
+> $ echo "deb-src http://ftp.debian-ports.org/debian unreleased main" >> sources.list
+
+> $ echo "deb http://ftp.uk.debian.org/debian unstable main" >> sources.list
+
+> $ echo "deb-src http://ftp.uk.debian.org/debian unstable main" >> sources.list
+
+> $ wget http://www.gnu.org/software/hurd/hurd/running/debian/DebianAptOffline/apt.conf.offline
+
+> $ cd /mnt
+
+> $ apt-get -c etc/apt/apt.conf.offline update
+
+> $ apt-get -c etc/apt/apt.conf.offline upgrade
+
+> $ apt-get -c etc/apt/apt.conf.offline install git-core
+
+> $ apt-get -c etc/apt/apt.conf.offline build-dep hurd gnumach
+
+> $ apt-get -c etc/apt/apt.conf.offline install build-essential libpciaccess-dev libpcap0.8-dev
+
+> $ cd /mnt/home
+
+> $ git clone git://git.sv.gnu.org/hurd/incubator.git -b dde hurd_dde
+
+> $ git clone git://git.sv.gnu.org/hurd/gnumach.git -b master-user_level_drivers gnumach_dde
+
+
+suppose you need forcedeth driver
+
+Download http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.29.y.git;a=blob_plain;f=drivers/net/forcedeth.c;hb=HEAD from mozilla like
+browser to /mnt/home as forcedeth.c
+
+Download http://pastebin.com/RJAJT2MR the same way and rename it to 0001-Fix-up-DDE-paths.patch
+
+reboot back to hurd (multiuser)
+
+> $ apt-get update
+
+> $ apt-get upgrade
+
+> $ apt-get install git-core
+
+> $ apt-get build-dep hurd gnumach
+
+> $ apt-get install build-essential libpciaccess-dev libpcap0.8-dev
+
+
+> $ cd /home/gnumach_dde
+
+> $ autoreconf -i && ./configure --enable-kdb --enable-device-drivers=none --enable-lpr --enable-floppy --enable-ide
+
+> $ make
+
+> $ cd ../hurd_dde
+
+> $ git am ../0001-Fix-up-DDE-paths.patch
+
+> $ cp -r dde_pcnet32 dde_forcedeth
+
+> $ cd dde_forcedeth
+
+> $ rm pcnet32.c
+
+> $ cp /home/forcedeth.c ./
+
+> $ sed -i 's/pcnet32/forcedeth/g' Makefile
+
+> $ sed -i 's/pcnet32/forcedeth/g' .gitignore
+
+> $ sed -i 's:-lhurd-slab:../libhurd-slab/libhurd-slab.a:' Makefile
+
+> $ sed -i 's:-I/include:-I..:' Makefile
+
+> $ nano forcedeth.c
+
+add these 2 lines after the last #include
+
+ #include <ddekit/timer.h>
+ void get_random_byter(void *buf, int nbytes) { }
+
+> $ cd ..
+
+> $ git add dde_forcedeth
+
+> $ git commit -a -m 'Add forcedeth driver'
+
+> $ autoreconf -i && ./configure
+
+> $ mkdir -p hurd/include/ddekit
+
+> $ make libddekit libmachdev devnode pfinet
+
+> $ cd libdde_linux26
+
+> $ make
+
+> $ cd ../dde_forcedeth
+
+> $ make
+
+If the make fails it might be necassary to replace some of the -l options (or all) in Makefile with the real path to the library objects (example: change *-lhurd-slab* to *../libhurd-slab/libhurd-slab.a*)
+
+> $ cp /home/gnumach_dde/gnumach /boot/gnumach_dde
+
+> $ mkdir /hurd/dde
+
+> $ cp /home/hurd_dde/devnode/devnode /hurd/dde
+
+> $ cp /home/hurd_dde/pfinet/pfinet /hurd/dde
+
+> $ cp /home/hurd_dde/dde_forcedeth/dde_forcedeth /hurd/dde/forcedeth
+
+reboot to hurd with the new gnumach_dde
+
+> $ settrans -c /dev/forcedeth /hurd/dde/forcedeth
+
+> $ settrans -c /dev/eth0 /hurd/dde/devnode -M /dev/forcedeth eth0
+
+> $ settrans -c /servers/socket/2 /hurd/dde/pfinet -i /dev/eth0 -a 192.168.1.194 -g 192.168.1.254 -m 255.255.255.0
+
+
+replace the ip, gateway and mask with your own ones
+
+> $ nano /etc/resolv.conf
+
+add line: nameserver 192.168.1.254
+
+DONE
diff --git a/hurd/debugging.mdwn b/hurd/debugging.mdwn
index e4a98672..36ab769a 100644
--- a/hurd/debugging.mdwn
+++ b/hurd/debugging.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# Strategies
diff --git a/hurd/debugging/gdb.mdwn b/hurd/debugging/gdb.mdwn
index 98c31435..1fede74f 100644
--- a/hurd/debugging/gdb.mdwn
+++ b/hurd/debugging/gdb.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The [[GNU_debugger_*GDB*|/gdb]] works on GNU/Hurd
systems as it does on other system, but has some additional [hurd-specific
diff --git a/hurd/debugging/gdb/noninvasive_debugging.mdwn b/hurd/debugging/gdb/noninvasive_debugging.mdwn
index 62179f7d..fa7a3c5b 100644
--- a/hurd/debugging/gdb/noninvasive_debugging.mdwn
+++ b/hurd/debugging/gdb/noninvasive_debugging.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Sometimes using [[GDB]] on a [[system_server|translator]] can result in a [[deadlock]]. You
can however still use GDB by using the [`set
diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn
index 912f656c..905dd0da 100644
--- a/hurd/debugging/glibc.mdwn
+++ b/hurd/debugging/glibc.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Here are some hints about how to approach testing after nontrivial changes to
glibc have been done.
diff --git a/hurd/debugging/rpctrace.mdwn b/hurd/debugging/rpctrace.mdwn
index 68edca2f..ee5ee3e7 100644
--- a/hurd/debugging/rpctrace.mdwn
+++ b/hurd/debugging/rpctrace.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
*rpctrace* is -- roughly -- an equivavlent to Linux's *strace* or Solaris' or
BSD's *truss*. It is used to trace [[remote_procedure_call|rpc]]s a process is
@@ -17,6 +18,8 @@ See `rpctrace --help` about how to use it.
# Issues and Patches
+[[!tag open_issue_hurd]]
+
* <http://savannah.gnu.org/patch/?2104> -- don't assert that local port names
are valid
* <http://savannah.gnu.org/bugs/?3939> -- `rpctrace`d program hangs when signal
@@ -24,12 +27,15 @@ See `rpctrace --help` about how to use it.
* <http://savannah.gnu.org/patch/?1633> -- terminated with `C-c` `rpctrace`d
programs hang
* <http://savannah.gnu.org/patch/?5580> -- more readable output
-* <http://savannah.gnu.org/bugs/?20612> -- heisenbug
+* IRC, unknown channel, unknown date
+
+ <youpi> how to rpctrace a translator ?
+ <youpi> ah, just settrans /usr/bin/rpctrace...
+ <youpi> hum, it hung, and killing it got a Mach panic (thread in unexpected
+ state) ...
-# TODO
+* IRC, unknown channel, unknown date
- <youpi> how to rpctrace a translator ?
- <youpi> ah, just settrans /usr/bin/rpctrace...
- <youpi> hum, it hung, and killing it got a Mach panic (thread in unexpected
- state) ...
+ <antrik> hm... for a funny effect, try running rpctrace on
+ /servers/socket/1, and then use dpkg... ;-)
diff --git a/hurd/debugging/translator.mdwn b/hurd/debugging/translator.mdwn
index 8e8dd6fb..d439e17b 100644
--- a/hurd/debugging/translator.mdwn
+++ b/hurd/debugging/translator.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[inline
+[[!inline
pages="hurd/debugging/translator/* and !*/discussion"
show=0
feeds=no
diff --git a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
index e95d6e12..1e8c4ef6 100644
--- a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
+++ b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
@@ -1,15 +1,16 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Sometimes it may already be helpful to capture a translator's `stdout` and
-`stderr`, for example like this:
+`stderr`, for example in this situation where [[translator/pfinet]] was
+silently dying all the time, without any console output:
$ sudo settrans -fgap ↩
/servers/socket/2 ↩
@@ -31,3 +32,7 @@ for appropriate `fflush`es on these, or force them to be line buffered again
using the appropriate glibc magic (`setvbuf`). Otherwise you'll see text in
the output files only if either glibc herself decides to flush (after some KiB
of text) the after translator exits.
+
+It is a [[!taglink open_issue_hurd]] to decide / implement / fix that
+(all?) running (passive?) translators' output should show up on the
+console / syslog.
diff --git a/hurd/debugging/translator/gdb.mdwn b/hurd/debugging/translator/gdb.mdwn
index bee41010..82a50736 100644
--- a/hurd/debugging/translator/gdb.mdwn
+++ b/hurd/debugging/translator/gdb.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Say you want to try running file system server ([[`ext2fs`|translator/ext2fs]],
[[`jfs`|translator/jfs]], ...) against a modified version of
diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
index be0874e7..874ce847 100644
--- a/hurd/documentation.mdwn
+++ b/hurd/documentation.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# Introductory Material
@@ -17,12 +17,12 @@ is included in the section entitled
* [[FAQ]]
- * [[*The_Hurd_and_Linux*|hurd-and-linux]], a comment by Richard Stallman.
+ * [[*The_Hurd_and_Linux*|/hurd-and-linux]], a comment by Richard Stallman.
- * [[*Towards_a_New_Strategy_of_OS_Design*|hurd-paper]], an architectural
+ * [[*Towards_a_New_Strategy_of_OS_Design*|/hurd-paper]], an architectural
overview by Thomas Bushnell, BSG.
- * [[*The_Hurd*|hurd-talk]], a presentation by Marcus Brinkmann.
+ * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann.
* A document about *[[translators]]* by Marcus Brinkmann.
@@ -63,3 +63,9 @@ is included in the section entitled
[[Position_paper_*Improving_Usability_via_Access_Decomposition_and_Policy*|ng/position_paper]]
Neal Walfield and Marcus Brinkmann give an overview about how a future,
subsequent system may be architected.
+
+ * [*Generalizing mobility for the Hurd*](http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf),
+ a thesis written by Carl Fredrik Hammar,
+ investigates the mobility aspect of stores
+ and how it can be generalized and used for other applications.
+ The background chapter may be of interest to new developers.
diff --git a/hurd/documentation/auth.html b/hurd/documentation/auth.html
index 487fc1fe..27f9ca2c 100644
--- a/hurd/documentation/auth.html
+++ b/hurd/documentation/auth.html
@@ -1,9 +1,9 @@
-[[meta copyright="Copyright © 2002, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2008 Free Software Foundation, Inc."]]
-[[meta license="Verbatim copying and distribution of this entire article is
+[[!meta license="Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved."]]
-[[meta title="The Authentication Server, the transcript of a talk about the
+[[!meta title="The Authentication Server, the transcript of a talk about the
details of the authentication mechanisms in the Hurd by Wolfgang Jährling"]]
<H3><A NAME="contents">Table of Contents</A></H3>
diff --git a/hurd/documentation/hurd-and-linux.html b/hurd/documentation/hurd-and-linux.html
deleted file mode 100644
index 8eccd62c..00000000
--- a/hurd/documentation/hurd-and-linux.html
+++ /dev/null
@@ -1,47 +0,0 @@
-[[meta copyright="Copyright © 1996, 1997, 1998, 2008 Free Software Foundation,
-Inc."]]
-
-[[meta license="Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved."]]
-
-[[meta title="The Hurd and Linux"]]
-
-by <A HREF="http://www.stallman.org/">Richard Stallman</A>.
-
-<P>
-People sometimes ask, ``Why did the FSF develop a new free kernel
-instead of using Linux?'' It's a reasonable question. The answer,
-briefly, is that that is not the question we faced.
-
-<P>
-When we started developing the Hurd in 1990, the question facing us
-was, ``How can we get a free kernel for the GNU system?'' There was
-no free Unix-like kernel then, and we knew of no other plan to write
-one. The only way we could expect to have a free kernel was to write
-it ourselves. So we started.
-
-<P>
-We heard about Linux after its release. At that time, the question
-facing us was, ``Should we cancel the Hurd project and use Linux
-instead?''
-
-<P>
-We heard that Linux was not at all portable (this may not be true
-today, but that's what we heard then). And we heard that Linux was
-architecturally on a par with the Unix kernel; our work was leading to
-something much more powerful.
-
-<P>
-Given the years of work we had already put into the Hurd, we decided
-to finish it rather than throw them away.
-
-<P>
-If we did face the question that people ask---if Linux were already
-available, and we were considering whether to start writing another
-kernel---we would not do it. Instead we would choose another project,
-something to do a job that no existing free software can do.
-
-<P>
-But we did start the Hurd, back then, and now we have made it work.
-We hope its superior architecture will make free operating systems
-more powerful.
diff --git a/hurd/open_issues/libfshelp_in_hurdlibs.mdwn b/hurd/documentation/hurd-and-linux.mdwn
index 7717cef8..678ea8da 100644
--- a/hurd/open_issues/libfshelp_in_hurdlibs.mdwn
+++ b/hurd/documentation/hurd-and-linux.mdwn
@@ -1,12 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[libtrivfs]] seems to use [[libfshelp]], but doesn't have it listed in
-`HURDLIBS`. Should change that? Same for [[libnetfs]] and [[libdiskfs]]?
+[[!meta redir=/hurd-and-linux]]
diff --git a/hurd/documentation/hurd-paper.html b/hurd/documentation/hurd-paper.html
deleted file mode 100644
index 15d2daec..00000000
--- a/hurd/documentation/hurd-paper.html
+++ /dev/null
@@ -1,760 +0,0 @@
-[[meta copyright="Copyright © 1996, 1997, 1998, 2007, 2008 Free Software
-Foundation, Inc."]]
-
-[[meta license="Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved."]]
-
-[[meta title="Towards a New Strategy of OS Design, an architectural overview by
-Thomas Bushnell, BSG."]]
-
-
-This article explains why FSF is developing a new operating system named the
-Hurd, which will be a foundation of the whole GNU system.
-The Hurd is built
-on top of CMU's Mach 3.0 kernel and uses Mach's virtual memory management and
-message-passing facilities.
-The GNU C Library will provide the Unix system
-call interface, and will call the Hurd for needed services it can't provide
-itself.
-The design and implementation of the Hurd is being lead by Michael
-Bushnell, with assistance from Richard Stallman, Roland McGrath,
-Jan Brittenson, and others.
-
-<H2>Part 1: A More Usable Approach to OS Design</H2>
-<P>
-The fundamental purpose of an operating system (OS) is to enable a variety of
-programs to share a single computer efficiently and productively.
-This
-demands memory protection, preemptively scheduled timesharing, coordinated
-access to I/O peripherals, and other services.
-In addition, an OS can allow
-several users to share a computer.
-In this case, efficiency demands services
-that protect users from harming each other, enable them to share without
-prior arrangement, and mediate access to physical devices.
-<P>
-On today's computer systems, programmers usually implement these goals
-through a large program called the kernel.
-Since this program must be
-accessible to all user programs, it is the natural place to add functionality
-to the system.
-Since the only model for process interaction is that of
-specific, individual services provided by the kernel, no one creates other
-places to add functionality.
-As time goes by, more and more is added to the
-kernel.
-<P>
-A traditional system allows users to add components to a kernel only if they
-both understand most of it and have a privileged status within the system.
-Testing new components requires a much more painful edit-compile-debug cycle
-than testing other programs.
-It cannot be done while others are using the
-system.
-Bugs usually cause fatal system crashes, further disrupting others'
-use of the system.
-The entire kernel is usually non-pageable.
-(There are
-systems with pageable kernels, but deciding what can be paged is difficult
-and error prone.
-Usually the mechanisms are complex, making them difficult
-to use even when adding simple extensions.)
-<P>
-Because of these restrictions, functionality which properly belongs
-<STRONG>behind</STRONG>
-the wall of a traditional kernel is usually left out of systems unless it is
-absolutely mandatory.
-Many good ideas, best done with an open/read/write
-interface cannot be implemented because of the problems inherent in the
-monolithic nature of a traditional system.
-Further, even among those with
-the endurance to implement new ideas, only those who are privileged users of
-their computers can do so.
-The software copyright system darkens the mire by
-preventing unlicensed people from even reading the kernel source.
-<P>
-Some systems have tried to address these difficulties.
-Smalltalk-80 and
-the Lisp Machine both represented one method of getting around the problem.
-System code is not distinguished from user code; all of the system is
-accessible to the user and can be changed as need be.
-Both systems were
-built around languages that facilitated such easy replacement and extension,
-and were moderately successful.
-But they both were fairly poor at insulating
-users and programs from each other, failing one of the principal goals of OS
-design.
-<P>
-Most projects that use the Mach 3.0 kernel carry on the hard-to-change
-tradition of OS design.
-The internal structure is different, but the same
-heavy barrier between user and system remains.
-The single-servers, while
-fairly easy to construct, inherit all the deficiencies of the monolithic
-kernels.
-<P>
-A multi-server divides the kernel functionality up into logical blocks with
-well-defined interfaces.
-Properly done, it is easier to make changes and add
-functionality.
-So most multi-server projects do somewhat better.
-Much more
-of the system is pageable.
-You can debug the system more easily.
-You can
-test new system components without interfering with other users.
-But the
-wall between user and system remains; no user can cross it without special
-privilege.
-<P>
-The GNU&nbsp;Hurd, by contrast, is designed to make the area of
-<STRONG>system</STRONG>
-code as
-limited as possible.
-Programs are required to communicate only with a few
-essential parts of the kernel; the rest of the system is replaceable
-dynamically.
-Users can use whatever parts of the remainder of the system
-they want, and can easily add components themselves for other users to take
-advantage of.
-No mutual trust need exist in advance for users to use each
-other's services, nor does the system become vulnerable by trusting the
-services of arbitrary users.
-<P>
-This has been done by identifying those system components which users
-<STRONG>must</STRONG>
-use in order to communicate with each other.
-One of these is responsible for
-identifying users' identities and is called the
-<DFN>
-authentication server.
-</DFN>
-In
-order to establish each other's identities, programs must communicate, each
-with an authentication server they trust.
-Another component establishes
-control over system components by the superuser, provides global bookkeeping
-operations, and is called the
-<DFN>
-process server.
-</DFN>
-<P>
-Not all user programs need to communicate with the process server; it is only
-necessary for programs which require its services.
-Likewise, the
-authentication server is only necessary for programs that wish to communicate
-their identity to another.
-None of the remaining services carry any special
-status; not the network implementation, the filesystems, the program
-execution mechanism (including setuid), or any others.
-
-<H3>The Translator Mechanism</H3>
-<P>
-The Hurd uses Mach ports primarily as methods for communicating between users
-and servers.
-(A Mach port is a communication point on a Mach task where
-messages are sent and received.) Each port implements a particular set of
-protocols, representing operations that can be undertaken on the underlying
-object represented by the port.
-Some of the protocols specified by the Hurd
-are the I/O protocol, used for generic I/O operations; the file protocol,
-used for filesystem operations; the socket protocol, used for network
-operations; and the process protocol, used for manipulating processes et al.
-<P>
-Most servers are accessed by opening files.
-Normally, when you open a file,
-you create a port associated with that file that is owned by the server
-that owns the directory containing the file.
-For example, a disk-based
-filesystem will normally serve a large number of ports, each of which
-represents an open file or directory.
-When a file is opened, the server
-creates a new port, associates it with the file, and returns the port to the
-calling program.
-<P>
-However, a file can have a
-<DFN>translator</DFN>
-associated with it.
-In this case,
-rather than return its own port which refers to the contents of the file, the
-server executes a translator program associated with that file.
-This
-translator is given a port to the actual contents of the file, and is then
-asked to return a port to the original user to complete the open operation.
-<P>
-This mechanism is used for
-<CODE>mount</CODE>
-by having a translator associated with
-each mount point.
-When a program opens the mount point, the translator (in
-this case, a program which understands the disk format of the mounted
-filesystem) is executed and returns a port to the program.
-After the
-translator is started, it need not be run again unless it dies; the parent
-filesystem retains a port to the translator to use in further requests.
-<P>
-The owner of a file can associate a translator with it without special
-permission.
-This means that any program can be specified as a translator.
-Obviously the system will not work properly if the translator does not
-implement the file protocol correctly.
-However, the Hurd is constructed so
-that the worst possible consequence is an interruptible hang.
-<P>
-One way to use translators is to access hierarchically structured data using
-the file protocol.
-For example, all the complexity of the user interface to
-the
-<CODE>ftp</CODE>
-program is removed.
-Users need only know that a particular
-directory represents FTP and can use all the standard file manipulation
-commands (e.g
-<CODE>ls</CODE>
-or
-<CODE>cp</CODE>)
-to access the remote system, rather than learning
-a new set.
-Similarly, a simple translator could ease the complexity of
-<CODE>tar</CODE>
-or
-<CODE>gzip</CODE>.
-(Such transparent access would have some added cost, but it would
-be convenient.)
-
-<H3>Generic Services</H3>
-<P>
-With translators, the filesystem can act as a rendezvous for interfaces which
-are not similar to files.
-Consider a service which implements some version
-of the X protocol, using Mach messages as an underlying transport.
-For each
-X display, a file can be created with the appropriate program as its
-translator.
-X clients would open that file.
-At that point, few file
-operations would be useful (read and write, for example, would be useless),
-but new operations (
-<CODE>XCreateWindow</CODE>
-or
-<CODE>XDrawText</CODE>)
-might become meaningful.
-In this case, the filesystem protocol is used only to manipulate
-characteristics of the node used for the rendezvous.
-The node need not
-support I/O operations, though it should reply to any such messages with a
-<CODE>message_not_understood</CODE>
-return code.
-<P>
-This translator technique is used to contact most of the services in the Hurd
-that are not structured like hierarchical filesystems.
-For example, the
-password server, which hands out authorization tags in exchange for
-passwords, is contacted this way.
-Network protocol servers are also
-contacted in this fashion.
-Roland McGrath thought up this use of translators.
-
-<H3>Clever Filesystem Pictures</H3>
-<P>
-In the Hurd, translators can also be used to present a filesystem-like view
-of another part of the filesystem, with some semantics changed.
-For example,
-it would be nice to have a filesystem that cannot itself be changed, but
-nonetheless records changed versions of its files elsewhere.
-(This could be
-useful for source code management.)
-<P>
-The Hurd will have a translator which creates a directory which is a
-conceptual union of other directories, with collision resolution rules of
-various sorts.
-This can be used to present a single directory to users that
-contains all the programs they would want to execute.
-There are other useful
-variations on this theme.
-
-<H3>What The User Can Do</H3>
-<P>
-No translator gains extra privilege by virtue of being hooked into the
-filesystem.
-Translators run with the uid of the owner of the file being
-translated, and can only be set or changed by that owner.
-The I/O and
-filesystem protocols are carefully designed to allow their use by mutually
-untrusting clients and servers.
-Indeed, translators are just ordinary
-programs.
-The GNU C library has a variety of facilities to make common sorts
-of translators easier to write.
-<P>
-Some translators may need special privileges, such as the password server or
-translators which allow setuid execution.
-These translators could be run by
-anyone, but only if they are set on a root-owned node would they be able to
-provide all their services successfully.
-This is analogous to letting any
-user call the
-<CODE>reboot</CODE>
-system call, but only honoring it if that user is root.
-
-<H3>Why This Is So Different</H3>
-<P>
-What this design provides is completely novel to the Unix world.
-Until now,
-OSs have kept huge portions of their functionality in the realm of system
-code, thus preventing its modification and extension except in extreme need.
-Users cannot replace parts of the system in their programs no matter how much
-easier that would make their task, and system managers are loath to install
-random tweaks off the net into their kernels.
-<P>
-In the Hurd, users can change almost all of the things that are decided for
-them in advance by traditional systems.
-In combination with the tremendous
-control given by the Mach kernel over task address spaces and properties, the
-Hurd provides a system in which users will, for the first time, be able to
-replace parts of the system they dislike, without disrupting other users.
-<P>
-Most Mach-based OSs to date have mostly implemented a wider set of the
-<STRONG>
-same old
-</STRONG>
-Unix semantics in a new environment.
-In contrast, GNU is extending
-those semantics to allow users to improve, bypass, or replace them.
-
-
-<H2>Part 2: A Look at Some of the Hurd's Beasts</H2>
-<H3>The Authentication Server</H3>
-<P>
-One of the Hurd's more central servers is the authentication server.
-Each
-port to this server identifies a user and is associated by this server with
-an
-<DFN>id block</DFN>.
-Each id block contains sets of user and group ids.
-Either
-set may be empty.
-This server is not the same as the password server
-referred to above.
-<P>
-The authentication server exports three services.
-First, it provides simple
-boolean operations on authentication ports: given two authentication ports,
-this server will provide a third port representing the union of the two sets
-of uids and gids.
-Second, this server allows any user with a uid of zero to
-create an arbitrary authentication port.
-Finally, this server provides RPCs
-(Remote Procedure Calls between different programs and possibly different
-hosts) which allow mutually untrusting clients and servers to establish their
-identities and pass initial information on each other.
-This is crucial to
-the security of the filesystem and I/O protocols.
-<P>
-Any user could write a program which implements the authentication protocol;
-this does not violate the system's security.
-When a service needs to
-authenticate a user, it communicates with its trusted authentication server.
-If that user is using a different authentication server, the transaction will
-fail and the server can refuse to communicate further.
-Because, in effect,
-this forces all programs on the system to use the same authentication server,
-we have designed its interface to make any safe operation possible, and to
-include no extraneous operations.
-(This is why there is a separate password
-server.)
-<H3>The Process Server</H3>
-<P>
-The process server acts as an information categorization repository.
-There
-are four main services supported by this server.
-First, the process server
-keeps track of generic host-level information not handled by the Mach kernel.
-For example, the hostname, the hostid, and the system version are maintained
-by the process server.
-Second, this server maintains the Posix notions of
-sessions and process groups, to help out programs that wish to use Posix
-features.
-<P>
-Third, the process server maintains a one-to-one mapping between Mach tasks
-and Hurd processes.
-Every task is assigned a pid.
-Processes can register a
-message port with this server, which can then be given out to any program
-which requests it.
-This server makes no attempt to keep these message ports
-private, so user programs are expected to implement whatever security they
-need themselves.
-(The GNU C Library provides convenient functions for all
-this.) Processes can tell the process server their current `argv' and `envp'
-values; this server will then provide, on request, these vectors of arguments
-and environment.
-This is useful for writing
-<CODE>ps</CODE>-like
-programs and also
-makes it easier to hide or change this information.
-None of these features
-are mandatory.
-Programs are free to disregard all of this and never register
-themselves with the process server at all.
-They will, however, still have a
-pid assigned.
-<P>
-Finally, the process server implements
-<DFN>process collections</DFN>,
-which are used
-to collect a number of process message ports at the same time.
-Also,
-facilities are provided for converting between pids, process server ports,
-and Mach task ports, while ensuring the security of the ports managed.
-<P>
-It is important to stress that the process server is optional.
-Because of
-restrictions in Mach, programs must run as root in order to identify all the
-tasks in the system.
-But given that, multiple process servers could
-co-exist, each with their own clients, giving their own model of the
-universe.
-Those process server features which do not require root privileges
-to be implemented could be done as per-user servers.
-The user's hands are
-not tied.
-<H3>Transparent FTP</H3>
-<P>
-Transparent FTP is an intriguing idea whose time has come.
-The popular
-<CODE>ange-ftp</CODE>
-package available for GNU Emacs makes access to FTP files
-virtually transparent to all the Emacs file manipulation functions.
-Transparent FTP does the same thing, but in a system wide fashion.
-This
-server is not yet written; the details remain to be fleshed out, and will
-doubtless change with experience.
-<P>
-In a BSD kernel, a transparent FTP filesystem would be no harder to write
-than in the Hurd.
-But mention the idea to a BSD kernel hacker, and the
-response is that ``such a thing doesn't belong in the kernel''.
-In a sense,
-this is correct.
-It violates all the layering principles of such systems to
-place such things in the kernel.
-The unfortunate side effect, however, is
-that the design methodology (which is based on preventing users from changing
-things they don't like) is being used to prevent system designers from making
-things better.
-(Recent BSD kernels make it possible to write a user program
-that provides transparent FTP.
-An example is
-<CODE>alex</CODE>,
-but it needs to run
-with full root privileges.)
-<P>
-In the Hurd, there are no obstacles to doing transparent FTP.
-A translator
-will be provided for the node
-<CODE>/ftp</CODE>.
-The contents of
-<CODE>/ftp</CODE>
-will probably
-not be directly listable, though further subdirectories will be.
-There will
-be a variety of possible formats.
-For example, to access files on uunet, one
-could
-<CODE>
-cd /ftp/ftp.uu.net:anonymous:mib@gnu.
-</CODE>
-Or to access files on a remote
-account, one might
-<CODE>
-cd /ftp/gnu.org:mib:passwd.
-</CODE>
-Parts of this
-command could be left out and the transparent FTP program would read them
-from a user's
-<CODE>.netrc</CODE>
-file.
-In the last case, one might just
-<CODE>
-cd /ftp/gnu.org;
-</CODE>
-when the rest of the data is already in
-<CODE>.netrc</CODE>.
-<P>
-There is no need to do a
-<CODE>cd</CODE>
-first--use any file command.
-To find out about
-RFC 1097 (the Telnet Subliminal Message Option), just type
-<CODE>
-more /ftp/ftp.uu.net/inet/rfc/rfc1097.
-</CODE>
-A copy command to a local disk
-could be used if the RFC would be read frequently.
-<H3>Filesystems</H3>
-<P>
-Ordinary filesystems are also being implemented.
-The initial release of the
-Hurd will contain a filesystem upwardly compatible with the BSD 4.4 Fast File
-System.
-In addition to the ordinary semantics, it will provide means to
-record translators, offer thirty-two bit user ids and group ids, and supply a
-new id per file, called the
-<DFN>author</DFN>
-of the file, which can be set by the
-owner arbitrarily.
-In addition, because users in the Hurd can have multiple
-uids (or even none), there is an additional set of permission bits providing
-access control for
-<DFN>
-unknown user
-</DFN>
-(no uids) as distinct from
-<DFN>
-known but arbitrary user
-</DFN>
-(some uids: the existing
-<DFN>world</DFN>
-category of file
-permissions).
-<P>
-The Network File System protocol will be implemented using 4.4 BSD as a
-starting point.
-A log-structured filesystem will also be implemented using
-the same ideas as in Sprite, but probably not the same format.
-A GNU network
-file protocol may be designed in time, or NFS may be extended to remove its
-deficiencies.
-There will also be various ``little'' filesystems, such as the
-MS-DOS filesystem, to help people move files between GNU and other OSs.
-
-<H3>Terminals</H3>
-<P>
-An I/O server will provide the terminal semantics of Posix.
-The GNU C
-Library has features for keeping track of the controlling terminal and for
-arranging to have proper job control signals sent at the proper times, as
-well as features for obeying keyboard and hangup signals.
-<P>
-Programs will be able to insert a terminal driver into communications
-channels in a variety of ways.
-Servers like
-<CODE>rlogind</CODE>
-will be able to insert
-the terminal protocol onto their network communication port.
-Pseudo-terminals will not be necessary, though they will be provided for
-backward compatibility with older programs.
-No programs in GNU will depend
-on them.
-<P>
-Nothing about a terminal driver is forced upon users.
-A terminal driver
-allows a user to get at the underlying communications channel easily, to
-bypass itself on an as-needed basis or altogether, or to substitute a
-different terminal driver-like program.
-In the last case, provided the
-alternate program implements the necessary interfaces, it will be used by the
-C Library exactly as if it were the ordinary terminal driver.
-<P>
-Because of this flexibility, the original terminal driver will not provide
-complex line editing features, restricting itself to the behavior found in
-Posix and BSD.
-In time, there will be a
-<CODE>readline</CODE>-based
-terminal driver,
-which will provide complex line-editing features for those users who want
-them.
-<P>
-The terminal driver will probably not provide good support for the
-high-volume, rapid data transmission required by UUCP or SLIP.
-Those
-programs do not need any of its features.
-Instead they will be using the
-underlying Mach device ports for terminals, which support moving large
-amounts of data efficiently.
-
-<H3>Executing Programs</H3>
-<P>
-The implementation of the
-<CODE>execve</CODE>
-call is spread across three programs.
-The
-library marshals the argument and environment vectors.
-It then sends a
-message to the file server that holds the file to be executed.
-The file
-server checks execute permissions and makes whatever changes it desires in
-the exec call.
-For example, if the file is marked setuid and the fileserver
-has the ability, it will change the user identification of the new image.
-The file server also decides if programs which had access to the old task
-should continue to have access to the new task.
-If the file server is
-augmenting permissions, or executing an unreadable image, then the exec needs
-to take place in a new Mach task to maintain security.
-<P>
-After deciding the policy associated with the new image, the filesystem calls
-the exec server to load the task.
-This server, using the BFD (Binary File
-Descriptor) library, loads the image.
-BFD supports a large number of object
-file formats; almost any supported format will be executable.
-This server
-also handles scripts starting with
-<CODE>#!</CODE>,
-running them through the indicated
-program.
-<P>
-The standard exec server also looks at the environment of the new image; if
-it contains a variable
-<CODE>EXECSERVERS</CODE>
-then it uses the programs specified
-there as exec servers instead of the system default.
-(This is, of course,
-not done for execs that the file server has requested be kept secure.)
-<P>
-The new image starts running in the GNU C Library, which sends a message to
-the exec server to get the arguments, environment, umask, current directory,
-etc.
-None of this additional state is special to the file or exec servers;
-if programs wish, they can use it in a different manner than the Library.
-
-<H3>New Processes</H3>
-<P>
-The
-<CODE>fork</CODE>
-call is implemented almost entirely in the GNU C Library.
-The new
-task is created by Mach kernel calls.
-The C Library arranges to have its
-image inherited properly.
-The new task is registered with the process server
-(though this is not mandatory).
-The C Library provides vectors of functions
-to be called at fork time: one vector to be called before the fork, one after
-in the parent, and one after in the child.
-(These features should not be
-used to replace the normal fork-calling sequence; it is intended for
-libraries which need to close ports or clean up before a fork occurs.)
-The C
-library will implement both fork calls specified by the draft Posix.4a (the
-proposed standard dealing with the threads extension to the real-time
-extension).
-<P>
-Nothing forces the user to create new tasks this way.
-If a program wants to
-use almost the normal fork, but with some special characteristics, then it
-can do so.
-Hooks will be provided by the C Library, or the function can even
-be completely replaced.
-None of this is possible in a traditional Unix
-system.
-
-<H3>Asynchronous Messages</H3>
-<P>
-As mentioned above, the process server maintains a
-<DFN>
-message port
-</DFN>
-for each
-task registered with it.
-These ports are public, and are used to send
-asynchronous messages to the task.
-Signals, for example, are sent to the
-message port.
-The signal message also provides a port as an indication that
-the sender should be trusted to send the signal.
-The GNU C Library lists a
-variety of ports in a table, each of which identifies a set of signals that
-can be sent by anyone who possesses that port.
-For example, if the user
-possesses the task's kernel port, it is allowed to send any signal.
-If the
-user possesses a special
-<DFN>
-terminal id
-</DFN>
-port, it is allowed to send the
-keyboard and hangup signals.
-Users can add arbitrary new entries into the C
-library's signal permissions table.
-<P>
-When a process's process group changes, the process server will send it a
-message indicating the new process group.
-In this case, the process server
-proves its authority by providing the task's kernel port.
-<P>
-The C library also has messages to add and delete uids currently used by the
-process.
-If new uids are sent to the program, the library adds them to its
-current set, and then exchanges messages with all the I/O servers it knows
-about, proving to them its new authorization.
-Similarly, a message can
-delete uids.
-In the latter case, the caller must provide the process's task
-port.
-(You can't harm a process by giving it extra permission, but you can
-harm it by taking permission away.) The Hurd will provide user programs to
-send these messages to processes.
-For example, the
-<CODE>su</CODE>
-command will be able
-to cause all the programs in your current login session, to gain a new uid,
-rather than spawn a subshell.
-<P>
-The C library will allow programs to add asynchronous messages they wish to
-recognize, as well as prevent recognition of the standard set.
-<H3>Making It Look Like Unix</H3>
-<P>
-The C Library will implement all of the calls from BSD and Posix as well as
-some obvious extensions to them.
-This enables users to replace those calls
-they dislike or bypass them entirely, whereas in Unix the calls must be used
-``as they come'' with no alternatives possible.
-<P>
-In some environments binary compatibility will also be supported.
-This works
-by building a special version of the library which is then loaded somewhere
-in the address space of the process.
-(For example, on a VAX, it would be
-tucked in above the stack.) A feature of Mach, called system call
-redirection, is then used to trap Unix system calls and turn them into jumps
-into this special version of the library.
-(On almost all machines, the cost
-of such a redirection is very small; this is a highly optimized path in Mach.
-On a 386 it's about two dozen instructions.
-This is little worse than a
-simple procedure call.)
-<P>
-Many features of Unix, such as signal masks and vectors, are handled
-completely by the library.
-This makes such features significantly cheaper
-than in Unix.
-It is now reasonable to use
-<CODE>sigblock</CODE>
-extensively to protect
-critical sections, rather than seeking out some other, less expensive method.
-
-<H3>Network Protocols</H3>
-<P>
-The Hurd will have a library that will make it very easy to port 4.4 BSD
-protocol stacks into the Hurd.
-This will enable operation, virtually for
-free, of all the protocols supported by BSD.
-Currently, this includes the
-CCITT protocols, the TCP/IP protocols, the Xerox NS protocols, and the ISO
-protocols.
-<P>
-For optimal performance some work would be necessary to take advantage of
-Hurd features that provide for very high speed I/O.
-For most protocols this
-will require some thought, but not too much time.
-The Hurd will run the
-TCP/IP protocols as efficiently as possible.
-<P>
-As an interesting example of the flexibility of the Hurd design, consider the
-case of IP trailers, used extensively in BSD for performance.
-While the Hurd
-will be willing to send and receive trailers, it will gain fairly little
-advantage in doing so because there is no requirement that data be copied and
-avoiding copies for page-aligned data is irrelevant.
diff --git a/hurd/documentation/hurd-paper.mdwn b/hurd/documentation/hurd-paper.mdwn
new file mode 100644
index 00000000..06c23662
--- /dev/null
+++ b/hurd/documentation/hurd-paper.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta redir=/hurd-paper]]
diff --git a/hurd/documentation/hurd-talk.html b/hurd/documentation/hurd-talk.html
deleted file mode 100644
index d608e12a..00000000
--- a/hurd/documentation/hurd-talk.html
+++ /dev/null
@@ -1,1061 +0,0 @@
-[[meta copyright="Copyright © 2001 Marcus Brinkmann"]]
-
-[[meta license="Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved."]]
-
-[[meta title="The Hurd, a presentation by Marcus Brinkmann"]]
-
-
-<H4><A NAME="contents">Table of Contents</A></H4>
-<UL>
- <LI><A HREF="#int" NAME="TOCint">Introduction</A>
- <LI><A HREF="#ove" NAME="TOCove">Overview</A>
- <LI><A HREF="#his" NAME="TOChis">Historicals</A>
- <LI><A HREF="#ker" NAME="TOCker">Kernel Architectures</A>
- <LI><A HREF="#mic" NAME="TOCmic">Micro vs Monolithic</A>
- <LI><A HREF="#sin" NAME="TOCsin">Single Server vs Multi Server</A>
- <LI><A HREF="#mul" NAME="TOCmul">Multi Server is superior, ...</A>
- <LI><A HREF="#the" NAME="TOCthe">The Hurd even more so.</A>
- <LI><A HREF="#mac" NAME="TOCmac">Mach Inter Process Communication</A>
- <LI><A HREF="#how" NAME="TOChow">How to get a port?</A>
- <LI><A HREF="#exa" NAME="TOCexa">Example of <SAMP>hurd_file_name_lookup</SAMP></A>
- <LI><A HREF="#pat" NAME="TOCpat">Pathname resolution example</A>
- <LI><A HREF="#map" NAME="TOCmap">Mapping the POSIX Interface</A>
- <LI><A HREF="#filser" NAME="TOCfilser">File System Servers</A>
- <LI><A HREF="#act" NAME="TOCact">Active vs Passive</A>
- <LI><A HREF="#aut" NAME="TOCaut">Authentication</A>
- <LI><A HREF="#ope" NAME="TOCope">Operations on authentication ports</A>
- <LI><A HREF="#est" NAME="TOCest">Establishing trusted connections</A>
- <LI><A HREF="#pas" NAME="TOCpas">Password Server</A>
- <LI><A HREF="#pro" NAME="TOCpro">Process Server</A>
- <LI><A HREF="#filsys" NAME="TOCfilsys">Filesystems</A>
- <LI><A HREF="#dev" NAME="TOCdev">Developing the Hurd</A>
- <LI><A HREF="#sto" NAME="TOCsto">Store Abstraction</A>
- <LI><A HREF="#deb" NAME="TOCdeb">Debian GNU/Hurd</A>
- <LI><A HREF="#stabin" NAME="TOCstabin">Status of the Debian GNU/Hurd binary archive</A>
- <LI><A HREF="#stainf" NAME="TOCstainf">Status of the Debian infrastructure</A>
- <LI><A HREF="#staarc" NAME="TOCstaarc">Status of the Debian Source archive</A>
- <LI><A HREF="#debide" NAME="TOCdebide">Debian GNU/Hurd: Good idea, bad idea?</A>
- <LI><A HREF="#end" NAME="TOCend">End</A>
-</UL>
-<HR>
-<H3>Talk about the Hurd</H3>
-<P>
-This talk about the Hurd was written by Marcus Brinkmann for
-<UL>
-<LI>OSDEM, Brussels, 4. Feb 2001,
-<LI>Frühjahrsfachgespräche, Cologne, 2. Mar 2001 and
-<LI>Libre Software Meeting, Bordeaux, 4. Jul 2001.
-</UL>
-
-<H4><A HREF="#TOCint" NAME="int">Introduction</A></H4>
-<P>
-When we talk about free software, we usually refer to the free
-software licenses. We also need relief from software patents, so our
-freedom is not restricted by them. But there is a third type of
-freedom we need, and that's user freedom.
-
-<P>
-Expert users don't take a system as it is. They like to change the
-configuration, and they want to run the software that works best for
-them. That includes window managers as well as your favourite text
-editor. But even on a GNU/Linux system consisting only of free
-software, you can not easily use the filesystem format, network
-protocol or binary format you want without special privileges. In
-traditional unix systems, user freedom is severly restricted by the
-system administrator.
-
-<P>
-The Hurd removes these restrictions from the user. It provides an
-user extensible system framework without giving up POSIX compatibility
-and the unix security model. Throughout this talk, we will see that
-this brings further advantages beside freedom.
-
-<H4><A HREF="#TOCove" NAME="ove">Overview</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-
-<P>
-The Hurd is a POSIX compatible multi-server
-system operating on top of the GNU&nbsp;Mach microkernel.
-
-<P>
-Topics:
-<UL>
- <LI>GNU&nbsp;Mach</LI>
- <LI>The Hurd</LI>
- <LI>Development</LI>
- <LI>Debian GNU/Hurd</LI>
-</UL>
-</TD></TR></TABLE>
-
-<P>
-The Hurd is a POSIX compatible multi-server system operating on top of
-the GNU&nbsp;Mach Microkernel.
-
-<P>
-I will have to explain what GNU&nbsp;Mach is, so we start with that. Then
-I will talk about the Hurd's architecture. After that, I will give a
-short overview on the Hurd libraries. Finally, I will tell you how
-the Debian project is related to the Hurd.
-
-<H4><A HREF="#TOChis" NAME="his">Historicals</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%">
-<TR><TD VALIGN="TOP" ALIGN="LEFT">
-<UL>
- <LI>1983: Richard Stallman founds the GNU project.</LI>
- <LI>1988: Decision is made to use Mach 3.0 as the kernel.</LI>
- <LI>1991: Mach 3.0 is released under compatible license.</LI>
- <LI>1991: Thomas Bushnell, BSG, founds the Hurd project.</LI>
- <LI>1994: The Hurd boots the first time.</LI>
- <LI>1997: Version 0.2 of the Hurd is released.<BR><BR></LI>
- <LI>1998: Debian hurd-i386 archive is created.</LI>
- <LI>2001: Debian GNU/Hurd snapshot fills three CD images.</LI>
-</UL>
-</TD></TR></TABLE>
-
-<P>
-When Richard Stallman founded the GNU project in 1983, he wanted to
-write an operating system consisting only of free software. Very
-soon, a lot of the essential tools were implemented, and released
-under the GPL. However, one critical piece was missing: The kernel.
-<P>
-After considering several alternatives, it was decided not to write a
-new kernel from scratch, but to start with the Mach microkernel. This
-was in 1988, and it was not before 1991 that Mach was released under a
-license allowing the GNU project to distribute it as a part of the
-system.
-<P>
-In 1998, I started the Debian GNU/Hurd project, and in 2001 the number
-of available GNU/Hurd packages fills three CD images.
-
-<H4><A HREF="#TOCker" NAME="ker">Kernel Architectures</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Microkernel:
-<UL>
- <LI>Enforces resource management (paging, scheduling)</LI>
- <LI>Manages tasks</LI>
- <LI>Implements message passing for IPC</LI>
- <LI>Provides basic hardware support</LI>
-</UL>
-<P>
-Monolithic kernel:
-<UL>
- <LI>No message passing necessary</LI>
- <LI>Rich set of features (filesystems, authentication, network
- sockets, POSIX interface, ...)</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-Microkernels were very popular in the scientific world around that
-time. They don't implement a full operating system, but only the
-infrastructure needed to enable other tasks to implement most
-features. In contrast, monolithical kernels like Linux contain
-program code of device drivers, network protocols, process management,
-authentication, file systems, POSIX compatible interfaces and much
-more.
-<P>
-So what are the basic facilities a microkernel provides? In general,
-this is resource management and message passing. Resource management,
-because the kernel task needs to run in a special privileged mode of
-the processor, to be able to manipulate the memory management unit and
-perform context switches (also to manage interrupts). Message
-passing, because without a basic communication facility the other
-tasks could not interact to provide the system services. Some
-rudimentary hardware device support is often necessary to bootstrap
-the system. So the basic jobs of a microkernel are enforcing the
-paging policy (the actual paging can be done by an external pager
-task), scheduling, message passing and probably basic hardware device
-support.
-<P>
-Mach was the obvious choice back then, as it provides a rich set of
-interfaces to get the job done. Beside a rather brain-dead device
-interface, it provides tasks and threads, a messaging system allowing
-synchronous and asynchronous operation and a complex interface for
-external pagers. It's certainly not one of the sexiest microkernels
-that exist today, but more like a big old mama. The GNU project
-maintains its own version of Mach, called GNU&nbsp;Mach, which is based on
-Mach 4.0. In addition to the features contained in Mach 4.0, the GNU
-version contains many of the Linux 2.0 block device and network card
-drivers.
-<P>
-A complete treatment of the differences between a microkernel and
-monolithical kernel design can not be provided here. But a couple of
-advantages of a microkernel design are fairly obvious.
-
-<H4><A HREF="#TOCmic" NAME="mic">Micro vs Monolithic</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Microkernel
-<UL>
- <LI>Clear cut responsibilities
- <LI>Flexibility in operating system design, easier debugging</LI>
- <LI>More stability (less code to break)</LI>
- <LI>New features are not added to the kernel</LI>
-</UL>
-<P>
-Monolithic kernel
-<UL>
- <LI>Intolerance or creeping featuritis</LI>
- <LI>Danger of spaghetti code</LI>
- <LI>Small changes can have far reaching side effects</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-Because the system is split up into several components, clean
-interfaces have to be developed, and the responsibilities of each part
-of the system must be clear.
-<P>
-Once a microkernel is written, it can be used as the base for several
-different operating systems. Those can even run in parallel which
-makes debugging easier. When porting, most of the hardware dependant
-code is in the kernel.
-<P>
-Much of the code that doesn't need to run in the special kernel mode
-of the processor is not part of the kernel, so stability increases
-because there is simply less code to break.
-<P>
-New features are not added to the kernel, so there is no need to hold
-the barrier high for new operating system features.
-<P>
-Compare this to a monolithical kernel, where you either suffer from
-creeping featuritis or you are intolerant of new features (we see both
-in the Linux kernel).
-<P>
-Because in a monolithical kernel, all parts of the kernel can access
-all data structures in other parts, it is more likely that short cuts
-are used to avoid the overhead of a clean interface. This leads to a
-simple speed up of the kernel, but also makes it less comprehensible
-and more error prone. A small change in one part of the kernel can
-break remote other parts.
-
-<H4><A HREF="#TOCsin" NAME="sin">Single Server vs Multi Server</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Single Server
-<UL>
- <LI>A single task implements the functionality of the operating system.</LI>
-</UL>
-<P>
-Multi Server
-<UL>
- <LI>Many tasks cooperate to provide the system's functionality.</LI>
- <LI>One server provides only a small but well-defined part of the
- whole system.</LI>
- <LI>The responsibilities are distributed logically among the servers.</LI>
-</UL>
-<P>
-A single-server system is comparable to a monolithic kernel system. It
-has similar
-advantages and disadvantages.
-</TD></TR></TABLE>
-<P>
-There exist a couple of operating systems based on Mach, but they all
-have the same disadvantages as a monolithical kernel, because those
-operating systems are implemented in one single process running on top
-of the kernel. This process provides all the services a monolithical
-kernel would provide. This doesn't make a whole lot of sense (the
-only advantage is that you can probably run several of such isolated
-single servers on the same machine). Those systems are also called
-single-server systems. The Hurd is the only usable multi-server
-system on top of Mach. In the Hurd, there are many server programs,
-each one responsible for a unique service provided by the operating
-system. These servers run as Mach tasks, and communicate using the
-Mach message passing facilities. One of them does only provide a
-small part of the functionality of the system, but together they build
-up a complete and functional POSIX compatible operating system.
-
-<H4><A HREF="#TOCmul" NAME="mul">Multi Server is superior, ...</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Any multi-server has advantages over single-server:
-<UL>
- <LI>Clear cut responsibilities</LI>
- <LI>More stability: If one server dies, all others remain</LI>
- <LI>Easier development cycle: Testing without reboot (or replacing
- running servers), debugging with gdb</LI>
- <LI>Easier to make changes and add new features
-</UL>
-</TD></TR></TABLE>
-<P>
-Using several servers has many advantages, if done right. If a file
-system server for a mounted partition crashes, it doesn't take down
-the whole system. Instead the partition is "unmounted", and
-you can try to start the server again, probably debugging it this time
-with gdb. The system is less prone to errors in individual
-components, and over-all stability increases. The functionality of
-the system can be extended by writing and starting new servers
-dynamically. (Developing these new servers is easier for the reasons
-just mentioned.)
-<P>
-But even in a multi-server system the barrier between the system and
-the users remains, and special privileges are needed to cross it. We
-have not achieved user freedom yet.
-
-<H4><A HREF="#TOCthe" NAME="the">The Hurd even more so.</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-The Hurd goes beyond all this, and allows users to write and run their
-servers, too!
-<UL>
- <LI>Users can replace system servers dynamically with their own
- implementations.</LI>
- <LI>Users can decide what parts of the remainder of the system they
- want to use.</LI>
- <LI>Users can extend the functionality of the system.</LI>
- <LI>No mutual trust necessary to make use of other users
- services.</LI>
- <LI>Security of the system is not harmed by trusting users
- services.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-To quote Thomas Bushnell, BSG, from his paper
-[[``Towards_a_New_Strategy_of_OS_design''_(1996)|hurd-paper]]:
-<BLOCKQUOTE>
-The GNU&nbsp;Hurd, by contrast, is designed to make the area of system code
-as limited as possible. Programs are required to communicate only
-with a few essential parts of the kernel; the rest of the system is
-replaceable dynamically. Users can use whatever parts of the
-remainder of the system they want, and can easily add components
-themselves for other users to take advantage of. No mutual trust need
-exist in advance for users to use each other's services, nor does the
-system become vulnerable by trusting the services of arbitrary users.
-</BLOCKQUOTE>
-
-<P>
-<EM>So the Hurd is a set of servers running on top of the Mach
-micro-kernel, providing a POSIX compatible and extensible operating
-system. What servers are there? What functionality do they provide,
-and how do they cooperate?</EM>
-
-<H4><A HREF="#TOCmac" NAME="mac">Mach Inter Process Communication</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Ports are message queues which can be used as one-way communication
-channels.
-<UL>
- <LI>Port rights are receive, send or send-once</LI>
- <LI>Exactly one receiver</LI>
- <LI>Potentially many senders</LI>
-</UL>
-<P>
-MIG provides remote procedure calls on top of Mach IPC. RPCs look like
-function calls to the user.
-</TD></TR></TABLE>
-<P>
-Inter-process communication in Mach is based on the ports concept. A
-port is a message queue, used as a one-way communication channel. In
-addition to a port, you need a port right, which can be a send right,
-receive right, or send-once right. Depending on the port right, you
-are allowed to send messages to the server, receive messages from it,
-or send just one single message.
-<P>
-For every port, there exists exactly one task holding the receive
-right, but there can be no or many senders. The send-once right is
-useful for clients expecting a response message. They can give a
-send-once right to the reply port along with the message. The kernel
-guarantees that at some point, a message will be received on the reply
-port (this can be a notification that the server destroyed the
-send-once right).
-<P>
-You don't need to know much about the format a message takes to be
-able to use the Mach IPC. The Mach interface generator mig hides the
-details of composing and sending a message, as well as receiving the
-reply message. To the user, it just looks like a function call, but
-in truth the message could be sent over a network to a server running
-on a different computer. The set of remote procedure calls a server
-provides is the public interface of this server.
-
-
-<H4><A HREF="#TOChow" NAME="how">How to get a port?</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Traditional Mach:
-<UL>
- <LI>Nameserver provides ports to all registered servers.</LI>
- <LI>The nameserver port itself is provided by Mach.</LI>
- <LI>Like a phone book: One list.</LI>
-</UL>
-<P>
-The Hurd:
-<UL>
- <LI>The filesystem is used as the server namespace.</LI>
- <LI>Root directory port is inserted into each task.</LI>
- <LI>The C library finds other ports with hurd_file_name_lookup,
- performing a pathname resolution.</LI>
- <LI>Like a tree of phone books.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-So how does one get a port to a server? You need something like a
-phone book for server ports, or otherwise you can only talk to
-yourself. In the original Mach system, a special nameserver is
-dedicated to that job. A task could get a port to the nameserver from
-the Mach kernel and ask it for a port (with send right) to a server
-that registered itself with the nameserver at some earlier time.
-<P>
-In the Hurd, there is no nameserver. Instead, the filesystem is used
-as the server namespace. This works because there is always a root
-filesystem in the Hurd (remember that the Hurd is a POSIX compatible
-system); this is an assumption the people who developed Mach couldn't
-make, so they had to choose a different strategy. You can use the
-function hurd_file_name_lookup, which is part of the C library, to get
-a port to the server belonging to a filename. Then you can start to
-send messages to the server in the usual way.
-
-<H4><A HREF="#TOCexa" NAME="exa">Example of <SAMP>hurd_file_name_lookup</SAMP></A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT"><PRE>
-mach_port_t identity;
-mach_port_t pwserver;
-kern_return_t err;
-
-pwserver = hurd_file_name_lookup
- ("/servers/password");
-
-err = password_check_user (pwserver,
- 0 /* root */, "supass",
- &identity);
-</PRE></TD></TR></TABLE>
-<P>
-As a concrete example, the special filename
-<SAMP>/servers/password</SAMP> can be used to request a port to the
-Hurd password server, which is responsible to check user provided
-passwords.
-<P>
-(explanation of the example)
-
-<H4><A HREF="#TOCpat" NAME="pat">Pathname resolution example</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Task: Lookup /mnt/readme.txt where /mnt has a mounted filesystem.
-<UL>
- <LI>The C library asks the root filesystem server about
- <SAMP>/mnt/readme.txt</SAMP>.</LI>
- <LI>The root filesystem returns a port to the mnt filesystem server
- (matching <SAMP>/mnt</SAMP>) and the retry name
- <SAMP>/readme.txt</SAMP>.</LI>
- <LI>The C library asks the mnt filesystem server about
- <SAMP>/readme.txt</SAMP>.</LI>
- <LI>The mnt filesystem server returns a port to itself and records
- that this port refers to the regular file
- <SAMP>/readme.txt</SAMP>.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The C library itself does not have a full list of all available
-servers. Instead pathname resolution is used to traverse through a
-tree of servers. In fact, filesystems themselves are implemented by
-servers (let us ignore the chicken and egg problem here). So all the
-C library can do is to ask the root filesystem server about the
-filename provided by the user (assuming that the user wants to resolve
-an absolute path), using the <SAMP>dir_lookup</SAMP> RPC. If the
-filename refers to a regular file or directory on the filesystem, the
-root filesystem server just returns a port to itself and records that
-this port corresponds to the file or directory in question. But if a
-prefix of the full path matches the path of a server the root
-filesystem knows about, it returns to the C library a port to this
-server and the remaining part of the pathname that couldn't be
-resolved. The C library than has to retry and query the other server
-about the remaining path component. Eventually, the C library will
-either know that the remaining path can't be resolved by the last
-server in the list, or get a valid port to the server in question.
-
-<H4><A HREF="#TOCmap" NAME="map">Mapping the POSIX Interface</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<TABLE BORDER="0" CELLPADDING="10">
-<TR>
-<TH>Filedescriptor</TH>
-<TH>Port to server providing the file</TH>
-</TR><TR>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>fd = open(name,...)</SAMP></TD>
-<TD VALIGN="TOP"
-ALIGN="LEFT"><SAMP>dir_lookup(..,name,..,&amp;port)</SAMP><BR>
-[pathname resolution]</TD>
-</TR><TR>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>read(fd, ...)</SAMP></TD>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_read(port, ...)</SAMP></TD>
-</TR><TR>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>write(fd, ...)</SAMP></TD>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_write(port, ...)</SAMP></TD>
-</TR><TR>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>fstat(fd, ...)</SAMP></TD>
-<TD VALIGN="TOP" ALIGN="LEFT"><SAMP>io_stat(port, ...)</SAMP></TD>
-</TR><TR>
-<TD VALIGN="TOP" ALIGN="LEFT">...</TD><TD></TD>
-</TR>
-</TABLE>
-</TD></TR></TABLE>
-<P>
-It should by now be obvious that the port returned by the server can
-be used to query the files status, content and other information from
-the server, if good remote procedure calls to do that are defined and
-implemented by it. This is exactly what happens. Whenever a file is
-opened using the C libraries <SAMP>open()</SAMP> call, the C library
-uses the above pathname resolution to get a port to a server providing
-the file. Then it wraps a file descriptor around it. So in the Hurd,
-for every open file descriptor there is a port to a server providing
-this file. Many other C library calls like <SAMP>read()</SAMP> and
-<SAMP>write()</SAMP> just call a corresponding RPC using the port
-associated with the file descriptor.
-
-<H4><A HREF="#TOCfilser" NAME="filser">File System Servers</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<UL>
- <LI>Provide file and directory services for ports (and more).</LI>
- <LI>These ports are returned by a directory lookup.</LI>
- <LI>Translate filesystem accesses through their root path (hence the
- name translator).</LI>
- <LI>The C library maps the POSIX file and directory interface (and
- more) to RPCs to the filesystem servers ports, but also does work on
- its own.</LI>
- <LI>Any user can install file system servers on inodes they own.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-So we don't have a single phone book listing all servers, but rather a
-tree of servers keeping track of each other. That's really like
-calling your friend and asking for the phone number of the blond girl
-at the party yesterday. He might refer you to a friend who hopefully
-knows more about it. Then you have to retry.
-<P>
-This mechanism has huge advantages over a single nameserver. First,
-note that standard unix permissions on directories can be used to
-restrict access to a server (this requires that the filesystems
-providing those directories behave). You just have to set the
-permissions of a parent directory accordingly and provide no other way
-to get a server port.
-<P>
-But there are much deeper implications. Most of all, a pathname never
-directly refers to a file, it refers to a port of a server. That
-means that providing a regular file with static data is just one of
-the many options the server has to service requests on the file port.
-A server can also create the data dynamically. For example, a server
-associated with <SAMP>/dev/random</SAMP> can provide new random data
-on every <SAMP>io_read()</SAMP> on the port to it. A server
-associated with <SAMP>/dev/fortune</SAMP> can provide a new fortune
-cookie on every <SAMP>open()</SAMP>.
-<P>
-While a regular filesystem server will just serve the data as stored
-in a filesystem on disk, there are servers providing purely virtual
-information, or a mixture of both. It is up to the server to behave
-and provide consistent and useful data on each remote procedure call.
-If it does not, the results may not match the expectations of the user
-and confuse him.
-<P>
-A footnote from the Hurd info manual:
-<BLOCKQUOTE>
-(1) You are lost in a maze of twisty little filesystems, all
-alike....
-</BLOCKQUOTE>
-<P>
-Because a server installed in the filesystem namespace translates all
-filesystem operations that go through its root path, such a server is
-also called "active translator". You can install translators using
-the settrans command with the <SAMP>-a</SAMP> option.
-
-<H4><A HREF="#TOCact" NAME="act">Active vs Passive</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Active Translators:
-<UL>
- <LI>"<SAMP>settrans -a /cdrom /hurd/isofs /dev/hd2</SAMP>"</LI>
- <LI>Are running filesystem servers.</LI>
- <LI>Are attached to the root node they translate.</LI>
- <LI>Run as a normal process.</LI>
- <LI>Go away with every reboot, or even time out.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-Many translator settings remain constant for a long time. It would be
-very lame to always repeat the same couple of dozens settrans calls
-manually or at boot time. So the Hurd provides a filesystem extension
-that allows to store translator settings inside the filesystem and let
-the filesystem servers do the work to start those servers on demand.
-Such translator settings are called "passive translators". A passive
-translator is really just a command line string stored in an inode of
-the filesystem. If during a pathname resolution a server encounters
-such a passive translator, and no active translator does exist already
-(for this node), it will use this string to start up a new translator
-for this inode, and then let the C library continue with the path
-resolution as described above. Passive translators are installed with
-settrans using the <SAMP>-p</SAMP> option (which is already the
-default).
-
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Passive Translators:
-<UL>
- <LI>"<SAMP>settrans /mnt /hurd/ext2fs /dev/hd1s1</SAMP>"</LI>
- <LI>Are stored as command strings into an inode.</LI>
- <LI>Are used to start a new active translator if there isn't
- one.</LI>
- <LI>Startup is transparent to the user.</LI>
- <LI>Startup happens the first time the server is needed.</LI>
- <LI>Are permanent across reboots (like file data).</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-So passive translators also serve as a sort of automounting feature,
-because no manual interaction is required. The server start up is
-deferred until the service is need, and it is transparent to the user.
-<P>
-When starting up a passive translator, it will run as a normal process
-with the same user and group id as those of the underlying inode. Any
-user is allowed to install passive and active translators on inodes
-that he owns. This way the user can install new servers into the
-global namespace (for example, in his home or tmp directory) and thus
-extend the functionality of the system (recall that servers can
-implement other remote procedure calls beside those used for files and
-directories). A careful design of the trusted system servers makes
-sure that no permissions leak out.
-<P>
-In addition, users can provide their own implementations of some of
-the system servers instead the system default. For example, they can
-use their own exec server to start processes. The user specific exec
-server could for example start java programs transparently (without
-invoking the interpreter manually). This is done by setting the
-environment variable <SAMP>EXECSERVERS</SAMP>. The systems default
-exec server will evaluate this environment variable and forward the
-RPC to each of the servers listed in turn, until some server accepts
-it and takes over. The system default exec server will only do this
-if there are no security implications. (XXX There are other ways to
-start new programs than by using the system exec server. Those are
-still available.)
-<P>
-Let's take a closer look at some of the Hurd servers. It was already
-mentioned that only few system servers are mandatory for users. To
-establish your identity within the Hurd system, you have to
-communicate with the trusted systems authentication server
-<SAMP>auth</SAMP>. To put the system administrator into control over
-the system components, the process server does some global
-bookkeeping.
-<P>
-But even these servers can be ignored. However, registration with the
-authentication server is the only way to establish your identity
-towards other system servers. Likewise, only tasks registered as
-processes with the process server can make use of its services.
-
-<H4><A HREF="#TOCaut" NAME="aut">Authentication</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-A user identity is just a port to an authserver. The auth server
-stores four set of ids for it:
-<UL>
- <LI>effective user ids</LI>
- <LI>effective group ids</LI>
- <LI>available user ids</LI>
- <LI>available group ids</LI>
-</UL>
-<P>
-Basic properties:
-<UL>
- <LI>Any of these can be empty.</LI>
- <LI>A 0 among the user ids identifies the superuser.</LI>
- <LI>Effective ids are used to check if the user has the
- permission.</LI>
- <LI>Available ids can be turned into effective ids on user
- request.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The Hurd auth server is used to establish the identity of a user for a
-server. Such an identity (which is just a port to the auth server)
-consists of a set of effective user ids, a set of effective group ids,
-a set of available user ids and a set of available group ids. Any of
-these sets can be empty.
-
-<H4><A HREF="#TOCope" NAME="ope">Operations on authentication ports</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-The auth server provides the following operations on ports:
-<UL>
- <LI>Merge the ids of two ports into a new one.</LI>
- <LI>Return a new port containing a subset of the ids in a port.</LI>
- <LI>Create a new port with arbitrary ids (superuser only).</LI>
- <LI>Establish a trusted connection between users and servers.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-If you have two identities, you can merge them and request an identity
-consisting of the unions of the sets from the auth server. You can
-also create a new identity consisting only of subsets of an identity
-you already have. What you can't do is extending your sets, unless
-you are the superuser which is denoted by having the user id 0.
-
-<H4><A HREF="#TOCest" NAME="est">Establishing trusted connections</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<UL>
- <LI>User provides a rendezvous port to the server (with
- <SAMP>io_reauthenticate</SAMP>).</LI>
- <LI>User calls <SAMP>auth_user_authenticate</SAMP> on the
- authentication port (his identity), passing the rendezvous port.</LI>
- <LI>Server calls <SAMP>auth_server_authenticate</SAMP> on its
- authentication port (to a trusted auth server), passing the
- rendezvous port and the server port.</LI>
- <LI>If both authentication servers are the same, it can match the
- rendezvous ports and return the server port to the user and the user
- ids to the server.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-Finally, the auth server can establish the identity of a user for a
-server. This is done by exchanging a server port and a user identity
-if both match the same rendezvous port. The server port will be
-returned to the user, while the server is informed about the id sets
-of the user. The server can then serve or reject subsequent RPCs by
-the user on the server port, based on the identity it received from
-the auth server.
-<P>
-Anyone can write a server conforming to the auth protocol, but of
-course all system servers use a trusted system auth server to
-establish the identity of a user. If the user is not using the system
-auth server, matching the rendezvous port will fail and no server port
-will be returned to the user. Because this practically requires all
-programs to use the same auth server, the system auth server is
-minimal in every respect, and additional functionality is moved
-elsewhere, so user freedom is not unnecessarily restricted.
-
-<H4><A HREF="#TOCpas" NAME="pas">Password Server</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-The password server <SAMP>/servers/password</SAMP> runs as root and
-returns a new authentication port in exchange for a unix password.
-<P>
-The ids corresponding to the authentication port match the unix user
-and group ids.
-<P>
-Support for shadow passwords is implemented here.
-</TD></TR></TABLE>
-<P>
-The password server sits at <SAMP>/servers/password</SAMP> and runs as
-root. It can hand out ports to the auth server in exchange for a unix
-password, matching it against the password or shadow file. Several
-utilities make use of this server, so they don't need to be setuid
-root.
-
-<H4><A HREF="#TOCpro" NAME="pro">Process Server</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-The superuser must remain control over user tasks, so:
-<UL>
- <LI>All mach tasks are associated with a PID in the system default
- proc server.</LI>
-</UL>
-<P>
-Optionally, user tasks can store:
-<UL>
- <LI>Their environment variables.</LI>
- <LI>Their argument vector.</LI>
- <LI>A port, which others can request based on the PID (like a
- nameserver).</LI>
-</UL>
-<P>
-Also implemented in the proc server:
-<UL>
- <LI>Sessions and process groups.</LI>
- <LI>Global configuration not in Mach, like hostname, hostid, system
- version.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The process server is responsible for some global bookkeeping. As
-such it has to be trusted and is not replaceable by the user.
-However, a user is not required to use any of its service. In that
-case the user will not be able to take advantage of the POSIXish
-appearance of the Hurd.
-<P>
-The Mach Tasks are not as heavy as POSIX processes. For example,
-there is no concept of process groups or sessions in Mach. The proc
-server fills in the gap. It provides a PID for all Mach tasks, and
-also stores the argument line, environment variables and other
-information about a process (if the mach tasks provide them, which is
-usually the case if you start a process with the default
-<SAMP>fork()</SAMP>/<SAMP>exec()</SAMP>). A process can also register
-a message port with the proc server, which can then be requested by
-anyone. So the proc server also functions as a nameserver using the
-process id as the name.
-<P>
-The proc server also stores some other miscellaneous information not
-provided by Mach, like the hostname, hostid and system version.
-Finally, it provides facilities to group processes and their ports
-together, as well as to convert between pids, process server ports and
-mach task ports.
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-User tasks not registering themselve with proc only have a PID assigned.
-<P>
-Users can run their own proc server in addition to the system default,
-at least for those parts of the interface that don't require superuser
-privileges.
-</TD></TR></TABLE>
-<P>
-Although the system default proc server can't be avoided (all Mach
-tasks spawned by users will get a pid assigned, so the system
-administrator can control them), users can run their own additional
-process servers if they want, implementing the features not requiring
-superuser privileges.
-
-<H4><A HREF="#TOCfilsys" NAME="filsys">Filesystems</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Store based filesystems
-<UL>
- <LI><SAMP>ext2fs</SAMP></LI>
- <LI><SAMP>ufs</SAMP></LI>
- <LI><SAMP>isofs</SAMP> (iso9660, RockRidge, GNU extensions)</LI>
- <LI><SAMP>fatfs</SAMP> (under development)</LI>
-</UL>
-<P>
-Network file systems
-<UL>
- <LI><SAMP>nfs</SAMP></LI>
- <LI><SAMP>ftpfs</SAMP></LI>
-</UL>
-<P>
-Miscellaneous
-<UL>
- <LI><SAMP>hostmux</SAMP></LI>
- <LI><SAMP>usermux</SAMP></LI>
- <LI><SAMP>tmpfs</SAMP> (under development)</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-We already talked about translators and the file system service they
-provide. Currently, we have translators for the ext2, ufs and iso9660
-filesystems. We also have an nfs client and an ftp filesystem.
-Especially the latter is intriguing, as it provides transparent access
-to ftp servers in the filesystem. Programs can start to move away
-from implementing a plethora of network protocols, as the files are
-directly available in the filesystem through the standard POSIX file
-interface.
-
-
-<H4><A HREF="#TOCdev" NAME="dev">Developing the Hurd</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Over a dozen libraries support the development of new servers.
-<P>
-For special server types highly specialized
-libraries require only the implementation of a
-number of callback functions.
-<UL>
- <LI>Use <SAMP>libdiskfs</SAMP> for store based filesystems.</LI>
- <LI>Use <SAMP>libnetfs</SAMP> for network filesystems, also for
- virtual filesystems.</LI>
- <LI>Use <SAMP>libtrivfs</SAMP> for simple filesystems providing only
- a single file or directory.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The Hurd server protocols are complex enough to allow for the
-implementation of a POSIX compatible system with GNU extensions.
-However, a lot of code can be shared by all or at least similar
-servers. For example, all storage based filesystems need to be able to
-read and write to a store medium splitted in blocks. The Hurd comes
-with several libraries which make it easy to implement new servers.
-Also, there are already a lot of examples of different server types in
-the Hurd. This makes writing a new server easier.
-<P>
-<SAMP>libdiskfs</SAMP> is a library that supports writing store based
-filesystems like ext2fs or ufs. It is not very useful for filesystems
-which are purely virtual, like <SAMP>/proc</SAMP> or files in
-<SAMP>/dev</SAMP>.
-<P>
-<SAMP>libnetfs</SAMP> is intended for filesystems which provide a rich
-directory hierarchy, but don't use a backing store (for example ftpfs,
-nfs).
-<P>
-<SAMP>libtrivfs</SAMP> is intended for filesystems which just provide
-a single inode or directory. Most servers which are not intended to
-provide a filesystem but other services (like
-<SAMP>/servers/password</SAMP>) use it to provide a dummy file, so
-that file operations on the servers node will not return errors. But
-it can also be used to provide meaningful data in a single file, like
-a device store or a character device.
-
-<H4><A HREF="#TOCsto" NAME="sto">Store Abstraction</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Another very useful library is libstore, which is used by all store
-based filesystems. It provides a store media abstraction. A store
-consists of a store class and a name (which itself can sometimes
-contain stores).
-<P>
-Primitive store classes:
-<UL>
- <LI>device store like device:hd2, device:hd0s1, device:fd0</LI>
- <LI>file store like file:/tmp/disk_image</LI>
- <LI>task store like task:PID</LI>
- <LI>zero store like zero:4m (like /dev/zero, of size 4 MB)</LI>
-</UL>
-</TD></TR></TABLE>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Composed store classes:
-<UL>
- <LI>copy store like copy:zero:4m</LI>
- <LI>gunzip/bunzip2 store like gunzip:device:fd0</LI>
- <LI>concat store like concat:device:hd0s2:device:hd1s5</LI>
- <LI>ileave store (RAID-0(2))</LI>
- <LI>remap store like remap:10+20,50+:file:/tmp/blocks</LI>
- <LI>...</LI>
-</UL>
-<P>
-Wanted: A similar abstraction for streams (based on channels), which
-can be used by network and character device servers.
-</TD></TR></TABLE>
-<P>
-<SAMP>libstore</SAMP> provides a store abstraction, which is used by
-all store based filesystems. The store is determined by a type and a
-name, but some store types modify another store rather than providing
-a new store, and thus stores can be stacked. For example, the device
-store type expects a Mach device, but the remap store expects a list
-of blocks to pick from another store, like remap:1+:device:hd2, which
-would pick all blocks from hd2 but the first one, which skipped.
-Because this functionality is provided in a library, all libstore
-using filesystems support many different store kinds, and adding a new
-store type is enough to make all store based filesystems support it.
-
-<H4><A HREF="#TOCdeb" NAME="deb">Debian GNU/Hurd</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Goal:
-<UL>
- <LI>Provide a binary distribution of the Hurd that is easy to
- install.</LI>
-</UL>
-<P>
-Constraints:
-<UL>
- <LI>Use the same source packages as Debian GNU/Linux.</LI>
- <LI>Use the same infrastructure:
- <UL>
- <LI>Policy</LI>
- <LI>Archive</LI>
- <LI>Bug tracking system</LI>
- <LI>Release process</LI>
- </UL></LI>
-</UL>
-<P>
-Side Goal:
-<UL>
- <LI>Prepare Debian for the future:
- <UL>
- <LI>More flexibility in the base system</LI>
- <LI>Identify dependencies on the Linux kernel</LI>
- </UL></LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The Debian distribution of the GNU&nbsp;Hurd that I started in 1998 is
-supposed to become a complete binary distribution of the Hurd that is
-easy to install.
-
-<H4><A HREF="#TOCstabin" NAME="stabin">Status of the Debian GNU/Hurd binary archive</A></H4>
-<P>
-See
-<A HREF="http://buildd.debian.org/stats/graph.png">http://buildd.debian.org/stats/graph.png</A>
-for the most current version of the statistic.
-
-<H4><A HREF="#TOCstainf" NAME="stainf">Status of the Debian infrastructure</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Plus:
-<UL>
- <LI>Source packages can identify build and host OS using
- dpkg-architecture.</LI>
-</UL>
-<P>
-Minus:
-<UL>
- <LI>The binary architecture field is insufficient.</LI>
- <LI>The BTS has no architecture tag.</LI>
- <LI>The policy/FHS need (small) Hurd specific extensions.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-While good compatibiity can be achieved at the source level,
-the binary packages can not always express their relationship
-to the available architectures sufficiently.
-<P>
-For example, the Linux version of makedev is binary-all, where
-a binary-all-linux relationship would be more appropriate.
-<P>
-More work has to be done here to fix the tools.
-
-<H4><A HREF="#TOCstaarc" NAME="staarc">Status of the Debian Source archive</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<UL>
- <LI>Most packages just work.</LI>
- <LI>Maintainers are usually responsive and cooperative.</LI>
- <LI>Turtle, the autobuilder, crunches through the whole list right
- now.</LI>
-</UL>
-<P>
-Common pitfalls are POSIX incompatibilities:
-<UL>
- <LI>Upstream:
- <UL>
- <LI>Unconditional use of <SAMP>PATH_MAX</SAMP>
- (<SAMP>MAXPATHLEN</SAMP>), <SAMP>MAXHOSTNAMELEN</SAMP>.</LI>
- <LI>Unguarded use of Linux kernel features.</LI>
- <LI>Use of legacy interfaces (<SAMP>sys_errlist</SAMP>,
- <SAMP>termio</SAMP>).</LI>
- </UL></LI>
- <LI>Debian:
- <UL>
- <LI>Unguarded activation of extensions available with Linux.</LI>
- <LI>Low quality patches.</LI>
- <LI>Assuming GNU/Linux in package scripts.</LI>
- </UL></LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-Most packages are POSIX compatible and can be compiled without
-changes on the Hurd. The maintainers of the Debian source packages
-are usually very kind, responsiver and helpful.
-<P>
-The Turtle autobuilder software (<A
-HREF="http://turtle.sourceforge.net" >http://turtle.sourceforge.net</A>)
-builds the Debian packages on the Hurd automatically.
-
-<H4><A HREF="#TOCdebide" NAME="debide">Debian GNU/Hurd: Good idea, bad idea?</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Upstream benefits:
-<UL>
- <LI>Software packages become more portable.</LI>
-</UL>
-<P>
-Debian benefits:
-<UL>
- <LI>Debian becomes more portable.</LI>
- <LI>Maintainers learn about portability and other systems.</LI>
- <LI>Debian gets a lot of public recognition.</LI>
-</UL>
-<P>
-GNU/Hurd benefits:
-<UL>
- <LI>Large software base.</LI>
- <LI>Great infrastructure.</LI>
- <LI>Nice community to partner with.</LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-The sheet lists the advantages of all groups involved.
-
-<H4><A HREF="#TOCend" NAME="end">End</A></H4>
-<TABLE BORDER="1" CELLPADDING="5" WIDTH="100%"><TR><TD VALIGN="TOP" ALIGN="LEFT">
-<P>
-Join us at
-<UL>
- <LI><A HREF="http://hurd.gnu.org/" >http://hurd.gnu.org/</A></LI>
- <LI><A HREF="http://www.debian.org/ports/hurd"
- >http://www.debian.org/ports/hurd</A></LI>
- <LI><A HREF="http://www.hurdfr.org"
- >http://www.hurdfr.org</A></LI>
-</UL>
-</TD></TR></TABLE>
-<P>
-List of contacts.
diff --git a/hurd/documentation/hurd-talk.mdwn b/hurd/documentation/hurd-talk.mdwn
new file mode 100644
index 00000000..83dcaf74
--- /dev/null
+++ b/hurd/documentation/hurd-talk.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta redir=/hurd-talk]]
diff --git a/hurd/documentation/translators.html b/hurd/documentation/translators.html
index 4e47a9c0..8ae2c180 100644
--- a/hurd/documentation/translators.html
+++ b/hurd/documentation/translators.html
@@ -1,10 +1,10 @@
-[[meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation,
+[[!meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation,
Inc."]]
-[[meta license="Verbatim copying and distribution of this entire article is
+[[!meta license="Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved."]]
-[[meta title="Translators"]]
+[[!meta title="Translators"]]
By Marcus Brinkmann.
diff --git a/hurd/faq.mdwn b/hurd/faq.mdwn
index 0227f1c1..be30e1b4 100644
--- a/hurd/faq.mdwn
+++ b/hurd/faq.mdwn
@@ -1,16 +1,16 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="GNU Hurd FAQ"]]
+[[!meta title="GNU Hurd FAQ"]]
-[[inline
+[[!inline
pages="hurd/faq/* and !*/discussion"
show=0
feeds=no
diff --git a/hurd/faq/old-stuff.mdwn b/hurd/faq/old-stuff.mdwn
index 1bcc09a0..df2058c0 100644
--- a/hurd/faq/old-stuff.mdwn
+++ b/hurd/faq/old-stuff.mdwn
@@ -1,12 +1,12 @@
In addition to the [general FAQ](http://www.gnu.org/software/hurd/docs.html#TOCfaq) there are the following typical newbie questions. (There is an [updated version](http://tuxou.ouvaton.org/hurd/) which is not official yet.)
-If you still have problems, do not hesitate to make use of the [[mailing_lists]] or the [[IRC]].
+If you still have problems, do not hesitate to make use of the [[mailing lists]] or the [[IRC]].
* **_You say GNU, don't you mean GNU/Hurd?_**
* Yes and no. GNU refers to the system as a whole, while GNU/Hurd is more specific, saying that it is the GNU system running on the Hurd -- to differentiate it from the GNU system running on Linux, GNU/Linux. Also see [[GNU/GnuNames]]
* **_What editor can I use?_**
- * `nano` is the default editor on a fresh install, not `ae`.
+ * `nano` is the default editor on a fresh install, not `ae`, but a lot of editors are available.
* **_Why can't I get the answers I need from Hurd hackers?_**
* This [document](http://www.catb.org/~esr/faqs/smart-questions.html) may help you understand some developers attitudes and social norms.
@@ -28,16 +28,16 @@ If you still have problems, do not hesitate to make use of the [[mailing_lists]]
* These are different versions of the Mach microkernel that supports the Hurd that runs on top of it. For more info, see [[Mach]]
* **_What software is available for GNU?_**
- * Most packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Programs which need pthreads, including [GNOME](http://www.gnome.org), [KDE](http://www.kde.org), [Mozilla](http://www.mozilla.org), [OpenOffice](http://www.openoffice.org), [SDL](http://www.libsdl.org), etc. are being worked on currently using Neal Walfields libpthreads. See the [[Distrib/PortingIssues]] document for some common build problems and their solutions.
+ * Most (2/3) packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Notably, [GNOME](http://www.gnome.org), and [KDE](http://www.kde.org) work. See the [[porting/guidelines]] document for some common build problems and their solutions.
* If you can't fetch a package with "apt-get install ", try building it from source: "apt-get source &amp;&amp; cd &lt;package\_dir&gt; &amp;&amp; debian/rules binary".
- * As of January 2007, 50% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome.
+ * As of April 2010, 65% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome.
* **_How do I initialize a serial console on the Hurd?_**
* You can try out the Serial Howto at <http://www.nongnu.org/thug/serial-howto.txt>
* For a real serial console at boot time you need to rebuild your GNUmach 1.x kernel. For more info see the Utah release notes at [http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial\_console](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial_console)
* **_Will GNU work in Vmware?_**
- * It's highly recommended and easier to get a full image for Bochs. See [[Distrib]]
+ * It's highly recommended and easier to get a full image for qemu. See [[Distrib]]
* It didn't use to, [Hurd bootstrap fails](http://lists.debian.org/debian-hurd/2002/debian-hurd-200207/msg00069.html). Vmware is not [free software](http://www.gnu.org/philosophy/free-sw.html) and it is [[Distrib/VmWare]]. We recommend to use [free](http://www.gnu.org/philosophy/free-sw.html) alternatives, like [[Distrib/BochsEmulator]].
* A faster, more widespread and [free](http://www.gnu.org/philosophy/free-sw.html) recent alternative is [QEMU][[running/QEMU]]. You can find more informations on [[running/QEMU]].
* If someone prefers using VMWare:
diff --git a/hurd/faq/old_faq.txt b/hurd/faq/old_faq.txt
index de76889e..617d7661 100644
--- a/hurd/faq/old_faq.txt
+++ b/hurd/faq/old_faq.txt
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Frequently Asked Questions about the GNU Hurd
diff --git a/hurd/faq/release.mdwn b/hurd/faq/release.mdwn
index c93ba353..d80c6825 100644
--- a/hurd/faq/release.mdwn
+++ b/hurd/faq/release.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="When will the Hurd be released?"]]
+[[!meta title="When will the Hurd be released?"]]
Next year.
diff --git a/hurd/faq/slash_usr_symlink.mdwn b/hurd/faq/slash_usr_symlink.mdwn
index 6fa6c58d..5c47f4e1 100644
--- a/hurd/faq/slash_usr_symlink.mdwn
+++ b/hurd/faq/slash_usr_symlink.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Why is `/usr' a symbolic link to `.'?"]]
+[[!meta title="Why is `/usr' a symbolic link to `.'?"]]
The distinction between `/` and `/usr` has historical reasons. Back when [[Unix]]
systems were booted from two tapes, a small root tape and a big user tape.
diff --git a/hurd/faq/smp.mdwn b/hurd/faq/smp.mdwn
new file mode 100644
index 00000000..953784da
--- /dev/null
+++ b/hurd/faq/smp.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="Does GNU/Hurd support SMP/Multicore?"]]
+
+The Hurd servers themselves are multithreaded, so they should be able to take benefit of the parallelism brought by SMP/Multicore boxes. This has however never been tested yet because of the following.
+
+Mach used to be running on SMP boxes like the [[http://en.wikipedia.org/wiki/Intel_iPSC/860 | iPSC 860]], so has an infrastructure for running on them. It has however not (yet) been ported to nowadays' SMP standards like ACPI etc.
+
+That is why for now GNU/Hurd will only uses one logical processor (i.e. one core or one thread, depending on the socket type).
diff --git a/hurd/faq/still_useful.mdwn b/hurd/faq/still_useful.mdwn
new file mode 100644
index 00000000..bffeaebd
--- /dev/null
+++ b/hurd/faq/still_useful.mdwn
@@ -0,0 +1,46 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+what are the advantages with the Hurd over Linux, in general of course, nothing
+in depth
+
+> Flexibility for the user:
+>
+> transparent ftp
+>
+> $ cd /ftp://ftp.debian.org/debian
+> $ ls
+>
+> personnal filesystem
+>
+> $ dd < /dev/zero > myspace.img bs=1M count=1024
+> $ mke2fs myspace.img
+> $ settrans myspace /hurd/ext2fs myspace.img
+> $ cd myspace
+
+>> Just curious, but I keep seeing these (and other similar) concepts being
+>> brought up as the amazing selling points of the Hurd, but all of this is
+>> entirely doable now in Linux with FUSE or things like it.
+
+>>> Nowadays, at LAST, yes, partly.
+
+>> I'm not sure if an ftp filesystem has been implemented for FUSE yet, but its
+>> definately doable; and loopback filesystems like in your second example have
+>> been supported for years.
+
+>>> As a normal user? And establish a tap interface connected through ppp over
+>>> ssh or whatever you could want to imagine?
+
+>> What, then, are the major selling points or benefits?
+
+>>> These were just examples, Linux is trying to catch up in ugly ways indeed
+>>> (yes, have a look at the details of fuse, it's deemed to be inefficient).
+>>> In the Hurd, it's that way from the _ground_ and there is no limitation
+>>> like having to be root or ask for root to add magic lines, etc.
diff --git a/hurd/faq/top.mdwn b/hurd/faq/top.mdwn
new file mode 100644
index 00000000..9e385c0f
--- /dev/null
+++ b/hurd/faq/top.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="What is a replacement for procps' top?"]]
+
+Here is a replacement to use, until the real `top` works, which depends on
+[[hurd/translator/procfs]] and some [[!taglink porting|open_issue_porting]].
+
+ $ while :; do ps -e -v -s CPU --top=22 -r; sleep 5; done
diff --git a/hurd/gcc.mdwn b/hurd/gcc.mdwn
index 3700b8b8..53b5e071 100644
--- a/hurd/gcc.mdwn
+++ b/hurd/gcc.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[General_information|/gcc]] about the GCC.
diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn
index de85c03d..bdfed833 100644
--- a/hurd/glibc.mdwn
+++ b/hurd/glibc.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[General_information|/glibc]] about the glibc.
@@ -16,3 +17,5 @@ For information about how the glibc integrates into the system, see sections
[[Hurd-specific_API]].
[[Debugging_glibc|debugging/glibc]].
+
+[[Internals]].
diff --git a/hurd/glibc/hurd-specific_api.mdwn b/hurd/glibc/hurd-specific_api.mdwn
index 7333ec0d..aeb63d91 100644
--- a/hurd/glibc/hurd-specific_api.mdwn
+++ b/hurd/glibc/hurd-specific_api.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2002, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2002, 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Hurd-specific glibc API"]]
+[[!meta title="Hurd-specific glibc API"]]
These functions have meaning only under Hurd. They are needed to get port
names that are used in native Hurd API (the RPC calls to servers). The `.defs`
diff --git a/hurd/glibc/internals.mdwn b/hurd/glibc/internals.mdwn
new file mode 100644
index 00000000..897da92e
--- /dev/null
+++ b/hurd/glibc/internals.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+Some bits about this, some bits about that.
+
+# Controlling TTY
+
+Hurd controlling tty behavior is generally consistent with BSD's, including
+`TIOCSCTTY`. Linux also has `TIOCSCTTY` and it is harmless to use it there.
+But BSD and Hurd never do an implicit `TIOCSCTTY` (hence our `O_NOCTTY` is
+zero).
+
+C.f. <http://lists.gnu.org/archive/html/bug-hurd/2009-10/msg00030.html> and the
+following messages.
+
+# Sinals
+
+[[Unix]] signals are implemented in glibc.
+
+In every process, signals are handled in a separate signal thread.
+
+ [Why does kill hang sometimes?]
+ <youpi> kill send the signal to the process
+ <youpi> if the process is hung, killing waits
+ <youpi> signals should be just asynchronous, but apparently for some reason
+ Roland & co wanted some syunchronization
+
+[[!taglink open_issue_glibc]]
diff --git a/hurd/history.mdwn b/hurd/history.mdwn
deleted file mode 100644
index 58a75927..00000000
--- a/hurd/history.mdwn
+++ /dev/null
@@ -1,91 +0,0 @@
-[[meta copyright="Copyright © 1998, 1999, 2001, 2002, 2007, 2008, 2009 Free
-Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-Richard Stallman (RMS) started GNU in 1983, as a project to create a
-complete free operating system. In the text of the GNU Manifesto, he
-mentioned that there is a primitive kernel. In the first GNUsletter,
-Feb. 1986, he says that GNU's kernel is TRIX, which was developed at
-the Massachusetts Institute of Technology.
-
-By December of 1986, the Free Software Foundation (FSF) had "started
-working on the changes needed to TRIX" [Gnusletter, Jan. 1987].
-Shortly thereafter, the FSF began "negotiating with Professor Rashid
-of Carnegie-Mellon University about working with them on the
-development of the Mach kernel" [Gnusletter, June, 1987]. The text
-implies that the FSF wanted to use someone else's work, rather than
-have to fix TRIX.
-
-In [Gnusletter, Feb. 1988], RMS was talking about taking Mach and
-putting the Berkeley Sprite filesystem on top of it, "after the parts
-of Berkeley Unix... have been replaced."
-
-Six months later, the FSF is saying that "if we can't get Mach, we'll
-use TRIX or Berkeley's Sprite." Here, they present Sprite as a
-full-kernel option, rather than just a filesystem.
-
-In January, 1990, they say "we aren't doing any kernel work. It does
-not make sense for us to start a kernel project now, when we still
-hope to use Mach" [Gnusletter, Jan. 1990]. Nothing significant occurs
-until 1991, when a more detailed plan is announced:
-
-<BLOCKQUOTE>
-We are still interested in a multi-process kernel running on top of
-Mach. The CMU lawyers are currently deciding if they can release Mach
-with distribution conditions that will enable us to distribute it. If
-they decide to do so, then we will probably start work. CMU has
-available under the same terms as Mach a single-server partial Unix
-emulator named Poe; it is rather slow and provides minimal
-functionality. We would probably begin by extending Poe to provide
-full functionality. Later we hope to have a modular emulator divided
-into multiple processes. [Gnusletter, Jan. 1991].
-</BLOCKQUOTE>
-
-RMS explains the relationship between the [[documentation/Hurd_and_Linux]], where he mentions
-that the FSF started developing the Hurd in 1990. As of [Gnusletter,
-Nov. 1991], the Hurd (running on Mach) is GNU's official kernel.
-
----
-
-# Announcements
-
-These are all the announcements made over the years. Most of them were
-either sent to the <A HREF="news:gnu.announce">gnu.announce</A> news group or Hurd interest
-mailing lists.
-
- * [[hurd-flash15]] -- Release 0.2 announcement (complete GNU system)
- * [[hurd-flash14]] -- Release 0.2 announcement (Hurd)
- * [[hurd-flash13]] -- Test release announcement (Aug 96)
- * [[hurd-flash12]] -- Test release status (Jul 96)
- * [[hurd-flash11]] -- Binary image available, Apr 96
- This and [NetBSD](http://www.netbsd.org/) boot flopies should be enough to
- get a working GNU/Hurd system!
- * [[hurd-flash10]] -- New Snapshot, Apr 96 -- NFS and lots else works!
- * [[hurd-flash9]] -- News Flash, Nov 95 -- ftp works!
- * [[hurd-flash8]] -- New Snapshot, Jul 95 -- ext2fs support
- * [[hurd-flash7]] -- New Snapshot, Apr 95
- * [[hurd-flash6]] -- News flash, Nov 94
- * [[hurd-flash5]] -- News flash, Sep 94 -- gcc runs!
- * [[hurd-flash4]] -- News flash, Aug 94
- * [[hurd-flash3]] -- News flash, Jul 94 -- emacs runs!
- * [[hurd-flash2]] -- News flash, May 94
- * [[hurd-flash]] -- News flash, Apr 94 -- it boots!
- * [[hurd-announce2]] -- GNU Hurd announcement, Nov 93
- * [[hurd-announce]] -- GNU Hurd announcement, May 91
-
----
-
- * [History
- 1997-2003](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html)
- -- personal view of Marcus Brinkmann about Hurd development in 1997-2003.
-
----
-
- * [[Port_to_L4]]
diff --git a/hurd/history/hurd-announce b/hurd/history/hurd-announce
deleted file mode 100644
index 2f165ad8..00000000
--- a/hurd/history/hurd-announce
+++ /dev/null
@@ -1,47 +0,0 @@
-From mib@PREP.AI.MIT.EDU Tue May 7 12:07:53 1991
-From: mib@PREP.AI.MIT.EDU
-Newsgroups: gnu.announce
-Subject: FSF work on a GNU OS
-Date: 6 May 91 22:15:22 GMT
-Reply-To: mib@prep.ai.mit.edu
-Distribution: gnu
-Organization: GNUs Not Usenet
-
-The Free Software Foundation is beginning work on a GNU operating
-system built on top of the Mach 3.0 microkernel. There are three
-goals to this project worth noting:
-
-o Binary compatability with 4.4 BSD, and other U*x or U*xish systems
- on other hardware where appropriate, convenient, and consistent with
- the design;
-
-o Posix compliance (in combination with the GNU C Library and the GNU
- C Compiler); and
-
-o Ease of use as well as several new features and functionality.
-
-
-I am interested in constructive criticism on the interfaces, design,
-and implementation from experts in the field of OS research and design
-consistent with the above goals. Advice from seasoned U*x hackers is
-especially welcome.
-
-We have a mailing list for discussion. Currently there is little
-discussion on the group; the major contributors to the ideas behind
-the design all live in the Boston area at this point, and work has
-been done via face-to-face communication. I would like to open the
-field of discussion to a broader base, both to get wider dissemination
-of the ideas behind the current design, as well as to get a greater
-breadth of criticism. Periodic postings are currently made to the
-mailing list containing a snapshot of the interfaces used by the
-various pieces of the system. I would like to see discussion as well;
-perhaps we need a critical mass to get this.
-
-Interested individuals should send me email. I don't regularly read
-the newsgroups to which this message is posted.
-
-
-[U*x is an abbreviation for a well-known trademark of AT&T. :-)]
-
- -mib
-
diff --git a/hurd/history/hurd-announce2 b/hurd/history/hurd-announce2
deleted file mode 100644
index dce41c43..00000000
--- a/hurd/history/hurd-announce2
+++ /dev/null
@@ -1,143 +0,0 @@
-From mib@gnu.ai.mit.edu Wed Nov 3 21:51:03 1993
-Path: usenet.ee.pdx.edu!cs.uoregon.edu!ogicse!emory!nigel.msen.com!sdd.hp.com!swrinde!cs.utexas.edu!uunet!spool.mu.edu!bloom-beacon.mit.edu!ai-lab!prep.ai.mit.edu!gnulists
-From: mib@gnu.ai.mit.edu (Michael I Bushnell)
-Newsgroups: gnu.announce,gnu.misc.discuss
-Subject: Hurd status and call for volunteers
-Message-ID: <9311020719.AA02206@geech.gnu.ai.mit.edu>
-Date: 1 Nov 93 21:19:05 GMT
-Article-I.D.: geech.9311020719.AA02206
-Followup-To: gnu.misc.discuss
-Distribution: world
-Lines: 124
-Approved: info-gnu@prep.ai.mit.edu
-To: info-gnu@prep.ai.mit.edu
-X-Shopping-List:
- (1) Chaotic casino griddles (2) Cervical congestion (3) Neoclassical
- consoles
-Xref: usenet.ee.pdx.edu gnu.announce:160 gnu.misc.discuss:3985
-
-This message to help sate curiosity, as well as to ask for volunteers.
-Until we are ready for alpha test, this is the last such message that
-will be posted here. If you want to receive further such messages,
-send mail to hurd-ann-request@gnu.ai.mit.edu and ask to be put on that
-(moderated) announcements list.
-
-
-What is already done with the Hurd:
-
-The filesystem is complete; it runs (read-only), and most of its calls
-have been tested and work. The filesystem is able to download
-programs, by a kludge similar to the kludge used to enable the kernel
-to download the first task. In the actual bootstap sequence, it will
-download the execserver.
-
-The proc and auth servers are completed; the exec server is nearly
-complete (for a.out, not for bfd).
-
-C library support for Mach and Hurd rpc stubs, and some of the mach
-and hurd specific code, is done. Much untested and probably wrong
-code has been written to implement Unix "system calls". A large piece
-of this (the descriptor management code) is believed by Roland to have
-some architectural flaw, but he isn't sure.
-
-Some small filesystem servers (shadow directories, for example) have
-been written, but have not been compiled, let alone tested.
-
-
-There are currently three things happening wrt the Hurd:
-
-I am spending nearly all my time getting things to boot and run. My
-work is currently directed toward that goal; in the immediate present
-I am working with Roland on getting the library in its near-final
-state (which will last a long time) to make compiling easier. It is
-because this is nearly done that I can send this message.
-
-Roland is working on the library. Most of the remaining architectural
-work is done and being tested. Then Roland will work on integrating
-cthreads (which is mostly busywork), miscellaneous filesystem calls,
-and then file descriptors. After that comes signals.
-
-Jan Brittenson will be working on the network server library. This is
-a library that, when linked against a BSD protocol stack, will produce
-a Hurd network server. (Such a server implements the socket interface
-in socket.defs.)
-
-
-There are four general tasks that can be done by other people:
-
-1. Completing the existing work on the terminal driver. The existing
-work implements most of the logic you already associate with a Posixy
-terminal driver; it needs the port management and buffering logic
-added.
-
-2. Writing a readline terminal driver. We will want, as an
-alternative to the Posixy terminal driver, a readline type terminal
-driver.
-
-3. Writing miscellaneous shell utilities. Here we need shell
-utilities to create translators, etc. They should have a nice rich
-set of features to do all kinds of GNU things.
-
-4. Writing miscellaneous filesystem servers. Here we need a
-transparent tar server, a transparent FTP server, and the like.
-
-
-Future plans for work to be written by me (once the bootstrap works,
-and in addition to testing library code as Roland finishes it):
-
-o split the existing filesystem into three parts:
- o a library for port management for complicated multi-threaded
- servers;
- o a library for "normal" disk-based filesystems;
- o ufs specific code.
-
-o Write the PF_FILE socket server (what you know as PF_UNIX).
-
-o Finish the posixy terminal driver if nobody else has.
-
-o Write miscellaneous shell utilities that nobody else has.
-
-o Build a self-hosting system.
-
-
-What you need in order to be able to help now:
-
-o A 386 PC running Mach 3.0. If you have some other kind of hardware,
- then you need to port the GNU C library support first. I'm not
- entirely sure how much work that involves; you will need to contact
- Roland. It might be too much trouble at this point to spend any
- effort on it. It's best if it's a machine for which a free port of
- Mach is available, though you could do useful work even if it's not.
-
- If you are not currently running Mach 3.0 with somebody's
- single-server, then it is very unlikely you could help, unless you
- have a Unix source license. In that case, you could talk to CMU
- (write mach@cs.cmu.edu) to find out how to get Mach 3.0 running on
- your machine. It is not possible to do development without a Unix
- emulator of some kind; just bare Mach 3.0 is not sufficient. I have
- neither the time nor knowledge to help someone get a 3.0
- single-server system running.
-
-o Clue. I don't have enough time to explain operating systems or Unix
- to people. You need to have an iron-clad grasp of Unix semantics
- (specificaly BSD); it's essential that things be exactly right from
- that standpoint. It's not enough that you've programmed Unix
- before; you need to understand all the nits. However, you may
- disregard my previous comments about a "two question limit". You do
- need the ability to intuit to some extent, however.
-
-o Time. It's not good for me to delegate a task and then have nothing
- happen on it. If you have a full-time job where you can't justify
- Hurd work as part of your job, you might find that you don't really
- have as much time as you thought. Please make sure you really have
- enough time before volunteering for a task.
-
-o Efficient net access. Without a real Internet connection (mail only
- is not sufficient), it will be impossible for you to do development
- right now.
-
-
-If you think you can help, send me email. If you don't think you can
-help right now, then don't give up: the list of conditions will change
-as the list of delegatable tasks changes.
-
diff --git a/hurd/history/hurd-flash b/hurd/history/hurd-flash
deleted file mode 100644
index d1bacc79..00000000
--- a/hurd/history/hurd-flash
+++ /dev/null
@@ -1,22 +0,0 @@
-Path: gnurd!usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!swrinde!gatech!europa.eng.gtefsd.com!MathWorks.Com!news.kei.com!bloom-beacon.mit.edu!ai-lab!life.ai.mit.edu!mib
-From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
-Newsgroups: gnu.misc.discuss,comp.os.mach
-Subject: Hurd now bootstraps
-Date: 05 Apr 1994 21:49:50 GMT
-Organization: Free Software Foundation, Cambridge, MA
-Lines: 11
-Message-ID: <MIB.94Apr5174952@churchy.gnu.ai.mit.edu>
-NNTP-Posting-Host: churchy.gnu.ai.mit.edu
-
-
-The GNU Hurd now bootstraps, successfully starting the core servers
-(the filesystem, exec server, process server, auth server, and init)
-and running the first program. A snapshot of the code that did this
-is on alpha.gnu.ai.mit.edu in the usual place, /gnu/hurd-snap.tar.gz.
-
---
-+1 617 623 3248 (H) | The soul of Jonathan was bound to the soul of David,
-+1 617 253 8568 (W) -+- and Jonathan loved him as his own soul.
-1105 Broadway | Then Jonathan made a covenant with David
-Somerville, MA 02144 | because he loved him as his own soul.
-
diff --git a/hurd/history/hurd-flash10 b/hurd/history/hurd-flash10
deleted file mode 100644
index d6d5685b..00000000
--- a/hurd/history/hurd-flash10
+++ /dev/null
@@ -1,25 +0,0 @@
-Date: Mon, 15 Apr 1996 15:28:29 -0400
-Message-Id: <199604151928.PAA00636@geech.gnu.ai.mit.edu>
-From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
-To: hurd-ann@gnu.ai.mit.edu
-Subject: New Hurd snapshot available
-X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
-+$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
-+ b+++ !D B-- e+ u++(*) h* f? r n y++
-X-Tom-Swiftie: "Use the `&' operator to get the address," Tom pointed out.
-Sender: owner-abshurd@cs.pdx.edu
-Precedence: bulk
-
-
-I have just cut a new source snapshot. If things go nicely, a binary
-snapshot may appear soon as well. You can find this snapshot as
-
-ftp://alpha.gnu.ai.mit.edu/gnu/hurd-snap-960415.tar.gz
-
-Many many things work! Emacs built native and just *went*. The
-system now works standalone; you can use gdb (it's much nicer than
-other mach-ish gdb's, of course); the network is functional (complete
-with NFS), etc.
-
-Michael
-
diff --git a/hurd/history/hurd-flash11 b/hurd/history/hurd-flash11
deleted file mode 100644
index 57851b01..00000000
--- a/hurd/history/hurd-flash11
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Miles Bader <miles@gnu.ai.mit.edu>
-To: hurd-ann@gnu.ai.mit.edu
-Date: Thu, 18 Apr 1996 19:08:07 -0400
-Subject: hurd binary image
-
-
-A filesystem image from a working hurd system, corresponding to the latest
-snapshot, is available as:
-
- ftp://alpha.gnu.ai.mit.edu/gnu/hurd-image-960418.tar.gz
-
-The whole tree takes about 37meg (warning -- it unpacks into `.'). Follow
-the instructions in ./INSTALL-binary to make a working hurd system.
-
-Due to a timely trashing of the disk on our main hurd machine, it has been
-verified that it is possible to make a bootable hurd system from scratch
-using this image and a set of netbsd 1.1 boot floppies...
-
-The sources for the mach kernel included in the image are available in the
-same directory as mach4-UK22.tar.gz and mach4-i386-UK22.tar.gz.
-
--Miles
---
-Miles Bader / miles@gnu.ai.mit.edu / (617) 253-8568
-Amadera e ike!
diff --git a/hurd/history/hurd-flash12 b/hurd/history/hurd-flash12
deleted file mode 100644
index 5be9c94e..00000000
--- a/hurd/history/hurd-flash12
+++ /dev/null
@@ -1,76 +0,0 @@
-From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
-Newsgroups: gnu.misc.discuss
-Subject: Hurd 0.0 release status
-Followup-To: gnu.misc.discuss
-Date: 13 Jul 1996 23:53:41 GMT
-Organization: Touring Consulting Services
-Lines: 35
-Message-ID: <MIB.96Jul13195341@gnu.ai.mit.edu>
-NNTP-Posting-Host: churchy.gnu.ai.mit.edu
-
-
-People are eager to know how close we are to release, so here's an
-update:
-
-There is one rather annoying bug I'd like to find which is causing
-random crashes. I expect this will not be too hard to locate. There
-are some more trivial bugs, but the release will not be held up for
-them.
-
-Forty-three packages of GNU software have been built native.
-Remaining to be built are three packages for which new releases are
-expected soon.
-
-Also remaining to be built native are bash, gdb, mach, the Hurd
-itself, and the internet utilities and daemons. We intend to sync our
-separate copy of libc source with the libc maintainer, and then build
-it native too.
-
-Because of obnoxious export restrictions, we have still to make
-separate shared libraries for the crypt functions.
-
-Except for the actual final packaging, all the release engineering
-tasks to be done have been completed.
-
-
-To summarize, we still need to:
-
-o Fix one obnoxious bug
-o Compile three packages that are waiting for release;
-o Compile gdb, bash, mach, and hurd native
-o Sync libc source and compile native
-o Deal with crypt shared libraries
-o Final packaging
-
-Michael
-
-From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
-Newsgroups: gnu.misc.discuss
-Subject: Re: Hurd--ne plus ultra of vaporware?
-Date: 17 Jul 1996 03:02:14 GMT
-
-In article <4sg6tp$n4t@linux.cs.Helsinki.FI> torvalds@linux.cs.Helsinki.FI (Linus Torvalds) writes:
-
- Hey! We could also ask some well-known rock-group for one of their
- lyrics, and use that as the theme song for the Hurd release. And then
- we could ask shops to stay open longer to sell the Hurd! Whaddaya think?
- Don't say it has been delayed, just shout so loudly about all the new
- features that nobody cares about the delay?
-
-Perhaps we could get Morrisey to sing the song. He's very good
-looking. Much better looking than that Mick Jagger fellow.
-
-Or something delicate, like Bach's French Suite in G. That would be
-fun.
-
-In any case, here's the state of the release:
-
-o Everything but nine packages has been compiled native.
-o The random crash bug I alluded to is fixed.
-o We have to build a floppy image for part of the installation instructions.
-
-That's it. I bet you nobody in Redmond has ever made a statement like
-that...
-
-Michael
-
diff --git a/hurd/history/hurd-flash13 b/hurd/history/hurd-flash13
deleted file mode 100644
index a2de6bfd..00000000
--- a/hurd/history/hurd-flash13
+++ /dev/null
@@ -1,120 +0,0 @@
-Date: Mon, 5 Aug 1996 22:36:31 -0400
-From: thomas@gnu.ai.mit.edu (Thomas Bushnell, n/BSG)
-To: info-gnu@prep.ai.mit.edu, hurd-ann@gnu.ai.mit.edu, hurd-dev@gnu.ai.mit.edu
-Subject: Hurd 0.0 and GNU 0.0 released
-X-Name-Change: My name used to be `Michael'; now it is `Thomas'.
-X-Tom-Swiftie: "I guess I shouldn't have broken the mirror," Tom reflected.
-
-
-
-
-I am pleased to announce version 0.0 of the GNU Hurd, available via
-anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
-/pub/gnu/hurd-0.0.tar.gz (about 1.2 MB compressed).
-
-This file contains complete source code for the following:
-
-Hurd servers:
-
- auth, crash, devio, devport, exec, ext2fs, fifo, fwd, ifsock, init,
- magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
- ufs.
-
-Hurd libraries:
-
- diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
- shouldbeinlibc, store, threads, trivfs.
-
-Hurd utilities and other programs:
-
- boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
- storeinfo, login, w, uptime, hurdids, loginpr, sush, vmstat,
- portinfo, devprobe, reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs,
- stati.ufs, getty, rc.
-
-
-------
-
-
-In addition, we have prepared a binary distribution of a complete
-version 0.0 GNU system corresponding to this Hurd release. This
-release runs only on PC-AT compatible systems with i[345]86
-processors.
-
-The GNU Hurd, plus Mach, is a kernel, not an operating system. The
-GNU operating system, like the Unix operating system, consists of many
-components, including kernel, libraries, compilers, assembler, shell,
-parser generators, utilities, window system, editors, text formatters,
-and so on. The GNU project set out a decade ago to develop this
-system, and we've been writing various components of it ever since.
-
-This release uses the `UK22' version of the Mach kernel, as
-distributed by the University of Utah. It is too difficult to prepare
-a detailed list of supported devices at this point. Common disk
-controllers and ethernet cards are generally supported.
-
-This release does not contain the X Window System.
-
-This release may be fetched by anonymous FTP from prep.ai.mit.edu
-[18.159.42] in the directory /pub/gnu/gnu-0.0/.
-
-In that directory, you should find the following files:
-
- README
- SOURCES
- INSTALL-binary
- grub-boot.image (about 1.4 MB, not compressed)
- gnu-0.0.tar.gz (about 56.9 MB compressed)
- gnu-0.0-stripped.tar.gz (about 26.2 MB compressed)
-
-SOURCES contains a complete list describing the sources for the
-binaries found in the image. INSTALL-binary contains complete
-installation instructions for this release.
-
-(The files README, SOURCES, and INSTALL-binary are also found in the
-root directory of the gnu-0.0 release.)
-
-gnu-0.0.tar.gz holds the image of the complete system. It unpacks
-into a directory that requires approximately 233 MB of disk space.
-
-gnu-0.0-stripped.tar.gz holds the same contents as gnu-0.0, except
-that executable programs have been stripped to save space, and the
-libraries have had debugging symbols stripped to save space and speed
-linking. It unpacks into a directory that requires about 85.5 MB of
-disk space.
-
-We recommend using the unstripped image, or you will be unable to
-debug anything. Surely there are bugs. So fetch the unstripped
-image, at least to have around.
-
-grub-boot.image is an image of a 3.5" floppy disk that you will need
-in order to complete part of the installation instructions.
-
-The following free software packages are found in this release:
-
- autoconf, automake, bash, bc, binutils, bison, cpio, cvs, diffutils,
- doschk, e2fsprogs, ed, emacs, fileutils, findutils, flex, from, gawk,
- gcal, gcc, gdb, gdbm, gettext, glibc, gmp, gperf, grep, grub, gzip,
- hello, hurd, indent, inetutils, less, mach, make, m4, miscfiles,
- ncurses, nethack, nvi, patch, ptx, rcs, readline, recode, sed,
- serverboot, sharutils, shellutils, tar, termcap, termutils, texinfo,
- textutils, time, wdiff.
-
-
-------
-
-
-Here are md5sum checksums for the files mentioned in this message:
-
-b5f888bab3eb193fe97a00a141324c9d INSTALL-binary
-345dcd826747d7b11fc78f4db162d75b README
-1a5744bb4ed3448045fa6d24153d65fe SOURCES
-f7b1bc428bc4ee29977a5b28f5762092 gnu-0.0-stripped.tar.gz
-24554c58e5c89f295176e17d21dbae8e gnu-0.0.tar.gz
-8338c619d860b71bc4128c9c0fd39d63 grub-boot.image
-1fd18ccc4c81d051b83d28b13dc07ee2 hurd-0.0.tar.gz
-
------
-
-Br. Thomas Bushnell, n/BSG
-
diff --git a/hurd/history/hurd-flash14 b/hurd/history/hurd-flash14
deleted file mode 100644
index 2d67687a..00000000
--- a/hurd/history/hurd-flash14
+++ /dev/null
@@ -1,62 +0,0 @@
-I am pleased to announce version 0.2 of the GNU Hurd, available via
-anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
-/pub/gnu/hurd-0.2.tar.gz (about 1.37 MB compressed).
-
-(The GNU Hurd, plus Mach, is a kernel, not an operating system. The
-GNU operating system, like the Unix operating system, consists of many
-components, including kernel, libraries, compilers, assembler, shell,
-parser generators, utilities, window system, editors, text formatters,
-and so on. The GNU project set out a decade ago to develop this
-system, and we've been writing various components of it ever since.)
-
-This release contains many bug fixes from version 0.1. Many thanks to
-all the people who are helping find bugs!
-
-The best way you can help find bugs is to try and compile and use on
-the Hurd as many programs as you can find and find out where bugs
-still exist. There are also unimplemented features, and your reports
-will help us to prioritize which things we work on.
-
-The system is vastly more reliable than it has been in the past.
-
-One important addition:
-
- New programs addauth, rmauth, unsu, su, and setauth modify the uid
- sets of running programs. Using addauth you can add root to your
- emacs, write a file, and then use rmauth to take the uid back. (Of
- course, passwords are required when necessary.) New program `ids'
- will tell you what all the user ids are that a program has. Note
- that in the Hurd a program can have several user ids all at once,
- just like Unix supports having several group ids. Now that you can
- dynamically change the ids of running programs, system
- administration (among other things) becomes much easier.
-
-For more detailed news, see the NEWS file in the distribution.
-
-This release contains complete source code for the following:
-
-Hurd servers:
-
- auth, crash, devport, exec, ext2fs, fifo, fwd, ifsock, init,
- magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
- ufs, storeio, firmlink.
-
-Hurd libraries:
-
- diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
- shouldbeinlibc, store, threads, trivfs, hurdbugaddr, ftpconn
-
-Hurd utilities and other programs:
-
- boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
- storeinfo, login, w, uptime, ids, sush, vmstat, portinfo, devprobe,
- reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs, stati.ufs, getty,
- rc, e2os, vminfo, nfsd, mail.local, serverboot, MAKEDEV, loginpr,
- addauth, rmauth, unsu, setauth, ftpcp, ftpdir.
-
-We are also making a complete GNU 0.2 binary release, which will
-include Hurd 0.2, glibc 2.0.4, gnumach 1.1.2, and many other
-programs. This binary release is announced separately.
-
-
-Thomas Bushnell, n/BSG
diff --git a/hurd/history/hurd-flash15 b/hurd/history/hurd-flash15
deleted file mode 100644
index 0785ac59..00000000
--- a/hurd/history/hurd-flash15
+++ /dev/null
@@ -1,60 +0,0 @@
-
-I am pleased to announce version 0.2 of the complete Hurd based GNU
-system. This release runs only on PC-AT compatible systems with
-i[3456]86 processors.
-
-The GNU Hurd, plus Mach, is a kernel, not an operating system. The
-GNU operating system, like the Unix operating system, consists of many
-components, including kernel, libraries, compilers, assembler, shell,
-parser generators, utilities, window system, editors, text formatters,
-and so on. The GNU project set out a decade ago to develop this
-system, and we've been writing various components of it ever since.
-
-This release uses the GNUmach distribution of the Mach kernel, version
-1.1.3. Popular PC devices are generally supported.
-
-This release does not contain the X Window System.
-
-This release may be fetched from the directory
-ftp://prep.ai.mit.edu/pub/gnu/gnu-0.2. (prep.ai.mit.edu is 18.159.42,
-for the nameserver-impaired).
-
-In that directory, you should find the following files:
-
-README
-SOURCES
-INSTALL-binary
-grub-boot.image (about 1.5 MB, not compressed)
-gnu-0.2.tar.gz (about 73 MB compressed)
-
-SOURCES contains a complete list describing the sources for the
-binaries found in the image. INSTALL-binary contains complete
-installation instructions for this release.
-
-(The files README, SOURCES, and INSTALL-binary are also found in the
-root directory of the gnu-0.2 release.)
-
-gnu-0.2.tar.gz holds the image of the complete system. It unpacks
-into a directory that requires approximately 285 MB of disk space.
-
-grub-boot.image is an image of a 3.5" floppy disk that you will need
-in order to complete part of the installation instructions.
-
-The following free software packages are included in this release:
-
-autoconf automake bash bc binutils bison cpio cvs diffutils doschk
-e2fsprogs ed emacs emacs lisp manual fileutils findutils flex from g77
-gawk gcal gcc gdb gettext glibc gmp gnuchess gnumach gnugo grep grub
-gzip hello hurd indent inetutils less libg++ lynx m4 make miscfiles
-ncurses nethack nvi patch perl ptx readline rcs recode sed sendmail
-sh-utils sharutils tar termutils texinfo textutils time wdiff
-
---
-
-Here are md5sum checksums for the files mentioned in this message:
-
-3749b016ab581e007b90d17b9092e134 INSTALL-binary
-1f800c326ba4c3a0b3f3a3463597317b README
-40d1e1a38dd86f28fe2718081ac865cb SOURCES
-f29c1a03c1667a8019b66f6effa89d39 gnu-0.2.tar.gz
-8ad3c7254802a16068a956e836266212 grub-boot.image
diff --git a/hurd/history/hurd-flash2 b/hurd/history/hurd-flash2
deleted file mode 100644
index b1d4f66f..00000000
--- a/hurd/history/hurd-flash2
+++ /dev/null
@@ -1,152 +0,0 @@
-From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
-Newsgroups: gnu.misc.discuss,comp.os.mach,comp.os.linux.development,comp.os.linux.misc,comp.unix.pc-clone.32bit
-Subject: GNU Hurd Task List and Call for Volunteers
-Followup-To: gnu.misc.discuss
-Date: 18 May 1994 17:54:47 GMT
-Organization: FOO
-Lines: 140
-Message-ID: <MIB.94May18135447@churchy.gnu.ai.mit.edu>
-NNTP-Posting-Host: churchy.gnu.ai.mit.edu
-Xref: usenet.ee.pdx.edu gnu.misc.discuss:7630 comp.os.mach:1434 comp.os.linux.d
-evelopment:9867 comp.os.linux.misc:16767 comp.unix.pc-clone.32bit:5854
-
-
-Now that the Hurd can run (albeit haltingly) on its own, it is
-possible for people who do not have Mach 3.0 single-servers to
-contribute without much trouble. (However, if you don't have a
-single-server, you probably won't be able to use a debugger, but that
-doesn't mean you can't do debugging, right?)
-
-We at the FSF don't have any expertise in setting up Mach 3.0
-machines; the machines that we do development on belong to the Open
-Software Foundation and were set up by them. So one of the things on
-the task list is to organize things so that people (like us and most
-of you) who don't know how to do it can do it. It's not impossible to
-figure out, it's just a pain and a marvelous thing for a volunteer to
-do.
-
-You can get Mach 3.0 from CMU; you get the C library and the Hurd from
-us. You need the soon-to-be-released version 1.07.6 of the C library
-and the latest Hurd snapshot (as well as our special version of MiG)
-from alpha.gnu.ai.mit.edu.
-
-All our work is based upon i386. The Hurd (except for a few programs;
-see the Hurd README file) is machine independent. The C library
-should not be too much trouble to port. Ports and information about
-porting difficulty for either of these are greatly desired.
-
-The Hurd is not yet self-hosting. While you are welcome to fetch the
-code and put things together, it is not likely that you will have a
-useful system right now. But you might be able to do significant work
-(see the task list below). And, even if you can't do significant
-work, I'm interested in hearing about any places where you had
-particular difficulty.
-
-If you want to start on one of these tasks, please let me know so I
-can keep track of volunteers properly. This task list will be updated
-periodically; gnu@prep.ai.mit.edu always has the latest version.
-
- -mib
-
-GNU Hurd Task List Version 1.0.
-
-If you would like to work on one of these, please contact mib@gnu.ai.mit.edu.
-
-
-Mach 3.0 Work
-
- o Mach 3.0 comes with CMU makefiles that depend on a drecky environment.
- It would be very helpful to have makefiles and installation stuff so
- that it worked well for cross-compilation between systems and used
- GNU tools.
-
- o MiG needs to be made able to support cross-compilation.
-
- o A replacement for MiG that understood C .h files.
-
- o Bootstrap tools and documentation to help people set up Mach 3.0
- machines if they already have Linux; if they already have Net BSD;
- if they don't have anything.
-
- o Mach 3.0 needs to provide support for task virtual timers similar
- in functionality to the Unix ITIMER_PROF and ITIMER_VIRTUAL timers.
-
- o Mach 3.0 needs to provide a way for users to do statistical PC
- profiling similar to the Unix profil system call.
-
- o Mach 3.0 needs a facility to automatically send task and thread
- status on task/thread exit to a port that can only be changed by
- a privileged user; this would be used to implement process
- accounting.
-
- o Mach 3.0 needs a facility to find out what task is the parent of
- a given task.
-
- o Mach 3.0 needs a facility to find out which pages of a task's
- address space are in core to implement Unix's mincore call.
-
- o Mach 3.0 needs a facility to do msync.
-
- o Mach 3.0 needs a replacement for MEMORY_OBJECT_COPY_CALL that
- works at least for the cases needed in ordinary files. (Write mib if
- you want to know what the problem is and some ideas about how to
- solve it.)
-
- o Mach 3.0 needs proxy memory objects. (mib can tell you what these
- are and why they are important.)
-
- o Mach 3.0 needs a way to do per-task resource counters that are
- accessible to servers called by the task.
-
- o Mach 3.0 needs facilities to implement resource limits of various sorts.
-
- o Mach 3.0 needs a way to have a thread's CPU time statistics
- include time spent by servers on its behalf.
-
- o Of course, free ports are always necessary to machines that don't
- already have free ports.
-
- o Much work can be done doing research in how to improve Mach VM
- performance and timesharing scheduling policy.
-
-
-Hurd work (these are brief descriptions; mib can give more information):
-
- o We need a translator for /dev.
-
- o We need a replacement for utmp and wtmp that understands the
- Hurd `login collection' concept. Programs like who and finger
- then need to be changed to use this.
-
- o We need some existing shell programs changed to do Hurd things:
- like ls, su, fsck, tar, cpio, etc.
-
- o Some new programs need to be written: login, getty, ps, tools
- for new filesystem features.
-
- o Shadow directory translators. (Roland has the beginnings of this.)
-
- o A system for write, send, talkd and so forth to bleep users;
- this should be integrated with the utmp replacement above.
-
- o X.
-
- o A filesystem for /tmp that uses virtual memory instead of disk.
-
- o Filesystem implementations (using libdiskfs) for other popular
- formats, especially the Linux formats as well as MSDOG.
-
- o Transparent FTP translator.
-
- o NFS client implementation. You should start with BSD's 4.4 code
- and support the extensions they support; don't worry about Hurd
- extensions right now. (The server we want to write ourselves
- because it will probably involve changing the Hurd interfaces.)
-
- o A fancy terminal driver that uses readline and supports detach/attach.
-
---
-+1 617 623 3248 (H) | The soul of Jonathan was bound to the soul of David,
-+1 617 253 8568 (W) -+- and Jonathan loved him as his own soul.
-1105 Broadway | Then Jonathan made a covenant with David
-Somerville, MA 02144 | because he loved him as his own soul.
diff --git a/hurd/history/hurd-flash3 b/hurd/history/hurd-flash3
deleted file mode 100644
index 19a5f371..00000000
--- a/hurd/history/hurd-flash3
+++ /dev/null
@@ -1,77 +0,0 @@
-Date: Tue, 05 Jul 1994 20:15:09 -0400
-From: mib@gnu.ai.mit.edu (Michael I Bushnell)
-To: hurd-ann@gnu.ai.mit.edu
-Subject: New Hurd snapshot
-
-
-A new Hurd snapshot has been released. You can get it from
-alpha.gnu.ai.mit.edu in the file /gnu/hurd-snap.tar.gz. You will need
-the most recent version of the GNU C library; version 1.08.3 or later.
-(Version 1.08.3 is an alpha release; you can get it from
-alpha.gnu.ai.mit.edu in the same directory.)
-
-This snapshot of the Hurd has a limping terminal driver. It can run
-emacs, bash, a whole slew of utilities, and (most importantly) GNU
-Hello.
-
- -mib
-
-
-Here is the new part of the NEWS file:
-
-The Hurd now runs all the programs in the GNU fileutils, textutils,
-and shellutils distributions, with the exception of who. Most
-importantly it runs GNU Hello. Also, emacs works (with the kludgy
-`boot' terminal driver) and bash works.
-
-The simple pipes server works; it will be replaced eventually by the
-pflocal server (which isn't done yet). The terminal driver is limping
-but working. It doesn't support terminal ioctls yet. A minor bug in
-auth has been fixed. boot interprets more Hurd protocols; this was
-done to get emacs functioning. Some more-or-less serious bugs in exec
-were fixed; they were found by running emacs (a quite large executable
-indeed). At bootstrap time, init starts pipes and term itself;
-eventually these will be passive translators, but we don't want to
-write the new disk format until we're self-hosting or fsck and UX will
-get confused. The file proc/primes.c has been documented; thanks go
-to Jim Blandy. Some bugs in proc dealing with pgrp and wait were
-fixed; a nasty hash table bug was also fixed. The simple shell can do
-pipes. Several serious bugs in ufs were fixed dealing with extension
-of large files and writes of data not aligned on block boundaries.
-The ufs pager was over-serialized; that's been fixed. Directory
-lookups and modifications now use mapped I/O directly; this is an
-important speed-up. The structure of the pager lockes has been
-changed significantly. UFS now supports Mach copying mode
-MEMORY_OBJECT_COPY_DELAY; this significantly improves process startup
-time.
-
-Some minor changes have been made to several interfaces. The
-interface for fs.defs:dir_readdir has been totally changed. There are
-some new fs.defs interfaces: file_check_access, file_notice_changes,
-dir_notice_changes. The fsys.defs:fsys_getroot interface was changed
-to work correctly. process.defs:proc_setprocargs is renamed, and a
-fetch function proc_get_arg_locations is added. The ifsock.defs
-interface was simplified.
-
-Several bugs were fixed in libdiskfs. The new dir_readdir interface
-requires new support from format-specific code. Some race conditions
-have been fixed. dir-pathtrans.c now deals correctly with multiple
-slashes in a row. A new concept called "light references" allows
-pagers to remain active without preventing truncate-on-nolinks from
-working right. New interfaces in fs.defs are implemented (except
-file_notice_changes). Active translator usage has been fixed to work
-correctly, but passive translators are still untested. libdiskfs now
-thinks it supports S_IFSOCK nodes, but that's untested (of course)
-because pflocal isn't done yet.
-
-The passive translator startup interface in libfshelp has been
-radically simplified. The pager library now lets other code set and
-changee the attributes on objects, synchronously if desired. An
-init/terminate race condition was fixed. The ports library now
-allows single-threaded users to work right (they didn't before). The
-trivfs library works; see the ifsock server for a simple example of
-its use. See term or pipes for more complex examples.
-
-There is a task list in the file `tasks'; let me know if you are
-interested in working on one of these.
-
diff --git a/hurd/history/hurd-flash4 b/hurd/history/hurd-flash4
deleted file mode 100644
index 89ae9848..00000000
--- a/hurd/history/hurd-flash4
+++ /dev/null
@@ -1,101 +0,0 @@
-From: mib@gnu.ai.mit.edu (Michael I Bushnell)
-To: hurd-ann@gnu.ai.mit.edu
-Date: Mon, 8 Aug 94 16:01:23 -0400
-Subject: New Hurd Snapshot
-X-Shopping-List:
- (1) Starboard sauce (2) Cinematic lesions (3) Two-way alphabetic
- accordions
-
-
-A new Hurd snapshot has been placed on alpha.gnu.ai.mit.edu in
-/pub/gnu/hurd-snap.tar.gz.
-
-It is expected that the next snapshot after this one will have signals
-basically working and thus be usable for a self-hosting system. In
-addition, the next snapshot will probably have the current state of
-our networking code (which has been proceeding, but has been absent
-from the snapshots).
-
-Here is the NEWS about this current snapshot, however. Because some
-big changes were made to the makefile and directory structure, things
-might have gotten inadvertently ommitted from the snapshot. If this
-happened, please let me know ASAP and I'll fix it and make a new
-snapshot.
-
- -mib
-
-
-August 8, 1994:
-
-Structural changes:
-
-Makefiles have been vastly improved and are simpler. The programs
-`su', `ps', and `sh' have been moved from separate dirs into `utils';
-the programs `symlink' and `ifsock' have been moved into `trans'.
-
-Several changes were made to GCC use. You should definitely get GCC
-version 2.6.0 now. Version 2.6.1 will have distributed the proper
-`specs' file for the i386-gnu target, but it isn't quite ready yet, so
-you still have to copy hurd/gcc-specs into
-gcc-lib/i386-gnu/2.6.0/specs.
-
-
-Interface changes:
-
-The tioctl.defs suite is complete now.
-
-INTR RPC's have been changed; individual RPC's are no longer marked
-INTR. Rather, entire interfaces are marked `INTR_INTERFACE' if they
-conform to the library's signalling/interruption expectations.
-
-There is a new magical retry type (for dir_pathtrans and fsys_getroot)
-called `machtype' and a new one `/'; the former is for @sys tweaks and
-the latter cleans up the retry of root-based symlinks a bit.
-
-There is a new interface `login.defs'.
-
-The "dotdot node" is no longer passed at fsys_startup time; instead,
-it is passed by fsys_getroot.
-
-
-Library changes:
-
-The ports library now does death-timeouts for multi-threaded servers;
-it doesn't actually work right yet, however. Also the ports library
-has new features (soft vs. hard ports; no outstanding ports
-notifications) that enable server-death to be done cleanly. (I hope;
-libdiskfs and ufs haven't yet been changed to use it, so libports
-might not actually have the right facilities yet.)
-
-The translator startup routines in libfshelp have been vastly improved
-(so that they can actually be used).
-
-Numerous bugfixes in libdiskfs, particularly relating to translator
-usage. Use new magical retry type `/' when appropriate. Use new
-dotdot node protocol. O_FSYNC and O_NOATIME are now honored properly.
-Alternative methods of storing symlinks are now supported through new
-hooks.
-
-The new dotdot protocol is now used by libtrivfs. Also, users of the
-library are now able to set the atime and mtime when necessary.
-
-The special threads version of malloc has been placed back in
-libthreads now that the C library uses a Mach-safe version on its own.
-
-
-Program changes:
-
-The `boot' program no longer implements the tioctl interface now that
-the terminal driver works.
-
-A bug was fixed in the handling of pgrps in `proc'.
-
-Many bugfixes in term. The tioctl interface is now implemented. EOF
-processing is fixed; break characters now work right. Signals and
-interruption are now done correctly. VDISCARD works.
-
-Ufs has Some bigs fixed in dir.c. Filesystem upgraded to BSD 4.4.
-There are now some compatibility flags.
-
-New program dev.trim does a very minimal /dev (but doesn't work yet).
-New program dev is an initial (but poor) attempt at a real /dev.
diff --git a/hurd/history/hurd-flash5 b/hurd/history/hurd-flash5
deleted file mode 100644
index 041a0ef7..00000000
--- a/hurd/history/hurd-flash5
+++ /dev/null
@@ -1,23 +0,0 @@
-From: mib@gnu.ai.mit.edu (Michael I Bushnell)
-Message-Id: <9409210619.AA17570@churchy.gnu.ai.mit.edu>
-To: "Lots of potentially interested people and" <nobody@gnu.ai.mit.edu>
-Subject: New milestone acheived by the GNU Hurd
-X-Tom-Swiftie: "I can't get this fire started," Tom said woodenly.
-
-
-I have just successfully compiled and run a null C program on the
-Hurd. This is using GCC native as one would normally use GCC.
-
-Sadly, it took quite a while (too long, in fact) to read the large
-archives that make up the GNU C library, but I think I know where the
-substantial inefficiency is.
-
-Once that is done, I would be happy to label this a "self-hosting
-system". But not just yet.
-
-The last bug preventing this was an error in dealing with files over
-about 8 M; this came about because in order to link a program one
-needed the GNU C library, which is over 9M when symbols are included.
-
- -mib
-
diff --git a/hurd/history/hurd-flash6 b/hurd/history/hurd-flash6
deleted file mode 100644
index e774714e..00000000
--- a/hurd/history/hurd-flash6
+++ /dev/null
@@ -1,46 +0,0 @@
-Return-Path: <pdxgate.cs.pdx.edu!gnu.ai.mit.edu!mib>
-Received: from pdxgate.cs.pdx.edu by gnurd with uucp
- (Linux Smail3.1.28.1 #14) id m0r66pm-00010fC; Fri, 11 Nov 94 17:00 PST
-Received: from cs.pdx.edu by pdxgate.cs.pdx.edu (4.1/CATastrophe-9/19/94-U)
- id AA05257; Fri, 11 Nov 94 16:40:48 PST
-Received: from churchy.gnu.ai.mit.edu by cs.pdx.edu (4.1/CATastrophe-9/19/94-P)
- id AA02600; Fri, 11 Nov 94 16:40:22 PST
-Received: by churchy.gnu.ai.mit.edu (5.65/4.0)
- id <AA12621@churchy.gnu.ai.mit.edu>; Fri, 11 Nov 94 16:45:35 -0500
-Received: by churchy.gnu.ai.mit.edu (5.65/4.0)
- id <AA12580@churchy.gnu.ai.mit.edu>; Fri, 11 Nov 94 16:38:44 -0500
-Date: Fri, 11 Nov 94 16:38:44 -0500
-From: mib@gnu.ai.mit.edu (Michael I Bushnell)
-Message-Id: <9411112138.AA12580@churchy.gnu.ai.mit.edu>
-To: hurd-ann@gnu.ai.mit.edu, hurd-dev@gnu.ai.mit.edu, info-gnu@prep.ai.mit.edu
-Subject: New Hurd Snapshot
-X-Shopping-List:
- (1) Horrendous collision devotions (2) Wondrous consolation (3)
- Conscious cooking auctions
-X-Filter: mailagent [version 3.0 PL19] for trent@gnurd.uu.pdx.edu
-
-
-A new Hurd snapshot has been placed on alpha.gnu.ai.mit.edu. There
-may be unforseen problems with this snapshot, so the old one has been
-left. You may fetch this snapshot via anonymous FTP in the file
-/gnu/hurd-snap.tar.gz.
-
-The Hurd requires a modified version of MiG; you can get it by
-anonymous ftp to kahlua.cs.utah.edu in /pub/mach/mach4-UK02p6.tar.gz.
-Note that we are not yet using Mach4 for the Hurd, but we plan to
-switch as soon as its feasible.
-
-Other necessary software to run this snapshot include the latest
-snapshot of binutils/ld/gas source from Cygnus and the latest GCC.
-(Problems have been reported with GCC 2.6.1; you might want to wait
-until 2.6.2 is released.) And, of course, you also need the latest
-test version of the GNU C Library, found on alpha.gnu.ai.mit.edu.
-
-This is not yet a real release; it is certainly not up to the quality
-of even a hesitant alpha release. But it may be useful for
-educational value or to help with the Hurd effort.
-
-I will be out of town for most of the rest of the year; I will be
-reading email but I may not be able to help with problems. Sorry...
-
- -mib
diff --git a/hurd/history/hurd-flash7 b/hurd/history/hurd-flash7
deleted file mode 100644
index ce6e08d2..00000000
--- a/hurd/history/hurd-flash7
+++ /dev/null
@@ -1,17 +0,0 @@
-Date: Wed, 12 Apr 1995 15:08:18 -0400
-From: Michael I Bushnell <mib@gnu.ai.mit.edu>
-To: hurd-ann@duality.gnu.ai.mit.edu
-Subject: New Hurd Snapshot available
-
-A new hurd snapshot is now available from
-ftp://alpha.gnu.ai.mit.edu/gnu/hurd-snap.tar.gz.
-
-This snapshot contains many improvements over the last one, and is
-also probably easier to compile.
-
-This snapshot must be used with the most recent libc snapshot,
-ftp://alpha.gnu.ai.mit.edu/gnu/libc-950411.tar.gz. Previous versions
-of the library will not work right.
-
-If any files are discovered to be missing, please let me know asap.
-
diff --git a/hurd/history/hurd-flash8 b/hurd/history/hurd-flash8
deleted file mode 100644
index 555186ec..00000000
--- a/hurd/history/hurd-flash8
+++ /dev/null
@@ -1,73 +0,0 @@
-Date: Sun, 23 Jul 1995 16:27:46 -0400
-Message-Id: <199507232027.QAA09306@geech.gnu.ai.mit.edu>
-From: Michael I Bushnell <mib@gnu.ai.mit.edu>
-To: hurd-ann@gnu.ai.mit.edu
-Subject: Hurd snapshot!
-X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
-+$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
-+ b+++ !D B-- e+ u++(*) h* f? r n y++
-X-Zippy-Says: I just had a NOSE JOB!!
-Sender: owner-abshurd@cs.pdx.edu
-Precedence: bulk
-
-
-I have just put a new Hurd snapshot on alpha.gnu.ai.mit.edu in
-/gnu/hurd-snap-950723.tar.gz.
-
-You will also need the new libc snapshot, which should appear in the
-same place today. Older libc snapshots will not be happy.
-
-The binary images (hurd-floppy.fs.gz and hurd-image.tar.gz) have not
-been updated. It is difficult to use the Hurd standalon, because the
-Mach boot loaders can now no longer boot the Hurd. A new boot loader
-is nearly finished. Perhaps we can make new binary images then, or a
-volunteer might take over this useful work. (Hint, hint.)
-
-Michael
-
-
-
-Here is the NEWS:
-
-July 23, 1995
-
-Shared libraries now work; use -static to link programs and avoid the
-shared libraries. The Hurd programs are normally built static; this
-will probably change soon.
-
-The ext2fs server now works, as do the tools to manipulate ext2fs
-filesystems. A snapshot of the tools will be made soon under separate
-cover. Many thanks to Ted Ts'o for his valuable work on the tools.
-
-Readers of the Makefiles will notice that we now generate dependencies
-automatically.
-
-The old netserv library is gone.
-
-The `boot' hack has been modified slightly to avoid the normalq libc startup
-files, because they no longer work with UX.
-
-Some small bugs have been fixed in the devio server.
-
-The ports library has been totally rewritten; new features permit
-servers to have greater control over thread RPC's and port creation.
-
-The fshelp library now does most of the work for translator
-interaction; it's simpler now too. Filesystems have much less work to
-do; the relevant code in libdiskfs is now understanble instead of
-unparseable chaos.
-
-The ports library provides for timeouts; the diskfs library almost
-uses it, but because of a bug, it's disabled for now.
-
-Filesystems are now expected to sync themselves if necessary; the new
-fsys_set_options RPC provides for changeing (or cancelling) the sync
-intervale. The diskfs library does this for you. The update program
-is no longer necessary.
-
-A small bug in the proc server has been hacked around; the real fix
-will come later.
-
-Many important bugs in the C library have been fixed since the last
-snapshot; perhaps all of them. ;-)
-
diff --git a/hurd/history/hurd-flash9 b/hurd/history/hurd-flash9
deleted file mode 100644
index 1ff32ba9..00000000
--- a/hurd/history/hurd-flash9
+++ /dev/null
@@ -1,39 +0,0 @@
-Date: Wed, 29 Nov 1995 13:13:23 -0500
-Message-Id: <199511291813.NAA10983@duality.gnu.ai.mit.edu>
-From: mib@gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
-To: hurd-ann@gnu.ai.mit.edu (and others)
-Subject: Announcement
-X-Geek-Code: (V2.1) GCS/J/M/MU/P/S/O>AT d- H-- s-: g+++ p0 !au a- w++ v+++(*) C+
-+$ UB++++$ P--- L 3- E++ N++ K++++ W-- M- V-- po-- Y+(--) t++ 5+ j++ R- G'''' tv
-+ b+++ !D B-- e+ u++(*) h* f? r n y++
-X-Windows: The Cutting Edge of Obsolescence.
-Sender: owner-abshurd@cs.pdx.edu
-Precedence: bulk
-
-
-The Hurd has succesfully completed its first FTP:
-
-bash# ftp 128.52.46.31
-Connected to 128.52.46.31.
-220 albert.gnu.ai.mit.edu FTP server (Version 5.60) ready.
-Name (128.52.46.31:root):
-331 Password required for root.
-Password:230 User root logged in.
-ftp> cd ~mib
-250 CWD command successful.
-ftp> get ftptest
-200 PORT command successful.
-150 Opening ASCII mode data connection for ftptest (16 bytes).
-226 Transfer complete.
-17 bytes received in 0.07 secs (0.24 Kbytes/sec)
-ftp> quit
-221 Goodbye.
-bash# cat ftptest
-this is a test.
-bash#
-
-
-Tre cool.
-
-Michael
-
diff --git a/hurd/history/port_to_l4.mdwn b/hurd/history/port_to_l4.mdwn
deleted file mode 100644
index d4daeefa..00000000
--- a/hurd/history/port_to_l4.mdwn
+++ /dev/null
@@ -1,102 +0,0 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
-Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-[[meta title="Porting the Hurd to L4: Hurd/L4"]]
-
-There was an effort to port the Hurd from [[microkernel/Mach]] to the
-[[L4_microkernel_family|microkernel/L4]].
-
-The idea of using L4 as a [[microkernel]] for a [[Hurd_system|hurd]] was
-initially voiced in the [[Hurd_community|community]] by Okuji Yoshinori, who,
-for discussing this purpose, created the [[mailing_lists/l4-hurd]] mailing list
-in November 2000.
-
-The project itself then was mostly lead by Marcus Brinkmann and Neal Walfield.
-Even though there was progress -- see, for example, the
-[[QEMU_image_for_L4|running/qemu/image_for_l4]] -- this port never reached a
-releasable state. Eventually, a straight-forward port of the original Hurd's
-design wasn't deemed feasible anymore by the developers, partly due to them not
-cosidering L4 suitable for implementing a general-purpose operating system on
-top of it, and because of deficiencies in the original Hurd's design, which
-they discovered along their way. Read the [[critique]] and a
-[[ng/position_paper]].
-
-By now, the development of Hurd/L4 has stopped. However, Neal Walfield moved
-on to working on a newly designed kernel called [[microkernel/viengoos]].
-
-Over the years, a lot of discussion have been held on the
-[[mailing_lists/l4-hurd]] mailing list, which today is still the right place
-for [[next-generation_Hurd|ng]] discussions.
-
-Development of Hurd/L4 was done in the `hurd-l4` module of the Hurd CVS
-repository. The `doc` directory contains a design document that is worth
-reading for anyone who wishes to learn more about Hurd/L4.
-
-
-One goal of porting the Hurd to L4 was to make the Hurd independend of Mach
-interfaces, to make it somewhat microkernel-agnostic.
-
-Mach wasn't maintained by its original authors anymore, so switching to a
-well-maintained current [[microkernel]] was expected to yield a more solid
-foundation for a Hurd system than the decaying Mach design and implementation
-was able to.
-
-L4 being a second-generation [[microkernel]] was deemed to provide for a faster
-system kernel implementation, especially in the time-critical [[IPC]] paths.
-Also, as L4 was already implemented for a bunch of different architectures
-(IA32, Alpha, MIPS; SMP), and the Hurd itself being rather archtecture-unaware,
-it was expected to be able to easily support more platforms than with the
-existing system.
-
-A design upon the lean L4 kernel would finally have moved devices drivers out
-of the kernel's [[TCB]].
-
-
-One idea was to first introduce a Mach-on-L4 emulation layer, to easily get a
-usable (though slow) Hurd-using-Mach-interfaces-on-L4 system, and then
-gradually move the Hurd servers to use L4 intefaces rather than Mach ones.
-
-
-Neal Walfield started the original Hurd/L4 port while at Karlsruhe in 2002. He
-explains:
-
-> My intention was to adapt the Hurd to exploit L4's concepts and intended
-> [[design_pattern]]s; it was not to simply provide a Mach
-> [[compatibility_layer]] on top of L4. When I left Karlsruhe, I no longer had
-> access to [[microkernel/l4/Pistachio]] as I was unwilling to sign an NDA.
-> Although the specification was available, the Karlsruhe group only [released
-> their code in May
-> 2003](https://lists.ira.uni-karlsruhe.de/pipermail/l4ka/2003-May/000345.html).
-> Around this time, Marcus began hacking on Pistachio. He created a relatively
-> complete run-time. I didn't really become involved again until the second
-> half of 2004, after I complete by Bachelors degree.
-
-> Before Marcus and I considered [[microkernel/Coyotos]], we had already
-> rejected some parts of the Hurd's design. The
-> [[microkernel/mach/gnumach/open_issues/resource_management_problems]] were
-> what prompted me to look at L4. Also, some of the problems with
-> [[translator]]s were already well-known to us. (For a more detailed
-> description of the problems we have identified, see our [[critique]] in the
-> 2007 July's SIGOPS OSR. We have also written a forward-looking
-> [[ng/position_paper]].)
-
-> We visited Jonathan Shapiro at Hopkins in January 2006. This resulted in a
-> number of discussions, some quite influential, and not always in a way which
-> aligned our position with that of Jonathan's. This was particularly true of
-> a number of security issues.
-
-A lange number of discussion threads can be found in the archives of the
-[[mailing_lists/l4-hurd]] mailing list.
-
-> Hurd-NG, as we originally called it, was an attempt to articulate the system
-> that we had come to envision in terms of interfaces and description of the
-> system's structure. The new name was selected, if I recall correctly, as it
-> clearly wasn't the Hurd nor the Hurd based on L4.
diff --git a/hurd/hurd_hacking_guide.mdwn b/hurd/hurd_hacking_guide.mdwn
index 2ef08f8a..ea9aa259 100644
--- a/hurd/hurd_hacking_guide.mdwn
+++ b/hurd/hurd_hacking_guide.mdwn
@@ -1,18 +1,20 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Originally written by Wolfgang Jährling, the *Hurd Hacking Guide* contains an
introduction to GNU Hurd and GNU Mach programming, an overview of some of the
Hurd's features. It also contains a tutorial on writing your own
[[translator]].
+Before using the code in the example (trivfs) please do read the Changelog. A lot of changes might have taken place.
+
* [HTML version](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) for
browsing online,
* [PostScript version](http://www.gnu.org/software/hurd/hacking-guide/hhg.ps)
diff --git a/hurd/interface.mdwn b/hurd/interface.mdwn
new file mode 100644
index 00000000..75fda808
--- /dev/null
+++ b/hurd/interface.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="Interfaces"]]
+
+[[!map pages="hurd/interface/* and !hurd/interface/*_*"
+show=title]]
diff --git a/hurd/interface/dir_link.mdwn b/hurd/interface/dir_link.mdwn
new file mode 100644
index 00000000..0f1db578
--- /dev/null
+++ b/hurd/interface/dir_link.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/23]]
diff --git a/hurd/interface/dir_lookup.mdwn b/hurd/interface/dir_lookup.mdwn
new file mode 100644
index 00000000..40e79538
--- /dev/null
+++ b/hurd/interface/dir_lookup.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/18]]
diff --git a/hurd/interface/dir_mkdir.mdwn b/hurd/interface/dir_mkdir.mdwn
new file mode 100644
index 00000000..bf386818
--- /dev/null
+++ b/hurd/interface/dir_mkdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/20]]
diff --git a/hurd/interface/dir_mkfile.mdwn b/hurd/interface/dir_mkfile.mdwn
new file mode 100644
index 00000000..01828a03
--- /dev/null
+++ b/hurd/interface/dir_mkfile.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/25]]
diff --git a/hurd/interface/dir_notice_changes.mdwn b/hurd/interface/dir_notice_changes.mdwn
new file mode 100644
index 00000000..5763a0a3
--- /dev/null
+++ b/hurd/interface/dir_notice_changes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/26]]
diff --git a/hurd/interface/dir_readdir.mdwn b/hurd/interface/dir_readdir.mdwn
new file mode 100644
index 00000000..b41e8d49
--- /dev/null
+++ b/hurd/interface/dir_readdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/19]]
diff --git a/hurd/interface/dir_rename.mdwn b/hurd/interface/dir_rename.mdwn
new file mode 100644
index 00000000..3839487f
--- /dev/null
+++ b/hurd/interface/dir_rename.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/24]]
diff --git a/hurd/interface/dir_rmdir.mdwn b/hurd/interface/dir_rmdir.mdwn
new file mode 100644
index 00000000..d69fdd30
--- /dev/null
+++ b/hurd/interface/dir_rmdir.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/21]]
diff --git a/hurd/interface/dir_unlink.mdwn b/hurd/interface/dir_unlink.mdwn
new file mode 100644
index 00000000..a8861bac
--- /dev/null
+++ b/hurd/interface/dir_unlink.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/22]]
diff --git a/hurd/interface/file_chauthor.mdwn b/hurd/interface/file_chauthor.mdwn
new file mode 100644
index 00000000..6fcf97f1
--- /dev/null
+++ b/hurd/interface/file_chauthor.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/02]]
diff --git a/hurd/interface/file_check_access.mdwn b/hurd/interface/file_check_access.mdwn
new file mode 100644
index 00000000..5ab4af57
--- /dev/null
+++ b/hurd/interface/file_check_access.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/09]]
diff --git a/hurd/interface/file_chflags.mdwn b/hurd/interface/file_chflags.mdwn
new file mode 100644
index 00000000..6e55536b
--- /dev/null
+++ b/hurd/interface/file_chflags.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/04]]
diff --git a/hurd/interface/file_chmod.mdwn b/hurd/interface/file_chmod.mdwn
new file mode 100644
index 00000000..0bbb8d92
--- /dev/null
+++ b/hurd/interface/file_chmod.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/03]]
diff --git a/hurd/interface/file_chown.mdwn b/hurd/interface/file_chown.mdwn
new file mode 100644
index 00000000..a99bcf85
--- /dev/null
+++ b/hurd/interface/file_chown.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/01]]
diff --git a/hurd/interface/file_exec.mdwn b/hurd/interface/file_exec.mdwn
new file mode 100644
index 00000000..5f4b57f9
--- /dev/null
+++ b/hurd/interface/file_exec.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/00]]
diff --git a/hurd/interface/file_get_fs_options.mdwn b/hurd/interface/file_get_fs_options.mdwn
new file mode 100644
index 00000000..b04c70a3
--- /dev/null
+++ b/hurd/interface/file_get_fs_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/30]]
diff --git a/hurd/interface/file_get_storage_info.mdwn b/hurd/interface/file_get_storage_info.mdwn
new file mode 100644
index 00000000..87166c90
--- /dev/null
+++ b/hurd/interface/file_get_storage_info.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/15]]
diff --git a/hurd/interface/file_get_translator.mdwn b/hurd/interface/file_get_translator.mdwn
new file mode 100644
index 00000000..6c8565f4
--- /dev/null
+++ b/hurd/interface/file_get_translator.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/28]]
diff --git a/hurd/interface/file_get_translator_cntl.mdwn b/hurd/interface/file_get_translator_cntl.mdwn
new file mode 100644
index 00000000..befbf1a3
--- /dev/null
+++ b/hurd/interface/file_get_translator_cntl.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/29]]
diff --git a/hurd/interface/file_getcontrol.mdwn b/hurd/interface/file_getcontrol.mdwn
new file mode 100644
index 00000000..94503b23
--- /dev/null
+++ b/hurd/interface/file_getcontrol.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/11]]
diff --git a/hurd/interface/file_getfh.mdwn b/hurd/interface/file_getfh.mdwn
new file mode 100644
index 00000000..369afb17
--- /dev/null
+++ b/hurd/interface/file_getfh.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/17]]
diff --git a/hurd/interface/file_getlinknode.mdwn b/hurd/interface/file_getlinknode.mdwn
new file mode 100644
index 00000000..64efb810
--- /dev/null
+++ b/hurd/interface/file_getlinknode.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/16]]
diff --git a/hurd/interface/file_lock.mdwn b/hurd/interface/file_lock.mdwn
new file mode 100644
index 00000000..8860d24b
--- /dev/null
+++ b/hurd/interface/file_lock.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/07]]
diff --git a/hurd/interface/file_lock_stat.mdwn b/hurd/interface/file_lock_stat.mdwn
new file mode 100644
index 00000000..78abebb5
--- /dev/null
+++ b/hurd/interface/file_lock_stat.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/08]]
diff --git a/hurd/interface/file_notice_changes.mdwn b/hurd/interface/file_notice_changes.mdwn
new file mode 100644
index 00000000..f6646410
--- /dev/null
+++ b/hurd/interface/file_notice_changes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/10]]
diff --git a/hurd/interface/file_reparent.mdwn b/hurd/interface/file_reparent.mdwn
new file mode 100644
index 00000000..80cd174e
--- /dev/null
+++ b/hurd/interface/file_reparent.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/31]]
diff --git a/hurd/interface/file_set_size.mdwn b/hurd/interface/file_set_size.mdwn
new file mode 100644
index 00000000..cf1e376c
--- /dev/null
+++ b/hurd/interface/file_set_size.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/06]]
diff --git a/hurd/interface/file_set_translator.mdwn b/hurd/interface/file_set_translator.mdwn
new file mode 100644
index 00000000..4a43bdad
--- /dev/null
+++ b/hurd/interface/file_set_translator.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/27]]
diff --git a/hurd/interface/file_statfs.mdwn b/hurd/interface/file_statfs.mdwn
new file mode 100644
index 00000000..f5086d34
--- /dev/null
+++ b/hurd/interface/file_statfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/12]]
diff --git a/hurd/interface/file_sync.mdwn b/hurd/interface/file_sync.mdwn
new file mode 100644
index 00000000..160c86ca
--- /dev/null
+++ b/hurd/interface/file_sync.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/13]]
diff --git a/hurd/interface/file_syncfs.mdwn b/hurd/interface/file_syncfs.mdwn
new file mode 100644
index 00000000..a52e92b0
--- /dev/null
+++ b/hurd/interface/file_syncfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/14]]
diff --git a/hurd/interface/file_utimes.mdwn b/hurd/interface/file_utimes.mdwn
new file mode 100644
index 00000000..ab09a58b
--- /dev/null
+++ b/hurd/interface/file_utimes.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fs/05]]
diff --git a/hurd/interface/fs.mdwn b/hurd/interface/fs.mdwn
new file mode 100644
index 00000000..4f217c5a
--- /dev/null
+++ b/hurd/interface/fs.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fs: Filesystem"]]
+
+All these objects also implement the generic IO facilities.
+
+To get or set the translator currently running on a file, use
+[[`file_set_translator`|file_set_translator]],
+[[`file_get_translator`|file_get_translator]], or
+[[`file_get_translator_cntl`|file_get_translator_cntl]] on a port gotten with
+the `FS_LOOKUP_NOTRANS` flag to [[`dir_lookup`|dir_lookup]]. You can send
+these [[RPC]]s to a port to a translated node (looked up without
+`FS_LOOKUP_NOTRANS`) to stack a new translator on top of the existing one.
+
+[[!map pages="hurd/interface/fs/* and !hurd/interface/fs/*/*"
+show=title]]
diff --git a/hurd/interface/fs/00.mdwn b/hurd/interface/fs/00.mdwn
new file mode 100644
index 00000000..29b93731
--- /dev/null
+++ b/hurd/interface/fs/00.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_exec"]]
+
+ routine file_exec (
+ exec_file: file_t;
+ RPT
+ exec_task: task_t;
+ flags: int;
+ argv: data_t SCP;
+ envp: data_t SCP;
+ fdarray: portarray_t SCP;
+ portarray: portarray_t SCP;
+ intarray: intarray_t SCP;
+ deallocnames: mach_port_name_array_t SCP;
+ destroynames: mach_port_name_array_t SCP);
+
+Overlay a task with a file. Necessary initialization, including authentication
+changes associated with set[ug]id execution must be handled by the filesystem.
+Filesystems normally implement this by using [[`exec_newtask`|exec_newtask]] or
+[[`exec_loadtask`|exec_loadtask]] as appropriate.
diff --git a/hurd/interface/fs/01.mdwn b/hurd/interface/fs/01.mdwn
new file mode 100644
index 00000000..7b9c7a31
--- /dev/null
+++ b/hurd/interface/fs/01.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_chown"]]
+
+ routine file_chown (
+ chown_file: file_t;
+ RPT
+ new_owner: uid_t;
+ new_group: gid_t);
+
+Change owner and/or group.
diff --git a/hurd/interface/fs/02.mdwn b/hurd/interface/fs/02.mdwn
new file mode 100644
index 00000000..3158d2c6
--- /dev/null
+++ b/hurd/interface/fs/02.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_chauthor"]]
+
+ routine file_chauthor (
+ chauth_file: file_t;
+ RPT
+ new_author: uid_t);
+
+ Whan that Aprill with hith thoureth thoote
+ The droghte of March hath perthed to the roote,
+ And bathed every veyne in thwith licour,
+ Of which vertu engendred is the flour;
+ Whan Zephiruth eek with hith thweete breeth
+ Inthpired hath in every holt and heeth
+ The tender croppeth, and the yonge thonne
+ Hath in the Ram his halve courth yronne,
+ And thmale foweleth maken melodye,
+ That thlepen all the nyght with open ye
+ (Tho Priketh hem Nature in hir corageth),
+ Thanne longen folk to goon on pligrimageth,
+ And palmereth for to theken thtraunge thtrondeth,
+ To ferne halweth, kowthe in thondry londeth:
+ And thpethially, from every thireth ende
+ Of Engelond to Cantebury they wende,
+ The hooly blithful martyr for to theke,
+ That hem hath holpen whan that they were theeke.
diff --git a/hurd/interface/fs/03.mdwn b/hurd/interface/fs/03.mdwn
new file mode 100644
index 00000000..d697ec90
--- /dev/null
+++ b/hurd/interface/fs/03.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_chmod"]]
+
+ routine file_chmod (
+ chmod_file: file_t;
+ RPT
+ new_mode: mode_t);
+
+Change mode bits.
diff --git a/hurd/interface/fs/04.mdwn b/hurd/interface/fs/04.mdwn
new file mode 100644
index 00000000..d0386eab
--- /dev/null
+++ b/hurd/interface/fs/04.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_chflags"]]
+
+ routine file_chflags (
+ chflags_file: file_t;
+ RPT
+ new_flags: int);
+
+Change file flags.
diff --git a/hurd/interface/fs/05.mdwn b/hurd/interface/fs/05.mdwn
new file mode 100644
index 00000000..184e2ffd
--- /dev/null
+++ b/hurd/interface/fs/05.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_utimes"]]
+
+ routine file_utimes (
+ utimes_file: file_t;
+ RPT
+ new_atime: time_value_t;
+ new_mtime: time_value_t);
+
+Change access and modify times.
+
+If the microseconds value is -1 (all bits on) then the time should be set to
+the current time and the remainder of the `time_value_t` ignored.
diff --git a/hurd/interface/fs/06.mdwn b/hurd/interface/fs/06.mdwn
new file mode 100644
index 00000000..393f1a9b
--- /dev/null
+++ b/hurd/interface/fs/06.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_set_size"]]
+
+ routine file_set_size (
+ trunc_file: file_t;
+ RPT
+ new_size: loff_t);
+
+Change the size of the file. If the size increases, new blocks are
+zero-filled. After successful return, it is safe to reference mapped areas of
+the file up to `new_size`.
diff --git a/hurd/interface/fs/07.mdwn b/hurd/interface/fs/07.mdwn
new file mode 100644
index 00000000..d6408763
--- /dev/null
+++ b/hurd/interface/fs/07.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_lock"]]
+
+ routine file_lock (
+ lock_file: file_t;
+ RPT
+ flags: int);
+
+Apply/manipulate advisory lock.
diff --git a/hurd/interface/fs/08.mdwn b/hurd/interface/fs/08.mdwn
new file mode 100644
index 00000000..fbb3d53b
--- /dev/null
+++ b/hurd/interface/fs/08.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_lock_stat"]]
+
+ routine file_lock_stat (
+ lock_file: file_t;
+ RPT
+ out mystatus: int;
+ out otherstatus: int);
+
+Return current lock status. `mystatus` tells what kind of lock the caller has;
+`otherstatus` tells what kind of lock anyone has (including the caller).
diff --git a/hurd/interface/fs/09.mdwn b/hurd/interface/fs/09.mdwn
new file mode 100644
index 00000000..02c778c2
--- /dev/null
+++ b/hurd/interface/fs/09.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_check_access"]]
+
+ routine file_check_access (
+ file: file_t;
+ RPT
+ out allowed: int);
+
+Find out what kind of access this file permits the current user (regardless of
+the current open modes for this port). `allowed` is a bitwise *or* of
+`O_READ`, `O_WRITE`, and `O_EXEC`. This is not necessarily the same as what an
+`open` or `exec` would allow; `O_EXEC` is set for *root* even if no executable
+bits are on (in which case [[`file_exec`|file_exec]] should fail) and `O_WRITE`
+is set a directory can be modified, even though it can't be written directly.
diff --git a/hurd/interface/fs/10.mdwn b/hurd/interface/fs/10.mdwn
new file mode 100644
index 00000000..56ce204f
--- /dev/null
+++ b/hurd/interface/fs/10.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_notice_changes"]]
+
+ routine file_notice_changes (
+ file: file_t;
+ RPT
+ port: mach_port_send_t);
+
+Notice changes to file `file`. Send notification messages (see
+[[`fs_notify.defs`|fs_notify]]) to `port` as they occur.
diff --git a/hurd/interface/fs/11.mdwn b/hurd/interface/fs/11.mdwn
new file mode 100644
index 00000000..94aa4ee0
--- /dev/null
+++ b/hurd/interface/fs/11.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_getcontrol"]]
+
+ routine file_getcontrol (
+ file: file_t;
+ RPT
+ out control: mach_port_send_t);
+
+Return control port for this filesystem.
diff --git a/hurd/interface/fs/12.mdwn b/hurd/interface/fs/12.mdwn
new file mode 100644
index 00000000..b69b591b
--- /dev/null
+++ b/hurd/interface/fs/12.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_statfs"]]
+
+ routine file_statfs (
+ file: file_t;
+ RPT
+ out info: fsys_statfsbuf_t);
+
+Return filesystem status.
diff --git a/hurd/interface/fs/13.mdwn b/hurd/interface/fs/13.mdwn
new file mode 100644
index 00000000..2e06e0c4
--- /dev/null
+++ b/hurd/interface/fs/13.mdwn
@@ -0,0 +1,60 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_sync"]]
+
+ routine file_sync (
+ file: file_t;
+ RPT
+ wait: int;
+ omit_metadata: int);
+
+Sync the individual file. If `omit_metadata` is set, then it is only necessary
+for the server to updated the actual contents of the file, not any associated
+metadata.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/nfs]].
+
+## [[libtrivfs]]
+
+Pass the call through to the underlying node.
+
+### [[storeio]] / [[streamio]]
+
+Instead of to the underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_sync`.
+
+## [[libdiskfs]]
+
+Invoke `diskfs_file_update`.
+
+# Usage Examples
+
+## [[glibc]]
+
+ * `fdatasync`
+
+ `file_syncfs (FD, true, true)` -- invoke it on the passed file descriptor,
+ do wait for completion, do allow omitting to update the associated
+ metadata.
+
+ * `fsync`
+
+ `file_syncfs (FD, true, false)` -- invoke it on the passed file descriptor,
+ do wait for completion, don't allow omitting to update the associated
+ metadata.
diff --git a/hurd/interface/fs/14.mdwn b/hurd/interface/fs/14.mdwn
new file mode 100644
index 00000000..a13c0bd8
--- /dev/null
+++ b/hurd/interface/fs/14.mdwn
@@ -0,0 +1,67 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_syncfs"]]
+
+ routine file_syncfs (
+ file: file_t;
+ RPT
+ wait: int;
+ do_children: int);
+
+Synchronize the entire filesystem.
+
+This function has a companion in [[`fsys_syncfs`|fsys_syncfs]], which is
+invoked on the server's control port instead of an arbitrary node. Both of
+them are usually implemented in equivalent ways.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/nfs]].
+
+The implementation typically doesn't care on which specific node (as exported
+by the implementing server) [[`file_syncfs`|file_syncfs]] is being invoked on.
+
+## [[libtrivfs]]
+
+Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the
+underlying node represents this filesystem's backend, and once this node is
+synchronized, the whole [[libtrivfs]]-based filesystem is to be considered
+synchronized.
+
+### [[storeio]] / [[streamio]]
+
+Instead of the to underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_syncfs`.
+
+## [[libdiskfs]]
+
+Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke
+`diskfs_sync_everything` and `diskfs_set_hypermetadata`.
+
+# Usage Examples
+
+## [[glibc]]
+
+ * `sync`
+
+ `file_syncfs ("/", false, true)` -- invoke it on the process' root directory
+ (`INIT_PORT_CRDIR`), don't wait for completion, do synchronize child
+ filesystems.
+
+## [[Hurd]]
+
+ * [[`syncfs`|syncfs]]
diff --git a/hurd/interface/fs/15.mdwn b/hurd/interface/fs/15.mdwn
new file mode 100644
index 00000000..50dcce1b
--- /dev/null
+++ b/hurd/interface/fs/15.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_get_storage_info"]]
+
+ routine file_get_storage_info (
+ file: file_t;
+ RPT
+ out ports: portarray_t, dealloc;
+ out ints: intarray_t, dealloc;
+ out offsets: off_array_t, dealloc;
+ out data: data_t, dealloc);
+
+Return information on the storage used to hold this file. See the comment for
+`enum file_storage_class` in `<hurd/hurd_types.h>` the details.
diff --git a/hurd/interface/fs/16.mdwn b/hurd/interface/fs/16.mdwn
new file mode 100644
index 00000000..8ba776c1
--- /dev/null
+++ b/hurd/interface/fs/16.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_getlinknode"]]
+
+ routine file_getlinknode (
+ file: file_t;
+ RPT
+ out linknode: mach_port_send_t);
+
+Return the node for hard links to this potentially translated file. This
+returns a potentially unauthenticated node.
diff --git a/hurd/interface/fs/17.mdwn b/hurd/interface/fs/17.mdwn
new file mode 100644
index 00000000..8895434a
--- /dev/null
+++ b/hurd/interface/fs/17.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_getfh"]]
+
+ routine file_getfh (
+ file: file_t;
+ RPT
+ out filehandle: data_t, dealloc);
+
+Return a file handle for this file. This can be used by NFS and such. It is
+not guaranteed that this call will work; if it doesn't, then this filesystem
+cannot be NFS mounted.
+
+Currently file handles are only used by `nfsd` with the purpose of
+having some stable representation of nodes (TODO: Add references).
+The only translator library that implements `file_getfh` and the
+complementary [[`fsys_getfile`|fsys_getfile]] is `libdiskfs`, so if
+you are linking against a different library you should expect that the
+filesystem exported by your translator will not be supported by `nfsd`
+by default.
+
+If you would like your non-`libdiskfs` translator to be supported by
+`nfsd`, you should implement these two RPCs on your own. The idea is
+that to each node exported by your translator you should put in
+correspondence a unique file handle. A file handle is a 28-byte
+value. The first 4 bytes are not used. Then comes a 4-byte number
+which should identify your node somehow (`libdiskfs` uses the index
+into the internally maintained node cache). After it there comes a
+4-byte number which should bear a similar function to the `st_gen`
+field of a `stat` structure. Following this specification, you should
+be able to implement `file_getfh` and `fsys_getfile` in a proper way
+to get `nfsd` support.
diff --git a/hurd/interface/fs/18.mdwn b/hurd/interface/fs/18.mdwn
new file mode 100644
index 00000000..dbe606f3
--- /dev/null
+++ b/hurd/interface/fs/18.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_lookup"]]
+
+ routine dir_lookup (
+ start_dir: file_t;
+ RPT
+ file_name: string_t;
+ flags: int;
+ mode: mode_t;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out result: mach_port_send_t);
+
+Translate a file name, following all symlinks. Upon return, if `do_retry` is
+`FS_RETRY_MAGICAL` then `retry_name` specifies what to do, the list of
+possibilities is documented in `<hurd/hurd_types.h>`; if `FS_RETRY_REAUTH`,
+then `result` should be reauthenticated before being used. If `retry_name` is
+the empty string and the retry type is `FS_RETRY_NORMAL`, then no further
+[[`dir_lookup`|dir_lookup]] calls are required; `result` is the port to use.
+Otherwise the [[`dir_lookup`|dir_lookup]] call should be repeated, sent to
+`result` (or the reauthenticated port) with `retry_name` passed for
+`file_name`. This call is required to be supported by all files (even
+non-directories) if the filename is null, and should function in that case as a
+re-open of the file.
diff --git a/hurd/interface/fs/19.mdwn b/hurd/interface/fs/19.mdwn
new file mode 100644
index 00000000..86625d44
--- /dev/null
+++ b/hurd/interface/fs/19.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_readdir"]]
+
+ routine dir_readdir (
+ dir: file_t;
+ RPT
+ out data: data_t, dealloc[];
+ entry: int;
+ nentries: int;
+ bufsiz: vm_size_t;
+ out amount: int);
+
+Read entries from the directory. Each entry is identified by an index number
+starting at 0 and running through the file. This call fetches `nentries` (or
+any convenient number if `nentries` is -1) entries starting at `entry`,
+returning an array of struct directs in `data`. The number of entries
+successfully read is returned in `amount`. If `entry` is bigger than the index
+of the last entry, then 0 is returned in `amount`. If `bufsize` is nonzero,
+never return more than `bufsize` bytes of data regardless.
diff --git a/hurd/interface/fs/20.mdwn b/hurd/interface/fs/20.mdwn
new file mode 100644
index 00000000..da57f0b5
--- /dev/null
+++ b/hurd/interface/fs/20.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_mkdir"]]
+
+ routine dir_mkdir (
+ directory: file_t;
+ RPT
+ name: string_t;
+ mode: mode_t);
+
+Create directory.
diff --git a/hurd/interface/fs/21.mdwn b/hurd/interface/fs/21.mdwn
new file mode 100644
index 00000000..c562333a
--- /dev/null
+++ b/hurd/interface/fs/21.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_rmdir"]]
+
+ routine dir_rmdir (
+ directory: file_t;
+ RPT
+ name: string_t);
+
+Remove directory.
diff --git a/hurd/interface/fs/22.mdwn b/hurd/interface/fs/22.mdwn
new file mode 100644
index 00000000..24fcdd9e
--- /dev/null
+++ b/hurd/interface/fs/22.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_unlink"]]
+
+ routine dir_unlink (
+ directory: file_t;
+ RPT
+ name: string_t);
+
+Remove non-directory.
diff --git a/hurd/interface/fs/23.mdwn b/hurd/interface/fs/23.mdwn
new file mode 100644
index 00000000..44621d37
--- /dev/null
+++ b/hurd/interface/fs/23.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_link"]]
+
+ routine dir_link (
+ dir: file_t;
+ RPT
+ file: file_t;
+ name: string_t;
+ excl: int);
+
+Create a hard link.
+
+If `dir` and `file` are not implemented by the same filesystem, `EXDEV` should
+be returned. If the two filesystems, however can inter-operate and guarantee
+the appropriate POSIX semantics, they can communicate by a private protocol and
+allow hard links between them. If `excl` is set, then fail if `name` already
+exists in `dir`.
diff --git a/hurd/interface/fs/24.mdwn b/hurd/interface/fs/24.mdwn
new file mode 100644
index 00000000..aac2df60
--- /dev/null
+++ b/hurd/interface/fs/24.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_rename"]]
+
+ routine dir_rename (
+ olddirectory: file_t;
+ RPT
+ oldname: string_t;
+ newdirectory: file_t;
+ newname: string_t;
+ excl: int);
+
+Rename file -- comments similar to those for [[`dir_link`|dir_link]] apply here
+about `EXDEV`. If `excl` is set, then fail if `newname` already exists in
+`newdirectory`.
diff --git a/hurd/interface/fs/25.mdwn b/hurd/interface/fs/25.mdwn
new file mode 100644
index 00000000..9b08d54f
--- /dev/null
+++ b/hurd/interface/fs/25.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_mkfile"]]
+
+ routine dir_mkfile (
+ directory: file_t;
+ RPT
+ flags: int;
+ mode: mode_t;
+ out newnode: mach_port_send_t);
+
+Create a new file without linking it into the filesystem. You still must have
+write permission on the specified directory, even though it will not actually
+be written. Return in `newnode` a port to the file. `flags` are the same as
+for [[`dir_lookup`|dir_lookup]], but `O_CREAT` and `O_TRUNC` are assumed even
+if not specified.
diff --git a/hurd/interface/fs/26.mdwn b/hurd/interface/fs/26.mdwn
new file mode 100644
index 00000000..82a7bca1
--- /dev/null
+++ b/hurd/interface/fs/26.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="dir_notice_changes"]]
+
+ routine dir_notice_changes (
+ directory: file_t;
+ RPT
+ port: mach_port_send_t);
+
+Notice changes to directory `dir`. Send directory change notifications (see
+[[`fs_notify.defs`|fs_notify]]) to `port` as they occur.
diff --git a/hurd/interface/fs/27.mdwn b/hurd/interface/fs/27.mdwn
new file mode 100644
index 00000000..9a7bd13f
--- /dev/null
+++ b/hurd/interface/fs/27.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_set_translator"]]
+
+ routine file_set_translator (
+ file: file_t;
+ RPT
+ passive_flags: int;
+ active_flags: int;
+ oldtrans_flags: int;
+ passive: data_t SCP;
+ active: mach_port_send_t);
+
+Set a translator for future lookups to a file.
+
+`passive` is the passive translator; `active` is the active translator.
+
+The `flags` are `FS_TRANS_*`, defined in `<hurd/hurd_types.h>`. `oldflags` are
+sent in an [[`fsys_goaway`|fsys_goaway]] to an existing active translator if
+there is one and it is to be killed.
diff --git a/hurd/interface/fs/28.mdwn b/hurd/interface/fs/28.mdwn
new file mode 100644
index 00000000..13ac4b7a
--- /dev/null
+++ b/hurd/interface/fs/28.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_get_translator"]]
+
+ routine file_get_translator (
+ file: file_t;
+ RPT
+ out translator: data_t, dealloc);
+
+Return the stored permanent translator for this file.
diff --git a/hurd/interface/fs/29.mdwn b/hurd/interface/fs/29.mdwn
new file mode 100644
index 00000000..1cc3950a
--- /dev/null
+++ b/hurd/interface/fs/29.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_get_translator_cntl"]]
+
+ routine file_get_translator_cntl (
+ file: file_t;
+ RPT
+ out translator_cntl: mach_port_send_t);
+
+Return the translator control port to the active translator (if any) for this
+file.
diff --git a/hurd/interface/fs/30.mdwn b/hurd/interface/fs/30.mdwn
new file mode 100644
index 00000000..653af42f
--- /dev/null
+++ b/hurd/interface/fs/30.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_get_fs_options"]]
+
+ routine file_get_fs_options (
+ file: file_t;
+ RPT
+ out options: data_t, dealloc);
+
+Return the options describing the way the receiving filesystem is running.
+(Suitable as an arg for [[`fsys_set_options`|fsys_set_options]]).
diff --git a/hurd/interface/fs/31.mdwn b/hurd/interface/fs/31.mdwn
new file mode 100644
index 00000000..32e7efda
--- /dev/null
+++ b/hurd/interface/fs/31.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file_reparent"]]
+
+ routine file_reparent (
+ file: file_t;
+ RPT
+ parent: mach_port_t;
+ out new_file: mach_port_send_t);
+
+Return a new file, `new_file`, with the same semantics as `file`, but with
+lookups of `..` (if `file` is a directory) redirected to `parent`.
diff --git a/hurd/interface/fsys.mdwn b/hurd/interface/fsys.mdwn
new file mode 100644
index 00000000..cea10d30
--- /dev/null
+++ b/hurd/interface/fsys.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys: Filesystem Control"]]
+
+[[!map pages="hurd/interface/fsys/* and !hurd/interface/fsys/*/*"
+show=title]]
diff --git a/hurd/interface/fsys/00.mdwn b/hurd/interface/fsys/00.mdwn
new file mode 100644
index 00000000..68e0479e
--- /dev/null
+++ b/hurd/interface/fsys/00.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_startup"]]
+
+ routine fsys_startup (
+ bootstrap: mach_port_t;
+ RPT
+ openflags: int;
+ control_port: mach_port_send_t;
+ out realnode: mach_port_send_t);
+
+Sent by filesystem on its bootstrap port upon startup. `realnode` is the node
+this filesystem is the translator for, opened with flags `flags` (`O_NOTRANS`
+is assumed even if not provided).
diff --git a/hurd/interface/fsys/01.mdwn b/hurd/interface/fsys/01.mdwn
new file mode 100644
index 00000000..9cb95de5
--- /dev/null
+++ b/hurd/interface/fsys/01.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_goaway"]]
+
+ routine fsys_goaway (
+ fsys: fsys_t;
+ RPT
+ flags: int);
+
+Filesystem should go away. Bye.
diff --git a/hurd/interface/fsys/02.mdwn b/hurd/interface/fsys/02.mdwn
new file mode 100644
index 00000000..63b84c48
--- /dev/null
+++ b/hurd/interface/fsys/02.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_getroot"]]
+
+ routine fsys_getroot(
+ fsys: fsys_t;
+ RPT
+ #ifdef FSYS_GETROOT_UREPLY
+ ureplyport ureply: mig_reply_port_t;
+ #endif
+ dotdot_node: mach_port_send_t;
+ gen_uids: idarray_t;
+ gen_gids: idarray_t;
+ flags: int;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out file: mach_port_send_t);
+
+Return a file to the root of the filesystem. `flags` are as for
+[[`dir_lookup`|dir_lookup]] (but `O_CREAT` and `O_EXCL` are not meaningful).
+`do_retry`, `retry_name`, and `result` are as for [[`dir_lookup`|dir_lookup]].
+The port should be authenticated with `gen_uids` and `gen_gids` (except, of
+course, for `FS_RETRY_REAUTH` and `FS_RETRY_MAGICAL). `dotdot_node` is an
+unauthenticated port for the directory in which this root is located.
diff --git a/hurd/interface/fsys/03.mdwn b/hurd/interface/fsys/03.mdwn
new file mode 100644
index 00000000..b0c033c2
--- /dev/null
+++ b/hurd/interface/fsys/03.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009
+Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_getfile"]]
+
+ routine fsys_getfile (
+ fsys: fsys_t;
+ RPT
+ gen_uids: idarray_t;
+ gen_gids: idarray_t;
+ filehandle: data_t;
+ out file: mach_port_send_t);
+
+Get a file given a file handle (see [[`file_getfh`|file_getfh]]).
diff --git a/hurd/interface/fsys/04.mdwn b/hurd/interface/fsys/04.mdwn
new file mode 100644
index 00000000..7b370d2b
--- /dev/null
+++ b/hurd/interface/fsys/04.mdwn
@@ -0,0 +1,58 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_syncfs"]]
+
+ routine fsys_syncfs (
+ fsys: fsys_t;
+ RPT
+ wait: int;
+ do_children: int);
+
+Synchronize the entire filesystem.
+
+This function has a companion in [[`file_syncfs`|file_syncfs]], which is
+invoked on an arbitrary node instead of the server's control port. Both of
+them are usually implemented in equivalent ways.
+
+# Implementation Examples
+
+Servers that either don't keep any unsynchronized state (or don't have a
+backing store at all) can simply `return 0`. Examples: [[translator/symlink]],
+[[translator/nfs]].
+
+## [[libtrivfs]]
+
+Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the
+underlying node represents this filesystem's backend, and once this node is
+synchronized, the whole [[libtrivfs]]-based filesystem is to be considered
+synchronized.
+
+### [[storeio]] / [[streamio]]
+
+Instead of to the underlying node, pass the call through to the backend
+(device).
+
+## [[libnetfs]]
+
+Invoke `netfs_attempt_syncfs`.
+
+## [[libdiskfs]]
+
+Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke
+`diskfs_sync_everything` and `diskfs_set_hypermetadata`.
+
+# Usage Examples
+
+## [[libdiskfs]]
+
+In the implementations of both [[`file_syncfs`|file_syncfs]] and
+[[`fsys_syncfs`|fsys_syncfs]], [[`fsys_syncfs`|fsys_syncfs]] is invoked on all
+active children.
diff --git a/hurd/interface/fsys/05.mdwn b/hurd/interface/fsys/05.mdwn
new file mode 100644
index 00000000..5caf6b17
--- /dev/null
+++ b/hurd/interface/fsys/05.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_set_options"]]
+
+ routine fsys_set_options (
+ fsys: fsys_t;
+ RPT
+ options: data_t;
+ do_children: int);
+
+Pass a server-specific options string. This usually includes flags similar to
+command line options, e.g., `--readonly`, or `--sync=30`.
diff --git a/hurd/interface/fsys/06.mdwn b/hurd/interface/fsys/06.mdwn
new file mode 100644
index 00000000..c8ccbed8
--- /dev/null
+++ b/hurd/interface/fsys/06.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_getpriv"]]
+
+ routine fsys_getpriv (
+ fsys: fsys_t;
+ RPT
+ out host_priv: mach_port_send_t;
+ out device_master: mach_port_send_t;
+ out fstask: mach_port_send_t);
+
+This is only implemented by bootstrap filesystems.
diff --git a/hurd/interface/fsys/07.mdwn b/hurd/interface/fsys/07.mdwn
new file mode 100644
index 00000000..4700416d
--- /dev/null
+++ b/hurd/interface/fsys/07.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_init"]]
+
+ routine fsys_init (
+ fsys: fsys_t;
+ sreplyport reply_port: sreply_port_t;
+ proc_server: mach_port_send_t;
+ auth_handle: auth_t);
+
+This is only implemented by bootstrap filesystems.
diff --git a/hurd/interface/fsys/08.mdwn b/hurd/interface/fsys/08.mdwn
new file mode 100644
index 00000000..42ac277d
--- /dev/null
+++ b/hurd/interface/fsys/08.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_forward"]]
+
+ routine fsys_forward (
+ server: mach_port_t;
+ RPT
+ requestor: mach_port_send_t;
+ argv: data_t);
+
+Ask `server` to provide [[`fsys`|fsys]] translation service for us.
+`requestor` is the bootstrap port supplied to the original translator, and
+`argv` are the command line arguments. If the recipient accepts the request,
+he (or some delegate) should send [[`fsys_startup`|fsys_startup]] to
+`requestor` to start the filesystem up.
diff --git a/hurd/interface/fsys/09.mdwn b/hurd/interface/fsys/09.mdwn
new file mode 100644
index 00000000..fa5c4117
--- /dev/null
+++ b/hurd/interface/fsys/09.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="fsys_get_options"]]
+
+ routine fsys_get_options (
+ server: fsys_t;
+ RPT
+ out options: data_t, dealloc);
+
+Return the options describing the operation of the receiving filesystem
+(sutiable for [[`fsys_set_options`|fsys_set_options]]).
diff --git a/hurd/interface/fsys_forward.mdwn b/hurd/interface/fsys_forward.mdwn
new file mode 100644
index 00000000..1ab16003
--- /dev/null
+++ b/hurd/interface/fsys_forward.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/08]]
diff --git a/hurd/interface/fsys_get_options.mdwn b/hurd/interface/fsys_get_options.mdwn
new file mode 100644
index 00000000..5a48d24d
--- /dev/null
+++ b/hurd/interface/fsys_get_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/09]]
diff --git a/hurd/interface/fsys_getfile.mdwn b/hurd/interface/fsys_getfile.mdwn
new file mode 100644
index 00000000..d292f265
--- /dev/null
+++ b/hurd/interface/fsys_getfile.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/03]]
diff --git a/hurd/interface/fsys_getpriv.mdwn b/hurd/interface/fsys_getpriv.mdwn
new file mode 100644
index 00000000..6c4332ba
--- /dev/null
+++ b/hurd/interface/fsys_getpriv.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/06]]
diff --git a/hurd/interface/fsys_getroot.mdwn b/hurd/interface/fsys_getroot.mdwn
new file mode 100644
index 00000000..ff03c482
--- /dev/null
+++ b/hurd/interface/fsys_getroot.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/02]]
diff --git a/hurd/interface/fsys_goaway.mdwn b/hurd/interface/fsys_goaway.mdwn
new file mode 100644
index 00000000..bf431a08
--- /dev/null
+++ b/hurd/interface/fsys_goaway.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/01]]
diff --git a/hurd/interface/fsys_init.mdwn b/hurd/interface/fsys_init.mdwn
new file mode 100644
index 00000000..2be8dfb9
--- /dev/null
+++ b/hurd/interface/fsys_init.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/07]]
diff --git a/hurd/interface/fsys_set_options.mdwn b/hurd/interface/fsys_set_options.mdwn
new file mode 100644
index 00000000..7f977c20
--- /dev/null
+++ b/hurd/interface/fsys_set_options.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/05]]
diff --git a/hurd/interface/fsys_startup.mdwn b/hurd/interface/fsys_startup.mdwn
new file mode 100644
index 00000000..21cbdee3
--- /dev/null
+++ b/hurd/interface/fsys_startup.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/00]]
diff --git a/hurd/interface/fsys_syncfs.mdwn b/hurd/interface/fsys_syncfs.mdwn
new file mode 100644
index 00000000..88955524
--- /dev/null
+++ b/hurd/interface/fsys_syncfs.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta redir=fsys/04]]
diff --git a/hurd/io_path.mdwn b/hurd/io_path.mdwn
index 96e6aa58..78e13efd 100644
--- a/hurd/io_path.mdwn
+++ b/hurd/io_path.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# read
@@ -35,3 +35,6 @@ is included in the section entitled
`hurd/libstore/rdwr.c:store_read`, which eventually calls `device_read`,
which is an [[RPC]], i.e., that actually gets into the kernel calling
`gnumach/linux/dev/glue/block.c:device_read`.
+
+ * ext2fs eventually finishes the data_request() function, the kernel installs
+ the page into the process that got a fault.
diff --git a/hurd/libchannel.mdwn b/hurd/libchannel.mdwn
index d3dff162..91c7810f 100644
--- a/hurd/libchannel.mdwn
+++ b/hurd/libchannel.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# libchannel
diff --git a/hurd/libfshelp.mdwn b/hurd/libfshelp.mdwn
new file mode 100644
index 00000000..4eda91b6
--- /dev/null
+++ b/hurd/libfshelp.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+TODO.
+
+
+# Open Issues
+
+[[!tag open_issue_hurd]]
+
+ * IRC, unknown channel, unknown date
+
+ <flavioc> antrik, i had some problems with CLISP. it goes into an infinite loop when there's no stdin or stdout (fshelp closes them when a translator starts). At first I tried to patch it but CLISP has very intricate dependencies on them, so I just created a wraper program (run-lisp-trans) that opens /dev/null as stdin and stdout and then exec's clisp
+ <marcus> flavioc, antrik: I would suggest to modify libfshelp to start translators with stdin/stdout mapped to /dev/null.
+ <marcus> or is there a good reason not to?
+ <flavioc> marcus, the problem is in clisp :-), it should not expect that stdin/stdout are always open
+ <marcus> flavioc: I agree, but there is really no point in making it hard. many programs will fail if stdin, stdout or stderr are not occupied. historically, they expect them to be there, so IMO libfshelp should be changed
+ <marcus> flavioc: it's a simple solution, works everywhere and shouldn't do any harm :)
+ <flavioc> marcus, I see. should I propose that on the mailing list? :-)
+ <marcus> flavioc: it might be simpler to just crack the svn server and sneak it in :)
+ <marcus> if you submit a patch I will look at it and check it in if it is ok
+ <marcus> and see if Roland is still watching ... :D
diff --git a/hurd/libhello_example.mdwn b/hurd/libhello_example.mdwn
index 9b4640e7..2c5490e2 100644
--- a/hurd/libhello_example.mdwn
+++ b/hurd/libhello_example.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Howto write a Hurd library
diff --git a/hurd/libihash.mdwn b/hurd/libihash.mdwn
index 4af92f71..58b6368c 100644
--- a/hurd/libihash.mdwn
+++ b/hurd/libihash.mdwn
@@ -1,6 +1,6 @@
-[[meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009, 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
diff --git a/hurd/libnetfs.mdwn b/hurd/libnetfs.mdwn
index 404ae3f0..8625f8bc 100644
--- a/hurd/libnetfs.mdwn
+++ b/hurd/libnetfs.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
#libnetfs
@@ -33,7 +34,7 @@ which is, generally speaking, seriously different from *libnetfs*.
All in all, *libnetfs* is the library you would choose when you want
to write a translator which will show a file (or a directory) in a
modified way (for example, if you'd like to show only *.sh* files or
-make an archive look unpacked). As different from *libtrivfs*, using
+make an archive look unpacked). As different from *[[libtrivfs]]*, using
*libnetfs*, you can show to your clients not just a single file, but a
whole directory tree.
@@ -148,7 +149,7 @@ result. Therefore, it is not quite right to perceive *libnetfs* nodes
as filesystem nodes. Instead, the focus of attention should stay upon
light nodes.
-##How It Wors: A More Verbose Description
+##How It Works: A More Verbose Description
At first let us see how the a *libnetfs*-based translator responds to
lookup requests. At the beginning the *netfs_attempt_lookup* callback
@@ -229,7 +230,7 @@ performance or to solve specific problems.
##Synchronization is Crucial
A *libnetfs* programmer shall always keep in mind that, as different
-from *libtrivfs*-based translators, *libnetfs*-based translators are
+from *[[libtrivfs]]*-based translators, *libnetfs*-based translators are
always multithreaded. To guard data against damage each node
incorporates a lock. Moreover, each light node usually contains a
lock, too. This happens because *libnetfs* nodes and light nodes are
diff --git a/hurd/libpager.mdwn b/hurd/libpager.mdwn
index 91beddfc..c9a1c0b6 100644
--- a/hurd/libpager.mdwn
+++ b/hurd/libpager.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Mach's [[microkernel/mach/external_pager_mechanism]].
diff --git a/hurd/libports.mdwn b/hurd/libports.mdwn
new file mode 100644
index 00000000..f9aa518f
--- /dev/null
+++ b/hurd/libports.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+*libports* is a convenience library for easier handling of [[Mach
+ports|microkernel/mach/port]]. It is documented in the [[Reference_Manual]].
+
+*libports* is not (at least, not for now) a generalization / abstraction of
+Mach ports to the functionality the Hurd needs, that is, it is not meant to
+provide an interface independently of the underlying [[microkernel]].
diff --git a/hurd/libstore.mdwn b/hurd/libstore.mdwn
index 6b81691b..8eac39fe 100644
--- a/hurd/libstore.mdwn
+++ b/hurd/libstore.mdwn
@@ -1,37 +1,36 @@
-[[meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+`libstore` is used to provide a generic interface to access data (read/write)
+on backing stores.
+
+It more than just a thin layer between [[GNU Mach|microkernel/mach/gnumach]]
+devices (`hd0` for example) and the device node below `/dev/`...
-`libstore` is more than just a thin layer between
-[[GNU_Mach|microkernel/mach/gnumach]] devices (`hd0` for example) and the
-device node below `/dev`...
# Available Stores
-* `device`: raw device access, used for access to `hd0`, etc.
-* `file`: use a common file as some kind of block device.
-* `zero`: kind of an empty block device.
-* `task`: mach task store backend. TODO: what's this?
-* `ileave`: interleave store (striping).
-* `concat`: concatenate stuff.
-* `remap`: remap stuff.
-* `query`: TODO: what's this?
-* `copy`: TODO: what's this good for?
-* `gunzip`: `gunzip` data on the fly.
-* `bunzip2`: `bunzip2` data on the fly.
-* `nbd`: network block device (Linux-compatible).
-* `url`: typed store with URL syntax.
-* `typed`: typed store (chainable stores thingy).
+[[!map pages="*_store and !*/discussion"
+show=title]]
At <http://www.kataplop.net/pub/info/projets> you can find some effort to make
some crypto store.
At <http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz>, another package
can be found.
+
+
+# Examples
+
+[[!inline
+pages="hurd/libstore/examples/* and !*/discussion"
+show=0
+feeds=no]]
diff --git a/hurd/libstore/bunzip2_store.mdwn b/hurd/libstore/bunzip2_store.mdwn
new file mode 100644
index 00000000..bd5fc914
--- /dev/null
+++ b/hurd/libstore/bunzip2_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="bunzip2 store: bunzip2 data on the fly"]]
diff --git a/hurd/libstore/concat_store.mdwn b/hurd/libstore/concat_store.mdwn
new file mode 100644
index 00000000..1d3a895a
--- /dev/null
+++ b/hurd/libstore/concat_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="concat store: concatenate"]]
diff --git a/hurd/libstore/copy_store.mdwn b/hurd/libstore/copy_store.mdwn
new file mode 100644
index 00000000..5df5d220
--- /dev/null
+++ b/hurd/libstore/copy_store.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2000, 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="copy store: copy-on-write; discard changes on termination"]]
+
+A *copy* store is meaningful only with respect to a child store. What a *copy*
+store does is to read the child store's entire contents into memory at startup
+time and then use that buffer as the contents of the store thereafter. (The
+code for this is in `libstore/copy.c`.)
+
+Because of how the interfaces are specified, reading the entire contents of a
+[[*zero* store|zero store]] in fact means just `vm_allocate`ing fresh memory.
+So, a *copy* store based on a [[*zero* store|zero store]] is just what you'd
+get from `vm_allocate`ing some memory and passing it into
+`store_buffer_create`.
+
+See a [[ramdisk example|examples/ramdisk]].
diff --git a/hurd/libstore/device_store.mdwn b/hurd/libstore/device_store.mdwn
new file mode 100644
index 00000000..4b97f8cc
--- /dev/null
+++ b/hurd/libstore/device_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="device store: Mach device access"]]
diff --git a/hurd/libstore/examples/ramdisk.mdwn b/hurd/libstore/examples/ramdisk.mdwn
new file mode 100644
index 00000000..33d33601
--- /dev/null
+++ b/hurd/libstore/examples/ramdisk.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+ $ settrans --create --active ramdisk0 /hurd/storeio -T copy zero:32M
+ $ mkfs.ext2 -F -b 4096 ramdisk0
+ [...]
+ $ settrans --active --orphan ramdisk0 /hurd/ext2fs.static ramdisk0
+ $ df -h ramdisk0/
+ df: Warning: cannot read table of mounted file systems
+ Filesystem Size Used Avail Use% Mounted on
+ - 32M 1.1M 30M 4% /media/data/home/tschwinge/ramdisk0
+
+This uses [[settrans]] and [[storeio]] to create a ramdisk of 32 MiB by routing
+a thusly sized [[zero store]] through the [[copy store]], connecting
+that to the `ramdisk0` node, create a `ext2` filesystem on it, and replace the
+translator running on the `ramdisk0` node with a instance of the [[`ext2fs`
+translator|translator/ext2fs]] running on the same node ([[translator
+stacking|translator/stacking]]).
+
+It is a [[!taglink open_issue_hurd]] why this does only work with
+`ext2fs.static`, but not the dynamically linked `ext2fs` (`settrans:
+/hurd/ext2fs: Translator died`).
+
+A (better) alternative would be using the [[`tmpfs`
+translator|translator/tmpfs]], but that one is broken at the moment.
diff --git a/hurd/libstore/file_store.mdwn b/hurd/libstore/file_store.mdwn
new file mode 100644
index 00000000..5e9f6822
--- /dev/null
+++ b/hurd/libstore/file_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="file store: use a file as a kind of block device"]]
diff --git a/hurd/libstore/gunzip_store.mdwn b/hurd/libstore/gunzip_store.mdwn
new file mode 100644
index 00000000..25fca4bf
--- /dev/null
+++ b/hurd/libstore/gunzip_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="gunzip store: gunzip data on the fly"]]
diff --git a/hurd/libstore/ileave_store.mdwn b/hurd/libstore/ileave_store.mdwn
new file mode 100644
index 00000000..29b51b72
--- /dev/null
+++ b/hurd/libstore/ileave_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="ileave store: interleave store (striping)"]]
diff --git a/hurd/libstore/nbd_store.mdwn b/hurd/libstore/nbd_store.mdwn
new file mode 100644
index 00000000..5874b162
--- /dev/null
+++ b/hurd/libstore/nbd_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="nbd store: Linux-compatible network block device"]]
diff --git a/hurd/libstore/part.mdwn b/hurd/libstore/part.mdwn
new file mode 100644
index 00000000..5d727ad8
--- /dev/null
+++ b/hurd/libstore/part.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="part store"]]
+
+`part.c`
+
+Written by Neal in 2001, 2002.
+
+Useful if the microkernel / [[DDE]] / [[microkernel/mach/gnumach/ports/Xen]]
+doesn't export *partition devices*, but only *raw* devices.
+
+Neal:
+
+> The motivation was to be able to evict the partitioning logic from Mach.
+
+---
+
+TODO: How to use, etc.
diff --git a/hurd/libstore/query_store.mdwn b/hurd/libstore/query_store.mdwn
new file mode 100644
index 00000000..9ebf8e47
--- /dev/null
+++ b/hurd/libstore/query_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="query store"]]
diff --git a/hurd/libstore/remap_store.mdwn b/hurd/libstore/remap_store.mdwn
new file mode 100644
index 00000000..158ffe95
--- /dev/null
+++ b/hurd/libstore/remap_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="remap store"]]
diff --git a/hurd/libstore/task_store.mdwn b/hurd/libstore/task_store.mdwn
new file mode 100644
index 00000000..e4426639
--- /dev/null
+++ b/hurd/libstore/task_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="task store: Mach task store backend"]]
diff --git a/hurd/libstore/typed_store.mdwn b/hurd/libstore/typed_store.mdwn
new file mode 100644
index 00000000..e71ff67f
--- /dev/null
+++ b/hurd/libstore/typed_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="typed store: chainable stores"]]
diff --git a/hurd/libstore/url_store.mdwn b/hurd/libstore/url_store.mdwn
new file mode 100644
index 00000000..17a24e97
--- /dev/null
+++ b/hurd/libstore/url_store.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="url store: typed store with URL syntax"]]
diff --git a/hurd/libstore/zero_store.mdwn b/hurd/libstore/zero_store.mdwn
new file mode 100644
index 00000000..4c53ab56
--- /dev/null
+++ b/hurd/libstore/zero_store.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2000, 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="zero store: empty block device"]]
+
+A *zero* store is what `/dev/zero` is (always reads zeros), the setting on
+`/dev/zero` gives no name (i.e. size) and the default size is the maximum
+possible. The only meaning of the size of a *zero* is what `st_size` will
+report and what offsets it will let you try to read or write from--there is
+never any data associated with a *zero* store. (The code for this is in
+`libstore/zero.c`.)
diff --git a/hurd/libtrivfs.mdwn b/hurd/libtrivfs.mdwn
new file mode 100644
index 00000000..b15aeabe
--- /dev/null
+++ b/hurd/libtrivfs.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+Certain [[translator]]s do not need to be very complex, because they represent
+a single file rather than an entire directory hierarchy. The *trivfs library*,
+which is declared in `<hurd/trivfs.h>`, does most of the work of implementing
+this kind of translator. This library requires the [[iohelp|libiohelp]] and
+[[ports|libports]] libraries.
+
+Using `libtrivfs` is not the only way to implement such a single-file
+translator, but is a convenient abstraction: the library hides a lot of
+low-level stuff and you just have to provide a number of call-back functions
+and symbols in order to get a functioning (for file I/O, etc.) node in the file
+system.
+
+
+# Further Reading
+
+ * In the *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*:
+ <http://www.gnu.org/software/hurd/doc/hurd_6.html#SEC48>.
+
+ * In the *[[Hurd_Hacking_Guide]]*:
+ <http://www.gnu.org/software/hurd/hacking-guide/hhg.html#An-Example-using-trivfs>.
diff --git a/hurd/logo.mdwn b/hurd/logo.mdwn
index fcfe22dd..467e6ba8 100644
--- a/hurd/logo.mdwn
+++ b/hurd/logo.mdwn
@@ -1,25 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
-The famous *Hurd Boxes* logo is available at
-<http://www.gnu.org/graphics/hurd_mf.html>.
-
-
-On some lonely Wednesday, Colin Leitner and [[Thomas_Schwinge|tschwinge]]
-converted these four boxes from the [original METAFONT
-sources](http://www.gnu.org/graphics/hurd.mf) to
-[[hand-written_SVG_code|boxes-redrawn.svg]].
-
-[[img boxes-redrawn.png]]
-
-
-This symbol is also being used as a favicon for this web site.
-
-[[img /favicon.ico]]
+[[!meta redir=/logo]]
diff --git a/hurd/logo/boxes-redrawn.png b/hurd/logo/boxes-redrawn.png
deleted file mode 100644
index fd26a87e..00000000
--- a/hurd/logo/boxes-redrawn.png
+++ /dev/null
Binary files differ
diff --git a/hurd/logo/boxes-redrawn.svg b/hurd/logo/boxes-redrawn.svg
deleted file mode 100644
index c0a7e460..00000000
--- a/hurd/logo/boxes-redrawn.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="20cm" height="20cm" viewBox="0 0 100 100">
- <desc>
- The Hurd Boxes and Arrows logo.
-
- Converted to SVG by Thomas Schwinge and Colin Leitner at 09/2007.
- We used the metafont original from Stephen McCamant (1997).
- available on http://www.gnu.org/graphics/hurd_mf.html.
-
- TODO. The flection of some of the curves is different from the
- original. We don't know yet how to exactly reproduce
- METAFONT's ``A..B'' syntax. Also the thickness of the lines
- may be a different one. Elaborate on the copyright situation
- and licensing conditions.
- </desc>
- <defs>
- <style type="text/css">
- #boxes, #arrows {
- stroke: black;
- stroke-width: 3;
- }
-
- #boxes { fill: white; }
- </style>
- </defs>
- <g transform="translate(0 100) scale(1 -1) translate(-5 5)">
- <g id="arrows" fill="none" stroke-linecap="round">
- <path d="M 40 80 Q 20 80 20 65 L 20 60"/>
- <path d="M 15 65 L 20 60 L 25 65"/>
-
- <path d="M 50 70 Q 50 50 62.5 50 L 70 50"/>
- <path d="M 65 45 L 70 50 L 65 55"/>
-
- <path d="M 60 20 Q 100 20 100 50 Q 100 80 65 80 L 60 80"/>
- <path d="M 65 75 L 60 80 L 65 85"/>
-
- <path d="M 80 40 Q 80 0 50 0 Q 20 0 20 35 L 20 40"/>
- <path d="M 15 35 L 20 40 L 25 35"/>
- </g>
-
- <g id="boxes">
- <rect x="10" y="40" width="20" height="20"/>
- <rect x="40" y="70" width="20" height="20"/>
- <rect x="70" y="40" width="20" height="20"/>
- <rect x="40" y="10" width="20" height="20"/>
- </g>
- </g>
-</svg>
-
diff --git a/hurd/neighborhurd.mdwn b/hurd/neighborhurd.mdwn
index 3298e07a..5a66f992 100644
--- a/hurd/neighborhurd.mdwn
+++ b/hurd/neighborhurd.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
It is possible to run multiple instances of the Hurd
in parallel, on a single instance of Mach. Other than
diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn
index 6ed031ed..ff16eb25 100644
--- a/hurd/networking.mdwn
+++ b/hurd/networking.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
For each supported `PF_*` protocol family, there is a file `/servers/socket/N`
where `N` is the numberic value fo the `PF_*` symbol. Right now
diff --git a/hurd/ng/discussion.mdwn b/hurd/ng/discussion.mdwn
new file mode 100644
index 00000000..d4632bd5
--- /dev/null
+++ b/hurd/ng/discussion.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+To go beyond research project Hurd have to support thousands of various programs running on GNU/Linux nowadays.
+It looks like ExoKernel approach http://pdos.csail.mit.edu/exo.html might be useful here.
+Does somebody tried to look into something like Hurd exokernel + liblinux?
diff --git a/hurd/ng/issues_with_mach.mdwn b/hurd/ng/issues_with_mach.mdwn
index 4737f441..9fac498f 100644
--- a/hurd/ng/issues_with_mach.mdwn
+++ b/hurd/ng/issues_with_mach.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
- * [[microkernel/mach/gnumach/open_issues/Resource_management_problems]]
+ * [[open issues/Resource Management Problems]]
* [[Critique]]
diff --git a/hurd/ng/limitations_of_the_original_hurd_design.mdwn b/hurd/ng/limitations_of_the_original_hurd_design.mdwn
index 25f03372..96d8912b 100644
--- a/hurd/ng/limitations_of_the_original_hurd_design.mdwn
+++ b/hurd/ng/limitations_of_the_original_hurd_design.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[Critique]]
diff --git a/hurd/ng/position_paper.mdwn b/hurd/ng/position_paper.mdwn
index e0f4bf60..abc781da 100644
--- a/hurd/ng/position_paper.mdwn
+++ b/hurd/ng/position_paper.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Neal Walfield and Marcus Brinkmann wrote a paper titled [*Improving Usability
via Access Decomposition and Policy
diff --git a/hurd/open_issues.mdwn b/hurd/open_issues.mdwn
deleted file mode 100644
index c4bcce09..00000000
--- a/hurd/open_issues.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-[[meta title="Open Issues"]]
-
-This is a dumping ground for open issues for the GNU Hurd.
-
-[[inline
-pages="hurd/open_issues/* and !*/discussion"
-show=0
-feeds=no
-actions=yes
-rootpage="hurd/open_issues" postformtext="Add a new item titled:"]]
diff --git a/hurd/open_issues/cvs_tasks_file.mdwn b/hurd/open_issues/cvs_tasks_file.mdwn
deleted file mode 100644
index 9a053e33..00000000
--- a/hurd/open_issues/cvs_tasks_file.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-[[meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
-Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-The canonical [tasks
-file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain)
-from the CVS archive.
diff --git a/hurd/open_issues/cvs_todo_file.mdwn b/hurd/open_issues/cvs_todo_file.mdwn
deleted file mode 100644
index 958502e1..00000000
--- a/hurd/open_issues/cvs_todo_file.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-[[meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
-Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-The canonical [TODO
-file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain)
-from the CVS archive.
diff --git a/hurd/open_issues/gdb_non-stop_mode.mdwn b/hurd/open_issues/gdb_non-stop_mode.mdwn
deleted file mode 100644
index c302251f..00000000
--- a/hurd/open_issues/gdb_non-stop_mode.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-GNU GDB's `gnu-nat.c` doesn't support *non-stop* mode.
-
-Also, from <http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html>,
-GNU GDB's Pedro Alves:
-
-> I also notice that when going through the shell in non-stop mode, it would be
-> more correct to resume all threads --- we don't want non-stop and its
-> scheduler-locking to apply to the shell. Basically, non-stop should be off
-> if there are pending execs. This was an existing issue, and doesn't affect
-> linux today, so I'll just ignore that for now, as it needs more tweaking to
-> fix.
diff --git a/hurd/open_issues/gdb_pending_execs.mdwn b/hurd/open_issues/gdb_pending_execs.mdwn
deleted file mode 100644
index e9d5c6d2..00000000
--- a/hurd/open_issues/gdb_pending_execs.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-<http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html>:
-
-GNU GDB's Ulrich Weigand:
-
-> Hmm. It would appear that "set exec-wrapper" is currently broken with
-> the gnu-nat.c target, right?
-
-GNU GDB's Pedro Alves:
-
->> Yeah, it appears so. Don't know if it's possible to get rid of the local
->> pending execs handling in gnu-nat.c. An alternative would be to make
->> pending_execs a property of inferior.h:`struct inferior' instead of of
->> gnu-nat.c:`struct inf'.
diff --git a/hurd/open_issues/gdb_thread_ids.mdwn b/hurd/open_issues/gdb_thread_ids.mdwn
deleted file mode 100644
index df4b7bbc..00000000
--- a/hurd/open_issues/gdb_thread_ids.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-GNU GDB's Pedro Alves:
-
-> One thing [I asked
-> myself](http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html)
-> was, if gnu-nat.c couldn't be using the port's id as thread ids instead of a
-> locally auto-generated number. Maybe the thread id of the main thread would
-> be preserved across execs this way
diff --git a/hurd/open_issues/some_todo_list.mdwn b/hurd/open_issues/some_todo_list.mdwn
deleted file mode 100644
index d9aab4d1..00000000
--- a/hurd/open_issues/some_todo_list.mdwn
+++ /dev/null
@@ -1,119 +0,0 @@
-[[meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free
-Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-This todo is primarily targetted at the Hurd proper
-and applications that rely on the Hurd interfaces.
-
-* psmisc
-
-The tools provided by the psmisc package are linux centric. Killall and pstree, for instance, require Linux's proc file system but could just as easily use Hurd's libps.
-
-* tmpfs
-* ppp
-* unionfs/stowfs
-* supermount translator
-
-Related: [[KnownHurdLimits]]
-
-From Marcus, 2002:
-
-* xkb driver for console (for international users)
-* kbd leds in console (well, in general, Roland's new driver in oskit for that crap)
-* fixing fakeroot (it's buggy)
-* fixing tmpfs (it's buggy, Neal says it's Mach's fault)
-* adding posix shared memory (requires the io\_close call to be implemented)
-* adding posix file locking (requires the io\_close call to be implemented)
-* testing
- * find + various filesystems (are inode numbers for . and .. sane?)
- * ext2fs with other block sizes than 4096
- * --help and --version and --usage in all programs
- * I have seen ^V in some --help output, might be argp bug
- * Verify that all options are documented clearly, and that no unimplemented options appear
- * Is the short and long description in the help output correct?
- * Is the return value of all programs correct (eg, does main() return a sane value)
- * Is the suid bit correctly set for all installed programs?
- * Translators
- * Does settrans -g work? -fg?
- * Does fsysopts work? Does setting options with fsysopts work?
- * Does stat() work on all translated nodes and give proper data?
- * What about chown, chmod (some translators should pass this through to the underlying node, esp in /dev!)
- * Does statfs give correct data?
- * Are all inode numbers and link counts correct?
-* We also should have a "make check" test suite. We can add this once Jeff finished his automake patches
-* pick up the other things
- * pthread, definitely. Now that we are so close
- * new console is basically done
- * needs integration of course
- * X switching support
-* there is certainly more to do ...
-
-Wolfgang list of [Easy tasks](http://mail.gnu.org/pipermail/help-hurd/2002-July/006413.html) on July 28, 2002:
-
-<table border="1" cellpadding="1" cellspacing="0">
- <tr>
- <th bgcolor="#99CCCC"><strong>Difficulty</strong></th>
- <th bgcolor="#99CCCC"><strong>Task</strong></th>
- </tr>
- <tr>
- <td> 0 </td>
- <td> Check if all programs handle options (at least --help, --version and --usage; don't forget about the shell scripts) </td>
- </tr>
- <tr>
- <td> 1 </td>
- <td> Check if all translators handle fsysopts </td>
- </tr>
- <tr>
- <td> 1 </td>
- <td> Check if all translators respond to "settrans -g" </td>
- </tr>
- <tr>
- <td> 1 </td>
- <td> More tests of this kind </td>
- </tr>
- <tr>
- <td> 2 </td>
- <td> Fix those of the above who don't work as intended </td>
- </tr>
- <tr>
- <td> 2 </td>
- <td> Document (in doc/hurd.texi) all undocumented programs (translators as well as programs in utils/ and sutils/ and some others) </td>
- </tr>
- <tr>
- <td> 1 </td>
- <td> Find a POSIX test suite, run it on GNU/Hurd, report the results </td>
- </tr>
- <tr>
- <td> 1 </td>
- <td> Find more useful test suites to run </td>
- </tr>
- <tr>
- <td> 3 </td>
- <td> Update INSTALL-cross </td>
- </tr>
- <tr>
- <td> 2 </td>
- <td> Check if all the store classes in libstore work (we have many of them, look into the Makefile) </td>
- </tr>
- <tr>
- <td> 4 </td>
- <td> Fix those who don't work </td>
- </tr>
- <tr>
- <td> 2 </td>
- <td> Document all still undocumented store classes </td>
- </tr>
- <tr>
- <td> 2 </td>
- <td> The console is pretty new code, it told me it wants to get tested </td>
- </tr>
-</table>
-
-Where difficulty 0 means trivial and 4 means tricky; the difficulty has nothing to do with the importance.
diff --git a/hurd/open_issues/wrong_reply_message_id.mdwn b/hurd/open_issues/wrong_reply_message_id.mdwn
deleted file mode 100644
index d9db996c..00000000
--- a/hurd/open_issues/wrong_reply_message_id.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
- <tschwinge> # settrans -P -a /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.10.61 -g 192.168.10.1 -m 255.255.255.0
- <tschwinge> Translator pid: 2289
- <tschwinge> Pausing...
- <tschwinge> pfinet: /build/buildd/hurd-20080607/build-tree/hurd/libports/create-internal.c:115: _ports_create_port_internal: Unexpected error: (ipc/mig) wrong reply message ID.
- <neal> it would be nice to print out the id when those sorts of errors occur.
diff --git a/hurd/porting.mdwn b/hurd/porting.mdwn
new file mode 100644
index 00000000..c94572a4
--- /dev/null
+++ b/hurd/porting.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+ * [[Guidelines]]
+ * [[System_API_Limitations]]
+
+ * Debian: [[running/debian/Porting]]
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn
new file mode 100644
index 00000000..8dd27a52
--- /dev/null
+++ b/hurd/porting/guidelines.mdwn
@@ -0,0 +1,271 @@
+[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009 Free Software
+Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+This is a compilation of common porting problems and their solutions.
+
+
+Additionally to this page, also see the section *General Porting Issues* of
+<http://www.debian.org/ports/hurd/hurd-devel-debian><!-- TODO: merge these two
+pages. -->, as well as further Debian-specific [[running/debian/porting]]
+information.
+
+There is a separate page about [[System_API_Limitations]].
+
+You may ask on the [[mailing lists/bug-hurd]] mailing list for details or
+questions about fixing bugs.
+
+
+## <a name="Undefined_bits_confname_h_tt_mac"> Undefined `bits/confname.h` macros (`PIPE_BUF`, ...) </a>
+
+If macro `XXX` is undefined, but macro `_SC_XXX` or `_PC_XXX` is defined in `bits/confname.h`, you probably need to use `sysconf`, `pathconf` or `fpathconf` to obtain it dynamicaly.
+
+The following macros have been found in this offending situation (add more if you find them): `PIPE_BUF`
+
+An example with `sysconf`: (when you find a `sysconf` offending macro, put a better example)
+
+ #ifndef XXX
+ #define XXX sysconf(_SC_XXX)
+ #endif
+ /* offending code using XXX follows */
+
+An example with `fpathconf`:
+
+ #ifdef PIPE_BUF
+ read(fd, buff, PIPE_BUF - 1);
+ #else
+ read(fd, buff, fpathconf(fd, _PC_PIPE_BUF) - 1);
+ #endif
+ /* note we can't #define PIPE_BUF, because it depends
+ on the "fd" variable */
+
+## <a name="Bad_File_Descriptor"> Bad File Descriptor </a>
+
+If you get Bad File Descriptor error when trying to read from a file (or accessing it at all), check the `open()` invocation. The second argument is the access method. If it is a hard coded number instead of a symbol defined in the standard header files, the code is screwed and should be fixed to either use `O_RDONLY`, `O_WRONLY` or `O_RDWR`. This bug was observed in the `fortunes` and `mtools` packages for example.
+
+## <a name="PATH_MAX_tt_MAX_PATH_tt_MAXPATHL"> `PATH_MAX` / `MAX_PATH` / `MAXPATHLEN` </a>
+
+Every unconditionalized use of `PATH_MAX`, `MAX_PATH` or `MAXPATHLEN` is a POSIX incompatibility. If there is no upper limit on the length of a path (as its the case for GNU), this symbol is not defined in any header file. Instead, you need to either use a different implementation that does not rely on the length of a string or use `sysconf()` to query the length at runtime. If `sysconf()` returns -1, you have to use `realloc()` to allocate the needed memory dynamically. Usually it is thus simpler to just use dynamic allocation. Sometimes the amount is actually known. Else, a geometrically growing loop can be used: for instance, see [Alioth patch](http://alioth.debian.org/tracker/download.php/30628/410472/303735/1575/cpulimit-path-max-fix.patch) or [Pulseaudio patch](http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-pulse;att=1;bug=522100). Note that in some cases there are GNU extensions that just work fine: when the `__GLIBC__` macro is defined, `getcwd()` calls can be just replaced by `get_current_dir_name()` calls.
+
+## <a name="ARG_MAX"> `ARG_MAX` </a>
+
+Same rationale as `PATH_MAX`. There is no limit on the number of arguments.
+
+## <a name="IOV_MAX"> `IOV_MAX` </a>
+
+Same rationale as `PATH_MAX`. There is no limit on the number of iovec items.
+
+## <a name="MAXHOSTNAMELEN_tt_"> `MAXHOSTNAMELEN` </a>
+
+Same as `PATH_MAX`. When you find a `gethostname()` function, which acts on a static buffer, you can replace it with Neal's [xgethostname function](http://ftp.walfield.org/pub/people/neal/xgethostname/) which returns the hostname as a dynamic buffer. For example:
+
+Buggy code:
+
+ char localhost[MAXHOSTNAMELEN];
+ ...
+ gethostname(localhost, sizeof(localhost));
+
+Fixed code:
+
+ #include "xgethostname.h"
+ ...
+ char *localhost;
+ ...
+ localhost = xgethostname();
+ if (! localhost)
+ {
+ perror ("xgethostname");
+ return ERROR;
+ }
+ ...
+ /* use LOCALHOST. */
+ free (localhost);
+
+## <a name="NOFILE_tt_"> `NOFILE` </a>
+
+Replace with `getrlimit(RLIMIT_NOFILE,...)`
+
+## <a name="GNU_specific_define_tt_"> </a> GNU specific `#define`
+
+If you need to include specific code for GNU/Hurd using `#if` ... `#endif`, then you can use the `__GNU__` symbol to do so. But think (at least) thrice! before doing so. In most situations, this is completely unnecessary and will create more problems than it may solve. Better ask on the mailing list how to do it right if you can't think of a better solution.
+
+## <a name="sys_errlist_tt_vs_strerror_tt_"> `sys_errlist[]` vs. `strerror()` </a>
+
+If a program has only support for `sys_errlist[]` you will have to do some work to make it compile on GNU, which has dropped support for it and does only provide `strerror()`. Steinar Hamre writes about `strerror()`:
+
+`strerror()` should be used because:
+
+* It is the modern, POSIX way.
+* It is localized.
+* It handles invalid signals/numbers out of range. (better errorhandling and not a buffer-overflow-candidate/security risk)
+
+`strerror()` should always be used if it is available. Unfortunaly there are still some old non-POSIX systems that do not have `strerror()`, only `sys_errlist[]`.
+
+Today, only supporting `strerror()` is far better than only supporting `sys_errlist[]`. The best (from a portability viewpoint), however is supporting both. For configure.in, you will need:
+
+ AC_CHECK_FUNCS(strerror)
+
+To `config.h.in`, you need to add:
+
+ #undef HAVE_STRERROR
+
+Then something like:
+
+ #ifndef HAVE_STRERROR
+ static char *
+ private_strerror (errnum)
+ int errnum;
+ {
+ extern char *sys_errlist[];
+ extern int sys_nerr;
+
+ if (errnum > 0 && errnum <= sys_nerr)
+ return sys_errlist[errnum];
+
+ return "Unknown system error";
+ }
+ #define strerror private_strerror
+ #endif /* HAVE_STRERROR */
+
+You can for example look in the latest coreutils (the above is a simplified version of what I found there.) Patches should of course be sent to upstream maintainers, this is very useful even for systems with a working `sys_errlist[]`.
+
+Of course, if you don't care about broken systems (like MS-DOG) not supporting `strerror()` you can just replace `sys_errlist[]` directly (upstream might not accept your patch, but debian should have no problem)
+
+## <a name="C++_error_t"> C++, `error_t` and `E*` </a>
+
+On the Hurd, `error_t` is an enumeration of the `E*` constants. However, C++
+does not like `E*` integer macros being directly assigned to that enumeration. In short, replace
+
+ error_t err = EINTR;
+
+by
+
+ error_t err = error_t(EINTR);
+
+## <a name="Missing_termio_h_tt_"> Missing `termio.h` </a>
+
+Change it to use `termios.h` (check for it properly with autoconf `HAVE_TERMIOS_H` or the `__GLIBC__` macro)
+
+Also, change calls to `ioctl(fd, TCGETS, ...)` and `ioctl(fd, TCSETS, ...)` with `tcgetattr(fd, ...)` and `tcsetattr(fd, ...)`.
+
+## <a name="AC_HEADER_TERMIO_tt_"> `AC_HEADER_TERMIO` </a>
+
+The autoconf check for `AC_HEADER_TERMIO` tryes to check for termios, but it's only really checking for termio in `termios.h`. It is better to use `AC_CHECK_HEADERS(termio.h termios.h)`
+
+## <a name="_IOT"> missing `_IOT` </a>
+
+This comes from ioctls. Fixing this is easy if the structure members can be expressed by using the _IOT() macro, else it's simply impossible... See `bits/termios.h` for an instance:
+
+`#define _IOT_termios /* Hurd ioctl type field. */ \
+ _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)`
+
+The rationale behind is that on the Hurd ioctl numbers actually encode how the
+data should be transferred via RPC: here `struct termios` holds 4 members of
+type `tcflag_ts`, then `NCCS` members of type `cc_tsi` and finaly 2 members of
+type `speed_ts`, so the RPC mecanism will know how to transfer them.
+
+As you can see, this limits the number of contiguous kinds of members to 3, and
+in addition to that (see the bitfield described in `ioctls.h`), the third kind
+of member is limited to 3 members. This is a design limitation, there is no way
+to overcome it at the moment.
+
+Note: if a field member is a pointer, then the ioctl can't be expressed
+this way, and that makes sense, since the server you're talking to
+doesn't have direct access to your memory. Ways other than ioctls must
+then be found.
+
+## <a name="SA_SIGINFO"> `SA_SIGINFO` </a>
+
+Not implemented, packages may be fixed for working around this: use void sighandler(int num) prototype and sa_handler field.
+
+## <a name="SOL_IP"> `SOL_IP` </a>
+
+Not implemented yet.
+
+## <a name="HZ"> `HZ` </a>
+
+Linuxish and doesn't even make sense since the value may vary according to the running kernel. Should use `sysconf(_SC_CLK_TCK)` or `CLK_TCK` instead.
+
+## <a name="SIOCDEVPRIVATE"> `SIOCDEVPRIVATE` </a>
+
+Oh, we should probably provide it.
+
+## <a name="MAP_NORESERVE"> `MAP_NORESERVE` </a>
+
+Not POSIX, but we could implement it.
+
+## <a name="O_DIRECT"> `O_DIRECT` </a>
+
+Long story to implement.
+
+## <a name="PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"> `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP` </a>
+
+We could easily provide it;
+
+## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a>
+
+We should actually provide it.
+
+## <a name="types"> `linux/types.h` or `asm/types.h` </a>
+
+These are not POSIX, `sys/types.h` and `stdint.h` should be used instead.
+
+## <a name="iopl"> `iopl` </a>
+
+Not supported. Try to replace with `ioperm(0, 65536, 1)` (conditionned with `__GNU__` as that will not work in Linux).
+
+## <a name="iopl"> `semget`, `sem_open` </a>
+
+Not implemented, will always fail. Use `sem_init()` instead if possible.
+
+## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a>
+
+Not implemented, not POSIX. Try to disable the feature in the package.
+
+## <a name="parport"> <linux/parport.h> <linux/ppdev.h> </a>
+
+There is no programming interface for the parallel port on GNU/Hurd yet.
+
+## <a name="errno"> `errno` values </a>
+
+When dealing with `errno`, you should always use the predefined error codes defined with the `E*` constants, instead of manually comparing/assigning/etc with their values.
+
+For example (C/C++):
+
+ /* check whether it does not exist */
+ if (errno == 2)
+ ...
+
+or Python:
+
+ # check whether it does not exist
+ try:
+ ...
+ except OSError, err:
+ err.errno == 2:
+ ...
+
+This is wrong, as [the actual values of the `E*` are unspecified (per POSIX)](http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03). You must always use the predefined constants for the possible errors.
+
+For example (C/C++):
+
+ /* check whether it does not exist */
+ if (errno == ENOENT)
+ ...
+
+With Python, you can use the [`errno` module](http://docs.python.org/library/errno.html) for the various constants:
+
+ # check whether it does not exist
+ try:
+ ...
+ except OSError, err:
+ import errno
+ err.errno == errno.ENOENT:
+ ...
diff --git a/hurd/porting/system_api_limitations.mdwn b/hurd/porting/system_api_limitations.mdwn
new file mode 100644
index 00000000..06a6b382
--- /dev/null
+++ b/hurd/porting/system_api_limitations.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2003, 2004, 2005, 2009 Free Software Foundation,
+Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+Sometimes building or running a program will fail due to bugs in the system API
+implementation (in [[glibc]] and the [[Hurd]]). Make sure you check this list
+and know them before porting, otherwise you'll end up debugging something just
+to find out its an already known bug.
+
+Taken from the bug lists in [[running/Debian]] BTS. If you find more of them
+(and it is clear in the bug log that it is a bug), please add them to the list
+below.
+
+These are the known system API limits that have porting implications.
+
+**_[\#47998](http://bugs.debian.org/47998): `msgget` IPC not implemented_**
+
+**_[\#184565](http://bugs.debian.org/184565): libc0.3: missing shm\* functions (from `<sys/shm.h>`)_**<br />**breaks:** cdrtools<br />**error:** warning: shm\* is not implemented and will always fail
+
+**_[\#190581](http://bugs.debian.org/190581): nice() doesn't work_**<br />**breaks:** coreutils<br />**error:** `nice()` doesn't take effect on some situations
+
+**_[\#187391](http://bugs.debian.org/187391): libc0.3-dev: `sockaddr_un.sun_path` can't be assigned a `const char *` when compiling with g++_**<br />**breaks:** fam, gail<br />**status:** maybe this should be in [[PortingIssues]] (see _long_ bug log)
+
+**_[\#190367](http://bugs.debian.org/190367): libc0.3-dev: `fcntl` `F_GETLK` not implemented (`ENOSYS`)_**<br />**breaks:** gnome-session (and others) from running<br />**error:** misc lock-related errors
diff --git a/hurd/reference_manual.mdwn b/hurd/reference_manual.mdwn
index 5b5bff2d..9337b784 100644
--- a/hurd/reference_manual.mdwn
+++ b/hurd/reference_manual.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
*The GNU Hurd Reference Manual* documents the architecture, the usage and the
programming of the GNU Hurd. At the moment, the manual is quite incomplete.
diff --git a/hurd/running.mdwn b/hurd/running.mdwn
index 162bc9ea..f0058625 100644
--- a/hurd/running.mdwn
+++ b/hurd/running.mdwn
@@ -1,12 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+There are several different ways to run a GNU/Hurd system:
* [[Distrib]] - Distributions based on the Hurd
* [[microkernel/mach/gnumach/ports/Xen]] - In Xen
@@ -15,4 +18,6 @@ is included in the section entitled
* [[vmware]] (**non-free!**)
* [[FlashHurd]] - From a flash stick
+* [[FAQ]]
+
* [[Public_hurd_boxen]]
diff --git a/hurd/running/arch_hurd.mdwn b/hurd/running/arch_hurd.mdwn
new file mode 100644
index 00000000..6635f415
--- /dev/null
+++ b/hurd/running/arch_hurd.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="Arch Hurd"]]
+
+<http://www.archhurd.org/>
diff --git a/hurd/running/debian.mdwn b/hurd/running/debian.mdwn
index f80c1cfc..97d35bd7 100644
--- a/hurd/running/debian.mdwn
+++ b/hurd/running/debian.mdwn
@@ -1,16 +1,28 @@
-[[meta title="Debian GNU/Hurd"]]
+[[!meta title="Debian GNU/Hurd"]]
-- Debian [[FAQ]] -- Frequently Asked Questions
-- [[After_install]] -- Do this to get networking, new console and X
-- [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/)
- *Debian GNU/Hurd* by [[MichaelBanck]], LinuxTag 2004 Karlsruhe
-- [[Status]]
-- [[Porting]] -- Helping with porting packages
- * [[Patch_submission]] -- How to submit patches for build failures
+### Debian Resources
- Official page about the Debian GNU/Hurd port: [Debian GNU/Hurd](http://www.debian.org/ports/hurd/)
+
+- Debian [[FAQ]] -- Frequently Asked Questions
+
+### Installing
+
- [Installation Instructions](http://www.debian.org/ports/hurd/hurd-install)
- [Upgrading K11 or K14 based systems to
unstable](http://lists.debian.org/debian-hurd/2007/09/msg00007.html)
-- [Archive Qualification](http://wiki.debian.org/ArchiveQualification/hurd-i386)
+- [[After_install]] -- Do this to get networking, new console and X
+
+### Contributing
+
+- [[Porting]] -- Helping with porting packages
+ * [[Patch_submission]] -- How to submit patches for build failures
- [[Creating_image_tarball]]
+
+### Additional Information
+
+- [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/)
+ *Debian GNU/Hurd* by [[MichaelBanck]], LinuxTag 2004 Karlsruhe
+- [[Status]]
+- [Archive Qualification](http://wiki.debian.org/ArchiveQualification/hurd-i386)
+
diff --git a/hurd/running/debian/BtsFiling.mdwn b/hurd/running/debian/BtsFiling.mdwn
deleted file mode 100644
index 90f451a8..00000000
--- a/hurd/running/debian/BtsFiling.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-When you encounter any GNU/Hurd related bugs in a Debian package you can fix, please use the Debian BTS (Bug Tracking System) to report them.
-
-Managing Debian packages and using the BTS is quite simple. If you're new to Debian, here's a short guide:
-
-* first of all, check [http://bugs.debian.org/&lt;package&gt;](http://bugs.debian.org) to ensure the problem is not in the BTS already. This is possible for packages and bug numbers. [[TWiki/InterWikis]] is a shorthand way of linking to bugs and packages from this site. i.e. [[DebianBug]]:hurd [[DebianPackage]]:oskit
-* you can fetch package sources with:
-
- apt-get source <package>
-
-note: this should unpack already
-
-* and unpack with:
-
- dpkg-source -x <package>x-y_z.dsc
-
-* then get all dependencies:
-
- apt-get -y build-dep <package>
-
-note: if some dependencies are missing, it most probably means you have to port them first. follow this instructions recursively until done
-
- :)
-
-* Debian packages have a makefile in debian/rules, with (at least) the following targets: <dl>
- <dt> build</dt>
- <dd> Yup, to build </dd>
- <dt> binary</dt>
- <dd> Generates deb files in <code>../</code></dd>
- <dt> clean</dt>
- <dd> Full clean </dd>
-</dl>
-
-* when you have a patch, send it to the BTS using the reportbug utility (or manually as explained in <http://bugs.debian.org/)>. The following parameters should be used:
-
- Severity: important (when the package is unbuildable or uninstallable, lower otherwise.)
- Tags: sid, patch
-
-* be nice to the maintainers. most are friendly and cooperative, and a few could annoy you for months before applying. Be patient.
-
-Read <http://bugs.debian.org/> for extensive documentation on the BTS.
-
--- [[Main/RobertMillan]] - 10 Jun 2002
-
-----
-
-Wikification &amp; small changes.
-
--- [[Main/JoachimNilsson]] - 24 Jun 2002
-
-Updates with the new [[TWiki/InterWikis]] rules.
-
--- [[Main/GrantBow]] - 15 Jan 2003
diff --git a/hurd/running/debian/DebianAptOffline.mdwn b/hurd/running/debian/DebianAptOffline.mdwn
index b8dc3cac..9596040d 100644
--- a/hurd/running/debian/DebianAptOffline.mdwn
+++ b/hurd/running/debian/DebianAptOffline.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2005, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# How to Installing Packages without a Network Connection from your Hurd Installation
diff --git a/hurd/running/debian/GnuDebianRelationship.mdwn b/hurd/running/debian/GnuDebianRelationship.mdwn
index ede808c8..94fd6265 100644
--- a/hurd/running/debian/GnuDebianRelationship.mdwn
+++ b/hurd/running/debian/GnuDebianRelationship.mdwn
@@ -2,11 +2,11 @@ I have hesitated in starting this page due to the sensitive nature of this relat
This is a work in progress. Please email me directly if you have comments or suggestions.
-* Debian Advantages of Hurd [[Distrib/PortingIssues]] Efforts
+* Debian Advantages of Hurd [[porting/guidelines]] Efforts
* One of the first ports to non-Linux system along with \*BSD and win32.
* Official GNU system distribution.
-* Debian Disadvantages of Hurd [[Distrib/PortingIssues]] Efforts
+* Debian Disadvantages of Hurd [porting/guidelines]] Efforts
* Perceived zealous GNU and FSF promotion.
* Hurd Port Advantages of Debian
diff --git a/hurd/running/debian/MediaPressKitDiscuss.mdwn b/hurd/running/debian/MediaPressKitDiscuss.mdwn
index e8b1cfff..2bd97290 100644
--- a/hurd/running/debian/MediaPressKitDiscuss.mdwn
+++ b/hurd/running/debian/MediaPressKitDiscuss.mdwn
@@ -1,5 +1,3 @@
-%TOC%
-
# <a name="Media_Press_Kit"> Media / Press Kit </a>
## <a name="Problem"> Problem </a>
diff --git a/hurd/running/debian/after_install.mdwn b/hurd/running/debian/after_install.mdwn
index 4cdcaea9..15ca9c83 100644
--- a/hurd/running/debian/after_install.mdwn
+++ b/hurd/running/debian/after_install.mdwn
@@ -5,7 +5,7 @@ mode?
Time to get to work.
-[[toc ]]
+[[!toc]]
### Get Networking Running
diff --git a/hurd/running/debian/creating_image_tarball.mdwn b/hurd/running/debian/creating_image_tarball.mdwn
index 977f2b1d..ac91dab4 100644
--- a/hurd/running/debian/creating_image_tarball.mdwn
+++ b/hurd/running/debian/creating_image_tarball.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The following [[anonftpsync-ports]] is used to create a local Debian GNU/Hurd
repo. You will need atleast 12G of disk space. Change the
diff --git a/hurd/running/debian/faq.mdwn b/hurd/running/debian/faq.mdwn
index 227ade02..b3bd230d 100644
--- a/hurd/running/debian/faq.mdwn
+++ b/hurd/running/debian/faq.mdwn
@@ -1,18 +1,19 @@
-[[meta copyright="Copyright © 2007 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Debian GNU/Hurd FAQ"]]
+[[!meta title="Debian GNU/Hurd FAQ"]]
-See also the [[Hurd_FAQ|hurd/FAQ]] and [[after_install]].
+See also the [[Hurd_FAQ|/hurd/FAQ]], [[after_install]], and the [[General FAQ
+About Running GNU/Hurd|/hurd/running/faq]].
-[[inline
+[[!inline
pages="hurd/running/debian/faq/* and !*/discussion"
show=0
feeds=no
diff --git a/hurd/running/debian/faq/2_gib_partition_limit.mdwn b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
index aed47445..195191cb 100644
--- a/hurd/running/debian/faq/2_gib_partition_limit.mdwn
+++ b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="2 GiB Partition Limit"]]
+[[!meta title="2 GiB Partition Limit"]]
The 2 GiB limit has been removed in Debian GNU/Hurd.
diff --git a/hurd/running/debian/faq/512_mib_ram_limit.mdwn b/hurd/running/debian/faq/512_mib_ram_limit.mdwn
index 462ba73d..f89a5c01 100644
--- a/hurd/running/debian/faq/512_mib_ram_limit.mdwn
+++ b/hurd/running/debian/faq/512_mib_ram_limit.mdwn
@@ -1,18 +1,21 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="512 MiB RAM Limit"]]
+[[!meta title="512 MiB RAM Limit"]]
-GNU Mach does not cope well with lots of memory. Newer versions of the Debian
-`gnumach` package will limit themselves to around 1 GiB of memory. If you have
-an older version, or still experience problems with `vmstat` (see above)
-reported much less memory than you have, the best is to limit the memory it can
-see via GRUB's `upppermem` feature. Add `uppermem 786432` to GRUB's Hurd entry
-in `menu.lst`.
+Just like any 32bit OS without bad tricks, GNU Mach does not cope well with lots
+of memory. Newer versions of the Debian `gnumach` package will limit themselves
+to around 1 GiB of memory. If you want more, you can twiddle the VM_MAX_ADDRESS
+limit between kernelland and userland in i386/include/mach/i386/vm_param.h.
+
+If you have an older version, or still experience problems with `vmstat` (see
+above) reported much less memory than you have, the best is to limit the memory
+it can see via GRUB's `upppermem` feature. Add `uppermem 786432` to GRUB's Hurd
+entry in `menu.lst`.
diff --git a/hurd/running/debian/faq/apt_umount.mdwn b/hurd/running/debian/faq/apt_umount.mdwn
index 4a3b2dd2..db0dbfd1 100644
--- a/hurd/running/debian/faq/apt_umount.mdwn
+++ b/hurd/running/debian/faq/apt_umount.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="apt: unmount cdroms"]]
+[[!meta title="apt: unmount cdroms"]]
You can add a shell script umount so that apt can automatically unmount cdroms.
@@ -22,4 +22,4 @@ Give executable permission to the script.
# chmod +x /usr/bin/umount
In `/etc/fstab` add a trailing `/` after cdrom like `/cdrom/` since apt uses a
-traing `/`.
+trailing `/`.
diff --git a/hurd/running/debian/faq/bad_hypermeta_data.mdwn b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
index eedb461d..bc960e30 100644
--- a/hurd/running/debian/faq/bad_hypermeta_data.mdwn
+++ b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
If you get the error `bad hypermeta data` when trying to mount an ext3
partition from GNU/Linux, that is usually because the file system has not been
diff --git a/hurd/running/debian/faq/debugging_inside_glibc.mdwn b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
index 375f042e..91b71d64 100644
--- a/hurd/running/debian/faq/debugging_inside_glibc.mdwn
+++ b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
To get [[debugging]] information for glibc, you need to install the
`libc0.3-dbg` package. At the place [[debugging/GDB]] looks for debugging
diff --git a/hurd/running/debian/faq/debugging_translators.mdwn b/hurd/running/debian/faq/debugging_translators.mdwn
index e87513c4..b55484e1 100644
--- a/hurd/running/debian/faq/debugging_translators.mdwn
+++ b/hurd/running/debian/faq/debugging_translators.mdwn
@@ -1,17 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
In order to [[debug|debugging]] translators and being able to step into glibc
-during it, you need the `hurd-dbg` and `libc0.3-dbg` packages installed. Then
+during it, you need the `hurd-dbg` and `libc0.3-dbg` packages installed. If you need to debug the initialization of the translator,
start the translator like `settrans -P /foo /usr/bin/env
LD\_LIBRARY\_PATH=/usr/lib/debug /hurd/foofs`. The `-P` option will make it
pause and you will be able to attach [[debugging/GDB]] to the process.
-
-Is starting the translator like this really needed?
diff --git a/hurd/running/debian/faq/dev_random.mdwn b/hurd/running/debian/faq/dev_random.mdwn
index eee7d0be..3b5fdffe 100644
--- a/hurd/running/debian/faq/dev_random.mdwn
+++ b/hurd/running/debian/faq/dev_random.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="/dev/random"]]
+[[!meta title="/dev/random"]]
There is no random device by default as no secure implementation has been
finished yet. An easy (but very insecure) work-around is to copy a binary file
diff --git a/hurd/running/debian/faq/df.mdwn b/hurd/running/debian/faq/df.mdwn
index be0df444..4de232da 100644
--- a/hurd/running/debian/faq/df.mdwn
+++ b/hurd/running/debian/faq/df.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
There is no `/etc/mtab`, so just running `df` will yield an error. Pass `df` a
path like `df /` or `df ./` to see the disk usage of that particular file
diff --git a/hurd/running/debian/faq/eata.mdwn b/hurd/running/debian/faq/eata.mdwn
new file mode 100644
index 00000000..fa7dbdec
--- /dev/null
+++ b/hurd/running/debian/faq/eata.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+In some virtual machines (e.g. VirtualBox), "probing eata on XXX" may be
+quite long. This is apparently due to poor efficiency of the virtualizer, not
+Mach. There is no such issue on real hardware or using qemu/kvm.
diff --git a/hurd/running/debian/faq/free_memory.mdwn b/hurd/running/debian/faq/free_memory.mdwn
index c5c28d2d..c1c0a83c 100644
--- a/hurd/running/debian/faq/free_memory.mdwn
+++ b/hurd/running/debian/faq/free_memory.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Run `vmstat` to see memory and swap usage.
diff --git a/hurd/running/debian/faq/hurd_console.mdwn b/hurd/running/debian/faq/hurd_console.mdwn
index 3d5a6035..c4a619a1 100644
--- a/hurd/running/debian/faq/hurd_console.mdwn
+++ b/hurd/running/debian/faq/hurd_console.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Edit `/etc/default/hurd-console` to configure the Hurd console and enable it on
bootup. See [[console]] for further information about the Hurd console.
diff --git a/hurd/running/debian/faq/kernel_logs.mdwn b/hurd/running/debian/faq/kernel_logs.mdwn
index 0962f3aa..ff14ce5f 100644
--- a/hurd/running/debian/faq/kernel_logs.mdwn
+++ b/hurd/running/debian/faq/kernel_logs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The kernel logs are written to `/dev/klog`. Run `cat /dev/klog > foo` as root
and hit `ctrl+c` after a few seconds to catch the logs. You can do this only
diff --git a/hurd/running/debian/faq/other_repositories.mdwn b/hurd/running/debian/faq/other_repositories.mdwn
index d824f779..88781d46 100644
--- a/hurd/running/debian/faq/other_repositories.mdwn
+++ b/hurd/running/debian/faq/other_repositories.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
If you want to use the `apt-get source` facility, make sure that
`/etc/apt/sources.list` contains a line like
diff --git a/hurd/running/debian/faq/ps_hangs.mdwn b/hurd/running/debian/faq/ps_hangs.mdwn
index d2ffefeb..febfeb59 100644
--- a/hurd/running/debian/faq/ps_hangs.mdwn
+++ b/hurd/running/debian/faq/ps_hangs.mdwn
@@ -1,11 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-If `ps` hangs, try `ps -M` which might still work.
+If `ps` hangs, try `ps -M` which might still work by not getting detailed
+information from processes.
diff --git a/hurd/running/debian/faq/reporting_bugs.mdwn b/hurd/running/debian/faq/reporting_bugs.mdwn
index 5abac5ce..40781ab0 100644
--- a/hurd/running/debian/faq/reporting_bugs.mdwn
+++ b/hurd/running/debian/faq/reporting_bugs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Please try to reproduce bugs which are not obviously Hurd-specific on Debian
GNU/Linux and then file them there.
diff --git a/hurd/running/debian/faq/sata_disk_drives.mdwn b/hurd/running/debian/faq/sata_disk_drives.mdwn
index 929c08f0..dad10cb9 100644
--- a/hurd/running/debian/faq/sata_disk_drives.mdwn
+++ b/hurd/running/debian/faq/sata_disk_drives.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
GNU Mach does not support SATA disk drives (/dev/sda etc. in GNU/Linux) natively, so using device:sd0s1 will not work, sd* devices are for SCSI drives only. The only way to get those drives to work is to put them into compatibility mode in the BIOS, if such an option exists. GNU Mach will then recognize them as hda etc.
diff --git a/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
index e98b5e03..517d59dc 100644
--- a/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
+++ b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Privilege seperation does not work with Hurd currently. You need to explicitely
set `PrivilegeSeparation` to `no` in `/etc/ssh/sshd_options`, just commenting out
diff --git a/hurd/running/debian/faq/xserver-common.mdwn b/hurd/running/debian/faq/xserver-common.mdwn
index 5cf0ec11..09fbc902 100644
--- a/hurd/running/debian/faq/xserver-common.mdwn
+++ b/hurd/running/debian/faq/xserver-common.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
You need to run `dpkg-reconfigure xserver-common` and select `Anybody` for
starting X as there is no way to detect console users currently.
diff --git a/hurd/running/debian/package_troubleshooting.mdwn b/hurd/running/debian/package_troubleshooting.mdwn
index 829af8e3..43ecbc77 100644
--- a/hurd/running/debian/package_troubleshooting.mdwn
+++ b/hurd/running/debian/package_troubleshooting.mdwn
@@ -1,9 +1,5 @@
This page reports known Hurd-specific bugs, quirks and corresponding solutions and workarounds with Debian GNU/Hurd package installation and working.
-## <a name="Table_of_Contents"> Table of Contents </a>
-
-%TOC%
-
## <a name="Dpkg_wants_external_programs_"> Dpkg wants external programs? </a>
It may be that dpkg wants external GNU/Linux-specific programs that it can't found or that just don't exist on the Hurd. You can trick dpkg by copying and running this script as root:
diff --git a/hurd/running/debian/patch_submission.mdwn b/hurd/running/debian/patch_submission.mdwn
index 0a1bfb3f..66348dd9 100644
--- a/hurd/running/debian/patch_submission.mdwn
+++ b/hurd/running/debian/patch_submission.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
If you fixed a Debian package which *FTBFS* (fails to build from source), you
should submit the patch so that all users can profit from your work.
diff --git a/hurd/running/debian/porting.mdwn b/hurd/running/debian/porting.mdwn
index eb46c4c3..0eb15465 100644
--- a/hurd/running/debian/porting.mdwn
+++ b/hurd/running/debian/porting.mdwn
@@ -1,28 +1,38 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Debian packages that need porting"]]
+[[!meta title="Debian packages that need porting"]]
-Approximately half of the Debian archive has been compiled successfully on the
+More than half of the Debian archive has been compiled successfully on the
Hurd, however, many programs fail to build for various reasons.
A [list of build failures including error
messages](http://unstable.buildd.net/buildd/hurd-i386_Failed.html) can be
found, as well as a [preliminary
-analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html) of them.
+analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html) of them and [solutions](http://lists.debian.org/debian-hurd/2007/07/msg00001.html), and some more details in [[hurd/porting/guidelines]]. [Graphs and statistics](http://people.debian.org/~sthibault/) about the consequence in terms of build dependencies are available.
+
+There is a mailing list,
+[debian-hurd-build-logs](http://lists.alioth.debian.org/mailman/listinfo/debian-hurd-build-logs),
+where *builds logs from the Debian GNU/Hurd autobuilders* are posted. It is a
+high-traffic and high-volume list, and for that reason *not* archived, so you
+have to subscribe to see the messages.
It might be a good idea to record your intention to port something either in
the list below or in the [Alioth task
tracker](http://alioth.debian.org/pm/task.php?group_project_id=34&group_id=30628&func=browse)
so other people do not do duplicated work.
+Also, the [[community/HurdFr]] guys maintain their own [liste des travaux de
+packaging](http://wiki.hurdfr.org/index.php/Liste_des_travaux_de_packaging).
+
Aside from the Alioth task tracker, here is a list of some packages (the
important ones, as they're, e.g., blocking other packages from being built)
that need someone to work on them.
@@ -30,9 +40,15 @@ that need someone to work on them.
When you have a patch to submit, please adhere to the [[patch_submission]]
guidelines.
-[[inline
-pages="hurd/running/debian/porting/* and !*/discussion"
+There is also further information available about [[hurd/porting]].
+
+[[!map
+pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion"
+show=title]]
+
+[[!inline
+pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion"
show=0
feeds=no
actions=yes
-rootpage="hurd/running/debian/porting" postformtext="Add a new item titled:"]]
+rootpage="open_issues" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/porting/adduser.mdwn b/hurd/running/debian/porting/adduser.mdwn
deleted file mode 100644
index 3d243dd9..00000000
--- a/hurd/running/debian/porting/adduser.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-`adduser` does work as expected, but what are these error messages?
-
- $ sudo adduser foo
- Adding user `foo' ...
- Adding new group `foo' (1002) ...
- posix_spawn() error=1073741826
- posix_spawn() error=1073741826
- posix_spawn() error=1073741826
- Adding new user `foo' (1002) with group `foo' ...
- posix_spawn() error=1073741826
- posix_spawn() error=1073741826
- posix_spawn() error=1073741826
- posix_spawn() error=1073741826
- Creating home directory `/home/foo' ...
- Copying files from `/etc/skel' ...
- [...]
diff --git a/hurd/running/debian/porting/gcc.mdwn b/hurd/running/debian/porting/gcc.mdwn
deleted file mode 100644
index 4d783658..00000000
--- a/hurd/running/debian/porting/gcc.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-[[meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-For GCC trunk:
-
-Debian package has patches (for 4.3). Some have been forwarded upstream. (And
-have been ignored.) [[Thomas_Schwinge|tschwinge]] is working on getting them
-integrated.
-
- * [\[meta-bug\] bootstrap bugs for
- \*-gnu\*](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21824)
-
- * [build system: gcc\_cv\_libc\_provides\_ssp and
- NATIVE\_SYSTEM\_HEADER\_DIR](http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html)
-
- * [-fstack-protector shouldn't use TLS in freestanding
- mode](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29838)
-
- * [Tool chain configuration: GNU/\* sharing stuff with
- GNU/Linux](http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html)
-
-
-
-Additionally:
-
- * Configure fragments that have `*linux*` cases might/should often contain
- those for us (and GNU/k*BSD) as well.
-
- * `libgcc/configure.ac` [might
- need](http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00315.html) to be
- aligned for us to the `*linux*` cases. As well as at the end of
- `libgcc/config.host`. Check.
-
- checking whether decimal floating point is supported... no
- checking whether fixed-point is supported... no
-
- * `libgomp/configure.tgt`
-
- * [[`libmudflap`|libmudflap]].
-
- * [[C++]].
diff --git a/hurd/running/debian/porting/gcc/c++.mdwn b/hurd/running/debian/porting/gcc/c++.mdwn
deleted file mode 100644
index 1d64b9b5..00000000
--- a/hurd/running/debian/porting/gcc/c++.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-Modify the [[building/cross-compiling]] shell script to configure GCC for
-building GCC with C++ support when building its second (i.e., final) version.
-
-Compiling a most-trivial C++ program used to work with GCC 4.2 and 4.3 (and the
-resulting binaries would also work), but linking fails with GCC SVN trunk:
-
- $ $TARGET-g++ -Wall a.cc -lpthread
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__multf3'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fixunstfsi'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__subtf3'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__divtf3'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__copysigntf3'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__addtf3'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__lttf2'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatsitf'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__netf2'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatunsitf'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__eqtf2'
- /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fabstf2'
- collect2: ld returned 1 exit status
-
-Whether this defect report also applies to a natively-build GCC from SVN trunk
-has not yet been checked.
-
-[[Thomas_Schwinge|tschwinge]] suspects the problem to be a configuration issue
-of a GCC helper library, whose configuration setup has changed after GCC 4.3.
-
-The need for `-lpthread` is another story. See the Debian glibc patches
-repository for details.
diff --git a/hurd/running/debian/porting/gcc/libmudflap.mdwn b/hurd/running/debian/porting/gcc/libmudflap.mdwn
deleted file mode 100644
index 2345828b..00000000
--- a/hurd/running/debian/porting/gcc/libmudflap.mdwn
+++ /dev/null
@@ -1,72 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-Single-threaded use appears to work:
-
- $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩
- gcc -o a -fmudflap -x c - -lmudflap
- $ ./a
- *******
- mudflap violation 1 (check/write): time=1227208721.922064 ptr=0x1023de0 size=4
- pc=0x1037a33 location=`<stdin>:1:26 (main)'
- /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33]
- ./a(main+0x7c) [0x80486c4]
- /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239]
- Nearby object 1: checked region begins 68B before and ends 65B before
- mudflap object 0x80ca268: name=`argv[]'
- bounds=[0x1023e24,0x1023e2b] size=8 area=static check=0r/0w liveness=0
- alloc time=1227208721.922064 pc=0x10371d3
- Nearby object 2: checked region begins 76B before and ends 73B before
- mudflap object 0x80cb448: name=`environ[]'
- bounds=[0x1023e2c,0x1023ed7] size=172 area=static check=0r/0w liveness=0
- alloc time=1227208721.922064 pc=0x10371d3
- number of nearby objects: 2
- *******
- mudflap violation 2 (check/read): time=1227208721.942109 ptr=0x1023dcc size=4
- pc=0x1037a33 location=`<stdin>:1:35 (main)'
- /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33]
- ./a(main+0xf3) [0x804873b]
- /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239]
- Nearby object 1: checked region begins 88B before and ends 85B before
- mudflap object 0x80ca268: name=`argv[]'
- Nearby object 2: checked region begins 96B before and ends 93B before
- mudflap object 0x80cb448: name=`environ[]'
- number of nearby objects: 2
-
-Multi-threaded use doesn't:
-
- $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩
- gcc -include pthread.h -o a -fmudflapth -x c - -lmudflapth -lpthread
- $ ./a
- Killed
- $ gdb a
- [...]
- Starting program: /media/data/home/tschwinge/a
-
- Program received signal EXC_BAD_ACCESS, Could not access memory.
- 0x01180653 in getenv () from /lib/libc.so.0.3
- (gdb) bt
- #0 0x01180653 in getenv () from /lib/libc.so.0.3
- #1 0x01177a02 in __dcigettext () from /lib/libc.so.0.3
- #2 0x01176a57 in dcgettext () from /lib/libc.so.0.3
- #3 0x011c03b5 in strerror_r () from /lib/libc.so.0.3
- #4 0x01175b57 in __assert_perror_fail () from /lib/libc.so.0.3
- #5 0x0111f1ad in cthread_fork (func=0x114f630 <_hurd_msgport_receive>, arg=0x0)
- at /build/buildd/hurd-20080607/build-tree/hurd/libpthread/pthread/cthreads-compat.c:41
- #6 0x0115713e in _hurdsig_init () from /lib/libc.so.0.3
- #7 0x01140852 in _hurd_proc_init@@GLIBC_2.2.6 () from /lib/libc.so.0.3
- #8 0x01140e86 in _hurd_init () from /lib/libc.so.0.3
- #9 0x011690ce in init1 () from /lib/libc.so.0.3
- #10 0x00001e96 in _dl_start_user () from /lib/ld.so
- #11 0x00000001 in ?? ()
- #12 0x01024000 in ?? ()
- #13 0x00000000 in ?? ()
-
-Also `libmudflap` is pthread-only.
diff --git a/hurd/running/debian/porting/git-core-2.mdwn b/hurd/running/debian/porting/git-core-2.mdwn
deleted file mode 100644
index b4f095c8..00000000
--- a/hurd/running/debian/porting/git-core-2.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-On the otherwise-idle flubber:
-
- $ git clone git://sources.redhat.com/git/glibc.git
- Initialized empty Git repository in /media/data/home/tschwinge/tmp/glibc/glibc/.git/
- remote: Generating pack...
- remote: Done counting 380933 objects.
- remote: Deltifying 380933 objects...
- remote: 100% (380933/380933) done
- remote: Total 380933 (delta 294166), reused 380686 (delta 294002)
- Receiving objects: 100% (380933/380933), 70.31 MiB | 27 KiB/s, done.
- Resolving deltas: 100% (294166/294166), done.
- error: git-checkout-index: unable to create file iconvdata/ibm1122.c (Interrupted system call)
- error: git-checkout-index: unable to create file localedata/charmaps/IBM862 (Interrupted system call)
- Checking out files: 100% (10676/10676), done.
- $ git status
- # On branch master
- # Changed but not updated:
- # (use "git add <file>..." to update what will be committed)
- #
- # modified: iconvdata/ibm1122.c
- # modified: localedata/charmaps/IBM862
- #
- no changes added to commit (use "git add" and/or "git commit -a")
- $ ls -l iconvdata/ibm1122.c localedata/charmaps/IBM862
- -rw-r--r-- 1 tschwinge tschwinge 0 2008-12-15 15:49 iconvdata/ibm1122.c
- -rw-r--r-- 1 tschwinge tschwinge 0 2008-12-15 15:49 localedata/charmaps/IBM862
-
-So these files are indeed of zero-length in the checked-out tree. Is this
-git's fault or something else's?
-
-Fixing this situation is easy enough:
-
- $ git checkout -- iconvdata/ibm1122.c localedata/charmaps/IBM862
- $ git status
- # On branch master
- nothing to commit (working directory clean)
diff --git a/hurd/running/debian/porting/git-core.mdwn b/hurd/running/debian/porting/git-core.mdwn
deleted file mode 100644
index 568ad966..00000000
--- a/hurd/running/debian/porting/git-core.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-Depends on [[libdbd-sqlite3-perl]].
-
-Does build, but has test-suite problems (only where libdbd-sqlite3-perl is
-involved, it seems):
-
- [...]
- DBD::SQLite::db table_info failed: database is locked(5) at dbdimp.c line 271 at /media/data/home/tschwinge/tmp/git-core/git-core-1.5.6.5/t/../
- git-cvsserver line 2783, <STDIN> line 17.
- Can't call method "fetchall_hashref" on an undefined value at /media/data/home/tschwinge/tmp/git-core/git-core-1.5.6.5/t/../git-cvsserver line
- 2783, <STDIN> line 17.
- [...]
-
-Stopping the test-stuite (`C-c`), doing a `touch build-arch-stamp`, followed by
-re-running `dpkg-buildpackage` with `-nc` will yield an installable `deb`
-package.
diff --git a/hurd/running/debian/porting/libdbd-sqlite3-perl.mdwn b/hurd/running/debian/porting/libdbd-sqlite3-perl.mdwn
deleted file mode 100644
index b5fdd14d..00000000
--- a/hurd/running/debian/porting/libdbd-sqlite3-perl.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-Does build, but has test-suite problems:
-
- t/02cr_table............ok 1/4DBD::SQLite::db do failed: database is locked(5) at dbdimp.c line 271 at t/02cr_table.t line 10.
- DBD::SQLite::db prepare failed: database is locked(5) at dbdimp.c line 271 at t/02cr_table.t line 11.
- Can't call method "execute" on an undefined value at t/02cr_table.t line 12.
- t/02cr_table............dubious
- Test returned status 118 (wstat 30208, 0x7600)
- DIED. FAILED tests 2-4
- Failed 3/4 tests, 25.00% okay
- t/03insert..............ok 1/11DBD::SQLite::db do failed: database is locked(5) at dbdimp.c line 271 at t/03insert.t line 6.
- # Failed test 2 in t/03insert.t at line 6
- [...]
-
-Stopping the test-stuite (`C-c`), doing a `touch build-stamp`, followed by
-re-running `dpkg-buildpackage` with `-nc` will yield an installable `deb`
-package.
diff --git a/hurd/running/debian/porting/pth.mdwn b/hurd/running/debian/porting/pth.mdwn
deleted file mode 100644
index 4424fe82..00000000
--- a/hurd/running/debian/porting/pth.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
- <azeem> seems pth still doesn't work
- <bddebian> Doesn't build or doesn't work?
- <azeem> both
- <azeem> some configure test keep grinding the CPU, same for the test suite
- <azeem> which apparently runs pth_init() and never returns
diff --git a/hurd/running/debian/porting/runit.mdwn b/hurd/running/debian/porting/runit.mdwn
deleted file mode 100644
index 395dd14d..00000000
--- a/hurd/running/debian/porting/runit.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
-id="license" text="Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License, Version 1.2 or
-any later version published by the Free Software Foundation; with no Invariant
-Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
-is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
-
-The `runit` package doesn't work, even its test suite doesn't finish.
-
-[[Thomas_Schwinge|tschwinge]] once was having a look at that, but this very
-report is just from his memory, and his memory is dim... The problem *might*
-either be a time stamping issue (which might be fixed by now) or it *might* be
-the `select` call failing issue we're seeing from time to time. Or something
-else.
diff --git a/hurd/running/distrib.mdwn b/hurd/running/distrib.mdwn
index 935c0c2d..92904d19 100644
--- a/hurd/running/distrib.mdwn
+++ b/hurd/running/distrib.mdwn
@@ -1,8 +1,15 @@
+Working distributions of GNU/Hurd:
+
* [[Debian]]
+
+GNU/Hurd distributions in early stages of development:
+
* [[Gentoo]]
-* [[Bee]]
* [[GNU]]
+<!-- Bee GNU/Hurd doesn't seem to exist anymore.
+* [[Bee]]
+-->
# Issues
@@ -64,11 +71,11 @@ about getting applications to work (if possible).
<dl>
<dt>[[SavannahProjects]]</dt>
- <dd> Savannah is a CVS &amp;amp; Bug system evolved from a free version of the code that powers <a href="http://sf.net" target="_top">sourceforge.net</a>. It has forked and been slightly modified for use by FSF, GNU and non-GNU projects. Actual Development takes place here. There is also a <a href="http://savannah.gnu.org/people/?group=hurd" target="_top">help wanted</a> list. </dd>
+ <dd> Savannah is a CVS &amp; Bug system evolved from a free version of the code that powers <a href="http://sf.net" target="_top">sourceforge.net</a>. It has forked and been slightly modified for use by FSF, GNU and non-GNU projects. Actual Development takes place here. There is also a <a href="http://savannah.gnu.org/people/?group=hurd" target="_top">help wanted</a> list. </dd>
</dl>
<dl>
- <dt>[[PortingIssues]] FAQ</dt>
+ <dt>[[porting/guidelines]] FAQ</dt>
<dd> What does it take to move a piece of Debian packaged software to the GNU/Hurd port? </dd>
</dl>
@@ -78,8 +85,8 @@ about getting applications to work (if possible).
</dl>
<dl>
- <dt> Debain Infrastructure</dt>
- <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[BtsFiling]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd &amp;amp; turtle efforts. </dd>
+ <dt> Debian Infrastructure</dt>
+ <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[debian/patch_submission]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd &amp; turtle efforts. </dd>
</dl>
<dl>
@@ -95,7 +102,7 @@ about getting applications to work (if possible).
* GNU [Coding Standards](http://www.gnu.org/prep/standards.html)
* [[TestSuites]] - Posix, Perl, results feedback, etc.
* [[Documentation]]
-* [[SystemAPILimits]]
+* [[System_API_Limitations]]
* [[CodeAnnouncements]] - Recent coding projects related to the Hurd
<dl>
diff --git a/hurd/running/faq.mdwn b/hurd/running/faq.mdwn
new file mode 100644
index 00000000..a59bce7e
--- /dev/null
+++ b/hurd/running/faq.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+[[!meta title="General FAQ About Running GNU/Hurd"]]
+
+See also the [[Hurd FAQ|hurd/FAQ]], and the [[Debian GNU/Hurd FAQ|debian/faq]].
+
+[[!inline
+pages="hurd/running/faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="hurd/running/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/faq/native-install_doesnt_finish.mdwn b/hurd/running/faq/native-install_doesnt_finish.mdwn
new file mode 100644
index 00000000..a852e1dd
--- /dev/null
+++ b/hurd/running/faq/native-install_doesnt_finish.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+Copying baseGNU to the virtual disk works. Even booting got through but when I
+try to run native-install it never gets to the very end. First time it froze on
+*sed* package, the other time on *sysv-rc*.
+
+> How much memory did you configure for the [[QEMU]] system? It may simply be
+> -- I've seen this myself -- that the system runs out of memory, as at the
+> native-install stage (I think at least) swap is not yet configured and
+> enabled. What I've been doing is: boot (with -s), MAKEDEV hdWHATEVER in
+> /dev/ for the swap device, run /hurd/mach-defpager, followed by swapon
+> /dev/hdWHATEVER. Does this help?
+
+>> Thank You very much, more memory solved the freezing.
+
+[[!tag open_issue_hurd]]
diff --git a/hurd/running/gentoo.mdwn b/hurd/running/gentoo.mdwn
index 89d5d9cf..ef72bfad 100644
--- a/hurd/running/gentoo.mdwn
+++ b/hurd/running/gentoo.mdwn
@@ -2,7 +2,33 @@
Unofficial port to Gentoo and the portage system. It was
[announced](http://forums.gentoo.org/viewtopic.php?t=41939&amp;postdays=0&amp;postorder=asc&amp;start=0)
-March 17, 2003 in the Gentoo forums. There's a #gentoo-irc channel similar to
-[[IRC]]. At present (May 2005), there's no activity and Eric Olinger has not
-the time to maintain this distri.
+March 17, 2003 in the Gentoo forums. There's a #gentoo and a #gentoo-hurd IRC channel similar to
+[[IRC]].
+### State of the GGH, 2009-05
+
+> *Did you work a bit more on the Gentoo GNU/Hurd?*
+
+I tried to resume my work 3-4 months ago but I found some problems with
+portage and python functions not implemented on Hurd so I stopped. I think
+that back in 2006 with portage 2.0.54 those functiones weren't necessary.
+
+> *And do you have some information which might help others advance what you began?*
+
+I just have all the ebuilds and binary packages I merged online on
+[http://www.mundurat.net/ggh/portage](http://www.mundurat.net/ggh/portage).
+
+To continue my work just take a Debian/Hurd and install portage by hand.
+
+Once there take the profile and start bootstraping portage and all the
+ebuild it needs (patch, python, bzip2...).
+
+The major problems are:
+
+- combine the perfect gcc/binutils/glibc/gnumach/hurd and to be able to boot
+- lack of development on gnumach/hurd and current 'degraded' status.
+
+I don't think I can help much right now, but if you have any other
+question just write me.
+
+MiKeL
diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn
index 26d93279..94012ef5 100644
--- a/hurd/running/gnu.mdwn
+++ b/hurd/running/gnu.mdwn
@@ -15,32 +15,32 @@ It is our wish and goal to establish a new direction for the GNU system distribu
This is not intended to detract from Debian GNU/Hurd and we should help them where we can.
-I really want this to be more of a community driven effort in the spirit of say Ubuntu. We all have different motivations and skill levels but we need a common goal to get this system going.
+I really want this to be more of a community driven effort in the spirit of say, Ubuntu. We all have different motivations and skill levels but we need a common goal to get this system going.
-These are just some quick notes I am making late at night. Lets clean this up.
+These are just some quick notes I am making late at night. Let's clean this up.
## <a name="Motivations"> Motivations </a>
1. There is a possibility that Debian drops support for GNU/Hurd.
2. Other GNU/Linux distributions do not support the Hurd infrastructure well.
-3. Benefitting from the Hurd design and using a microkernel.
+3. Benefiting from the Hurd design and using a microkernel.
4. Freedom.
## <a name="Community"> Community </a>
-1. Lets establish some ground rules.
+1. Let's establish some ground rules.
2. We need infrastructure
* Wiki for community documentation
* Mailing lists like gnu-system-discuss exists for mostly technical items
* IRC channels like #hug and ##hurd
* Perhaps less formal and less intimidating channels and mailing lists would involve broader parts of the community
3. We need a community vision and direction.
- * Lets work together for a common goal
- * Lets establish goals and priorities and get resources on them. (More later)
+ * Let's work together for a common goal
+ * Let's establish goals and priorities and get resources on them. (More later)
* Major goal to create a system making full use of Hurd features?
* We should never hesitate to throw away existing stuff whenever it hinders us to make good use of Hurd features
* However, we should try to reuse existing stuff (from Debian for example) as long as it doesn't limit our possibilities or impose considerable overhead
- * Lets have fun. It's GNU and it's important but let's enjoy ourselves.
+ * Let's have fun. It's GNU and it's important but let's enjoy ourselves.
## Download
diff --git a/hurd/running/gnu/create_an_image.mdwn b/hurd/running/gnu/create_an_image.mdwn
index 42379f45..c7a97a4e 100644
--- a/hurd/running/gnu/create_an_image.mdwn
+++ b/hurd/running/gnu/create_an_image.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Creating a bootable qemu image from a root filesystem and bootloader
@@ -27,7 +27,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
create the necessary partitions (root and swap partitions boot, home ... if
required)
-4. Create a file syatem for the root partiotion
+4. Create a file system for the root partition
mke2fs /dev/hda1
@@ -39,7 +39,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
6. Copy the file system from the host machine to the mounted directory (use a
compressed file system to make the copying faster)
- Grab the GNU spapshot from ams' site
+ Grab the GNU snapshot from ams' site
<http://www.update.uu.se/~ams/home/slask/GNU/>
scp <user>@<host>:<path to the compressed file system> disk
@@ -58,7 +58,7 @@ Creating a bootable qemu image from a root filesystem and bootloader
poweroff
-10. To make the file syatem bootable download a grub floppy image
+10. To make the file system bootable download a grub floppy image
<http://hurd.in/pub/Hurd/HurdOnVMware/grub.img>
diff --git a/hurd/running/gnu/setup.mdwn b/hurd/running/gnu/setup.mdwn
index 6ff32630..2fb30c7b 100644
--- a/hurd/running/gnu/setup.mdwn
+++ b/hurd/running/gnu/setup.mdwn
@@ -1,14 +1,14 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [[http://lists.gnu.org/mailman/listinfo/gnu-system-discuss][gnu-system-discuss]]), just follow these steps ...
+Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [gnu-system-discuss](http://lists.gnu.org/mailman/listinfo/gnu-system-discuss)), just follow these steps ...
## Step 1: Find a home for GNU
diff --git a/hurd/running/gnu/universal_package_manager.mdwn b/hurd/running/gnu/universal_package_manager.mdwn
index 440f1122..e58a2058 100644
--- a/hurd/running/gnu/universal_package_manager.mdwn
+++ b/hurd/running/gnu/universal_package_manager.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Mission
@@ -19,10 +20,10 @@ Basically all package management schemes follow similar approach, it will have a
There can be both aproaches
- * Re-implement rpm, dpkg... to recognise stow as backend instead of its own data store. In that case we will have to re implement, apt-rpm, yum ...
- * Implement a translator which reads stow and show it as an rpm data store for yum, deb data store for apt-get ...
+ * Re-implement rpm, dpkg... to recognise stow as backend instead of its own data store. In that case we will have to re-implement, apt-rpm, yum ...
+ * Implement a translator which reads stow and show it as an rpm data store for yum, deb data store for apt-get ...
-One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a chioce to continue builing packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface).
+One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a choice to continue building packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface).
## Why?
@@ -39,7 +40,7 @@ With the increased flexibility in implementing filesystems as per the requiremen
## How?
- * Installtion of a package is just drag the pacakage (be it a tgz, rpm, deb or an exe) and drop it to the package manager.
+ * Installation of a package is just drag the package (be it a tgz, rpm, deb or an exe) and drop it to the package manager.
* apt-cache search vim --> ls -al /packages/meta/ |grep vim
* apt-get install vim --> install vim
@@ -76,12 +77,12 @@ just writing the new translator.
## Initial idea
-A bit complex than the earlier scheme but it is more exciting and we can look at this schem seriously once we have the simple scheme working.
+A bit more complex than the earlier scheme but it is more exciting and we can look at this scheme seriously once we have the simple scheme working.
All packages are installed at
`/packages/binary/<packagename>/<packageversion>`.
-For eaxmple vim 6.4 version can be installed from source like
+For example vim 6.4 version can be installed from source like
# cd vim64
# ./configure --prefix=/packages/binary/vim/6.4
@@ -98,7 +99,7 @@ Now if you have another vim version, say 7.0 then just follow the steps
# make
# make install
-You have 2 versions of vim and how can you sepcify which one is the current version? You can symlink the current version to select the version you would like to see as default
+You have 2 versions of vim and how can you specify which one is the current version? You can symlink the current version to select the version you would like to see as default
# ln -s /packages/binary/vim/7.0 /packages/vim/current
@@ -127,7 +128,7 @@ OK. I will give you steps.
i. Install a GNU System by folowing [[these_instructions|setup]]
-ii. Read about GNU Design: [[Towards_a_New_Strategy_of_OS_Design|documentation/hurd-paper]]
+ii. Read about GNU Design: [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]]
iii. Read about translators <http://www.debian.org/ports/hurd/hurd-doc-translator>
@@ -140,7 +141,7 @@ v. Add your name below and give a shout in the list.
Add your comments here
-## Interesting?
+## Interested?
To join the project just list your name below.
@@ -151,3 +152,5 @@ To join the project just list your name below.
5. Nidhin Raghavan
6. Ajish.B
7. Ambili.B
+ 8. Abhradip Mukherjee
+ 9. Ermenegildo Fiorito
diff --git a/hurd/running/live_cd.mdwn b/hurd/running/live_cd.mdwn
index f8727118..42d85c5b 100644
--- a/hurd/running/live_cd.mdwn
+++ b/hurd/running/live_cd.mdwn
@@ -8,11 +8,18 @@ Use it like this:
$ qemu -cdrom hurd-tiny-cd-20060722.iso
-These [[wikipedia LiveCD]]s should be useful for those who want to try out the
+A more recent Live CD can be found at <http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz>.
+
+It can be run with qemu via
+
+ $ wget http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz
+ $ xz -d hurd-live-install-1273300101.iso.xz
+ $ qemu -cdrom hurd-live-install-1273300101.iso
+
+These [[!wikipedia LiveCD]]s should be useful for those who want to try out the
Hurd before they commit to installing it on their hard disks. In addition to
that, the bootable Hurd CDs should enable us to have a native installer instead
of relying on Linux.
-
* [[RequirementsForLiveCD]]
* [[BuildingHurdLiveCD]]
diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn
index f13ef5c8..6989cf72 100644
--- a/hurd/running/qemu.mdwn
+++ b/hurd/running/qemu.mdwn
@@ -4,8 +4,9 @@ This page discusses things for [[Unix]] systems, there is a separate page for
# Readily Available Images
-[Official Debian GNU/Hurd QEMU
-image](http://ftp.debian-ports.org/debian-cd/K16/debian-hurd-k16-qemu.img.tar.gz)
+To try out the Hurd you can use the image of the Debian GNU/Hurd:
+
+* [Official Debian GNU/Hurd QEMU image](http://ftp.debian-ports.org/debian-cd/K16/debian-hurd-k16-qemu.img.tar.gz)
(!) Note that the following are unofficial images: they have been prepared by
volunteers and may not have been tested extensively.
@@ -15,7 +16,11 @@ volunteers and may not have been tested extensively.
* [Disk image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2)
with a short intro on translators. Just start it with 'qemu *disk_image.img*'.
- It should work without any of the configuration below. -[[community/weblogs/ArneBab]]
+ It should work without any of the configuration below. If you want to know what you can do
+ with it, please have a look at [[its_wikipage|hurd/running/qemu/babhurd_image]]. And when
+ you use it, please [tell me your experience with it](http://draketo.de/contact)! - [[community/weblogs/ArneBab]]
+
+Also you can use qemu to easily try one of our [[Hurd_LiveCDs|hurd/running/live_cd/]].
<!--* [Announcement](http://lists.debian.org/debian-hurd/2007/09/msg00000.html) of another image. - The link in the email doesn't work anymore, too old. //-->
@@ -23,7 +28,7 @@ volunteers and may not have been tested extensively.
# What is Needed to create a QEMU image
1. First thing is to install [[/QEMU]].
-2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it an renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well.
+2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it and renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well.
3. You will need a [Debian/Hurd installation CD](http://www.debian.org/ports/hurd/hurd-cd). K16 works fine.
@@ -40,6 +45,14 @@ Next you will want to start up QEMU and begin the installation process. The firs
Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system. Once you have finished installing the base system select the reboot option as this will ensure the disk is properly un-mounted. When the Debian CD menu comes up again simply close QEMU.
Now run your image with floppy booting (`-boot a`) and finish the install (`./native-install` .. etc).
+You'll want to add more memory or activate swap for `./native-install` or it will hang.
+Starting qemu with `-m 512` worked for me.
+Swap can be activated like this (replace hd0s2 with your swap partition):
+
+ $ cd /dev/
+ $ MAKEDEV hd0s2
+ $ /hurd/mach-defpager
+ $ swapon /dev/hd0s2
**Important:** Older versions on gnumach needed that the `-M isapc` was passed to qemu. This is not needed anymore.
@@ -68,7 +81,7 @@ Now take the number of sectors for the beginning of the partition and multiply i
## Having QEMU create *virtual FAT disk images*
-[Manual](http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC24).
+[Manual](http://www.nongnu.org/qemu/qemu-doc.html#SEC25).
QEMU has a facility to create FAT file systems on-the-fly:
@@ -78,6 +91,9 @@ The Hurd [[`fatfs`_translator|translator/fatfs]] currently is read-only, but
for testing executables (etc.) that is enough. And it is much easier than
loop-mounting the file systems images. (Also you don't need `root' rights.)
+However, note that there is a bug in [[translator/fatfs]]: [[!GNU_Savannah_bug
+25961]].
+
# Networking in QEMU
@@ -91,9 +107,14 @@ If you just want to access the internet from within QEMU, you can setup pfinet f
# settrans -afgp /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
# echo "nameserver 10.0.2.3" > /etc/resolv.conf
-(See also <http://fabrice.bellard.free.fr/qemu/qemu-doc.html#SEC30>.)
+(See also <http://www.nongnu.org/qemu/qemu-doc.html#SEC32>.)
Outgoing internet connections should just work then.
+Testing it can be difficult with a minimal installation,
+but `apt-get update` should work after you have filled out
+`/etc/apt/sources.list`.
+After that you should be able to install other network packages,
+but note that `ping` doesn't work with QEMU's user-networking stack.
If you want to connect from the host system to the Hurd system running in QEMU, you need to setup something more advanced, like bridged networking.
diff --git a/hurd/running/qemu/babhurd_image.mdwn b/hurd/running/qemu/babhurd_image.mdwn
new file mode 100644
index 00000000..c0952fcf
--- /dev/null
+++ b/hurd/running/qemu/babhurd_image.mdwn
@@ -0,0 +1,67 @@
+What this little Hurd image can do
+----------------------------------
+
+### About this text
+
+This is the README file accompanying a
+[disk\_image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2) for
+[[running_the_GNU/Hurd_via_qemu|hurd/running/qemu]]. To run the disk image, just use *'qemu
+disk_image.img'*.
+
+You can find the custom *.bashrc* used to tell the user about it as well as this text itself
+in the Mercurial repository [hurd_intro](http://bitbucket.org/ArneBab/hurd_intro).
+
+### Intro
+
+The Hurd has some unique capabilities, and we created this simple image
+to enable you to easily try two of them:
+
+* The simplest of translators: Hello World!
+* Transparent FTP
+
+### Hello World
+
+To try out the simplest of translators, you can go the following simple steps:
+
+ $ cat hello
+ $ setrans hello /hurd/hello
+ $ cat hello
+ "Hello World!"
+ $ settrans -g hello
+ $ cat hello
+
+What you do with these steps is first verifying that the file "hello" is empty.
+
+Then you setup the translator /hurd/hello in the file/node hello.
+
+After that you check the contents of the file, and the translator returns "Hello World!".
+
+To finish it, you tell the translator to go away from the file "hello" via "settrans -g hello" and verify that now the file is empty again.
+
+### Transparent FTP
+
+We already setup a a transparent FTP translator for you at /ftp:
+
+With it you can easily access public FTP via the file system, for example the one from the GNU project:
+
+ $ ls /ftp://ftp.gnu.org/
+
+But you can also do this very easily yourself:
+
+ $ # Setup the translator on the node ftp:
+ $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs /
+
+and you can access FTP sites via the pseudo-directory ftp:, for example with
+
+ $ ls ftp://ftp.gnu.org/
+
+What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component.
+
+
+These were only two basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this.
+
+As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user.
+
+You might currently be logged in as root, but you could just as well do the same as normal user.
+
+Why don't you try it out?
diff --git a/hurd/running/qemu/microsoft_windows.mdwn b/hurd/running/qemu/microsoft_windows.mdwn
index 736adf62..832b4bef 100644
--- a/hurd/running/qemu/microsoft_windows.mdwn
+++ b/hurd/running/qemu/microsoft_windows.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Welcome, This document is for getting you started in a few minutes.
diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn
index 8014e303..71daa576 100644
--- a/hurd/running/qemu/networking.mdwn
+++ b/hurd/running/qemu/networking.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## User mode network
diff --git a/hurd/running/qemu/networking/sharing_files.mdwn b/hurd/running/qemu/networking/sharing_files.mdwn
index c0bd99e2..5bdec5f1 100644
--- a/hurd/running/qemu/networking/sharing_files.mdwn
+++ b/hurd/running/qemu/networking/sharing_files.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# SCP
diff --git a/hurd/running/vmware.mdwn b/hurd/running/vmware.mdwn
index 0f15939e..1f99e247 100644
--- a/hurd/running/vmware.mdwn
+++ b/hurd/running/vmware.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Installation
diff --git a/hurd/running/vmware/discussion.mdwn b/hurd/running/vmware/discussion.mdwn
index 65179cec..2db08654 100644
--- a/hurd/running/vmware/discussion.mdwn
+++ b/hurd/running/vmware/discussion.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
I find that this is all quite quick to try and that I can run through the
./native-install and reboot cycle twice OK. However, at that point the
diff --git a/hurd/settrans.mdwn b/hurd/settrans.mdwn
index e4383961..5b381090 100644
--- a/hurd/settrans.mdwn
+++ b/hurd/settrans.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software
+[[!meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The `settrans` command is used to attach a [[translator]] (server) to a given
[[file_system_node|virtual_file_system]].
diff --git a/hurd/status.mdwn b/hurd/status.mdwn
index b4ece046..721cdeda 100644
--- a/hurd/status.mdwn
+++ b/hurd/status.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2001, 2002, 2007, 2008 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2009, 2010 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The Hurd, together with the GNU Mach microkernel, the GNU C Library
and the other GNU and non-GNU programs in the GNU system, provide a
@@ -16,13 +16,19 @@ for production use, as there are still many bugs and missing features.
However, it should be a good base for further development and
non-critical application usage.
-The GNU system (also called GNU/Hurd) is completely self-contained
+[[!img hurd-fvwm-screenshot-2009-11-12.png size=300x
+alt="FVWM and Gnumeric running on GNU/Hurd"
+title="FVWM and Gnumeric running on GNU/Hurd"
+align="right"
+
+]] The GNU system (also called GNU/Hurd) is completely self-contained
(you can compile all parts of it using GNU itself). You can run
several instances of the Hurd in parallel, and debug even critical
servers in one Hurd instance with gdb running on another Hurd
instance. You can run the X window system, applications that use it,
and advanced server applications like the Apache webserver.
+
On the negative side, the support for character devices (like sound
cards) and other hardware is mostly missing. Although the POSIX
interface is provided, some additional interfaces like POSIX shared
@@ -43,10 +49,10 @@ so little would be gained by creating an official pure Hurd release.
The Debian GNU/Hurd [[distribution|running/debian]] offers *LiveCDs and QEMU images*
to test-drive the Hurd in a real life system with access to about
-50% of the Debian software archive.
+65% of the Debian software archive.
The most recent version of the Debian port at the time of writing
-is *Debian GNU/Hurd K16*.
+is *Debian GNU/Hurd L1*.
That said, the last official release of the Hurd
@@ -61,3 +67,42 @@ well would be unfortunate. Moreover, it would lessen the
possibility that they would want to try the Hurd again in the future.
+## Usability Reports
+
+### Olaf Buddenhagen, 2009-06-09
+
+> I have been using the Hurd for most of my everyday work for some two
+> years now. Most of the time it's pretty OK, but occasionally programs
+> crash, or the screen session dies, or even the whole system. Also,
+> various programs simply don't work at all, or don't work in certain
+> situations.
+>
+> While I have learned to work around many of these issues, I don't
+> believe I would be able to use it as my primary system, without having a
+> GNU/Linux system running in parallel, as a fallback for all the stuff
+> that doesn't work on the Hurd.
+>
+> My everyday work includes reading/writing email and other texts, preparing and giving
+> presentations, text-mode web browsing, viewing pictures, IRC, reading
+> PDF documents, programming, and various other random stuff...
+>
+> [...]
+>
+> One particular problem for desktop use is the fact that while X does
+> work, it works very poorly -- it's not only slow and jerky all the time,
+> but also tends to lock up completely. (At least with the local socket
+> transport... Haven't tried whether forcing TCP works better.)
+>
+> Note that while many of the stability problems are simply bugs to fix,
+> the system will still be very fragile in the absence of these -- a
+> simple port leak is sufficient to kill it within seconds. This is
+> something that can't be easily solved. Properly fixing this will require
+> a sound resource accounting framework, i.e. very fundamental changes to
+> the system... Though I tend to believe that it could be improved at
+> least partially, at the expense of flexibility, by enforcing certain
+> fixed limits on users, processes etc. like other UNIX systems do.
+>
+> [...]
+>
+> [But] unlike a few years back [...] the system is stable enough under
+> load nowadays [...].
diff --git a/hurd/status/hurd-fvwm-screenshot-2009-11-12.png b/hurd/status/hurd-fvwm-screenshot-2009-11-12.png
new file mode 100644
index 00000000..445abf32
--- /dev/null
+++ b/hurd/status/hurd-fvwm-screenshot-2009-11-12.png
Binary files differ
diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn
index d2b80cf9..5b132604 100644
--- a/hurd/subhurd.mdwn
+++ b/hurd/subhurd.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
A sub-Hurd is like a [[neighbor_Hurd|neighborhurd]], however, makes use of some
resources provided by another Hurd. For instance, backing store and the
diff --git a/hurd/subhurd/running_a_subhurd.mdwn b/hurd/subhurd/running_a_subhurd.mdwn
index 5d9693cd..f337108e 100644
--- a/hurd/subhurd/running_a_subhurd.mdwn
+++ b/hurd/subhurd/running_a_subhurd.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation,
+[[!meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Running a Subhurd"]]
+[[!meta title="Running a Subhurd"]]
By Roland McGrath.
diff --git a/hurd/syncfs.mdwn b/hurd/syncfs.mdwn
new file mode 100644
index 00000000..7099a68d
--- /dev/null
+++ b/hurd/syncfs.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+`syncfs` is a tiny wrapper around the [[`file_syncfs`
+RPC|interface/file_syncfs]].
+
+Its functionality should me merged into GNU coreutils' `sync` program, see
+[[!GNU_Savannah_task 6614]][[!tag open_issue_hurd open_issue_porting]].
diff --git a/hurd/toolchain.mdwn b/hurd/toolchain.mdwn
index e94029ba..8b852089 100644
--- a/hurd/toolchain.mdwn
+++ b/hurd/toolchain.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[binutils]]
* [[GCC]]
diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn
index 0cfcc5fa..dc3fd256 100644
--- a/hurd/translator.mdwn
+++ b/hurd/translator.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
A translator is simply a normal program acting as
an object server and participating in the Hurd's
@@ -18,6 +18,12 @@ and [[pfinet]]) and thus translates object invocations
into calls appropriate for the backing store
(e.g., ext2 file system, nfs server, etc.).
+Another way of putting it is that it translates from one representation of a
+data structure into another representation, for example from the on-disk
+[[ext2|ext2fs]] data layout to a traditional file system hierarchy, or from a
+XML file to a virtual hierarchical manifestation. This translation can be a
+bidirectional process, but it need not be.
+
A translator is usually registered with a specific file system node by using
the [[`settrans`|settrans]] command.
@@ -33,6 +39,17 @@ kernel and thus have absolute access to the machine.
As the protocols do not require any special privilege
to implement, this is not an issue on the Hurd.
+In Mach parlance, a *translator* is what they name a *server*: a process that
+participates in [[RPC]] interactions. In the Hurd, a translator is a server
+that is additionally attached to a filesystem node. Thus, it is quite common,
+even in the Hurd context, to speak about *server*s if you're stressing the RPC
+part, and on the other hand about *translator*s if you're stressing the
+filesystem part: a translator implements the [[interface/fs]] and
+[[interface/io]] interfaces. For example: *the [[pfinet]] server implements
+the socket API calls (which are mapped by [[glibc]] to equivalent RPC calls)*,
+compared to *a [[libdiskfs]]-based translator implements a filesystem, based on
+a backing store*.
+
To learn how to write a translator, read the code!
It is well documented, in particular, the header files.
The [[Hurd_Hacking_Guide]] also has a tutorial.
@@ -46,10 +63,13 @@ Marcus Brinkmann has written a document about [[documentation/translators]].
Here are some [[hints_about_debugging_translators|debugging/translator]]
available.
+Read about translator [[short-circuiting]].
+
# Existing Translators
* [[auth]]
+* [[exec]]
* [[pfinet]]
* [[pflocal]]
* [[hostmux]]
@@ -57,9 +77,7 @@ available.
* [[ext2fs]]
* [[fatfs]]
* [[magic]]
-* [[mboxfs]]
* [[unionfs]]
-* [[xmlfs]]
* ...
@@ -70,8 +88,27 @@ available.
* [[cvsfs]]
* [[tmpfs]]
* [[procfs]]
+* [[nsmux]]
* ...
+# Translators (only) in Hurdextras
+
+*These Translators are available in the [hurdextras repository](http://savannah.nongnu.org/cvs/?group=hurdextras) but not yet described on this website. They are in varying stages of Development.*
+
+* [jfs](http://www.nongnu.org/hurdextras/#jfs)
+* [httpfs](http://www.nongnu.org/hurdextras/#httpfs)
+* [gopherfs](http://www.nongnu.org/hurdextras/#cvsfs)
+* [memfs](http://www.nongnu.org/hurdextras/#gopherfs)
+* [netio](http://www.nongnu.org/hurdextras/#netio)
+* [notice](http://www.nongnu.org/hurdextras/#notice)
+* [pith](http://www.nongnu.org/hurdextras/#pith)
+* [pptop](http://www.nongnu.org/hurdextras/#pptop)
+* [run](http://www.nongnu.org/hurdextras/#run)
+* [smbfs](http://www.nongnu.org/hurdextras/#smbfs)
+* [tarfs](http://www.nongnu.org/hurdextras/#tarfs)
+* [xmlfs](http://www.nongnu.org/hurdextras/#xmlfs)
+* [mboxfs](http://www.nongnu.org/hurdextras/#mboxfs)
+
# Translator Wishlists
diff --git a/hurd/translator/auth.mdwn b/hurd/translator/auth.mdwn
index 73e7e025..d9e70ec2 100644
--- a/hurd/translator/auth.mdwn
+++ b/hurd/translator/auth.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[*The_Authentication_Server*|documentation/auth]], the transcript of a talk
about the details of the authentication mechanisms in the Hurd by Wolfgang
diff --git a/hurd/translator/cvsfs.mdwn b/hurd/translator/cvsfs.mdwn
index 0dd682bf..f5f1a9e0 100644
--- a/hurd/translator/cvsfs.mdwn
+++ b/hurd/translator/cvsfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Setting up cvsfs on GNU/Hurd - A step by step process
diff --git a/hurd/translator/devfs.mdwn b/hurd/translator/devfs.mdwn
index 7a00519c..27df23aa 100644
--- a/hurd/translator/devfs.mdwn
+++ b/hurd/translator/devfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
`devfs` is a translator sitting on `/dev` and providing what is to be provided
in there in a dynamic fashion -- as compared to static passive translator
diff --git a/hurd/translator/emailfs.mdwn b/hurd/translator/emailfs.mdwn
index 04b58f33..80e2b150 100644
--- a/hurd/translator/emailfs.mdwn
+++ b/hurd/translator/emailfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
# How cool it would be if the email becomes similar to snail mail?
diff --git a/hurd/translator/examples.mdwn b/hurd/translator/examples.mdwn
index b9f145e3..6319df77 100644
--- a/hurd/translator/examples.mdwn
+++ b/hurd/translator/examples.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Setting up translators - HowTo
diff --git a/hurd/translator/exec.mdwn b/hurd/translator/exec.mdwn
new file mode 100644
index 00000000..d5b6bfbc
--- /dev/null
+++ b/hurd/translator/exec.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+The *exec* server, listening on `/servers/exec`, is responsible for
+preparing the execution of processes.
diff --git a/hurd/translator/ext2fs.mdwn b/hurd/translator/ext2fs.mdwn
index cfa8c997..69d035db 100644
--- a/hurd/translator/ext2fs.mdwn
+++ b/hurd/translator/ext2fs.mdwn
@@ -1,18 +1,28 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+# Issues
The `ext2fs` translator from the upstream Hurd code base can only handle file
systems with sizes of less than roughly 2 GiB.
+[[!tag open_issue_hurd]]
+
A patch exists to lift this limitation (and is being used in the
[[Debian_GNU/Hurd_distribution|running/debian]]), but it introduces another
incompatibility: `ext2fs` then only supports block sizes of 4096 bytes.
Smaller block sizes are commonly automatically selected by `mke2fs` when using
small backend stores, like floppy devices.
+
+
+# Documentation
+
+<http://www.nongnu.org/ext2-doc/>
diff --git a/hurd/translator/fatfs.mdwn b/hurd/translator/fatfs.mdwn
index b534b97e..006fac0b 100644
--- a/hurd/translator/fatfs.mdwn
+++ b/hurd/translator/fatfs.mdwn
@@ -1,11 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-The current `fatfs` translator is read-only.
+The current `fatfs` translator is read-only, and it has a severe bug:
+[[!GNU_Savannah_bug 25961]].
diff --git a/hurd/translator/magic.mdwn b/hurd/translator/magic.mdwn
index f6d0494b..06ee798b 100644
--- a/hurd/translator/magic.mdwn
+++ b/hurd/translator/magic.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2006, 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The magic translator provides `/dev/fd`.
diff --git a/hurd/translator/mboxfs.mdwn b/hurd/translator/mboxfs.mdwn
index be959d0b..e357294f 100644
--- a/hurd/translator/mboxfs.mdwn
+++ b/hurd/translator/mboxfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
<http://www.nongnu.org/hurdextras/#mboxfs>
diff --git a/hurd/translator/nsmux.mdwn b/hurd/translator/nsmux.mdwn
new file mode 100644
index 00000000..d156772b
--- /dev/null
+++ b/hurd/translator/nsmux.mdwn
@@ -0,0 +1,121 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+# nsmux
+
+`nsmux` implements the simplest use-case of namespace-based translator
+selection (see below).
+
+To use `nsmux` do the following:
+
+ $ settrans -a <node> nsmux <directory>
+
+After this operation `<node>` will be a mirror of `<directory>` with
+namespace-based translator selection functionality enabled.
+
+Please note that due to some details `nsmux` may complain a lot when
+run as a normal user. This matter is the most urgent on the TODO
+list.
+
+## Source
+
+`nsmux` translator can be obtained with the following series of
+commands:
+
+ $ git clone git://git.sv.gnu.org/hurd/incubator.git nsmux
+ $ cd nsmux/
+ $ git checkout -b nsmux origin/nsmux
+
+`filter` translator can be obtained with the following series of
+commands:
+
+ $ git clone git://git.sv.gnu.org/hurd/incubator.git filter
+ $ cd filter/
+ $ git checkout -b filter origin/filter
+
+The filter is not yet working.
+
+## Namespace-based Translator Selection
+
+Namespace-based translator selection is the special technique of using
+"magic" filenames for both accessing the file and setting translators
+on it.
+
+A "magic" filename is a filename which contains an unescaped sequence
+of two commas: ",,". This sequence can be escaped by adding another
+comma: ",,,". In the magic filename the part up to the first double
+commas is interpreted as the filename itself; the remaining segments
+into which the string is split by occurrences of ",," are treated as
+names of translators located under `/hurd/`.
+
+The simplest advantage before traditional way of setting
+translators is shown in the following examples. Compare this
+
+ $ settrans -a file translator1
+ $ settrans -a file translator2
+ $ cat file
+
+to this:
+
+ $ cat file,,translator1,,translator2
+
+One simple command versus three more lengthy ones is an obvious
+improvement. However, this advantage is not the only one and,
+probably, not even the most important.
+
+What is a good candidate for the most important advantage is that
+translators requested via "magic" filenames are session-bound. In
+other words, by running `cat file,,translator` we set a translator
+visible *only* to `cat`, while the original file remains untranslated.
+Such session-specific translators are called **dynamic** and there is
+no (theoretical) way for a client to get a port to a dynamic
+translator requested by another client.
+
+Obviously, dynamic translators can be stacked, similarly to static
+translators. Also, dynamic translator stacks may reside on top of
+static translator stacks.
+
+An important operation of namespace-based translator selection is
+*filtering*. Filtering basically consists in looking up a translator
+by name in the stack and ignoring translators located on top of it.
+Note that filtering does not mean dropping some translators: in the
+current implementation a filter is expected to be a normal dynamic
+translator, included in the dynamic translator stack similarly to
+other translators.
+
+An important detail is that filtering is not limited to dynamic
+translator stacks: a filter should be able to descend into static
+translator stacks as well.
+
+Although the concept of filtering may seem purely abstract in the
+simplest use-case of setting dynamic translators on top of files, the
+situation changes greatly when dynamic translator stacks on top of
+directories are considered. In this case, the implementation of
+namespace-based translator selection is expected to be able to
+propagate the dynamic translators associated with the directory down
+the directory structure. That is, all files located under a directory
+opened with magic syntax, are expected to be translated by the same
+set of translators. In this case having the possibility to
+specifically discard some of the translators set up on top of certain
+files is very useful.
+
+Note that the implementation of propagation of dynamic translators
+down directories is not fully conceived at the moment. The
+fundamental problem is distinguishing between situations when the
+dynamic translators are to be set on the underlying files of the
+directory or on the directory itself.
+
+## Currently Implemented
+
+Currently there a working (though not heavily tested) implementation
+of the simplest use-case of namespace-based translator selection in
+the form of translator `nsmux`. The filter is partially implemented
+and this is the immediate goal. Propagating translators down
+directories is the next objective.
diff --git a/hurd/translator/pfinet.mdwn b/hurd/translator/pfinet.mdwn
index a8da45d7..cbe50b48 100644
--- a/hurd/translator/pfinet.mdwn
+++ b/hurd/translator/pfinet.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software
+[[!meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
To configure Internet connectivity, the `pfinet` (*Protocol Family Internet*)
[[translator]] must be configured. This is done using the
diff --git a/hurd/translator/pfinet/implementation.mdwn b/hurd/translator/pfinet/implementation.mdwn
index 08a29280..50b5dfc2 100644
--- a/hurd/translator/pfinet/implementation.mdwn
+++ b/hurd/translator/pfinet/implementation.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The `pfinet` server is a hacked Linux internet implementation with a glue layer
translating between the Hurd [[RPC]]s and the middle layer of the Linux
diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn
index 37fabcb7..5afee0c6 100644
--- a/hurd/translator/pfinet/ipv6.mdwn
+++ b/hurd/translator/pfinet/ipv6.mdwn
@@ -1,12 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
[[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]].
This was [Savannah task #5470](http://savannah.gnu.org/task/?5470).
@@ -51,10 +52,6 @@ Quite the same, but with static IPv6 address assignment:
-A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1
-# Binaries
+# Missing Functionality
-For your convenience -- this work is not yet available in the Debian packages
--- binaries of a patched (multicast reception) GNU Mach kernel (including
-default driver set and debugging support) and a stripped pfinet translator
-(named `pfinet6` here) are being provided at
-<http://brokenpipe.de/GnuHurd/pfinet6/>
+Amongst other things, support for [[IOCTL]]s is missing.
diff --git a/hurd/translator/pflocal.mdwn b/hurd/translator/pflocal.mdwn
index c1d4ac2b..dc2434dc 100644
--- a/hurd/translator/pflocal.mdwn
+++ b/hurd/translator/pflocal.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2000, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
The implementation of the `pflocal` server is in the `pflocal` directory, and
uses [[`libpipe`|libpipe]] (shared code with the [[named_pipe|fifo]]
diff --git a/hurd/translator/procfs.mdwn b/hurd/translator/procfs.mdwn
index eb07a8f6..404a6764 100644
--- a/hurd/translator/procfs.mdwn
+++ b/hurd/translator/procfs.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
<http://www.nongnu.org/hurdextras/#procfs>
diff --git a/hurd/translator/procfs/htop.mdwn b/hurd/translator/procfs/htop.mdwn
index 5228c702..ce38b92c 100644
--- a/hurd/translator/procfs/htop.mdwn
+++ b/hurd/translator/procfs/htop.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
open("/proc/stat", O_RDONLY) = 3
open("/proc/meminfo", O_RDONLY) = 3
diff --git a/hurd/translator/procfs/killall.mdwn b/hurd/translator/procfs/killall.mdwn
index 99790a36..3d31b51a 100644
--- a/hurd/translator/procfs/killall.mdwn
+++ b/hurd/translator/procfs/killall.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
open("/proc/stat", O_RDONLY) = 3
open("/proc/self/stat", O_RDONLY) = 3
diff --git a/hurd/translator/procfs/procps.mdwn b/hurd/translator/procfs/procps.mdwn
index 99790a36..3d31b51a 100644
--- a/hurd/translator/procfs/procps.mdwn
+++ b/hurd/translator/procfs/procps.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
open("/proc/stat", O_RDONLY) = 3
open("/proc/self/stat", O_RDONLY) = 3
diff --git a/hurd/translator/procfs/top.mdwn b/hurd/translator/procfs/top.mdwn
index f0030d61..2cba78ad 100644
--- a/hurd/translator/procfs/top.mdwn
+++ b/hurd/translator/procfs/top.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
open("/proc/stat", O_RDONLY) = 3
open("/proc/sys/kernel/pid_max", O_RDONLY) = 3
diff --git a/hurd/translator/short-circuiting.mdwn b/hurd/translator/short-circuiting.mdwn
new file mode 100644
index 00000000..9de9f7b8
--- /dev/null
+++ b/hurd/translator/short-circuiting.mdwn
@@ -0,0 +1,88 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+In traditional [[Unix]], file systems contain special files. These are:
+symbolic links, character devices, block devices, named pipes, and
+named sockets. Naturally the Hurd also support these.
+
+However, if you take a look at `hurd/io.defs` and `hurd/fs.defs`, you'll
+find that there are no [[RPC]]s that deal specifically with these types.
+Sure, you can get the type of the file through `io_stat` (among other
+things), but there are none that e.g. lets you create a symbolic link.
+
+If you take a look at how [[glibc]] implements `symlink`, you'll notice
+that all it does is create a new file and set its passive translator to
+`/hurd/symlink DEST`. You can verify this yourself by creating a symlink
+with `ln -s foo bar` and print its passive translator setting with `showtrans
+bar`.
+
+This is how the other special files are implemented as well. The header
+`hurd/paths.h` contains a list of paths that are used to implement
+special files:
+
+ * `/hurd/symlink`
+ * `/hurd/chrdev`
+ * `/hurd/blkdev`
+ * `/hurd/fifo`
+ * `/hurd/ifsock`
+
+So all special files are implemented through special-purpose translators,
+right? Not quite, instead the translators of this list are often
+implemented in their underlying filesystem through *translator
+short-circuiting*. In fact, `chrdev` and `blkdev` aren't even implemented
+as translators at all.
+
+Translator short-circuiting is when a file system server implements the
+functionality of a passive translator itself, instead of actually starting
+it. For instance, all the [[`symlink`|symlink]] translator does is return
+a `FS_RETRY_*` reply to the caller. So instead of starting it, the file
+system server can simply continue the file name look-up internally by
+appending the target of the symbolic link to the path being looked-up.
+
+This way, we can skip starting the `symlink` translator, skip retrying
+the look-up on the newly started translator, and we might also skip a
+retry to the same file system server again, if the target of the symbolic
+link is in it.
+
+In fact, the list's translators that actually are implemented (`symlink`,
+`fifo`, `ifsock`) are only used as a default implementation if the underlying
+file system's translator does not implement the functionality itself, i.e., if
+it doesn't short-circuit it.
+
+To make sure that you use one of these translators, there by bypassing the
+short-circuiting mechanism, you can either start it as
+an active translator, or use a different path from the one in
+`hurd/path.h`, e.g. `settrans bar /hurd/./symlink foo`.
+
+The best example of how short-circuiting is implemented can be found
+in [[`libdiskfs`|libdiskfs]]. Notice how it detects if a translator to store
+is a special file in `diskfs_S_file_set_translator` and instead
+of storing a real passive translator setting on the disk, stores it as a
+symlink node (using `diskfs_create_symlink_hook` or a generic implementation).
+
+In later look-ups to the node, it checks the node's `stat` structure in
+`diskfs_S_file_get_translator`, or
+`diskfs_S_dir_lookup` and handles special file types appropriately.
+
+Doing this translator short-circuiting has disadvantages: code duplication, or
+in general adding code complexity that isn't needed for implementing the same
+functionality, but it also has advantages: using functionality that the file
+system's data structures nevertheless already provide -- storing symbolic links
+in `ext2fs`' inodes instead of storing passive translator settings -- and thus
+staying compatible with other operating systems mounting that file system.
+
+Also, this short-circuiting does preserve system resources, as it's no longer
+required to start a `symlink` translator for resolving each symbolic link, as
+well as it does reduce the [[RPC]] overhead.
+
+It can also confuse users who expect the passive translator to start.
+For instance, if a user notices that [[`symlink`|symlink]]'s code is
+lacking some functionality, but that it unexpectedly works when the user
+tries to run it.
diff --git a/hurd/translator/storeio.mdwn b/hurd/translator/storeio.mdwn
index 49d70e1b..8e26a959 100644
--- a/hurd/translator/storeio.mdwn
+++ b/hurd/translator/storeio.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
`storeio` is a *translator for devices and other stores*.
@@ -27,4 +27,4 @@ You can even `ungzip` files on the fly (`bunzip2` is available as well):
You can use the *typed store*, to create filter chains (of course this example
is kind of useless since you could use the `gunzip` store directly):
- settrans -ca node /hurd/storeio -T type gunzip:file:foo.gz
+ settrans -ca node /hurd/storeio -T typed gunzip:file:foo.gz
diff --git a/hurd/translator/stowfs.mdwn b/hurd/translator/stowfs.mdwn
index 022e3d5e..9c88f1a3 100644
--- a/hurd/translator/stowfs.mdwn
+++ b/hurd/translator/stowfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta redir=unionfs#stowfs]]
+[[!meta redir=unionfs#stowfs]]
diff --git a/hurd/translator/tmpfs.mdwn b/hurd/translator/tmpfs.mdwn
index bb9ef269..0179ad6c 100644
--- a/hurd/translator/tmpfs.mdwn
+++ b/hurd/translator/tmpfs.mdwn
@@ -1,21 +1,28 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
`tmpfs` is a file system server for temporary data storage without using a real
(permanent) [[backing_store]].
It is based on [[libdiskfs]].
-It's not working correctly at the moment.
+Even though there are other possibilities of creating a
+[[libstore/examples/ramdisk]] and running a regular, for example, [[`ext2` file
+system|ext2fs]] on it, having a real `tmpfs` is better, as it need not deal
+with the additional block-level indirection layer that `ext2` (or any other
+disk-based file system) imposes.
-[[inline
+However, `tmpfs` is not working correctly at the moment:
+
+[[!inline
pages="hurd/translator/tmpfs/*"
show=0
feeds=no
diff --git a/hurd/translator/tmpfs/notes_bing.mdwn b/hurd/translator/tmpfs/notes_bing.mdwn
index 2392bd61..fa3eeac2 100644
--- a/hurd/translator/tmpfs/notes_bing.mdwn
+++ b/hurd/translator/tmpfs/notes_bing.mdwn
@@ -1,12 +1,15 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_hurd]]
1. to run tmpfs as a regular user, /servers/default-pager must be executable by
that user. by default it seems to be set to read/write.
diff --git a/hurd/translator/tmpfs/notes_various.mdwn b/hurd/translator/tmpfs/notes_various.mdwn
index 90636b61..5e4e991c 100644
--- a/hurd/translator/tmpfs/notes_various.mdwn
+++ b/hurd/translator/tmpfs/notes_various.mdwn
@@ -1,13 +1,15 @@
-[[meta copyright="Copyright © 2005, 2006, 2007, 2008
- Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009 Free Software
+Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_hurd]]
<antrik> hde: what's the status on tmpfs?
<hde> Broke
@@ -210,3 +212,7 @@ is included in the section entitled
<antrik> seems something more broke in the meantime :-(
<antrik> ah, right... but I the main problem was some other change
<antrik> (or maybe it never really worked, not sure anymore)
+
+---
+
+[[!GNU_Savannah_bug 26751]]
diff --git a/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn b/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn
new file mode 100644
index 00000000..ef041a23
--- /dev/null
+++ b/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn
@@ -0,0 +1,73 @@
+[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+\#hurd, freenode, 2010
+
+ <slpz> humm... why does tmpfs try to use the default pager? that's a bad idea, and probably will never work correctly...
+ * slpz is thinking about old issues
+ <slpz> tmpfs should create its own pagers, just like ext2fs, storeio...
+ <slpz> slopez@slp-hurd:~$ settrans -a tmp /hurd/tmpfs 10M
+ <slpz> slopez@slp-hurd:~$ echo "foo" > tmp/bar
+ <slpz> slopez@slp-hurd:~$ cat tmp/bar
+ <slpz> foo
+ <slpz> slopez@slp-hurd:~$
+ <slpz> :-)
+ <pochu> slpz: woo you fixed it?
+ <slpz> pochu: well, it's WIP, but reading/writing works...
+ <slpz> I've replaced the use of default pager for the standard pager creation mechanism
+ <antrik> slpz: err... how is it supposed to use swap space if not using the default pager?
+ <antrik> slpz: or do you mean that it should act as a proxy, just allocating anonymous memory (backed by the default pager) itself?
+ <youpi> antrik: the kernel uses the default pager if the application pager isn't responsive enough
+ <slpz> antrik: it will just create memory objects and provide zerofilled pages when requested by the kernel (after a page fault)
+ <antrik> youpi: that makes sense I guess... but how is that relevant to the question at hand?...
+ <slpz> antrik: memory objects will contain the data by themselves
+ <slpz> antrik: as youpi said, when memory is scarce, GNU Mach will start paging out data from memory objects to the default pager
+ <slpz> antrik: that's the way in which pages will get into swap space
+ <slpz> (if needed)
+ <youpi> the thing being that the tmpfs pager has a chance to select pages he doesn't care any more about
+ <antrik> slpz: well, the point is that instead of writing the pages to a backing store, tmpfs will just keep them in anonymous memory, and let the default pager write them out when there is pressure, right?
+ <antrik> youpi: no idea what you are talking about. apparently I still don't really understand this stuff :-(
+ <youpi> ah, but tmpfs doesn't have pages he doesn't care about, does it?
+ <slpz> antrik: yes, but the term "anonymous memory" could be a bit confusing.
+ <slpz> antrik: in GNU Mach, anonymous memory is backed by a memory object without a pager. In tmpfs, nodes will be allocated in memory objects, and the pager for those memory objects will be tmpfs itself
+ <antrik> slpz: hm... I thought anynymous memory is backed by memory objects created from the default pager?
+ <antrik> yes, I understand that tmpfs is supposed to be the pager for the objects it provides. they are obviously not anonymoust -- they have inodes in the tmpfs name space
+ <antrik> but my understanding so far was that when Mach returns pages to the pager, they end up in anonymous memory allocated to the pager process; and then this pager is responsible for writing them back to the actual backing store
+ <antrik> am I totally off there?...
+ <antrik> (i.e. in my understanding the returned pages do not reside in the actual memory object the pager provides, but in an anonymous memory object)
+ <slpz> antrik: you're right. The trick here is, when does Mach return the pages?
+ <slpz> antrik: if we set the attribute "can_persist" in a memory object, Mach will keep it until object cache is full or memory is scarce
+ <slpz> or we change the attributes so it can no longer persist, of course
+ <slpz> without a backing store, if Mach starts sending us pages to be written, we're in trouble
+ <slpz> so we must do something about it. One option, could be creating another pager and copying the contents between objects.
+ <antrik> another pager? not sure what you mean
+ <antrik> BTW, you didn't really say why we can't use the default pager for tmpfs objects :-)
+ <slpz> well, there're two problems when using the default pager as backing store for translators
+ <slpz> 1) Mach relies on it to do swapping tasks, so meddling with it is not a good idea
+ <slpz> 2) There're problems with seqnos when trying to work with the default pager from tasks other the kernel itself
+ <slpz> (probably, the latter could be fixed)
+ <slpz> antrik: pager's terminology is a bit confusing. One can also say creating another memory object (though the function in libpager is "pager_create")
+ <antrik> not sure why "meddling" with it would be a problem...
+ <antrik> and yeah, I was vaguely aware that there is some seqno problem with tmpfs... though so far I didn't really understand what it was about :-)
+ <antrik> makes sense now
+ <antrik> anyways, AIUI now you are trying to come up with a mechanism where the default pager is not used for tmpfs objects directly, but without making it inefficient?
+ <antrik> slpz: still don't understand what you mean by creating another memory object/pager...
+ <antrik> (and yeat, the terminology is pretty mixed up even in Mach itself)
+ <slpz> antrik: I meant creating another pager, in terms of calling again to libpager's pager_create
+ <antrik> slpz: well, I understand what "create another pager" means... I just don't understand what this other pager would be, when you would create it, and what for...
+ <slpz> antrik: oh, ok, sorry
+ <slpz> antrik: creating another pager it's just a trick to avoid losing information when Mach's objects cache is full, and it decides to purge one of our objects
+ <slpz> anyway, IMHO object caching mechanism is obsolete and should be replaced
+ <slpz> I'm writting a comment to bug #28730 which says something about this
+ <slpz> antrik: just one more thing :-)
+ <slpz> if you look at the code, for most time of their lives, anonymous memory objects don't have a pager
+ <slpz> not even the default one
+ <slpz> only the pageout thread, when the system is running really low on memory, gives them a reference to the default pager by calling vm_object_pager_create
+ <slpz> this is not really important, but worth noting ;-)
diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn
index 7eee5245..d1e3868b 100644
--- a/hurd/translator/unionfs.mdwn
+++ b/hurd/translator/unionfs.mdwn
@@ -1,17 +1,155 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010 Free Software Foundation,
+Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-<http://www.nongnu.org/hurdextras/#unionfs>
+# `unionfs`
+*Unionfs allows you to simply union one directory or translator into another one, so you see the files of both of them side by side.*
+
+Source repository: <http://git.savannah.gnu.org/cgit/hurd/unionfs.git/>
+
+Right now there are some problems with syncing, so please be aware
+that it might not work as expected.
+
+<a name="unionmount"></a>
+# `unionmount`
+
+... is a special mode of `unionfs`.
+
+## Project Idea
+
+When setting a translator on Hurd -- similar to mounting a file system on UNIX
+-- the new node(s) exported by the translator are obscuring the original node
+where the translator is set, and any nodes below it in the directory tree. The
+translator itself can access the underlying node (which is a very nice feature,
+as it allows translators presenting the contents of the node in a different
+format); but it's no longer accessible from the "outside".
+
+Plan9 has a feature where a file system can be mounted in union mode: the new
+file system doesn't obscure the mount point in this case, but instead the
+contents are combined. (This feature has also been under discussion in Linux
+for a couple of years now, under the label "VFS-based union mounts".)
+
+This kind of union mounts is generally useful, as it's sometimes more
+convenient than unioning existing filesystem locations with unionfs -- it's not
+necessary to mount a file system that is to be unioned at some external
+location first: just union-mount it directly at the target location.
+
+But union mounts also allow creating passive translator hierarchies: If there
+is a passive translator on a parent node, and further passive translators on
+child nodes, the union mount allows the child nodes with the further translator
+settings still to be visible after the parent translator has started.
+
+This could be useful for device nodes for example: let's say we have an
+ethernet multiplexer at /dev/veth. Now the virtual subnodes could all be
+directly under /dev, i.e. /dev/veth0, /dev/veth1 etc., and explicitely refer to
+the main /dev/veth node in the translator command line. It would be more
+elegant however to store the virtual nodes direcly below the main multiplexer
+node -- /dev/veth/0, /dev/veth/1 etc.
+
+There are two possible approaches how union mounts could be implemented in the
+Hurd. The first one is to let the various translators handle union mounts
+internally, i.e. let them present the underlying nodes to the clients in
+addition to the actual nodes they export themselfs. This probably can be
+implemented as some kind of extension to the existing netfs and diskfs
+libraries.
+
+The other possible apporach is less efficient and probably more tricky, but
+probably also more generic: create a special unionmount translator, which
+serves as a kind of proxy: setting the union-mounted translator on some
+internal node; and at the actual mount location, presenting a union of the
+nodes exported by this translator, and the nodes from the underlying file
+system.
+
+The goal of this project is implementing union mounts using either of the
+approaches described above. (Though it might be useful initially to prototype
+both for comparision.) The ethernet multiplexer shall serve as an example use
+case -- any changes necessary to allow using it with the union mount
+functionality are also to be considered part of the task.
+
+[[Sergiu Ivanov|scolobb]] has been working on this as a [[Google Summer of Code
+2009 project|community/gsoc/2009]].
+
+## Implementation
+
+### Source
+
+Union mounts are currently implemented as two additional command line
+options of the `unionfs` translator. This implementation resides in
+the master-unionmount branch of the unionfs git repository. To
+checkout the code, do the following:
+
+ $ git clone git://git.sv.gnu.org/hurd/unionfs.git
+ $ cd unionfs
+ $ git checkout -b master-unionmount
+ $ git pull origin master-unionmount
+
+You can skip the checkout step if you don't mind that the
+`master-unionmount` branch gets merged into the `master` branch.
+
+### Short Documentation
+
+The `unionmount` project adds options "--mount" and "--no-mount" to
+`unionfs` (short versions: "-t" and "-n" correspondingly). Both
+options are used to implement union-mounting, but the first option
+will create a *transparent* union mount, while the second option will
+create a *nontransparent* union mount.
+
+One can create a transparent union mount with the following command:
+
+ $ settrans -a <node> unionfs --underlying --mount=<translator>
+
+When running
+
+ $ fsysopts <node>
+
+one will see the information about the `<translator>`, not the
+`unionfs` translator. Although this might seem the only natural way
+to do union mounts, one must keep in mind that such transparency
+deprives one of the possibility to modify the unioned virtual
+filesystem exported by `unionfs` at run-time (via `fsysopts`).
+
+One can create a nontransparent union mount with the following command:
+
+ $ settrans -a <node> unionfs --underlying --no-mount=<translator>
+
+When running
+
+ $ fsysopts <node>
+
+one will see the information about the `unionfs` translator. Although
+this way allows modifying the contents of the unioned filesystem
+exported by `unionfs` at runtime, the access to `<translator>` is
+blocked.
+
+The filesystem exported by the *mountee* (`<translator>`) is actually
+treated like a normal filesystem within `unionfs`, which means that
+one can assign priorities to the *mountee* to achieve the desired
+order of layering of the unioned directories. The following will make
+`unionfs` query the underlying filesystem first and then the
+*mountee*:
+
+ $ settrans -a <node> unionfs --priority=2 --underlying --priority=1 --mount=<translator>
+
+Note that the same functionality can also be achieved by assigning
+priority 1 to the underlying filesystem and keeping the priority of
+the *mountee* at 0.
<a name="stowfs"></a>
# `stowfs`
... is a special mode of `unionfs`.
+
+# External Links
+
+ * [*Unioning file systems for Linux*](http://valerieaurora.org/union/)
+
+ * [FUSE page about
+ `unionfs`](http://sourceforge.net/apps/mediawiki/fuse/index.php?title=UnionFileSystems)
diff --git a/hurd/translator/unionmount.mdwn b/hurd/translator/unionmount.mdwn
new file mode 100644
index 00000000..7384afc7
--- /dev/null
+++ b/hurd/translator/unionmount.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!meta redir=unionfs#unionmount]]
diff --git a/hurd/translator/wishlist_1.mdwn b/hurd/translator/wishlist_1.mdwn
index 6a4d591a..36290883 100644
--- a/hurd/translator/wishlist_1.mdwn
+++ b/hurd/translator/wishlist_1.mdwn
@@ -1,13 +1,13 @@
-[[meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
* [[devfs]]
diff --git a/hurd/translator/wishlist_2.mdwn b/hurd/translator/wishlist_2.mdwn
index 3ea68999..a927db55 100644
--- a/hurd/translator/wishlist_2.mdwn
+++ b/hurd/translator/wishlist_2.mdwn
@@ -76,6 +76,8 @@ Here's an [idea](http://www.circlemud.org/~jelson/software/fusd/docs/node13.html
Am I off my rocker, or does an IMAP/POP translator sound like a good idea? It would make your remote mail servers look like local ones. Or what about a translator that makes a mbox format mail spool look like a directory. Can anyone think of a good use for an SMTP translator?
+*Definitely: Copy my email in there to send it.* -- [[ArneBab|community/weblogs/ArneBab]]
+
## <a name="UUEncode"> </a> UUEncode
How about a UUEncode translator for those places you can only store ASCII. Combine this with a NNTP translator and store your data in someone's Usenet archive. Or since, (as far as I know), there are no size limitations on file names in the Hurd, why not have a filesystem translator whose underlying store is a file name. (Now ls becomes cat).
diff --git a/hurd/translator/writing/example.mdwn b/hurd/translator/writing/example.mdwn
index 170812ad..0a3be4df 100644
--- a/hurd/translator/writing/example.mdwn
+++ b/hurd/translator/writing/example.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
## Data User-Server Translator Example
diff --git a/hurd/translator/xmlfs.mdwn b/hurd/translator/xmlfs.mdwn
index cff15f59..769c43ce 100644
--- a/hurd/translator/xmlfs.mdwn
+++ b/hurd/translator/xmlfs.mdwn
@@ -1,11 +1,11 @@
-[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
<http://www.nongnu.org/hurdextras/#xmlfs>
diff --git a/hurd/virtual_file_system.mdwn b/hurd/virtual_file_system.mdwn
index 2902a26e..b62a5e4c 100644
--- a/hurd/virtual_file_system.mdwn
+++ b/hurd/virtual_file_system.mdwn
@@ -1,19 +1,19 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Path names are resolved using a distributed protocol.
No single entity is responsible for the resolution of
path names. A file system server (a [[translator]])
attaches to translators (`fs.defs:file_set_translator`).
-When a process resolves an aboslute path, it queries
+When a process resolves an absolute path, it queries
its root file system server by invoking the `fs.defs:dir_lookup`
method in the capability in its root directory slot. The
file system server resolves as much as it knows about locally
diff --git a/hurd/virtualization.mdwn b/hurd/virtualization.mdwn
index dfd6c375..42f83f77 100644
--- a/hurd/virtualization.mdwn
+++ b/hurd/virtualization.mdwn
@@ -1,12 +1,12 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
Olaf Buddenhagen has written a text about how [[/virtualization]] is applicable
within Hurd systems:
diff --git a/hurd/what_is_the_gnu_hurd.mdwn b/hurd/what_is_the_gnu_hurd.mdwn
index b125fc48..0b8f7ef6 100644
--- a/hurd/what_is_the_gnu_hurd.mdwn
+++ b/hurd/what_is_the_gnu_hurd.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2007, 2008 Free
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2007, 2008 Free
Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="What Is the GNU Hurd?"]]
+[[!meta title="What Is the GNU Hurd?"]]
The Hurd is the GNU project's replacement for the [[Unix]] kernel.
diff --git a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
index 4a2ddc67..5905a19b 100644
--- a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
+++ b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 Free Software
Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Grammatically speaking..."]]
+[[!meta title="Grammatically speaking..."]]
> [[It's_time_to_explain|origin_of_the_name]] the meaning of *Hurd*.
>
diff --git a/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
index 3527703a..51857e21 100644
--- a/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
+++ b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
@@ -1,15 +1,15 @@
-[[meta copyright="Copyright © 1996, 1997, 1998, 2002, 2003, 2004, 2007, 2008
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2002, 2003, 2004, 2007, 2008
Free Software Foundation, Inc."]]
-[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
-[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
+[[GNU Free Documentation License|/fdl]]."]]"""]]
-[[meta title="Origin of the Name"]]
+[[!meta title="Origin of the Name"]]
[According to Thomas
Bushnell](http://web.cecs.pdx.edu/~trent/gnu/hurd/hurd-name), the primary