aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.library/IkiWiki/Plugin/copyright.pm60
-rw-r--r--.library/IkiWiki/Plugin/license.pm59
-rw-r--r--.library/IkiWiki/Plugin/reset_mtimes.pm84
-rw-r--r--.library/IkiWiki/Plugin/texinfo.pm226
-rw-r--r--.templates/autotag.tmpl15
-rw-r--r--.templates/editpage.tmpl78
-rw-r--r--.templates/newsitem.tmpl80
-rw-r--r--.templates/page.tmpl201
-rw-r--r--abac.mdwn18
-rw-r--r--asbestos.mdwn25
-rw-r--r--asking_questions.mdwn23
-rw-r--r--binutils.mdwn11
-rw-r--r--capability.mdwn33
-rw-r--r--colophon.mdwn64
-rw-r--r--colophon/about_the_twiki_to_ikiwiki_conversion.mdwn107
-rw-r--r--community.mdwn57
-rw-r--r--community/chug.mdwn3
-rw-r--r--community/communication.mdwn40
-rw-r--r--community/dhug.mdwn7
-rw-r--r--community/facebook.mdwn12
-rw-r--r--community/gsoc.mdwn63
-rw-r--r--community/gsoc/2007.mdwn16
-rw-r--r--community/gsoc/2008.mdwn89
-rw-r--r--community/gsoc/2008/minutes-2008-04-25.mdwn61
-rw-r--r--community/gsoc/2008/minutes-2008-05-02.mdwn39
-rw-r--r--community/gsoc/2008/minutes-2008-05-16.mdwn21
-rw-r--r--community/gsoc/2009.mdwn23
-rw-r--r--community/gsoc/organization_application.mdwn211
-rw-r--r--community/gsoc/project_ideas.mdwn108
-rw-r--r--community/gsoc/project_ideas/cdparanoia.mdwn30
-rw-r--r--community/gsoc/project_ideas/debian_installer.mdwn41
-rw-r--r--community/gsoc/project_ideas/disk_io_performance.mdwn36
-rw-r--r--community/gsoc/project_ideas/download_backends.mdwn47
-rw-r--r--community/gsoc/project_ideas/driver_glue_code.mdwn49
-rw-r--r--community/gsoc/project_ideas/dtrace.mdwn46
-rw-r--r--community/gsoc/project_ideas/file_locking.mdwn38
-rw-r--r--community/gsoc/project_ideas/gnat.mdwn24
-rw-r--r--community/gsoc/project_ideas/gnumach_cleanup.mdwn46
-rw-r--r--community/gsoc/project_ideas/hardware_libs.mdwn42
-rw-r--r--community/gsoc/project_ideas/language_bindings.mdwn67
-rw-r--r--community/gsoc/project_ideas/lexical_dot-dot.mdwn40
-rw-r--r--community/gsoc/project_ideas/libcap.mdwn41
-rw-r--r--community/gsoc/project_ideas/libcap/details.mdwn766
-rw-r--r--community/gsoc/project_ideas/libdiskfs_locking.mdwn41
-rw-r--r--community/gsoc/project_ideas/libgtop.mdwn34
-rw-r--r--community/gsoc/project_ideas/maxpath.mdwn46
-rw-r--r--community/gsoc/project_ideas/mtab.mdwn74
-rw-r--r--community/gsoc/project_ideas/namespace-based_translator_selection.mdwn82
-rw-r--r--community/gsoc/project_ideas/nfs.mdwn45
-rw-r--r--community/gsoc/project_ideas/package_manager.mdwn51
-rw-r--r--community/gsoc/project_ideas/perl_python.mdwn38
-rw-r--r--community/gsoc/project_ideas/procfs.mdwn45
-rw-r--r--community/gsoc/project_ideas/pthreads.mdwn48
-rw-r--r--community/gsoc/project_ideas/secure_chroot.mdwn47
-rw-r--r--community/gsoc/project_ideas/server_overriding.mdwn74
-rw-r--r--community/gsoc/project_ideas/sound.mdwn42
-rw-r--r--community/gsoc/project_ideas/tcp_ip_stack.mdwn42
-rw-r--r--community/gsoc/project_ideas/testsuites.mdwn52
-rw-r--r--community/gsoc/project_ideas/tmpfs.mdwn45
-rw-r--r--community/gsoc/project_ideas/unionfs_boot.mdwn45
-rw-r--r--community/gsoc/project_ideas/unionmount.mdwn11
-rw-r--r--community/gsoc/project_ideas/valgrind.mdwn80
-rw-r--r--community/gsoc/project_ideas/virtualization.mdwn76
-rw-r--r--community/gsoc/project_ideas/vm_tuning.mdwn35
-rw-r--r--community/gsoc/project_ideas/xattr.mdwn47
-rw-r--r--community/gsoc/project_ideas/xmlfs.mdwn54
-rw-r--r--community/gsoc/student_application_form.mdwn211
-rw-r--r--community/gsoc/xorg_ideas.mdwn67
-rw-r--r--community/hurdbr.mdwn11
-rw-r--r--community/livejournal.mdwn6
-rw-r--r--community/meetings.mdwn30
-rw-r--r--community/meetings/eurosys_2009.mdwn25
-rw-r--r--community/meetings/fosdem_2005.mdwn18
-rw-r--r--community/meetings/fosdem_2006.mdwn248
-rw-r--r--community/meetings/fosdem_2007.mdwn141
-rw-r--r--community/meetings/fosdem_2008.mdwn154
-rw-r--r--community/meetings/fosdem_2010.mdwn86
-rw-r--r--community/meetings/rmll_2006.mdwn110
-rw-r--r--community/meetings/self-organised.mdwn54
-rw-r--r--community/meetings/stesie_2007-10-12.mdwn23
-rw-r--r--community/orkut.mdwn3
-rw-r--r--community/thug.mdwn25
-rw-r--r--community/weblogs.mdwn24
-rw-r--r--community/weblogs/ArneBab.mdwn45
-rw-r--r--community/weblogs/ArneBab/2008-06-17-latest-changes-in-the-hurd.mdwn18
-rw-r--r--community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn29
-rw-r--r--community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn38
-rw-r--r--community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn106
-rw-r--r--community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn40
-rw-r--r--community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn11
-rw-r--r--community/weblogs/ArneBab/niches_for_the_hurd.mdwn340
-rw-r--r--community/weblogs/ArneBab/what_we_need.mdwn39
-rw-r--r--community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn47
-rw-r--r--community/weblogs/antrik.mdwn15
-rw-r--r--community/weblogs/antrik/hurd-mission-statement.mdwn39
-rw-r--r--community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn50
-rw-r--r--community/weblogs/hook.mdwn25
-rw-r--r--community/weblogs/tschwinge.mdwn15
-rw-r--r--community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn545
-rw-r--r--community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2bin0 -> 33750 bytes
-rw-r--r--community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn104
-rw-r--r--config_edittemplate.mdwn18
-rw-r--r--config_edittemplate/open_issue_page.mdwn33
-rw-r--r--config_edittemplate/regular_page.mdwn24
-rw-r--r--confused_deputy.mdwn14
-rw-r--r--contact_us.mdwn26
-rw-r--r--contributing.mdwn112
-rw-r--r--contributing/questionnaire.mdwn45
-rw-r--r--contributing/web_pages.mdwn230
-rw-r--r--contributing/web_pages/news.mdwn110
-rw-r--r--contributing/web_pages/news/merge-news13
-rw-r--r--contributing/web_pages/news/skeleton.mdwn33
-rw-r--r--copyright.mdwn2
-rw-r--r--dde.mdwn42
-rw-r--r--designation.mdwn11
-rw-r--r--destructive_interference.mdwn32
-rw-r--r--documentation.mdwn34
-rw-r--r--donate.mdwn66
-rw-r--r--download.mdwn13
-rw-r--r--emulation.mdwn20
-rw-r--r--extensibility.mdwn17
-rw-r--r--faq.mdwn28
-rw-r--r--faq/sharing_the_user_space.mdwn23
-rw-r--r--favicon.icobin0 -> 1078 bytes
-rw-r--r--fdl.texi458
-rw-r--r--gcc.mdwn14
-rw-r--r--gdb.mdwn21
-rw-r--r--gdb/backtrace.mdwn29
-rwxr-xr-xgenerate_interface_redir_pages25
-rw-r--r--getting_help.mdwn29
-rw-r--r--glibc.mdwn11
-rw-r--r--grub.mdwn109
-rw-r--r--grub/tftp_boot.mdwn42
-rw-r--r--history.mdwn94
-rw-r--r--history/hurd-announce47
-rw-r--r--history/hurd-announce2143
-rw-r--r--history/hurd-flash22
-rw-r--r--history/hurd-flash1025
-rw-r--r--history/hurd-flash1125
-rw-r--r--history/hurd-flash1276
-rw-r--r--history/hurd-flash13120
-rw-r--r--history/hurd-flash1462
-rw-r--r--history/hurd-flash1560
-rw-r--r--history/hurd-flash2152
-rw-r--r--history/hurd-flash377
-rw-r--r--history/hurd-flash4101
-rw-r--r--history/hurd-flash523
-rw-r--r--history/hurd-flash646
-rw-r--r--history/hurd-flash717
-rw-r--r--history/hurd-flash873
-rw-r--r--history/hurd-flash939
-rw-r--r--history/port_to_l4.mdwn102
-rw-r--r--hurd-and-linux.html49
-rw-r--r--hurd-l4.mdwn13
-rw-r--r--hurd-paper.html761
-rw-r--r--hurd-talk.html1062
-rw-r--r--hurd.mdwn103
-rw-r--r--hurd/advantages.mdwn68
-rw-r--r--hurd/authentication.mdwn27
-rw-r--r--hurd/binutils.mdwn14
-rw-r--r--hurd/building.mdwn116
-rw-r--r--hurd/building/cross-compiling.mdwn208
-rw-r--r--hurd/building/cross-compiling/discussion.mdwn26
-rw-r--r--hurd/building/example.mdwn60
-rw-r--r--hurd/concepts.mdwn15
-rw-r--r--hurd/console.mdwn274
-rw-r--r--hurd/critique.mdwn20
-rw-r--r--hurd/dde.mdwn22
-rw-r--r--hurd/dde/guide.mdwn153
-rw-r--r--hurd/debugging.mdwn22
-rw-r--r--hurd/debugging/gdb.mdwn15
-rw-r--r--hurd/debugging/gdb/noninvasive_debugging.mdwn16
-rw-r--r--hurd/debugging/glibc.mdwn92
-rw-r--r--hurd/debugging/rpctrace.mdwn53
-rw-r--r--hurd/debugging/subhurd.mdwn90
-rw-r--r--hurd/debugging/translator.mdwn15
-rw-r--r--hurd/debugging/translator/capturing_stdout_and_stderr.mdwn37
-rw-r--r--hurd/debugging/translator/gdb.mdwn53
-rw-r--r--hurd/documentation.mdwn71
-rw-r--r--hurd/documentation/auth.html168
-rw-r--r--hurd/documentation/hurd-and-linux.mdwn11
-rw-r--r--hurd/documentation/hurd-paper.mdwn11
-rw-r--r--hurd/documentation/hurd-talk.mdwn11
-rw-r--r--hurd/documentation/translators.html236
-rw-r--r--hurd/faq.mdwn20
-rw-r--r--hurd/faq/how_about_drivers.mdwn17
-rw-r--r--hurd/faq/how_to_switch_microkernels.mdwn15
-rw-r--r--hurd/faq/old-stuff.mdwn45
-rw-r--r--hurd/faq/old_faq.txt562
-rw-r--r--hurd/faq/old_hurd_faq.txt289
-rw-r--r--hurd/faq/release.mdwn15
-rw-r--r--hurd/faq/slash_usr_symlink.mdwn20
-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/faq/which_microkernel.mdwn19
-rw-r--r--hurd/gcc.mdwn15
-rw-r--r--hurd/glibc.mdwn21
-rw-r--r--hurd/glibc/hurd-specific_api.mdwn177
-rw-r--r--hurd/glibc/internals.mdwn35
-rw-r--r--hurd/hurd_hacking_guide.mdwn25
-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.mdwn40
-rw-r--r--hurd/libchannel.mdwn62
-rw-r--r--hurd/libfshelp.mdwn29
-rw-r--r--hurd/libhello_example.mdwn167
-rw-r--r--hurd/libihash.mdwn52
-rw-r--r--hurd/libnetfs.mdwn298
-rw-r--r--hurd/libpager.mdwn16
-rw-r--r--hurd/libports.mdwn20
-rw-r--r--hurd/libstore.mdwn36
-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.mdwn11
-rw-r--r--hurd/neighborhurd.mdwn25
-rw-r--r--hurd/networking.mdwn32
-rw-r--r--hurd/ng.mdwn93
-rw-r--r--hurd/ng/cancellationforwarding.mdwn56
-rw-r--r--hurd/ng/choiceofmicrokernel.mdwn4
-rw-r--r--hurd/ng/copyvsrevocablecopyvsmap.mdwn6
-rw-r--r--hurd/ng/designgoals.mdwn53
-rw-r--r--hurd/ng/designprinciples.mdwn39
-rw-r--r--hurd/ng/discussion.mdwn13
-rw-r--r--hurd/ng/firstclassreceivebuffer.mdwn3
-rw-r--r--hurd/ng/howmuchconfinementdowewant.mdwn93
-rw-r--r--hurd/ng/hurdishapplicationsforpersistence.mdwn5
-rw-r--r--hurd/ng/issues_with_mach.mdwn12
-rw-r--r--hurd/ng/limitations_of_the_original_hurd_design.mdwn11
-rw-r--r--hurd/ng/microkernelcoyotos.mdwn9
-rw-r--r--hurd/ng/part1ownershipandcontracts.mdwn163
-rw-r--r--hurd/ng/part1ownershipandcontractsaddendum.mdwn31
-rw-r--r--hurd/ng/part2systemstructure.mdwn122
-rw-r--r--hurd/ng/pathmax.mdwn3
-rw-r--r--hurd/ng/permissionbits.mdwn3
-rw-r--r--hurd/ng/philosophy.mdwn8
-rw-r--r--hurd/ng/position_paper.mdwn15
-rw-r--r--hurd/ng/powerbox.mdwn19
-rw-r--r--hurd/ng/requirementsforuser.mdwn59
-rw-r--r--hurd/ng/setuidvsconstructor.mdwn6
-rw-r--r--hurd/ng/sharedlibraries.mdwn3
-rw-r--r--hurd/ng/systemstructure.mdwn3
-rw-r--r--hurd/ng/thepolycastinterface.mdwn52
-rw-r--r--hurd/ng/trivialconfinementvsconstructorvsfork.mdwn78
-rw-r--r--hurd/ng/usecaseprivatekeys.mdwn17
-rw-r--r--hurd/ng/usecaseuserfilesystem.mdwn14
-rw-r--r--hurd/ng/whatisacapability.mdwn3
-rw-r--r--hurd/ng/whatisaconstructor.mdwn6
-rw-r--r--hurd/ng/whatisaspacebank.mdwn3
-rw-r--r--hurd/ng/whatsinagroup.mdwn3
-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.mdwn18
-rw-r--r--hurd/running.mdwn23
-rw-r--r--hurd/running/arch_hurd.mdwn21
-rw-r--r--hurd/running/bee.mdwn6
-rw-r--r--hurd/running/debian.mdwn28
-rw-r--r--hurd/running/debian/CDNotesHome.mdwn7
-rw-r--r--hurd/running/debian/CrossInstall.mdwn76
-rw-r--r--hurd/running/debian/DebianAptOffline.mdwn62
-rw-r--r--hurd/running/debian/DebianAptOffline/apt.conf.offline23
-rw-r--r--hurd/running/debian/DebianDpkgArchitecture.mdwn27
-rw-r--r--hurd/running/debian/DebianIntegrationDeveloper.mdwn15
-rw-r--r--hurd/running/debian/DebianPackages.mdwn43
-rw-r--r--hurd/running/debian/DebianTranslatorPolicy.mdwn40
-rw-r--r--hurd/running/debian/GNUDebianBuildProcess.mdwn133
-rw-r--r--hurd/running/debian/GNUDebianPackages.mdwn103
-rw-r--r--hurd/running/debian/GnuDebianRelationship.mdwn32
-rw-r--r--hurd/running/debian/MediaPressKitDiscuss.mdwn76
-rw-r--r--hurd/running/debian/SampleDscFile.mdwn24
-rw-r--r--hurd/running/debian/SoftwareLicensing.mdwn116
-rw-r--r--hurd/running/debian/after_install.mdwn111
-rw-r--r--hurd/running/debian/creating_image_tarball.mdwn21
-rw-r--r--hurd/running/debian/creating_image_tarball/anonftpsync-ports180
-rw-r--r--hurd/running/debian/faq.mdwn21
-rw-r--r--hurd/running/debian/faq/2_gib_partition_limit.mdwn13
-rw-r--r--hurd/running/debian/faq/512_mib_ram_limit.mdwn21
-rw-r--r--hurd/running/debian/faq/apt_umount.mdwn25
-rw-r--r--hurd/running/debian/faq/bad_hypermeta_data.mdwn15
-rw-r--r--hurd/running/debian/faq/debugging_inside_glibc.mdwn19
-rw-r--r--hurd/running/debian/faq/debugging_translators.mdwn15
-rw-r--r--hurd/running/debian/faq/dev_random.mdwn17
-rw-r--r--hurd/running/debian/faq/df.mdwn13
-rw-r--r--hurd/running/debian/faq/eata.mdwn13
-rw-r--r--hurd/running/debian/faq/free_memory.mdwn11
-rw-r--r--hurd/running/debian/faq/hurd_console.mdwn12
-rw-r--r--hurd/running/debian/faq/kernel_logs.mdwn13
-rw-r--r--hurd/running/debian/faq/other_repositories.mdwn16
-rw-r--r--hurd/running/debian/faq/ps_hangs.mdwn12
-rw-r--r--hurd/running/debian/faq/reporting_bugs.mdwn19
-rw-r--r--hurd/running/debian/faq/sata_disk_drives.mdwn11
-rw-r--r--hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn14
-rw-r--r--hurd/running/debian/faq/xserver-common.mdwn12
-rw-r--r--hurd/running/debian/package_troubleshooting.mdwn48
-rw-r--r--hurd/running/debian/patch_submission.mdwn55
-rw-r--r--hurd/running/debian/porting.mdwn54
-rw-r--r--hurd/running/debian/status.mdwn4
-rw-r--r--hurd/running/distrib.mdwn148
-rw-r--r--hurd/running/faq.mdwn20
-rw-r--r--hurd/running/faq/native-install_doesnt_finish.mdwn24
-rw-r--r--hurd/running/gentoo.mdwn34
-rw-r--r--hurd/running/gnu.mdwn82
-rw-r--r--hurd/running/gnu/create_an_image.mdwn97
-rw-r--r--hurd/running/gnu/discussion.mdwn19
-rw-r--r--hurd/running/gnu/gnu.mdwn27
-rw-r--r--hurd/running/gnu/history.mdwn7
-rw-r--r--hurd/running/gnu/manifesto.mdwn5
-rw-r--r--hurd/running/gnu/names.mdwn8
-rw-r--r--hurd/running/gnu/richardstallman.mdwn6
-rw-r--r--hurd/running/gnu/setup.mdwn84
-rw-r--r--hurd/running/gnu/softwareprojects.mdwn8
-rw-r--r--hurd/running/gnu/todo.mdwn6
-rw-r--r--hurd/running/gnu/universal_package_manager.mdwn156
-rw-r--r--hurd/running/live_cd.mdwn25
-rw-r--r--hurd/running/qemu.mdwn201
-rw-r--r--hurd/running/qemu/babhurd_image.mdwn67
-rw-r--r--hurd/running/qemu/image_for_l4.mdwn376
-rw-r--r--hurd/running/qemu/microsoft_windows.mdwn52
-rw-r--r--hurd/running/qemu/networking.mdwn43
-rw-r--r--hurd/running/qemu/networking/sharing_files.mdwn38
-rw-r--r--hurd/running/vmware.mdwn56
-rw-r--r--hurd/running/vmware/discussion.mdwn18
-rw-r--r--hurd/settrans.mdwn37
-rw-r--r--hurd/status.mdwn108
-rw-r--r--hurd/status/hurd-fvwm-screenshot-2009-11-12.pngbin0 -> 195807 bytes
-rw-r--r--hurd/subhurd.mdwn121
-rw-r--r--hurd/subhurd/running_a_subhurd.mdwn42
-rw-r--r--hurd/syncfs.mdwn15
-rw-r--r--hurd/toolchain.mdwn18
-rw-r--r--hurd/translator.mdwn143
-rw-r--r--hurd/translator/auth.mdwn13
-rw-r--r--hurd/translator/cvsfs.mdwn52
-rw-r--r--hurd/translator/devfs.mdwn20
-rw-r--r--hurd/translator/emailfs.mdwn287
-rw-r--r--hurd/translator/examples.mdwn93
-rw-r--r--hurd/translator/exec.mdwn12
-rw-r--r--hurd/translator/ext2fs.mdwn37
-rw-r--r--hurd/translator/ext2fs/large_stores.txt (renamed from ext2fs_20040219.txt)0
-rw-r--r--hurd/translator/ext2fs/ogi-fosdem2005.mgp (renamed from ext2fs-fosdem2005.mgp)0
-rw-r--r--hurd/translator/fatfs.mdwn13
-rw-r--r--hurd/translator/gopherfs.mdwn16
-rw-r--r--hurd/translator/hostmux.mdwn31
-rw-r--r--hurd/translator/magic.mdwn21
-rw-r--r--hurd/translator/mboxfs.mdwn11
-rw-r--r--hurd/translator/netio.mdwn17
-rw-r--r--hurd/translator/nsmux.mdwn121
-rw-r--r--hurd/translator/pfinet.mdwn35
-rw-r--r--hurd/translator/pfinet/implementation.mdwn13
-rw-r--r--hurd/translator/pfinet/ipv6.mdwn57
-rw-r--r--hurd/translator/pflocal.mdwn13
-rw-r--r--hurd/translator/procfs.mdwn19
-rw-r--r--hurd/translator/procfs/htop.mdwn25
-rw-r--r--hurd/translator/procfs/killall.mdwn23
-rw-r--r--hurd/translator/procfs/procps.mdwn23
-rw-r--r--hurd/translator/procfs/top.mdwn18
-rw-r--r--hurd/translator/random.mdwn70
-rw-r--r--hurd/translator/random/mbox.bz2bin0 -> 106158 bytes
-rw-r--r--hurd/translator/short-circuiting.mdwn88
-rw-r--r--hurd/translator/storeio.mdwn30
-rw-r--r--hurd/translator/stowfs.mdwn11
-rw-r--r--hurd/translator/tarfs.mdwn25
-rw-r--r--hurd/translator/tmpfs.mdwn29
-rw-r--r--hurd/translator/tmpfs/notes_bing.mdwn101
-rw-r--r--hurd/translator/tmpfs/notes_various.mdwn218
-rw-r--r--hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn73
-rw-r--r--hurd/translator/unionfs.mdwn155
-rw-r--r--hurd/translator/unionmount.mdwn11
-rw-r--r--hurd/translator/wishlist_1.mdwn129
-rw-r--r--hurd/translator/wishlist_2.mdwn191
-rw-r--r--hurd/translator/writing/example.mdwn303
-rw-r--r--hurd/translator/xmlfs.mdwn11
-rw-r--r--hurd/virtual_file_system.mdwn27
-rw-r--r--hurd/virtualization.mdwn13
-rw-r--r--hurd/what_is_the_gnu_hurd.mdwn42
-rw-r--r--hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn54
-rw-r--r--hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn50
-rw-r--r--ibac.mdwn18
-rw-r--r--idl.mdwn15
-rw-r--r--ikiwiki.setup358
-rw-r--r--index.mdwn135
-rw-r--r--index/discussion.mdwn69
-rw-r--r--install.mdwn13
-rw-r--r--ipc.mdwn34
-rw-r--r--irc.mdwn85
-rw-r--r--isolation.mdwn20
-rw-r--r--license.mdwn6
-rw-r--r--liedtke.mdwn11
-rw-r--r--local.css287
-rw-r--r--logo.mdwn25
-rw-r--r--logo/boxes-redrawn.pngbin0 -> 1764 bytes
-rw-r--r--logo/boxes-redrawn.svg50
-rw-r--r--mailing_lists.mdwn119
-rw-r--r--mailing_lists/bug-hurd.mdwn11
-rw-r--r--mailing_lists/debian-hurd.mdwn11
-rw-r--r--mailing_lists/gnu-system-discuss.mdwn11
-rw-r--r--mailing_lists/help-hurd.mdwn11
-rw-r--r--mailing_lists/hurd-devel-readers.mdwn11
-rw-r--r--mailing_lists/hurd-devel.mdwn11
-rw-r--r--mailing_lists/l4-hurd.mdwn11
-rw-r--r--mailing_lists/unmoderated.mdwn20
-rw-r--r--mailing_lists/web-hurd.mdwn11
-rw-r--r--mechanism.mdwn32
-rw-r--r--media_appearances.mdwn48
-rw-r--r--microkernel.mdwn35
-rw-r--r--microkernel/faq.mdwn21
-rw-r--r--microkernel/faq/multiserver_microkernel.mdwn26
-rw-r--r--microkernel/for_beginners.mdwn32
-rw-r--r--microkernel/for_beginners/discussion.mdwn20
-rw-r--r--microkernel/fud.mdwn22
-rw-r--r--microkernel/mach.mdwn16
-rw-r--r--microkernel/mach/concepts.mdwn6
-rw-r--r--microkernel/mach/discussion.mdwn23
-rw-r--r--microkernel/mach/documentation.mdwn41
-rw-r--r--microkernel/mach/external_pager_mechanism.mdwn182
-rw-r--r--microkernel/mach/gnumach.mdwn80
-rw-r--r--microkernel/mach/gnumach/boot_trace.mdwn222
-rw-r--r--microkernel/mach/gnumach/building.mdwn114
-rw-r--r--microkernel/mach/gnumach/building/example.mdwn54
-rw-r--r--microkernel/mach/gnumach/debugging.mdwn69
-rw-r--r--microkernel/mach/gnumach/hardware_compatibility_list.mdwn111
-rw-r--r--microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn4
-rw-r--r--microkernel/mach/gnumach/ports.mdwn22
-rw-r--r--microkernel/mach/gnumach/ports/xen.mdwn93
-rw-r--r--microkernel/mach/gnumach/ports/xen/internals.mdwn14
-rw-r--r--microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn105
-rw-r--r--microkernel/mach/gnumach/projects.mdwn129
-rw-r--r--microkernel/mach/gnumach/projects/clean_up_the_code.mdwn121
-rw-r--r--microkernel/mach/gnumach/projects/gdb_stubs.mdwn13
-rw-r--r--microkernel/mach/gnumach/reference_manual.mdwn26
-rw-r--r--microkernel/mach/history.mdwn60
-rw-r--r--microkernel/mach/ipc.mdwn22
-rw-r--r--microkernel/mach/ipc/sequence_numbering.mdwn19
-rw-r--r--microkernel/mach/mig.mdwn22
-rw-r--r--microkernel/mach/mig/documentation.mdwn84
-rw-r--r--microkernel/mach/mig/documentation/dealloc.mdwn15
-rw-r--r--microkernel/mach/mig/documentation/servercopy.mdwn23
-rw-r--r--microkernel/mach/mig/gnu_mig.mdwn24
-rw-r--r--microkernel/mach/mig/gnu_mig/building.mdwn73
-rw-r--r--microkernel/mach/port.mdwn41
-rw-r--r--microkernel/mach/rpc.mdwn15
-rw-r--r--microkernel/research.mdwn15
-rw-r--r--microkernel/viengoos.mdwn34
-rw-r--r--microkernel/viengoos/building.mdwn100
-rw-r--r--microkernel/viengoos/documentation.mdwn56
-rw-r--r--microkernel/viengoos/documentation/reference-guide.pdfbin0 -> 269473 bytes
-rw-r--r--microkernel/viengoos/grub2-config.diff47
-rw-r--r--microkernel/viengoos/hardware.mdwn50
-rw-r--r--microkernel/viengoos/projects.mdwn17
-rw-r--r--microkernel/viengoos/projects/address_space_management.mdwn40
-rw-r--r--microkernel/viengoos/projects/capability-aware_compiler.mdwn16
-rw-r--r--microkernel/viengoos/projects/new_hash_function.mdwn22
-rw-r--r--microkernel/viengoos/serial_port.mdwn15
-rw-r--r--naming_context.mdwn24
-rw-r--r--news.mdwn17
-rw-r--r--news/2002-01-13.mdwn15
-rw-r--r--news/2002-01-19.mdwn25
-rw-r--r--news/2002-02-18.mdwn14
-rw-r--r--news/2002-03-03.mdwn25
-rw-r--r--news/2002-03-08.mdwn28
-rw-r--r--news/2002-03-23.mdwn13
-rw-r--r--news/2002-05-05.mdwn30
-rw-r--r--news/2002-05-18.mdwn17
-rw-r--r--news/2002-05-24.mdwn18
-rw-r--r--news/2002-05-28.mdwn19
-rw-r--r--news/2002-06-22.mdwn19
-rw-r--r--news/2002-08-16.mdwn29
-rw-r--r--news/2002-10-03.mdwn15
-rw-r--r--news/2002-10-03_2.mdwn15
-rw-r--r--news/2002-10-19.mdwn36
-rw-r--r--news/2002-11-18.mdwn18
-rw-r--r--news/2003-01-18.mdwn17
-rw-r--r--news/2003-02-14.mdwn13
-rw-r--r--news/2003-07-02.mdwn16
-rw-r--r--news/2003-07-16.mdwn16
-rw-r--r--news/2003-08-21.mdwn13
-rw-r--r--news/2005-01-28.mdwn13
-rw-r--r--news/2005-09-20.mdwn17
-rw-r--r--news/2006-04-27.mdwn72
-rw-r--r--news/2007-01-07.mdwn14
-rw-r--r--news/2007-01-14.mdwn49
-rw-r--r--news/2007-03-14.mdwn54
-rw-r--r--news/2007-10-01.mdwn17
-rw-r--r--news/2007-10-12.mdwn12
-rw-r--r--news/2008-02-11.mdwn16
-rw-r--r--news/2008-03-19.mdwn20
-rw-r--r--news/2008-09-11.mdwn13
-rw-r--r--news/2008-11-14.mdwn14
-rw-r--r--news/2008-12-12.mdwn39
-rw-r--r--news/2009-03-28.mdwn13
-rw-r--r--news/2009-04-20.mdwn12
-rw-r--r--news/2009-06-30.mdwn29
-rw-r--r--news/2009-07-31.mdwn44
-rw-r--r--news/2009-09-30.mdwn32
-rw-r--r--news/2009-10-31.mdwn49
-rw-r--r--news/2009-11-30.mdwn51
-rw-r--r--news/2009-12-31.mdwn85
-rw-r--r--news/2010-01-31.mdwn58
-rw-r--r--news/2010-02-28.mdwn72
-rw-r--r--news/2010-03-31.mdwn48
-rw-r--r--news/2010-04-30.mdwn91
-rw-r--r--news/2010-05-31.mdwn66
-rw-r--r--news/2010-06-30.mdwn77
-rw-r--r--news/2010-07-31.mdwn59
-rw-r--r--open_issues.mdwn26
-rw-r--r--open_issues/adduser.mdwn36
-rw-r--r--open_issues/automatic_backtraces_when_assertions_hit.mdwn18
-rw-r--r--open_issues/automatically_checking_port_deallocation.mdwn22
-rw-r--r--open_issues/bash.mdwn47
-rw-r--r--open_issues/bash_busy-loop.mdwn33
-rw-r--r--open_issues/bash_interrupted_system_call.mdwn19
-rw-r--r--open_issues/bash_vs_screen_vs_sigint.mdwn12
-rw-r--r--open_issues/blkrrpart_ioctl.mdwn32
-rw-r--r--open_issues/bpf.mdwn72
-rw-r--r--open_issues/chroot_difference_from_linux.mdwn17
-rw-r--r--open_issues/crash_server.mdwn189
-rw-r--r--open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn17
-rw-r--r--open_issues/cvs_tasks_file.mdwn18
-rw-r--r--open_issues/cvs_todo_file.mdwn18
-rw-r--r--open_issues/dde.mdwn11
-rw-r--r--open_issues/debootstrap.mdwn24
-rw-r--r--open_issues/device_drivers_and_io_systems.mdwn94
-rw-r--r--open_issues/dir-lookup_authority.mdwn68
-rw-r--r--open_issues/duplicate_inclusion_guards.mdwn16
-rw-r--r--open_issues/e2fsck_i_file_acl_hi.mdwn35
-rw-r--r--open_issues/elinks.mdwn28
-rw-r--r--open_issues/emacs.mdwn43
-rw-r--r--open_issues/error_message_disk_full.mdwn14
-rw-r--r--open_issues/etc_fstab.mdwn18
-rw-r--r--open_issues/exec.mdwn19
-rw-r--r--open_issues/extern_inline.mdwn74
-rw-r--r--open_issues/fdisk.mdwn19
-rw-r--r--open_issues/fsync.mdwn22
-rw-r--r--open_issues/gcc.mdwn51
-rw-r--r--open_issues/gcc/boehm_gc.mdwn29
-rw-r--r--open_issues/gcc/libmudflap.mdwn74
-rw-r--r--open_issues/gcc_testsuite.mdwn211
-rw-r--r--open_issues/gdb_config.mdwn17
-rw-r--r--open_issues/gdb_gcore.mdwn23
-rw-r--r--open_issues/gdb_head.mdwn44
-rw-r--r--open_issues/gdb_non-stop_mode.mdwn25
-rw-r--r--open_issues/gdb_pending_execs.mdwn27
-rw-r--r--open_issues/gdb_qemu_debugging_gnumach.mdwn19
-rw-r--r--open_issues/gdb_signal_thread_bt.mdwn31
-rw-r--r--open_issues/gdb_testsuite.mdwn2093
-rw-r--r--open_issues/gdb_thread_ids.mdwn21
-rw-r--r--open_issues/git-core-2.mdwn55
-rw-r--r--open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn19
-rw-r--r--open_issues/glibc_ioctls.mdwn72
-rw-r--r--open_issues/glibc_libpthread_robust_mutexes.mdwn54
-rw-r--r--open_issues/glibc_ptrace.mdwn47
-rw-r--r--open_issues/glibc_testsuite.mdwn105
-rw-r--r--open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn28
-rw-r--r--open_issues/glusterfs.mdwn15
-rw-r--r--open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn142
-rw-r--r--open_issues/gnumach_tlb_flushing.mdwn21
-rw-r--r--open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn21
-rw-r--r--open_issues/hurdextras.mdwn100
-rw-r--r--open_issues/kvm.mdwn25
-rw-r--r--open_issues/libasyncns.mdwn19
-rw-r--r--open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn20
-rw-r--r--open_issues/libfshelp_in_hurdlibs.mdwn17
-rw-r--r--open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn17
-rw-r--r--open_issues/libmachuser_libhurduser_rpc_stubs.mdwn26
-rw-r--r--open_issues/libpthread.mdwn44
-rw-r--r--open_issues/libpthread_weak_symbols.mdwn50
-rw-r--r--open_issues/libstore_parted.mdwn11
-rw-r--r--open_issues/lisp_cross-compile.mdwn11
-rw-r--r--open_issues/lsof.mdwn13
-rw-r--r--open_issues/ltrace.mdwn19
-rw-r--r--open_issues/m4_vs_stack.mdwn21
-rw-r--r--open_issues/mach-defpager_vs_defpager.mdwn25
-rw-r--r--open_issues/magic_translator_machtype.mdwn24
-rw-r--r--open_issues/mig_error_reply.mdwn68
-rw-r--r--open_issues/neals_hurd-misc_papers.mdwn16
-rw-r--r--open_issues/nice_changes_priority_of_parent_shell.mdwn15
-rw-r--r--open_issues/nice_vs_mach_thread_priorities.mdwn197
-rw-r--r--open_issues/nptl.mdwn37
-rw-r--r--open_issues/ogi.mdwn14
-rw-r--r--open_issues/open_posix_test_suite.mdwn2715
-rw-r--r--open_issues/packaging_libpthread.mdwn47
-rw-r--r--open_issues/perlmagick.mdwn64
-rw-r--r--open_issues/pflocal_x_slowness.mdwn16
-rw-r--r--open_issues/phython.mdwn13
-rw-r--r--open_issues/populate_hurd_git_with_submodules_etc.mdwn16
-rw-r--r--open_issues/pth.mdwn28
-rw-r--r--open_issues/resource_management_problems.mdwn29
-rw-r--r--open_issues/resource_management_problems/configure_max_command_line_length.mdwn17
-rw-r--r--open_issues/resource_management_problems/zalloc_panics.mdwn56
-rw-r--r--open_issues/runit.mdwn19
-rw-r--r--open_issues/screen.mdwn116
-rw-r--r--open_issues/secure_file_descriptor_handling.mdwn14
-rw-r--r--open_issues/select.mdwn23
-rw-r--r--open_issues/sendmsg_scm_creds.mdwn91
-rw-r--r--open_issues/socat.mdwn15
-rw-r--r--open_issues/some_todo_list.mdwn121
-rw-r--r--open_issues/subhurd_error_messages.mdwn15
-rw-r--r--open_issues/sudo_date_crash.mdwn16
-rw-r--r--open_issues/sync_but_still_unclean_filesystem.mdwn18
-rw-r--r--open_issues/syslog.mdwn7
-rw-r--r--open_issues/system_crash_nmap.mdwn15
-rw-r--r--open_issues/system_crash_pflocal_fifo.mdwn41
-rw-r--r--open_issues/term_blocking.mdwn100
-rw-r--r--open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn41
-rw-r--r--open_issues/threads_issues.mdwn15
-rw-r--r--open_issues/time.mdwn55
-rw-r--r--open_issues/tinyproxy.mdwn18
-rw-r--r--open_issues/translate_fd_or_port_to_file_name.mdwn54
-rw-r--r--open_issues/translator_environment_variables.mdwn31
-rw-r--r--open_issues/translator_stdout_stderr.mdwn15
-rw-r--r--open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn148
-rw-r--r--open_issues/unit_testing.mdwn43
-rw-r--r--open_issues/user-space_device_drivers.mdwn160
-rw-r--r--open_issues/viengoos_make_clean.mdwn22
-rw-r--r--open_issues/viengoos_tls_gcc.mdwn17
-rw-r--r--open_issues/wrong_reply_message_id.mdwn23
-rw-r--r--open_issues/xen_crash_copy-size_le_page_size.mdwn104
-rw-r--r--open_issues/xen_domu_with_ro_hd.mdwn35
-rw-r--r--persistency.mdwn18
-rw-r--r--policy.mdwn12
-rw-r--r--principal.mdwn17
-rw-r--r--public_hurd_boxen.mdwn80
-rw-r--r--public_hurd_boxen/bddebian.mdwn21
-rw-r--r--public_hurd_boxen/installation.mdwn102
-rw-r--r--public_hurd_boxen/installation/flubber.mdwn25
-rw-r--r--public_hurd_boxen/installation/snubber.mdwn61
-rw-r--r--public_hurd_boxen/xen_handling.mdwn49
-rw-r--r--public_hurd_boxen/zenhost.mdwn18
-rwxr-xr-xpurify_html15
-rw-r--r--qemu.mdwn36
-rw-r--r--recent_changes.mdwn14
-rwxr-xr-xrender_locally88
-rw-r--r--rpc.mdwn11
-rw-r--r--rules.mdwn12
-rw-r--r--rules/savannah_group.mdwn39
-rw-r--r--rules/source_repositories.mdwn12
-rw-r--r--sandbox.mdwn42
-rw-r--r--sandbox/subsandbox.mdwn1
-rw-r--r--sandbox/texinfo.texi61
-rw-r--r--security.mdwn60
-rwxr-xr-xset_mtimes56
-rw-r--r--sfi.mdwn18
-rw-r--r--shortcuts.mdwn85
-rw-r--r--sidebar.mdwn39
-rw-r--r--source_repositories.mdwn204
-rw-r--r--source_repositories/glibc.mdwn93
-rw-r--r--source_repositories/incubator.mdwn12
-rw-r--r--tag.mdwn40
-rw-r--r--tag/fixed_in_debian.mdwn15
-rw-r--r--tag/open_issue_documentation.mdwn15
-rw-r--r--tag/open_issue_gcc.mdwn15
-rw-r--r--tag/open_issue_gdb.mdwn15
-rw-r--r--tag/open_issue_glibc.mdwn15
-rw-r--r--tag/open_issue_gnumach.mdwn15
-rw-r--r--tag/open_issue_hurd.mdwn15
-rw-r--r--tag/open_issue_libpthread.mdwn15
-rw-r--r--tag/open_issue_mig.mdwn15
-rw-r--r--tag/open_issue_porting.mdwn15
-rw-r--r--tag/open_issue_viengoos.mdwn15
-rw-r--r--tag/open_issue_xen.mdwn15
-rw-r--r--tag/stable_URL.mdwn15
-rw-r--r--tcb.mdwn17
-rw-r--r--topgit.mdwn23
-rw-r--r--trackers.mdwn32
-rw-r--r--trust.mdwn25
-rw-r--r--unix.mdwn17
-rw-r--r--unsorted/AwarenessOfWhatHappens.mdwn7
-rw-r--r--unsorted/BochsEmulator.mdwn20
-rw-r--r--unsorted/BochsFAQ.mdwn83
-rw-r--r--unsorted/BuildingHurdLiveCD.mdwn70
-rw-r--r--unsorted/BuildingOskitMach.mdwn183
-rw-r--r--unsorted/BuildingOskitMach/modules-light.x86.pc236
-rw-r--r--unsorted/BuildingOskitMach/modules.x86.pc236
-rw-r--r--unsorted/CrossHurd.mdwn99
-rw-r--r--unsorted/DebianX.mdwn116
-rw-r--r--unsorted/DebianXorg.mdwn193
-rw-r--r--unsorted/DhcpClient.mdwn42
-rw-r--r--unsorted/DistributedServers.mdwn29
-rw-r--r--unsorted/ExtTwoSize.mdwn27
-rw-r--r--unsorted/FlashHurd.mdwn60
-rw-r--r--unsorted/FlexibilityForUser.mdwn7
-rw-r--r--unsorted/FunnyHurd.mdwn39
-rw-r--r--unsorted/FunnyHurd/CrystalAwards.jpgbin0 -> 13055 bytes
-rw-r--r--unsorted/FunnyHurd/HurdCarDeal.jpgbin0 -> 16144 bytes
-rw-r--r--unsorted/FunnyHurd/HurdExchange.gifbin0 -> 3078 bytes
-rw-r--r--unsorted/FunnyHurd/HurdLodge.jpgbin0 -> 38639 bytes
-rw-r--r--unsorted/FunnyHurd/HurdMagician.jpgbin0 -> 10703 bytes
-rw-r--r--unsorted/FunnyHurd/hurd-windows.gifbin0 -> 14799 bytes
-rw-r--r--unsorted/GNUstep.mdwn64
-rw-r--r--unsorted/GrantBowHurdPage.mdwn36
-rw-r--r--unsorted/GrantBowHurdPage/diagram.pngbin0 -> 2139 bytes
-rw-r--r--unsorted/GrantBowHurdPage/diagram.xcfbin0 -> 5492 bytes
-rw-r--r--unsorted/HurdDevelopers.mdwn120
-rw-r--r--unsorted/HurdOnL4.mdwn173
-rw-r--r--unsorted/HurdOnL4/menu.lst55
-rw-r--r--unsorted/InstallNotes.mdwn291
-rw-r--r--unsorted/InstallTips.mdwn111
-rw-r--r--unsorted/InteractiveTranslators.mdwn31
-rw-r--r--unsorted/JoachimNilssonHurdPage.mdwn235
-rw-r--r--unsorted/JoachimNilssonHurdPage/patch_kit.jpgbin0 -> 9469 bytes
-rw-r--r--unsorted/JoachimNilssonOldStuff.mdwn32
-rw-r--r--unsorted/KernelCousinDebianHurd.mdwn3
-rw-r--r--unsorted/KnownHurdLimits.mdwn20
-rw-r--r--unsorted/MakeImage.mdwn60
-rw-r--r--unsorted/OskitMach.mdwn64
-rw-r--r--unsorted/OskitMachPatches.mdwn10
-rw-r--r--unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gzbin0 -> 576 bytes
-rw-r--r--unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gzbin0 -> 1799 bytes
-rw-r--r--unsorted/OskitMachStatusList.mdwn15
-rw-r--r--unsorted/OskitMachTest.mdwn24
-rw-r--r--unsorted/OskitMachTest/gnumach2-configure-patch1.diff79
-rw-r--r--unsorted/OskitPatches.mdwn63
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gzbin0 -> 301 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gzbin0 -> 405 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gzbin0 -> 282 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gzbin0 -> 367 bytes
-rw-r--r--unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gzbin0 -> 283 bytes
-rw-r--r--unsorted/PortToL4.mdwn42
-rw-r--r--unsorted/PosixSemaphores.mdwn13
-rw-r--r--unsorted/PosixThreads.mdwn21
-rw-r--r--unsorted/RemoteDebugOskitMach.mdwn191
-rw-r--r--unsorted/RequirementsForLiveCD.mdwn54
-rw-r--r--unsorted/SavannahProjects.mdwn14
-rw-r--r--unsorted/SecurityForUser.mdwn7
-rw-r--r--unsorted/SeenHurd.mdwn64
-rw-r--r--unsorted/SeenHurd/lmf10_1999.jpgbin0 -> 63327 bytes
-rw-r--r--unsorted/SerialConsole.mdwn28
-rw-r--r--unsorted/Shopping.mdwn13
-rw-r--r--unsorted/TestSuites.mdwn12
-rw-r--r--unsorted/TestWebMenu/lmf09_1999.jpgbin0 -> 63327 bytes
-rw-r--r--unsorted/VmWare.mdwn22
-rw-r--r--unsorted/WebHome/hurd_sm_mf.pngbin0 -> 1434 bytes
-rw-r--r--unsorted/XattrHurd.mdwn5
-rw-r--r--unsorted/Xfree86.mdwn97
-rw-r--r--unsorted/byte-letter.txt25
-rw-r--r--unsorted/changelogs.html107
-rw-r--r--unsorted/hurd-fs-org219
-rw-r--r--unsorted/hurd-migr141
-rw-r--r--user.mdwn21
-rw-r--r--user/arnuld.mdwn34
-rw-r--r--user/flaviocruz.mdwn124
-rw-r--r--user/jkoenig.mdwn358
-rw-r--r--user/kam.mdwn152
-rw-r--r--user/madhusudancs.mdwn395
-rw-r--r--user/pochu.mdwn136
-rw-r--r--user/samuelthibault.mdwn3
-rw-r--r--user/scolobb.mdwn364
-rw-r--r--user/stesie.mdwn4
-rw-r--r--user/tschwinge.mdwn17
-rw-r--r--user/vincentvikram.mdwn14
-rw-r--r--user/zhengda.mdwn132
-rw-r--r--user/zhengda/howto.mdwn90
-rw-r--r--virtualization.mdwn18
854 files changed, 48036 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..a7516b7f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*~
+.ikiwiki
diff --git a/.library/IkiWiki/Plugin/copyright.pm b/.library/IkiWiki/Plugin/copyright.pm
new file mode 100644
index 00000000..16acaccd
--- /dev/null
+++ b/.library/IkiWiki/Plugin/copyright.pm
@@ -0,0 +1,60 @@
+# A plugin for ikiwiki to implement adding a footer with copyright information
+# based on a default value taken out of a file.
+
+# Copyright © 2007, 2008 Thomas Schwinge <tschwinge@gnu.org>
+#
+# 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.
+
+# Unless overridden with the `meta' plugin, a footer with copyright information
+# will be added to every page using a source file `copyright' (e.g.,
+# `copyright.mdwn') (using the same ``locating rules'' as for the sidebar
+# plugin).
+#
+# The state which page's copyright text was gathered from which source is not
+# tracked, so you'll need a full wiki-rebuild if the `copyright' file is
+# changed.
+
+package IkiWiki::Plugin::copyright;
+
+use warnings;
+use strict;
+use IkiWiki 2.00;
+
+my %copyright;
+
+sub import
+{
+ hook (type => "scan", id => "copyright", call => \&scan);
+}
+
+sub scan (@)
+{
+ my %params = @_;
+ my $page = $params{page};
+
+ return if defined $pagestate{$page}{meta}{copyright};
+
+ my $content;
+ my $copyright_page = bestlink ($page, "copyright") || return;
+ my $copyright_file = $pagesources{$copyright_page} || return;
+
+ # Only an optimization to avoid reading the same file again and again.
+ $copyright{$copyright_file} = readfile (srcfile ($copyright_file))
+ unless defined $copyright{$copyright_file};
+
+ $pagestate{$page}{meta}{copyright} = $copyright{$copyright_file};
+}
+
+1
diff --git a/.library/IkiWiki/Plugin/license.pm b/.library/IkiWiki/Plugin/license.pm
new file mode 100644
index 00000000..651c039a
--- /dev/null
+++ b/.library/IkiWiki/Plugin/license.pm
@@ -0,0 +1,59 @@
+# A plugin for ikiwiki to implement adding a footer with licensing information
+# based on a default value taken out of a file.
+
+# Copyright © 2007, 2008 Thomas Schwinge <tschwinge@gnu.org>
+#
+# 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.
+
+# Unless overridden with the `meta' plugin, a footer with licensing information
+# will be added to every page using a source file `license' (e.g.,
+# `license.mdwn') (using the same ``locating rules'' as for the sidebar
+# plugin).
+#
+# The state which page's license text was gathered from which source is not
+# tracked, so you'll need a full wiki-rebuild if the `license' file is changed.
+
+package IkiWiki::Plugin::license;
+
+use warnings;
+use strict;
+use IkiWiki 2.00;
+
+my %license;
+
+sub import
+{
+ hook (type => "scan", id => "license", call => \&scan);
+}
+
+sub scan (@)
+{
+ my %params = @_;
+ my $page = $params{page};
+
+ return if defined $pagestate{$page}{meta}{license};
+
+ my $content;
+ my $license_page = bestlink ($page, "license") || return;
+ my $license_file = $pagesources{$license_page} || return;
+
+ # Only an optimization to avoid reading the same file again and again.
+ $license{$license_file} = readfile (srcfile ($license_file))
+ unless defined $license{$license_file};
+
+ $pagestate{$page}{meta}{license} = $license{$license_file};
+}
+
+1
diff --git a/.library/IkiWiki/Plugin/reset_mtimes.pm b/.library/IkiWiki/Plugin/reset_mtimes.pm
new file mode 100644
index 00000000..a168652b
--- /dev/null
+++ b/.library/IkiWiki/Plugin/reset_mtimes.pm
@@ -0,0 +1,84 @@
+# Copyright © 2010 Thomas Schwinge <thomas@schwinge.name>
+
+# 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.
+
+package IkiWiki::Plugin::reset_mtimes;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+# This plugin resets pages' / files' mtimes according to the RCS information
+# when using --refresh mode.
+#
+# Note that the files' mtimes are *always* set, even if the file has
+# un-committed changes.
+#
+# <http://ikiwiki.info/bugs/pagemtime_in_refresh_mode/>
+
+sub import
+{
+ hook (type => "needsbuild",
+ id => "reset_mtimes",
+ call => \&needsbuild);
+}
+
+sub needsbuild (@)
+{
+ # Only proceed if --gettime is in effect, as we're clearly not intersted in
+ # this functionality otherwise.
+ return unless $config{gettime};
+
+ my $files = shift;
+ foreach my $file (@$files)
+ {
+ # [TODO. Perhaps not necessary. Can this hook ever be called for
+ # removed pages -- that need to be ``rebuilt'' in the sense that
+ # they're to be removed?] Don't bother for pages that don't exist
+ # anymore.
+ next unless -e "$config{srcdir}/$file";
+
+ my $page = pagename ($file);
+ debug ("needsbuild: <$file> <$page>");
+
+ # Only ever update -- otherwise ikiwiki shall do its own thing.
+ if (defined $IkiWiki::pagemtime{$page})
+ {
+ debug ("pagemtime: " . $IkiWiki::pagemtime{$page});
+
+ my $mtime = 0;
+ eval
+ {
+ $mtime = IkiWiki::rcs_getmtime ($file);
+ };
+ if ($@)
+ {
+ print STDERR $@;
+ }
+ elsif ($mtime > 0)
+ {
+ $IkiWiki::pagemtime{$page} = $mtime;
+
+ # We have to set the actual file's mtime too, as otherwise
+ # ikiwiki will update it again and again.
+ utime($mtime, $mtime, "$config{srcdir}/$file");
+ }
+
+ debug ("pagemtime: " . $IkiWiki::pagemtime{$page});
+ }
+ }
+}
+
+1
diff --git a/.library/IkiWiki/Plugin/texinfo.pm b/.library/IkiWiki/Plugin/texinfo.pm
new file mode 100644
index 00000000..8c651160
--- /dev/null
+++ b/.library/IkiWiki/Plugin/texinfo.pm
@@ -0,0 +1,226 @@
+# A GNU Texinfo rendering plugin.
+
+# Copyright © 2007 Thomas Schwinge <tschwinge@gnu.org>
+#
+# 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.
+
+# http://ikiwiki.info/plugins/contrib/texinfo/
+
+package IkiWiki::Plugin::texinfo;
+
+use warnings;
+use strict;
+use IkiWiki 2.00;
+
+# From `Ikiwiki/Plugins/teximg.pm'.
+sub create_tmp_dir ($)
+{
+ # Create a temp directory, it will be removed when ikiwiki exits.
+ my $base = shift;
+
+ my $template = $base . ".XXXXXXXXXX";
+ use File::Temp qw (tempdir);
+ my $tmpdir = tempdir ($template, TMPDIR => 1, CLEANUP => 1);
+ return $tmpdir;
+}
+
+sub import
+{
+ hook (type => "filter", id => "texi", call => \&filter);
+ hook (type => "htmlize", id => "texi", call => \&htmlize);
+ hook (type => "pagetemplate", id => "texi", call => \&pagetemplate);
+}
+
+my %copyright;
+my %license;
+
+sub filter (@)
+{
+ my %params = @_;
+ my $page = $params{page};
+
+# TODO. For ``$page eq 'shortcuts''' this fails. Is this expected?
+ goto out unless defined $pagesources{$page};
+
+ # Only care for `.texi' files.
+ goto out unless pagetype ($pagesources{$page}) eq 'texi';
+
+ # No need to parse twice.
+ goto out if exists $copyright{$page};
+
+# TODO. Check the `meta' plugin about when to do this at all.
+ $copyright{$page} = undef;
+ $license{$page} = undef;
+ # We assume that the copyright and licensing information is to be taken
+ # from the main `.texi' file.
+ @_ = split /\n/, $params{content};
+ # Do some parsing to cut out the interesting bits, if there are any.
+ while (defined ($_ = shift @_))
+ {
+ # Did we find a start tag?
+ last if /^\@copying$/;
+ }
+ # Already at the end of the page?
+ goto out unless defined $_;
+ while (defined ($_ = shift @_))
+ {
+ # Already at the end of the copying section? (Shouldn't happen.)
+ goto out if /^\@end\ copying/;
+ # Found the ``^Copyright'' line?
+ last if /^Copyright/;
+ }
+ # Already at the end of the page? (Shouldn't happen.)
+ goto out unless defined $_;
+ # Copyright text will follow.
+ $copyright{$page} = $_;
+ while (defined ($_ = shift @_))
+ {
+ # Found the separator of copyright and licensind information?
+ last if /^$/;
+ # Already at the end of the copying section?
+ goto finish if /^\@end\ copying/;
+ $copyright{$page} .= ' ' . $_;
+ }
+ # Already at the end of the page? (Shouldn't happen.)
+ goto finish unless defined $_;
+ # Licensing text will follow.
+ while (defined ($_ = shift @_))
+ {
+ # Already at the end of the copying section?
+ last if /^\@end\ copying/;
+ $license{$page} .= ' ' . $_;
+ }
+
+ finish:
+ # ``Render'' by hand some stuff that is commonly found in this section.
+ if (defined $copyright{$page})
+ {
+ $copyright{$page} =~ s/\@copyright{}/©/g;
+ }
+ if (defined $license{$page})
+ {
+ $license{$page} =~ s/\@quotation//g;
+ $license{$page} =~ s/\@end\ quotation//g;
+ $license{$page} =~ s/\@ignore/<!--/g;
+ $license{$page} =~ s/\@end\ ignore/-->/g;
+ }
+
+ out:
+ return $params{content};
+}
+
+sub htmlize (@)
+{
+ my %params = @_;
+ my $page = $params{page};
+
+ my $home;
+ if (defined $pagesources{$page})
+ {
+ $home = $config{srcdir} . '/' . dirname ($pagesources{$page});
+ }
+ else
+ {
+ # This happens in the CGI web frontent, when freshly creating a
+ # `texi'-type page and selecting to ``Preview'' the page before doing a
+ # ``Save Page''.
+# TODO.
+ $home = $config{srcdir};
+ }
+
+ my $pid;
+ my $sigpipe = 0;
+ $SIG{PIPE} = sub
+ {
+ $sigpipe = 1;
+ };
+
+ my $tmp = eval
+ {
+ create_tmp_dir ("texinfo")
+ };
+ if (! $@ &&
+ # `makeinfo' can't work directly on stdin.
+ writefile ("texinfo.texi", $tmp, $params{content}) == 0)
+ {
+ return "couldn't write temporary file";
+ }
+
+ use File::Basename;
+ use IPC::Open2;
+ $pid = open2 (*IN, *OUT,
+ 'makeinfo',
+ '--html',
+ '--no-split', '--output=-',
+ # We might be run from a directory different from the one the
+ # `.texi' file is stored in.
+# TODO. Should we `cd' to this directory instead?
+ '-P', $home,
+# TODO. Adding the following allows for putting files like `gpl.texinfo' into
+# the top-level wiki directory.
+ '-I', $config{srcdir},
+ $tmp . "/texinfo.texi");
+ # open2 doesn't respect "use open ':utf8'"
+ binmode (IN, ':utf8');
+# binmode (OUT, ':utf8');
+
+# print OUT $params{content};
+ close OUT;
+
+ local $/ = undef;
+ my $ret = <IN>;
+ close IN;
+ waitpid $pid, 0;
+ $SIG{PIPE} = "DEFAULT";
+
+ return "failed to render" if $sigpipe;
+
+ # Cut out the interesting bits.
+ $ret =~ s/.*<body>//s;
+ $ret =~ s/<\/body>.*//s;
+
+ return $ret;
+}
+
+sub pagetemplate (@)
+{
+ my %params = @_;
+ my $page = $params{page};
+ my $destpage = $params{destpage};
+
+ my $template = $params{template};
+
+# TODO. Check the `meta' plugin about when to do this at all.
+ if ($template->query (name => "copyright") &&
+ ! defined $template->param ('copyright'))
+ {
+ if (defined $copyright{$page} && length $copyright{$page})
+ {
+ $template->param (copyright =>
+ IkiWiki::linkify ($page, $destpage, $copyright{$page}));
+ }
+ }
+ if ($template->query (name => "license") &&
+ ! defined $template->param ('license'))
+ {
+ if (defined $license{$page} && length $license{$page})
+ {
+ $template->param (license =>
+ IkiWiki::linkify ($page, $destpage, $license{$page}));
+ }
+ }
+}
+
+1
diff --git a/.templates/autotag.tmpl b/.templates/autotag.tmpl
new file mode 100644
index 00000000..87b76eef
--- /dev/null
+++ b/.templates/autotag.tmpl
@@ -0,0 +1,15 @@
+[[!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="<TMPL_VAR TAG>"]]
+
+[[!map
+pages="tagged(<TMPL_VAR TAG>)"
+show=title]]
diff --git a/.templates/editpage.tmpl b/.templates/editpage.tmpl
new file mode 100644
index 00000000..1ecbd0a9
--- /dev/null
+++ b/.templates/editpage.tmpl
@@ -0,0 +1,78 @@
+<TMPL_VAR JAVASCRIPT>
+<TMPL_VAR MESSAGE>
+<br />
+<TMPL_VAR FORM-START>
+<TMPL_VAR FIELD-DO>
+<TMPL_VAR FIELD-SID>
+<TMPL_VAR FIELD-FROM>
+<TMPL_VAR FIELD-RCSINFO>
+<TMPL_VAR FIELD-NEWFILE>
+<TMPL_IF NAME="PAGE_SELECT">
+<label for="page" class="inline">Page location:</label><TMPL_VAR FIELD-PAGE>
+<label for="type" class="inline">Page type:</label><TMPL_VAR FIELD-TYPE>
+<TMPL_ELSE>
+<TMPL_VAR FIELD-PAGE>
+<TMPL_VAR FIELD-TYPE>
+</TMPL_IF>
+<div class="editcontentdiv">
+<TMPL_VAR FIELD-EDITCONTENT><br />
+</div>
+<TMPL_IF NAME="CAN_COMMIT">
+<label for="editmessage" class="block">Optional comment about this change:</label>
+<TMPL_VAR FIELD-EDITMESSAGE><br />
+</TMPL_IF>
+
+<div class="copyright_assignment_notice">
+
+<p>By contributing to this page, you agree to assign copyright for
+your contribution to the Free Software Foundation. The Free Software
+Foundation promises to always use a free documentation license (as per
+our criteria of free documentation) when publishing your contribution.
+We grant you back all your rights under copyright, including the
+rights to copy, modify, and redistribute your contributions.</p>
+
+<p>We're requiring these copyright assignments, so that we'll easily
+be able to include your contributions in official GNU documentation,
+such as the GNU Hurd manual, etc. Send email to <a
+href="mailto:hurd-maintainers@gnu.org">hurd-maintainers@gnu.org</a>
+if there are questions.</p>
+
+</div>
+
+<TMPL_VAR FORM-SUBMIT>
+<TMPL_VAR HELPONFORMATTINGLINK>
+<TMPL_IF NAME="FIELD-ATTACHMENT">
+<a class="toggle" href="#attachments">Attachments</a>
+<div class="<TMPL_VAR ATTACHMENTS-CLASS>" id="attachments">
+<table>
+<tr><td colspan="5"><TMPL_VAR FIELD-ATTACHMENT><TMPL_VAR FIELD-UPLOAD></td></tr>
+<TMPL_LOOP NAME="ATTACHMENT_LIST">
+<tr><td><TMPL_VAR FIELD-SELECT><TMPL_VAR LINK></td><td><TMPL_VAR SIZE></td><td><TMPL_VAR MTIME></td></tr>
+</TMPL_LOOP>
+<TMPL_IF NAME="ATTACHMENT_LIST">
+<tr><td colspan="2"><TMPL_VAR FIELD-LINK><TMPL_VAR FIELD-RENAME><TMPL_VAR FIELD-REMOVE></td></tr>
+</TMPL_IF>
+</table>
+</div>
+</TMPL_IF>
+<TMPL_VAR FORM-END>
+<TMPL_VAR WMD_PREVIEW>
+
+<TMPL_IF NAME="PAGE_PREVIEW">
+<hr />
+<div class="header">
+<span>Page preview:</span>
+</div>
+<div id="preview">
+<TMPL_VAR PAGE_PREVIEW>
+</div>
+</TMPL_IF>
+<TMPL_IF NAME="PAGE_DIFF">
+<hr />
+<div class="header">
+<span>Diff:</span>
+</div>
+<div id="diff">
+<TMPL_VAR PAGE_DIFF>
+</div>
+</TMPL_IF>
diff --git a/.templates/newsitem.tmpl b/.templates/newsitem.tmpl
new file mode 100644
index 00000000..3b4fded1
--- /dev/null
+++ b/.templates/newsitem.tmpl
@@ -0,0 +1,80 @@
+<TMPL_IF HTML5><article class="newsitem"><TMPL_ELSE><div class="newsitem"></TMPL_IF>
+
+<TMPL_IF HTML5><section class="newsitemheader"><TMPL_ELSE><div class="newsitemheader"></TMPL_IF>
+<TMPL_IF AUTHOR>
+<span class="author">
+<TMPL_IF AUTHORURL>
+<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
+<TMPL_ELSE>
+<TMPL_VAR AUTHOR>
+</TMPL_IF>
+</span>
+</TMPL_IF>
+<TMPL_IF HTML5><header class="header"><TMPL_ELSE><span class="header"></TMPL_IF>
+<TMPL_IF PERMALINK>
+<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
+<TMPL_ELSE>
+<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
+</TMPL_IF>
+<TMPL_IF HTML5></header><TMPL_ELSE></span></TMPL_IF>
+
+<TMPL_IF HAVE_ACTIONS>
+<TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5><section class="newsitemcontent"><TMPL_ELSE><div class="newsitemcontent"></TMPL_IF>
+<TMPL_VAR CONTENT>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5><footer class="newsitemfooter"><TMPL_ELSE><div class="newsitemfooter"></TMPL_IF>
+
+<!-- The saved space is more important that the information this provides.
+<span class="pagedate">
+Posted <TMPL_VAR CTIME>
+</span>
+-->
+
+<TMPL_IF TAGS>
+<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><span class="tags"></TMPL_IF>
+Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+<TMPL_IF HTML5></nav><TMPL_ELSE></span></TMPL_IF>
+</TMPL_IF>
+
+<!-- For these tiny snippets we can abstain from displaying this again. It
+should match the inlining page's information nevertheless.
+
+<TMPL_IF COPYRIGHT>
+<div class="pagecopyright">
+<TMPL_VAR COPYRIGHT>
+</div>
+</TMPL_IF>
+
+<TMPL_IF LICENSE>
+<div class="pagelicense">
+License: <TMPL_VAR LICENSE>
+</div>
+</TMPL_IF>
+
+-->
+
+<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
diff --git a/.templates/page.tmpl b/.templates/page.tmpl
new file mode 100644
index 00000000..4ec3b4bf
--- /dev/null
+++ b/.templates/page.tmpl
@@ -0,0 +1,201 @@
+<TMPL_IF HTML5><!DOCTYPE html>
+<html>
+<TMPL_ELSE><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+</TMPL_IF>
+<head>
+<TMPL_IF DYNAMIC>
+<TMPL_IF FORCEBASEURL><base href="<TMPL_VAR FORCEBASEURL>" /><TMPL_ELSE>
+<TMPL_IF BASEURL><base href="<TMPL_VAR BASEURL>" /></TMPL_IF>
+</TMPL_IF>
+</TMPL_IF>
+<TMPL_IF HTML5><meta charset="utf-8" /><TMPL_ELSE><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></TMPL_IF>
+<meta http-equiv="Cache-Control" content="must-revalidate" />
+<title><TMPL_VAR TITLE></title>
+<TMPL_IF FAVICON>
+<link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
+</TMPL_IF>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
+<TMPL_IF LOCAL_CSS>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL><TMPL_VAR LOCAL_CSS>" type="text/css" />
+<TMPL_ELSE>
+<link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
+</TMPL_IF>
+<TMPL_IF EDITURL>
+<link rel="alternate" type="application/x-wiki" title="Edit this page" href="<TMPL_VAR EDITURL>" />
+</TMPL_IF>
+<TMPL_IF FEEDLINKS><TMPL_VAR FEEDLINKS></TMPL_IF>
+<TMPL_IF RELVCS><TMPL_VAR RELVCS></TMPL_IF>
+<TMPL_IF META><TMPL_VAR META></TMPL_IF>
+</head>
+<body>
+
+<TMPL_IF HTML5><article class="page"><TMPL_ELSE><div class="page"></TMPL_IF>
+
+<TMPL_IF HTML5><section class="pageheader"><TMPL_ELSE><div class="pageheader"></TMPL_IF>
+<TMPL_IF HTML5><header class="header"><TMPL_ELSE><div class="header"></TMPL_IF>
+<span>
+<span class="parentlinks">
+<TMPL_LOOP PARENTLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>/
+</TMPL_LOOP>
+</span>
+<span class="title">
+<TMPL_VAR TITLE>
+<TMPL_IF ISTRANSLATION>
+&nbsp;(<TMPL_VAR PERCENTTRANSLATED>%)
+</TMPL_IF>
+</span>
+</span>
+<TMPL_IF SEARCHFORM>
+<TMPL_VAR SEARCHFORM>
+</TMPL_IF>
+<TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HAVE_ACTIONS>
+<TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
+<span class="global">
+<ul>
+<TMPL_IF RECENTCHANGESURL>
+<li><a href="<TMPL_VAR RECENTCHANGESURL>">Recent Changes</a></li>
+</TMPL_IF>
+<TMPL_IF PREFSURL>
+<li><a href="<TMPL_VAR PREFSURL>">Preferences</a></li>
+</TMPL_IF>
+</ul>
+</span>
+<span class="per_page">
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+</TMPL_IF>
+<TMPL_IF HISTORYURL>
+<li><a href="<TMPL_VAR HISTORYURL>">History</a></li>
+</TMPL_IF>
+<TMPL_IF GETSOURCEURL>
+<li><a href="<TMPL_VAR GETSOURCEURL>">Source</a></li>
+</TMPL_IF>
+<TMPL_IF ACTIONS>
+<TMPL_LOOP ACTIONS>
+<li><TMPL_VAR ACTION></li>
+</TMPL_LOOP>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+</span>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF OTHERLANGUAGES>
+<TMPL_IF HTML5><nav id="otherlanguages"><TMPL_ELSE><div id="otherlanguages"></TMPL_IF>
+<ul>
+<TMPL_LOOP OTHERLANGUAGES>
+<li>
+<a href="<TMPL_VAR URL>"><TMPL_VAR LANGUAGE></a>
+<TMPL_IF MASTER>
+(master)
+<TMPL_ELSE>
+&nbsp;(<TMPL_VAR PERCENT>%)
+</TMPL_IF>
+</li>
+</TMPL_LOOP>
+</ul>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF SIDEBAR>
+<TMPL_IF HTML5><aside class="sidebar"><TMPL_ELSE><div class="sidebar"></TMPL_IF>
+<TMPL_VAR SIDEBAR>
+<TMPL_IF HTML5></aside><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<div id="pagebody">
+
+<TMPL_IF HTML5><section id="content"><TMPL_ELSE><div id="content"></TMPL_IF>
+<TMPL_VAR CONTENT>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF COMMENTS>
+<TMPL_IF HTML5><section id="comments"><TMPL_ELSE><div id="comments"></TMPL_IF>
+<TMPL_VAR COMMENTS>
+<TMPL_IF ADDCOMMENTURL>
+<div class="addcomment">
+<a href="<TMPL_VAR ADDCOMMENTURL>">Add a comment</a>
+</div>
+<TMPL_ELSE>
+<div class="addcomment">Comments on this page are closed.</div>
+</TMPL_IF>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+</div>
+
+<TMPL_IF HTML5><footer id="footer" class="pagefooter"><TMPL_ELSE><div id="footer" class="pagefooter"></TMPL_IF>
+<TMPL_UNLESS DYNAMIC>
+<TMPL_IF HTML5><nav id="pageinfo"><TMPL_ELSE><div id="pageinfo"></TMPL_IF>
+
+<TMPL_IF TAGS>
+<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><div class="tags"></TMPL_IF>
+Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF BACKLINKS>
+<TMPL_IF HTML5><nav id="backlinks"><TMPL_ELSE><div id="backlinks"></TMPL_IF>
+Links:
+<TMPL_LOOP BACKLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
+</TMPL_LOOP>
+<TMPL_IF MORE_BACKLINKS>
+<span class="popup">...
+<span class="balloon">
+<TMPL_LOOP MORE_BACKLINKS>
+<a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
+</TMPL_LOOP>
+</span>
+</span>
+</TMPL_IF>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF COPYRIGHT>
+<div class="pagecopyright">
+<a name="pagecopyright"></a>
+<TMPL_VAR COPYRIGHT>
+</div>
+</TMPL_IF>
+
+<TMPL_IF LICENSE>
+<div class="pagelicense">
+<a name="pagelicense"></a>
+License: <TMPL_VAR LICENSE>
+</div>
+</TMPL_IF>
+
+<div class="pagedate">
+Last edited <TMPL_VAR MTIME>
+<!-- Created <TMPL_VAR CTIME> -->
+</div>
+
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+<TMPL_IF EXTRAFOOTER><TMPL_VAR EXTRAFOOTER></TMPL_IF>
+</TMPL_UNLESS>
+<!-- from <TMPL_VAR WIKINAME> -->
+<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
+
+</body>
+</html>
diff --git a/abac.mdwn b/abac.mdwn
new file mode 100644
index 00000000..41de2062
--- /dev/null
+++ b/abac.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+ABAC stands for authorization-based access control.
+In this model, access is not granted based on the
+identity of the caller but by an authorizing agent
+that delegates access to a particular resource.
+Such authorization is then encapsulated in
+[[capabilities|capability]] allowing them to be freely [[delegated|delegation]].
+
+See also [[IBAC]].
diff --git a/asbestos.mdwn b/asbestos.mdwn
new file mode 100644
index 00000000..3990eec1
--- /dev/null
+++ b/asbestos.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Asbestos is an operating system developed at MIT, Stanford
+and UCLA to explore information flow control policies. The motivation
+behind Asbestos is that typical access control systems are concerned
+with the release of information, however, once that information is
+released, the [[principal]] that released that information has no way to
+control it. The problem is that a program might want to make use of
+a service another program provides but not want to release the
+information to it. To work around this, the OS provides the ability
+to taint data. The taint is automatically applied to any derived
+information. To propagate information outside of the machine, the
+releaser must first untaint the information. This can only be done
+with the original principal's authorization.
+
+Asbestos is described in Efstathopoulos et al.'s 2005 paper [Labels and
+Event Processes in the Asbestos Operating System](http://pdos.csail.mit.edu/papers/asbestos-sosp05.pdf).
diff --git a/asking_questions.mdwn b/asking_questions.mdwn
new file mode 100644
index 00000000..2d43cbbe
--- /dev/null
+++ b/asking_questions.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Before asking a question, first make an effort to find the answer to your
+question. A lot of questions have been asked and answered before, so please
+spend some time trying to solve the problem on your own (e.g., [search the
+web](http://google.com/), search these web pages, etc.), and show us that you
+did so when you ask your question.
+
+When asking, (1) be details, and (2) demonstrate that you have made an effort,
+e.g., "I am having trouble frobbing the foo. I searched the web and only found
+information regarding how to frob a bar, but that seems unrelated." Provide as
+many relevant details as possible reproducing them as exactly as possible.
+
+Also consider these
+[guidelines](http://catb.org/~esr/faqs/smart-questions.html).
diff --git a/binutils.mdwn b/binutils.mdwn
new file mode 100644
index 00000000..3ce28bb1
--- /dev/null
+++ b/binutils.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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 [GNU Binutils](http://www.gnu.org/software/binutils/).
diff --git a/capability.mdwn b/capability.mdwn
new file mode 100644
index 00000000..367ea163
--- /dev/null
+++ b/capability.mdwn
@@ -0,0 +1,33 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A capability is a protected reference. It is a reference in that
+it designates an object; it is protected in that in cannot be
+forged. A capabilities both designates the object it refers to and
+carries the authority to manipulate it.
+
+By binding [[designation]] and [[authorization]] together, capabilities
+simplify [[delegation]]. Imagine that program instance A wants to
+tell program B to use a particular file to store some data.
+Further imagine that A and B are running in different [[trust_domains]]
+(e.g., with different UIDs). If A sends B just the name
+of the file, B needs to first ensure that he does not accidentally
+enable A to access the file on his own authority. That is, B wants
+to protect against A hijacking his authority. (This problem is
+refused to the [[confused_deputy]] problem.) Also, since A likely
+sent a string to identify the file to B, the identifier lacks a
+[[naming_context]] and therefore may resolve to a different object
+than A intended. Be ensuring that [[designation]] and [[authorization]] are
+always bound together, these problems are avoided.
+
+[[Unix]] file descriptors can be viewed as capabilities. Unix file
+descriptors do not survive reboot, that is, they are not
+[[persistent|persistency]]. To work around this, [[ACL]]s are used to
+recover authority.
diff --git a/colophon.mdwn b/colophon.mdwn
new file mode 100644
index 00000000..a9a2952e
--- /dev/null
+++ b/colophon.mdwn
@@ -0,0 +1,64 @@
+[[!meta copyright="Copyright © 2003, 2004, 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]]."]]"""]]
+
+Just like a book, this topic is designed to help describe the tools used to
+create this website and what methods were used to give it its look and feel.
+
+
+What we see today is the junction of two different branches: the original
+static HTML pages and the wiki pages.
+
+# Static HTML Pages
+
+In November 2008, the Hurd's old static web pages were merged into the wiki
+pages' repository. After a lot of cleansing work, on 2008-11-22 the joined set
+of pages was made available for serving the official GNU Hurd web appearance at
+<http://www.gnu.org/software/hurd/>.
+
+# Wiki Pages
+
+## Rev. I
+
+We used a particular implementation (or clone) of Wiki software called
+[TWiki](http://twiki.org). The wiki was reachable at
+`http://hurd.gnufans.org/`.
+
+A generic [WikiWikiWeb](http://www.c2.com/cgi/wiki?WelcomeVisitors), or simply
+Wiki, is _"a collaborative forum where people can share ideas and record any
+consensus reached on difficult issues, along with rebuttal. It changes as
+people come and go, as experience develops, and as opinions change." The TWiki
+software is an enhanced descendent of the original WikiWikiWeb_.
+
+We used the [GNU Skin](http://twiki.org/cgi-bin/view/Plugins/GnuSkin).
+
+The site began in May 2002 as one TWiki web: *Hurd*. This WebHome page was
+used as the front page of the whole site. We grew this site and added more
+TWiki webs by December 2002. Due to the success of the site we had to act
+with respect to more completely addressing copyright issues. More people
+started adding content.
+
+The gnufans site's administrators would eventually step back from maintenance
+of their wiki installation, so from roughly 2005 on, day-to-day tasks like
+processing new user's registrations or spam removal would not be done in a
+timely fashion anymore. In July 2006, the [slow burial of the Hurd
+Wiki](http://lists.gnu.org/archive/html/bug-hurd/2006-07/msg00014.html) was
+announced.
+
+## Rev. II
+
+Considering this [from April 2006 on
+already](http://lists.gnu.org/archive/html/web-hurd/2006-04/msg00000.html), on
+2007-08-12 the conversion of the TWiki content to a format usable by
+[ikiwiki](http://ikiwiki.info) was finally finished. Read
+[[about_the_twiki_to_ikiwiki_conversion]].
+
+This wiki instance is now running distributed over two GNU/Hurd machines, and
+is also providing the content of the official GNU Hurd pages.
diff --git a/colophon/about_the_twiki_to_ikiwiki_conversion.mdwn b/colophon/about_the_twiki_to_ikiwiki_conversion.mdwn
new file mode 100644
index 00000000..0a1a5a00
--- /dev/null
+++ b/colophon/about_the_twiki_to_ikiwiki_conversion.mdwn
@@ -0,0 +1,107 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# Some Quick Notes About the *TWiki to ikiwiki* Conversion
+
+/!\ Incomplete.
+
+I saw a *moin2iki* program bundle being announced from
+<http://ikiwiki.info/index/discussion/#index2h1>.
+
+ <tschwinge> JoshTriplett: On http://ikiwiki.info/users/joshtriplett.html
+ you write about a TWiki to ikiwiki conversion script. Is that already
+ available somewhere?
+ <JoshTriplett> tschwinge: Yes, you can get it in its current state at
+ git://svcs.cs.pdx.edu/git/moin2iki.git
+ <JoshTriplett> tschwinge: That repo has scripts for converting from Moin
+ and TWiki to ikiwiki.
+ <JoshTriplett> tschwinge: Work in progress.
+ <JoshTriplett> tschwinge: For a purely TWiki setup, it should work fine.
+ <JoshTriplett> tschwinge: You need a number of depenencies, though, and we
+ haven't documented them well yet.
+ <tschwinge> JoshTriplett: Thanks, I'll have a look and report back (in some
+ days, I hope).
+ <JoshTriplett> tschwinge: In particular, you need HTML::WikiConverter with
+ our 12 ikiwiki-related patches.
+ <JoshTriplett> tschwinge:
+ http://rt.cpan.org/Public/Bug/Display.html?id=24446
+
+As I had difficulties with extracting the patches from the cpan site, they were
+also made available by the authors at
+<http://svcs.cs.pdx.edu/~jamey/wikiconverter/>.
+
+The Debian package *libhtml-wikiconverter-perl* is too old at least until
+[[!debbug 419918]] is closed.
+
+For converting from rcs files (as used by TWiki) to a git repository you'll
+need to get `git clone git://people.freedesktop.org/~keithp/parsecvs` and build
+it. Or don't do that and install the Debian *git-cvs* package instead; see
+below.
+
+Here is the command line I used (line breaks added for readability) to create
+an *Authors* file from the TWiki files, suitable for *parsecvs* or
+*git-cvsimport* to use:
+
+ $ sort < data/Main/TWikiUsers.txt | uniq | ↩
+ while read s n r; do ↩
+ ( [ "$s" != \* ] || expr "$r" : .\*\< > /dev/null) && continue; ↩
+ echo "$n"="$(recode Latin1..UTF-8 < data/Main/"$n".txt | ↩
+ awk -v name="$n" 'BEGIN { FS = ": "; email = "web-hurd@gnu.org" } ↩
+ { sub("\r$", "") } $1 ~ /\* Name$/ { name = $2 } ↩
+ $1 ~ /\* Email$/ { email = $2 } ↩
+ END { print name " <" email ">" }')"; ↩
+ done | tee Authors
+
+The old TWiki installation had managed to corrupt one of its own rcs files,
+which both *parsecvs* and *git-cvsimport* stumbled on. As that file was not
+essential for me, I simply deleted it.
+
+The final output (after the TWiki markup to Markdown markup conversion) was
+expected to pour out *.mdwn* files. However the original TWiki files are named
+*.txt*. As the *git-map* step as yet (would this be possible at all?) has no
+way to rename the files while converting, I simply adapted the input files'
+names to what was expected: I ran a the following command to rename the
+*.txt,v* files to *.mdwn,v* files before running *git-cvsimport*:
+
+ $ find ./ | grep \\.txt,v | while read f; do ↩
+ mv -vi "$f" "$(expr "$f" : \\\(.\*\\\)\\.txt,v)".mdwn,v; done
+
+Instead of using *parsecvs* (which finally even choked on the valid rcs input
+files) I eventually ended up successfully converting the old TWiki with
+*git-cvsimport*:
+
+ $ git-cvsimport -v -d "`pwd`"/../hurd-wiki/ -z 0 -a -A ../Authors data
+ [...]
+ Committed patch 4698 (origin +0000 2007-04-13 17:40:08)
+ Commit ID c33d05d0274d0d602fba835805abb9ba413c65c6
+ Generating pack...
+ Done counting 18576 objects.
+ Deltifying 18576 objects...
+ 100% (18576/18576) done
+ Writing 18576 objects...
+ 100% (18576/18576) done
+ Total 18576 (delta 12567), reused 16106 (delta 10886)
+ Pack pack-d38e3d55705f5d355f669aaa7d993420b50798d0 created.
+ Removing unused objects 100%...
+ Done.
+ DONE; creating master branch
+
+The only thing I had to do to make the conglomerate of rcs files a *valid* cvs
+repository (read: to satisfy *git-cvsimport*'s needs) was a `mkdir
+../hurd-wiki/CVSROOT`.
+
+Then let's convert the whole git tree from TWiki syntax to Markdown:
+
+ $ TWIKI="`pwd`"/../hurd-wiki tw_2001-12-01_2iki "`pwd`"/.git
+ [...]
+
+After that I repeated -- in a separate directory!, they can be merged later --
+the same last steps again, replacing *data* with *pub*, which contains the data
+files that had been attached to the wiki pages (like images, for example).
diff --git a/community.mdwn b/community.mdwn
new file mode 100644
index 00000000..9443f123
--- /dev/null
+++ b/community.mdwn
@@ -0,0 +1,57 @@
+[[!meta copyright="Copyright © 2002, 2003, 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]]."]]"""]]
+
+There is an expanding community of people developing and running test Debian
+GNU/Hurd machines.
+
+[[Communication]] -- How communication and coordination works within the group.
+
+Further ways of getting in contact or getting information:
+
+[[Shared-Wiki-Weblog|Weblogs]] -- A shared weblog by Hurd developers and enthusiasts.
+
+[[User Pages|/user]]
+
+[[Meetings]] -- Meetings with Hurd developer attendance.
+
+[[GSoC]] -- Participation in the Google Summer of Code
+
+[[Hurd/HurdDevelopers]] -- Who's who?
+
+[Hurd User's Guide](http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html).
+
+[[LiveJournal]]
+
+[[Orkut]]
+
+[[FaceBook]]
+
+[Advogato.org -- Hurd Project page](http://advogato.org/proj/HURD/)
+
+[[Media_Appearances]]
+
+---
+
+# Hurd User Groups
+
+* [[THUG]] - Toronto (GNU/)Hurd User Group
+* [[CHUG]] - California Hurd User Group
+* [[DHUG]] - Dunedin (GNU/)Hurd User Group
+* [[HurdBr]] - Hurd Br is a brasilian, portuguese speaking, HUG
+* [HurdEs](http://hurd.es.gnu.org/)
+* [Hurdfr.org](http://www.hurdfr.org/)
+* [HurdIt](http://hurd-it.sf.net/)
+* [HurdUk](http://uwhug.org.uk/)
+
+# Other Community Pages
+
+ * [GNU Hurd Sverige](http://hurd.mtb-tech.se/) -- A Swedish website
+ about the GNU Hurd
diff --git a/community/chug.mdwn b/community/chug.mdwn
new file mode 100644
index 00000000..173d0125
--- /dev/null
+++ b/community/chug.mdwn
@@ -0,0 +1,3 @@
+Mail me if you are interested!
+
+-- [[Main/GrantBow]] - 11 Oct 2002
diff --git a/community/communication.mdwn b/community/communication.mdwn
new file mode 100644
index 00000000..33941000
--- /dev/null
+++ b/community/communication.mdwn
@@ -0,0 +1,40 @@
+[[!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 GNU Hurd community comprises of a crowd of people living in different areas
+of the whole world. For that, having regular working-[[meetings]] -- usually
+one of the more productive ways of coordination works -- is not easily
+possible.
+
+The two key resources most often used for communication are the Debian and GNU
+[[mailing lists]], as well as [[IRC]].
+
+These are measures of communication that work (compared to, e.g., a one-to-one
+telephone call) one-to-many. It is important to not send email only to a
+single person, but in a way that several people can see your questions and
+reasonings. (There are exceptions, of course. Administrative stuff usually
+need not be discussed in public.) It often happens that -- if you send email
+only to a single developer -- someone is unavailable for some days and can't
+answer to your email, but another person could easily have done so. Also, when
+discussing matters in public, others can learn from it (while reading, or
+eventually even taking part in the discussions), transform the results into
+real documentation, etc. Efficient using of scarce resources. Start
+discussions on public mailing lists/public IRC channels instead of sending
+discussing with single developers. And always use *reply to all* instead of
+*reply* when answering to email.
+
+If you're interested in keeping up with current events and taking part in
+discussions, you'll want to join the [[mailing lists/bug-hurd]] mailing list or
+have a look at its [archives](http://lists.gnu.org/archive/html/bug-hurd/).
+
+Even if you're a beginner (we've also been, and some of us even still
+remember), don't hesitate to make the first move and make active use of these
+resources. But -- of course -- please try to adhere to the conventions as
+described on the [[mailing lists]] and [[IRC]] pages.
diff --git a/community/dhug.mdwn b/community/dhug.mdwn
new file mode 100644
index 00000000..02a404cf
--- /dev/null
+++ b/community/dhug.mdwn
@@ -0,0 +1,7 @@
+The Dunedin (GNU/)Hurd Users Group is a small group of currently 2 people in Dunedin, New Zealand.
+
+At the moment our main role is producing the CD install images, mainly thanks to Philip Charles.
+
+Mail me if you want info or want to get in contact.
+
+-- [[Main/AndrewMitchell]] - 16 Oct 2002
diff --git a/community/facebook.mdwn b/community/facebook.mdwn
new file mode 100644
index 00000000..27893cf9
--- /dev/null
+++ b/community/facebook.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+There is [a Facebook group for the Hurd](http://www.facebook.com/group.php?gid=5141429597). If you're on Facebook, join it and say hello.
+
diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn
new file mode 100644
index 00000000..2ce92d19
--- /dev/null
+++ b/community/gsoc.mdwn
@@ -0,0 +1,63 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Google Summer of Code"]]
+
+# 2010
+
+This year we are again participating in [Google Summer of Code](http://socghop.appspot.com)
+under the [GNU umbrella](http://socghop.appspot.com/gsoc/org/show/google/gsoc2010/gnuproject).
+
+ * *[[Jeremie Koenig|jkoenig]]*, mentored by *[[Samuel
+ Thibault|samuelthibault]]*, is working on adapting the Debian Installer to
+ [produce working Debian GNU/Hurd installation
+ images](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/debian/t127230758239)
+ so we can easily offer up to date disc-sets.
+ ([Details](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig).)
+
+ * *[[Emilio Pozuelo Monfort|pochu]]*, mentored by *Carl Fredrik Hammar* (who
+ was a GSoC student in 2007), is working on a task that may be perceived as
+ less exciting from the outside, but yet is extremely valuable: [fixing
+ compatibility problems exposed by projects'
+ testsuites](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759396).
+ ([[Details|community/gsoc/project_ideas/testsuites]].)
+
+ * *[[Karim Allah Ahmed|kam]]*, mentored by *Sergio López*, is working on
+ [tuning the VM Subsystem in
+ GNU/Hurd](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759587)
+ to bring the virtual memory management in Hurd/Mach up to date.
+ ([[Details|community/gsoc/project_ideas/vm_tuning]].)
+
+We always ask students that want to apply for a task (in the course of the
+Google Summer of Code) to mind our distinct [[student_application_form]].
+
+Apart from our own [[project_ideas]], there are also two [Hurd-related ideas
+for X.Org](http://wiki.x.org/wiki/Hurd_Porting).
+
+As the Google Summer of Code 2010 has already started, you can no longer
+participate as a GSoC student. However,
+working on one of these projects is still a good opportunity to get started with Hurd development.
+Please read up about [[contributing]] in general;
+and feel free to ask any questions you might have at one of our [[regular_IRC_meetings|IRC#regular_meetings]].
+Generally it's a good idea to [[contact_us|communication]] when starting to work on some project.
+
+# History
+
+In 2006 and [[2007]], we participated in GSoC under the umbrella of the GNU
+project,
+getting one slot each year.
+
+In the following year, we successfully participated on our own, not only as a
+suborganization of the GNU
+project. Read about our five students' success on the [[2008]] page.
+
+The next year, we participated under the GNU umbrella with one slot again.
+Read about it on the [[2009]] page.
diff --git a/community/gsoc/2007.mdwn b/community/gsoc/2007.mdwn
new file mode 100644
index 00000000..fa22f785
--- /dev/null
+++ b/community/gsoc/2007.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Participated under the umbrella of the GNU project, getting one slot:
+
+ * Carl Fredrik Hammar has been working on [[hurd/libchannel]]; [Google's
+ project
+ page](http://code.google.com/soc/2007/gnu/appinfo.html?csaid=44FB3FD69C665A08).
diff --git a/community/gsoc/2008.mdwn b/community/gsoc/2008.mdwn
new file mode 100644
index 00000000..d994f2b0
--- /dev/null
+++ b/community/gsoc/2008.mdwn
@@ -0,0 +1,89 @@
+[[!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]]."]]"""]]
+
+The GNU Hurd project has successfully participated in the
+[Google Summer of Code 2008](http://code.google.com/soc/2008/hurd/about.html)!
+
+All in all we had five students working on a diverse selection of five projects
+from our [[ideas_list|gsoc/project_ideas]], and the students as well as the mentors
+did a great job!
+
+# Projects
+
+* [[Sergiu_Ivanov|scolobb]] worked on **namespace-based translator selection**.
+ Although he wasn't an official (sponsored) GSoC student, he worked on his
+ project quite as steady as the other students (except for a two week
+ vacation). The project however was hampered by various misunderstandings,
+ wrong assumptions, and several major redesigns during the course of the work
+ -- which is probably more our fault than the student's. In the end, though, he
+ completed [[hurd/translator/nsmux]] (the main namespace proxy handling the
+ magic filename
+ lookups, running dynamic translators on demand); he still works on
+ finishing the translator stack filtering necessary to implement some of the
+ desired functionality (accessing files while skipping existing translators).
+
+* [[Zheng_Da|zhengda]] worked on **network virtualization** and some related topics. In
+ spite of many open design question in the beginning, he did a lot of good
+ work -- finishing not only the ethernet multiplexer and filter translators,
+ which form the core of his project, but also a glibc patch to allow
+ overriding the standard socket servers with environment variables; the
+ devnode translator and a pfinet patch to allow accessing network devices
+ through device files; support for setting the network device in promiscuous
+ mode in gnumach; a pfinet patch to use BPF for the packet filtering instead
+ of the old Mach packet filters, and also to set a proper filter rule that
+ really only passes the required packages to pfinet; a patch for the subhurd
+ boot program to allow giving arbitrary virtual devices to the subhurd; and a
+ proxy for the proc server, which allows running unmodified programs with a
+ pseudo device master port instead of the real one -- providing some of the
+ subhurd functionality without having to start a complete new system instance.
+ He is still working on fixing some remaining issues, and on allowing subhurds
+ to be run by normal users.
+
+* [[Flavio_Cruz|flaviocruz]] was working on **Lisp bindings for the Hurd interfaces**,
+ and did a great job: Not only did he implement bindings for all low-level
+ interfaces as well as higher-level libraries for easy creation of translators
+ and other hurdish programs, but also a whole bunch of sample
+ translators based on these bindings, some of them quite useful on their own
+ account. He also fixed a few bugs in the Hurd he found along the way.
+ Presently he is doing some further improvements, like additional abstractions
+ and more sample translators.
+
+* [Andrei Barbu](http://0xab.com) was working on
+ **porting a kernel instrumentation framework** like dtrace or SystemTap. He
+ implemented the necessary kernel infrastructure (and some nice general
+ improvements along the way), making it possible to create tracing programs by
+ hand; however, only at the end of the summer he realized that SystemTap is
+ really extremely Linux-specific (while dtrace was ruled out already at the
+ setout because of licensing problems), so there is no nice frontend yet.
+ Unfortunately he was not able to continue work beyond the official deadline
+ because of his PhD.
+
+* [[Madhusudan.C.S|madhusudancs]] was working on a **new procfs implementation**, to
+ allow running existing programs based on Linux procfs out of the box. He
+ managed to implement all the necessary information bits, so the most
+ important procfs programs now work; and also fixed the procps program suite
+ to actually build on the Hurd. There are still some major bugs left, though.
+ Aside from fixing the remaining bugs, he now works on adding some more
+ information bits that are nontrivial to implement, and on fixing libgtop to
+ work for us as well.
+
+
+# IRC meetings
+
+Since the selection of the students on we have had regular, weekly GSoC IRC
+meetings, see the [[IRC#regular_meetings]] page for details.
+
+Minutes from some of the meetings: [[2008/minutes-2008-04-25]],
+[[2008/minutes-2008-05-02]], [[2008/minutes-2008-05-16]]
+
+We decided to keep up the meetings after the end of official GSoC, so things
+can be properly wrapped up for upstream submission; but also because the
+students want to continue discussing progress with their ongoing work,
+problems, future directions etc.
diff --git a/community/gsoc/2008/minutes-2008-04-25.mdwn b/community/gsoc/2008/minutes-2008-04-25.mdwn
new file mode 100644
index 00000000..4c2039d4
--- /dev/null
+++ b/community/gsoc/2008/minutes-2008-04-25.mdwn
@@ -0,0 +1,61 @@
+[[!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]]."]]"""]]
+
+- People agreed that some small projects should be done to during the bonding
+ period: ideas that floated around were fixing some of the build failures or
+ looking at the new debian installer.
+ http://unstable.buildd.net/buildd/hurd-i386_Failed.html
+ http://unstable.buildd.net/index-hurd-i386.html
+ For some context:
+ http://dept-info.labri.fr/~thibault/tmp/graph-radial.ps
+ Don't pick something that looks too critical, it'll probably be too hard
+
+- Antrik was ok with not having a formal weekly report as long as the
+ repositories are growing and the students are around
+
+- Discussion about scms. It's ok to have your own, you'll get you own branch,
+ just make sure to make your own repository public. There was some talk about
+ not checking in one huge commit at the end
+
+- Copyright assignments to the FSF are required for most of hurd and other gnu
+ projects. http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00175.html
+ is your friend. Fill it out 3 times: Mach, Hurd, glibc. It's ok if you're
+ not planning on working on all of these. Email to fsf-records@gnu.org
+
+- Non-SoC students were offered some compensation for doing their projects
+ anyway. They were far more interested in the fact that they would be doing
+ worthwhile work than financial compensation
+
+- It was agreed that regular meetings would be a good idea. Once a
+ week, especially in the bonding period.
+
+- In general it was agreed that conversations shouldn't stay between just
+ mentors and their students, that it's better to keep everything out in the
+ open
+
+- Non-SoC students were assigned mentors, though it was agreed that they would
+ be mostly a primary contact and that most conversations should be kept
+ public
+
+- Discussion turned back to the meetings, the usual back and forth about the
+ timeslot. Fridays at 19 UTC was decided as the meeting time.
+
+- It was suggested that students look into writing documentation/guides for
+ hurd, for example cross-compiling hurd on gentoo, as a way to get more
+ familliar.
+
+- Andrei will set up a google calendar for organizing meetings.
+
+- Antrik noted that IRC is good for quick questions but serious ones should go
+ to the mailing list to get everyone involved.
+
+And so the first meeting was concluded.
+
+
diff --git a/community/gsoc/2008/minutes-2008-05-02.mdwn b/community/gsoc/2008/minutes-2008-05-02.mdwn
new file mode 100644
index 00000000..1dc99abe
--- /dev/null
+++ b/community/gsoc/2008/minutes-2008-05-02.mdwn
@@ -0,0 +1,39 @@
+[[!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]]."]]"""]]
+
+- madrazr wanted a wiki to keep track of progress. antrik suggested:
+ http://www.bddebian.com/~wiki/community/gsoc/ and that everyone use
+ that to keep track of their progress. bddebian was poked about git
+ accounts on flubber.bddebian.com
+
+- antrik/youpi talked about the mailing lists.
+ Debian GNU/Hurd (installer, etc): http://lists.debian.org/debian-hurd
+ bug-hurd, etc
+
+- Don't be afraid to post to the lists. There's no need to send the
+ post for review first. Generally people on the list are the same as
+ people on IRC
+
+- various docs links were posted:
+ http://angg.twu.net/the_hurd_links.html
+ http://www.gnu.org/software/hurd/docs.html
+
+- youpi posted a survey of some of the reasons why packages don't work
+ on Hurd: http://lists.debian.org/debian-hurd/2007/07/msg00000.html
+ and http://lists.debian.org/debian-hurd/2007/07/msg00001.html
+
+- andrei posted
+ http://web.cecs.pdx.edu/~trent/gnu/hurd/hurd-talk.tar.gz an archive
+ of hurd-folks
+
+- antrik is happy with communication in general
+
+- wiki pages for each of the projects should be created sometime this
+ week
diff --git a/community/gsoc/2008/minutes-2008-05-16.mdwn b/community/gsoc/2008/minutes-2008-05-16.mdwn
new file mode 100644
index 00000000..7e7da845
--- /dev/null
+++ b/community/gsoc/2008/minutes-2008-05-16.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+* **madrazr** said that web commits for the wiki stall forever (more than half an hour); the reason is unknown. **antrik** said that it is not much of a problem if the problems with git access are solved.
+
+* It was explained that the wiki server is not a very fast machine, which runs Hurd, hence the delay.
+
+* Everybody agreed on the fact that there is much school/university work to do, since it's the end of the term now; students have little time to work on their projects.
+
+* The idea to use git and github for the projects was suggested.
+
+* **antrik** remarked that the summer session starts pretty soon and that it is time to tackle open design questions and decide where to start actual coding. The task to do that was assigned as a homework till the next meeting.
+
+* the official GSoC students talked about the start of program gift by Google.
diff --git a/community/gsoc/2009.mdwn b/community/gsoc/2009.mdwn
new file mode 100644
index 00000000..6efeb839
--- /dev/null
+++ b/community/gsoc/2009.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Google Summer of Code 2009"]]
+
+The GNU Hurd project unfortunately was not in the list of accepted
+mentoring organizations.
+
+We did get one slot from the GNU project's.
+
+The applications have been evaluated and the following student has
+been accepted:
+
+ * [[Sergiu Ivanov|scolobb]] -- working on a *[[VFS-style union
+ mount|hurd/translator/unionmount]]* functionality; [Google's project
+ page](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2009/karlberry/t124022551214).
diff --git a/community/gsoc/organization_application.mdwn b/community/gsoc/organization_application.mdwn
new file mode 100644
index 00000000..8e672af1
--- /dev/null
+++ b/community/gsoc/organization_application.mdwn
@@ -0,0 +1,211 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+* Organization Name:
+
+GNU Hurd
+
+* Description:
+
+The mission of the Hurd project is to create a general-purpose kernel suitable
+for the [GNU operating system](http://gnu.org), which is viable for everyday
+use, and gives users and programs as much control over their computing
+environment as possible.
+
+In traditional operating systems, most system functionality is provided by the
+kernel, and thus cannot be easily modified. The Hurd on the other hand --
+following the GNU spirit of giving users more control over the software they
+use -- implements a unique design, which makes it feasible to change almost
+everything, down to the core features of the system.
+
+While on other systems, such changes would require a lot of effort and special
+privileges to rebuild the system core, with the Hurd this is not necessary: the
+extensible architecture enables users (or applications) to simply modify their
+local system environment at any time, while leaving the rest of the system in
+place.
+
+The most obvious example is the completely decentralized VFS mechanism: it can
+be extended in almost any imaginable way, simply by setting up suitable server
+processes (translators). Not only does this empower users, but also it helps
+application development: desktop environments such as GNOME for example, when
+making use of these possibilities, wouldn't need to create their own VFS
+mechanism -- they simply could extend the system VFS to suit their needs.
+
+One major element of the design which enables this extensibility, is the use of
+a true multiserver microkernel architecture. The Hurd is quite unique in being
+the only general-purpose multiserver microkernel system in development today,
+that is nearly ready for everyday use, and offering almost perfect UNIX
+compatibility. (About 65% of all packages in the Debian repository are
+available for the Hurd.) The "general-purpose" and "everyday use" bits are
+decisive here: all other existing true microkernel systems are either research
+projects not nearly complete enough for actual use; or limited to embedded
+systems and other special purposes; or both.
+
+Marcus Brinkmann and Neal Walfield, while working on improvements to the Hurd
+design, pushed at the forefront of microkernel operating system research. They
+worked with the most distinguished researchers in this field from the
+[L4](http://l4hq.org/) and
+[EROS](http://www.eros-os.org/eros.html)/[Coyotos](http://www.coyotos.org/)
+microkernel operating system groups, and published a couple of [research
+papers](http://walfield.org/) as well in this process.
+
+* Home Page:
+
+http://hurd.gnu.org
+
+* Main Organization License:
+
+GNU General Public License (GPL)
+
+* Why is your organization applying to participate in GSoC 2010? What do you hope to gain by participating?
+
+The primary goal of our participation is of course to find and introduce new long-term contributors
+to the Hurd. We are trying to optimise for this in our student selection
+process, our mentoring approach, and our choice of project ideas.
+
+The mentor-student setup, together with the period of focused work during the
+summer session, also offer a unique opportunity for kick-starting innovative
+new projects apart from mainline development, which are hard to fit in among
+the normal day-to-day development work. This is particularily important for the
+Hurd, as innovative uses are crucial to show the benefits of the unique
+architecture. Several such projects came into being through the GSoC program
+over the past years.
+
+Last but not least, GSoC participation always yields a lot of valuable input from new people, and helps
+spreading technical and other knowledge about the Hurd among actual and
+potential contributors. It has a very positive effect on
+our community -- new impulses, increased communication, etc.
+
+* Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
+
+In 2006 and 2007,
+we participated under the umbrella of the GNU project, getting one slot each
+year.
+
+In 2008 we participated as an organisation on our own for the first time. This
+turned out extremely beneficial: with the better visibility, we got a lot
+more applications (more than 20), mostly of good or excellent quality.
+
+In 2009, we were rejected as an organisation, so we participated under the GNU
+umbrella again.
+
+While the 2006 student disappeared midway, in all the later years all of our
+students were successful -- even including one who worked on his project in
+spite of not getting an official slot. Half of them are regular Hurd contributors now.
+
+Selecting the most promising students, as well as suitable mentors, turned out
+to be the most tricky part of GSoC participation -- but we learned our lesson
+after the first failure: we didn't have any students that didn't meet our
+expectations since then, and we also believe our mentoring is exceptionally
+good now -- one project that was in serious trouble, turned out well after all,
+due to effective mentor intervention.
+
+* If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6 students passed in 2006.
+
+2008: 4/4
+
+(+1 inofficial in 2008)
+(under GNU umbrella: 2006: 0/1; 2007: 1/1; 2009: 1/1)
+
+* If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
+
+--
+
+* What is the URL for your ideas page?
+
+http://www.gnu.org/software/hurd/community/gsoc/project_ideas.html
+
+* What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2010. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.
+
+bug-hurd@gnu.org ( http://lists.gnu.org/mailman/listinfo/bug-hurd )
+
+* What is the main IRC channel for your organization?
+
+\#hurd on freenode.net
+
+* Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2010 site.
+
+[[student_application_form]]
+
+* What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible:
+
+The most important criterium is that the person is involved in the project for
+some time, knowing the ways; so he can actually instruct the student; and if
+there are tough technical questions he can't answer himself, he knows whom to
+ask.
+
+It's also important that the mentors are reliable and helpful, so the students
+won't be left on their own with any problems they face.
+
+* What is your plan for dealing with disappearing students?
+
+The plan is mostly to avoid that happening in the first place. To this end, we
+are particularily careful with selection of students: Making sure
+that they have no other major obligations during that time; that they are motivated
+enough; that they actually have the necessary skills to complete the task; that
+they fit in our community.
+
+Also, we will make sure that we are constantly in contact with the students --
+asking about progress, discussing technical issues, etc. -- so we can act in
+time if things go wrong.
+
+If a student disappears in spite of all this, there is little we can do. Of course
+we will try to contact him and find out what the problem is; whether the
+project can perhaps be scaled down, or otherwise salvaged, so that the effort
+already invested in the student and the project is not wasted. We also try to
+make sure that all important design discussions are archieved, and that all
+code produced is suitable for upstream inclusion from the beginning -- to allow
+others to pick up the project if necessary, without having to start from zero.
+
+* What is your plan for dealing with disappearing mentors?
+
+As our mentors all have been with the project for some time, the risk of them
+disappearing is not too big. If one of them disappears nevertheless, it's not a
+problem for us: we have enough mentors, and someone else will take over.
+
+We will encourage the students to keep discussions public as much as possible,
+keeping private conversations with the mentors to a minimum, so the transition
+should go smoothly.
+
+* What steps will you take to encourage students to interact with your project's community before, during and after the program?
+
+We try to make it very clear that we expect the students to get into regular
+contact with us early during the student selection process already, and won't
+consider their applications otherwise. This way we know that the students are
+able and willing to communicate with us in the first place.
+
+After selection, the regular contact is kept up: we require the
+students to participate in IRC meetings up to twice a week, where we ask the students
+actively about the work they do, problems they face, decisions they take, etc.
+Furthermore, we ask them to be available on IRC while working on their
+projects, so we can communicate easily.
+
+We also require the students to join our main development mailing list, so any
+design questions, etc. can be discussed there. We encourage them to take
+part in other conversations, not directly related to their projects, as well.
+
+After the program we continue the regular meetings, discussing the further
+development of their original projects; as well as new projects, after the
+original ones are done.
+
+* What will you do to ensure that your accepted students stick with the project after GSoC concludes?
+
+In addition to keeping up the regular IRC meetings,
+we try to invite all participating students to meet us at conferences afterwards,
+where we discuss the projects, as well as other Hurd-related topics. This should
+keep them motivated to follow up on the work they have done during the
+program, and generally help keeping them involved.
+
+* Is there anything else you would like to tell the Google Summer of Code program administration team? :
+
+* Backup Admin (Link ID):
+
+tschwinge
diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn
new file mode 100644
index 00000000..ca10c8a2
--- /dev/null
+++ b/community/gsoc/project_ideas.mdwn
@@ -0,0 +1,108 @@
+[[!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]]."]]"""]]
+
+We offer a wide range of possible projects to choose from. If you have an idea
+not listed here, we'd love to hear about it!
+
+In either case, we encourage you to contact us (on [[IRC]] and/or our developer
+[[mailing lists]]), so we can discuss your idea, or help you pick a suitable
+task -- we will gladly explain the tasks in more detail, if the descriptions
+are not clear enough.
+
+In fact, we suggest you discuss your choice with us even if you have no trouble
+finding a task that suits you: as explained in the introduction section of the
+[[student_application_form]], we ask all students to get into regular
+communication with us for the application to be considered complete. Talking
+about your project choice is a good start :-)
+
+(We strongly suggest that you generally take a look at the
+[[student_application_form]] right now -- the sooner you know what we expect,
+the better you can cater to it :-) )
+
+Many of the project descriptions suggest some "exercise". The reason is that
+for the application to be complete, we require you to make a change to the Hurd
+code, and send us the resulting patch. (This is also explained in the
+[[student_application_form]].) If possible, the change should make some
+improvement to the code you will be working on during the summer, or to some
+related code.
+
+The "exercise" bit in the project description is trying to give you some ideas
+what kind of change this could be. In most cases it is quite obvious, though:
+Try to find something to improve in the relevant code, by looking at known
+issues in the [Savannah bug tracker](http://savannah.gnu.org/bugs/?group=hurd);
+by running the code and testing stuff; and by looking through the code. If you
+don't find anything, try with some related code -- if you task involves
+translator programming, make some improvement to an existing translator; if it
+involves glibc hacking, make an improvement to glibc; if it involves driver
+hacking, make an improvement to the driver framework; and so on... Makes sense,
+doesn't it? :-)
+
+Sometimes it's hard to come up with a useful improvement to the code in
+question, that isn't too complicated for the purposes of the application. In
+this case, we need to find a good alternative. You could for example make an
+improvement to some Hurd code that is not directly related to your project:
+this way you won't get familiar with working on the code you will actually need
+for the task, but at least you can show that you are able to work with the Hurd
+code in general.
+
+Another possible alternative would be making some change to the code in
+question, that isn't really a useful improvement, while still making sense in
+some way -- this could suffice to prove that you are able to work with the
+code.
+
+Don't despair if you can't come up with anything suitable by yourself. Contact
+us, and we will think of something together :-)
+
+In either case, we strongly suggest that you talk to us about the change you
+want to make up front, to be sure that it is something that will get our
+approval -- especially if the idea is not directly taken from the project
+description.
+
+Also, don't let this whole patch stuff discourage you from applying! As
+explained in the [[student_application_form]], it's not a problem if you do not
+yet have all the necessary knowledge to do this alone -- we don't expect that.
+After all, the purpose of GSoC is to introduce you to free software development
+:-) We only want to see that you are able to obtain the necessary knowledge
+before the end of the application process, with our help -- contact us, and we
+will assist you as well as we can.
+
+See also the list of [Hurd-related X.org project ideas](http://wiki.x.org/wiki/Hurd_Porting).
+
+[[!inline pages="community/gsoc/project_ideas/language_bindings" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/virtualization" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/file_locking" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/server_overriding" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/tcp_ip_stack" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/nfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/libdiskfs_locking" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/pthreads" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/sound" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/disk_io_performance" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/vm_tuning" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/mtab" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/gnumach_cleanup" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/xmlfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/unionfs_boot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/tmpfs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/lexical_dot-dot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/secure_chroot" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/package_manager" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/debian_installer" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/download_backends" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/libgtop" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/maxpath" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/gnat" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/hardware_libs" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/cdparanoia" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/perl_python" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/testsuites" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/libcap" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/xattr" show=0 feeds=no actions=yes]]
+[[!inline pages="community/gsoc/project_ideas/valgrind" show=0 feeds=no actions=yes]]
diff --git a/community/gsoc/project_ideas/cdparanoia.mdwn b/community/gsoc/project_ideas/cdparanoia.mdwn
new file mode 100644
index 00000000..a92329fe
--- /dev/null
+++ b/community/gsoc/project_ideas/cdparanoia.mdwn
@@ -0,0 +1,30 @@
+[[!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="Implement CD Audio Grabbing"]]
+
+The Hurd presently has only support for CD-ROMs, but not for audio extraction
+("grabbing"). As a result, cdparanoia (and other extraction
+libraries/utilities) are not available; and many other packages depending on
+these can't be built in Debian GNU/Hurd either.
+
+Adding support for audio extraction shouldn't be too hard. It requires
+implementing a number of additional ioctl()s, generating the appropriate ATAPI
+commands.
+
+The goal of this task is fully working cdparanoia in Debian GNU/Hurd. It will
+require digging a bit into Hurd internals and ATAPI commands, but should be
+quite doable without any previous knowledge about either.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Look at the implementation of the existing ioctl()s, and try to find
+something that could be easily added/improved. If you don't see anything
+obvious, talk to us about a different exercise task.
diff --git a/community/gsoc/project_ideas/debian_installer.mdwn b/community/gsoc/project_ideas/debian_installer.mdwn
new file mode 100644
index 00000000..43682e8b
--- /dev/null
+++ b/community/gsoc/project_ideas/debian_installer.mdwn
@@ -0,0 +1,41 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Port the Debian Installer to the Hurd"]]
+
+The primary means of distributing the Hurd is through Debian GNU/Hurd.
+However, the installation CDs presently use an ancient, non-native installer.
+The situation could be much improved by making sure that the newer *Debian
+Installer* works on the Hurd.
+
+Some preliminary work has been done, see
+<http://wiki.debian.org/DebianInstaller/Hurd>.
+
+The goal is to have the Debian Installer fully working on the Hurd. It
+requires relatively little Hurd-specific knowledge.
+
+A lot of the "non-Linux support" part of the project has already been done thanks to a previous GSoC, so at least no ground reason should bar the project. A lot of the required udebs are already in Debian or are pending upload, so that building an image and booting it does already work. A preliminary list of what remains is
+
+ * Add initrd support to GNU Mach, unless youpi does it before :) This should not be very complicated by re-using the iopl driver code.
+ * hurdify genext2fs to handle 4096 block size by default (see bug #562999) and support translator entries.
+ * Port busybox. This needs to be synchronized with kfreebsd people, who have probably already done some work, but that seemingly still hasn't been merged. In the meanwhile, youpi has a version with most of it disabled so a d-i image can actually be built.
+ * Port keyboard-setup to configure the xkb driver of the Hurd console
+
+As a starting point to get a grasp at how the debian installer is built, students might wish to look at the current Debian installer source and build process on Linux:
+
+ * svn co svn://svn.debian.org/d-i/trunk/installer/
+ * cd installer/build
+ * make build_monolithic
+
+The same can be done on hurd-i386 but a few non-uploaded packages are needed, see http://people.debian.org/~sthibault/hurd-i386/README-d-i
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix a couple of Hurd issues in busybox.
diff --git a/community/gsoc/project_ideas/disk_io_performance.mdwn b/community/gsoc/project_ideas/disk_io_performance.mdwn
new file mode 100644
index 00000000..b6c857b0
--- /dev/null
+++ b/community/gsoc/project_ideas/disk_io_performance.mdwn
@@ -0,0 +1,36 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Disk I/O Performance Tuning"]]
+
+The most obvious reason for the Hurd feeling slow compared to mainstream
+systems like GNU/Linux, is very slow hard disk access.
+
+The reason for this slowness is lack and/or bad implementation of common
+optimization techniques, like scheduling reads and writes to minimize head
+movement; effective block caching; effective reads/writes to partial blocks;
+reading/writing multiple blocks at once; and read-ahead. The
+[[ext2_filesystem_server|hurd/translator/ext2fs]] might also need some
+optimizations at a higher logical level.
+
+The goal of this project is to analyze the current situation, and implement/fix
+various optimizations, to achieve significantly better disk performance. It
+requires understanding the data flow through the various layers involved in
+disk access on the Hurd ([[filesystem|hurd/virtual_file_system]],
+[[pager|hurd/libpager]], driver), and general experience with
+optimizing complex systems. That said, the killing feature we are definitely
+missing is the read-ahead, and even a very simple implementation would bring
+very big performance speedups.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Look through all the code involved in disk I/O, and try something
+easy to improve. It's quite likely though that you will find nothing obvious --
+in this case, please contact us about a different exercise task.
diff --git a/community/gsoc/project_ideas/download_backends.mdwn b/community/gsoc/project_ideas/download_backends.mdwn
new file mode 100644
index 00000000..f794e814
--- /dev/null
+++ b/community/gsoc/project_ideas/download_backends.mdwn
@@ -0,0 +1,47 @@
+[[!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="Use Internet Protocol Translators (ftpfs etc.) as Backends for Other Programs"]]
+
+The Hurd design facilitates splitting up large applications into independent,
+generic components, which can be easily combined in different contexts, by
+moving common functionality into separate Hurd servers (translators),
+accessible trough filesystem interfaces and/or specialized RPC interfaces.
+
+Download protocols like FTP, HTTP, BitTorrent etc. are very good candidates for
+this kind of modularization: a program could simply use the download
+functionality by accessing FTP, HTTP etc. translators.
+
+There is already an ftpfs translator in the Hurd tree, as well as an [httpfs
+translator on hurdextras](http://www.nongnu.org/hurdextras/#httpfs); however,
+these are only suitable for very simple use cases: they just provide the actual
+file contents downloaded from the URL, but no additional status information
+that are necessary for interactive use. (Progress indication, error codes, HTTP
+redirects etc.)
+
+A new interface providing all this additional information (either as an
+extension to the existing translators, or as distinct translators) is required
+to make such translators usable as backends for programs like apt-get for
+example.
+
+The goal of this project is to design a suitable interface, implement it for at
+least one download protocol, and adapt apt-get (or some other program) to use
+this as a backend.
+
+This task requires some design skills and some knowledge of internet protocols,
+to create a suitable interface. Translator programming knowledge will have to
+be obtained while implementing it.
+
+It is not an easy task, but it shouldn't pose any really hard problems either.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Make some improvement to one of the existing download translators --
+httpfs in particular is known to be buggy.
diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn
new file mode 100644
index 00000000..9c063e9f
--- /dev/null
+++ b/community/gsoc/project_ideas/driver_glue_code.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="New Driver Glue Code"]]
+
+Although a driver framework in user space would be desirable, presently the Hurd
+uses kernel drivers in the microkernel,
+[[GNU_Mach|microkernel/mach/gnumach]]. (And changing this would be far beyond a
+GSoC project...)
+
+The problem is that the drivers in GNU Mach are presently old Linux drivers
+(mostly from 2.0.x) accessed through a glue code layer. This is not an ideal
+solution, but works quite OK, except that the drivers are very old. The goal of
+this project is to redo the glue code, so we can use drivers from current Linux
+versions, or from one of the free BSD variants.
+
+While it would be certainly possible to create custom glue code again, a more
+sustainable and probably also easier approach is to use
+[[DDE]] instead -- it already
+does the hard work of providing an environment where the foreign drivers can
+run, and has the additional advantage of being externally maintained.
+
+This is a doable, but pretty involved project. Previous experience with driver
+programming probably is a must. (No Hurd-specific knowledge is required,
+though.)
+
+This is [[!GNU_Savannah_task 5488]].
+[[open issues/user-space device drivers]].
+[[open issues/device drivers and io systems]].
+
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Take a driver for some newer piece of hardware (e.g. Intel e1000
+ethernet) from a recent system, and try to port it to run in the existing
+driver framework in GNU Mach. Completing the port might be too involved for the
+exercise; but it's pretty likely that you will find something else to improve
+in the glue code while working on this...
+
+*Status*: [[Zheng Da|zhengda]] is working on DDE, and has mostly completed the
+initial port.
diff --git a/community/gsoc/project_ideas/dtrace.mdwn b/community/gsoc/project_ideas/dtrace.mdwn
new file mode 100644
index 00000000..4a46cf38
--- /dev/null
+++ b/community/gsoc/project_ideas/dtrace.mdwn
@@ -0,0 +1,46 @@
+[[!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]]."]]"""]]
+
+[[!meta title="dtrace Support"]]
+
+One of the main problems of the current Hurd implementation is very poor
+performance. While we have a bunch of ideas what could cause the performance
+problems, these are mostly just guesses. Better understanding what really
+causes bad performance is necessary to improve the situation.
+
+For that, we need tools for performance measurements. While all kinds of more
+or less specific profiling tools could be conceived, the most promising and
+generic approach seems to be a framework for logging certain events in the
+running system (both in the microkernel and in the Hurd servers). This would
+allow checking how much time is spent in certain modules, how often certain
+situations occur, how things interact, etc. It could also prove helpful in
+debugging some issues that are otherwise hard to find because of complex
+interactions.
+
+The most popular framework for that is Sun's dtrace; but there might be others.
+The student has to evaluate the existing options, deciding which makes most
+sense for the Hurd; and implement that one. (Apple's implementation of dtrace
+in their Mach-based kernel might be helpful here...)
+
+This project requires ability to evaluate possible solutions, and experience
+with integrating existing components as well as low-level programming.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: In lack of a good exercise directly related to this task, just pick
+one of the kernel-related or generally low-level tasks from the bug/task
+trackers on savannah, and make a go at it. You might not be able to finish the
+task in a limited amount of time, but you should at least be able to make a
+detailed analysis of the issue.
+
+*Status*: Andei Barbu was working on
+[SystemTap](http://csclub.uwaterloo.ca/~abarbu/hurd/) for GSoC 2008, but it
+turned out too Linux-specific. He implemented kernel probes, but there is no
+nice frontend yet.
diff --git a/community/gsoc/project_ideas/file_locking.mdwn b/community/gsoc/project_ideas/file_locking.mdwn
new file mode 100644
index 00000000..0159b091
--- /dev/null
+++ b/community/gsoc/project_ideas/file_locking.mdwn
@@ -0,0 +1,38 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Fix and Complete File Locking Support"]]
+
+Over the years, [[UNIX]] has acquired a host of different file locking mechanisms.
+Some of them work on the Hurd, while others are buggy or only partially
+implemented. This breaks many applications.
+
+The goal is to make all file locking mechanisms work properly. This requires
+finding all existing shortcomings (through systematic testing and/or checking
+for known issues in the bug tracker and mailing list archives), and fixing
+them. The biggest missing feature is record locking, i.e. the lockf variant,
+which needs a complete implementation.
+
+This task will require digging into parts of the code to understand how file
+locking works on the Hurd. Only general programming skills are required.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Find one of the existing issues, either by looking at the task/bug
+trackers on savannah, or by trying things out yourself; and take a go at it.
+Note though that most of these issues are probably not trivial -- it's quite
+likely that you won't be able to actually fix any of them in the time available
+during the application process. However, you might be able to spot something
+else that could be improved while looking into this.
+
+If after trying for a while you haven't found anything easy enough to improve
+in the locking-related code, talk to us about some alternative exercise task.
+Perhaps you actually find something you could do while looking through the bug
+tracker or trying stuff yourself in search of locking issues :-)
diff --git a/community/gsoc/project_ideas/gnat.mdwn b/community/gsoc/project_ideas/gnat.mdwn
new file mode 100644
index 00000000..97a4a552
--- /dev/null
+++ b/community/gsoc/project_ideas/gnat.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]]."]]"""]]
+
+[[!meta title="Porting GNAT"]]
+
+The GNU Ada Translator (GNAT) isn't available for the Hurd so far. There are
+also a number of other Debian packages depending on GNAT, and thus not
+buildable on the Hurd.
+
+The goal of this project is getting GNAT fully working in Debian GNU/Hurd. It
+requires implementing some explicitly system-specific stuff in GNAT, and maybe
+fixing a few other problems. Good knowledge of Ada is a must; some Hurd
+knowledge will have to be acquired while working on the project.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix one of the problems preventing GNAT from working on the Hurd.
diff --git a/community/gsoc/project_ideas/gnumach_cleanup.mdwn b/community/gsoc/project_ideas/gnumach_cleanup.mdwn
new file mode 100644
index 00000000..4aef0d1b
--- /dev/null
+++ b/community/gsoc/project_ideas/gnumach_cleanup.mdwn
@@ -0,0 +1,46 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GNU Mach Code Cleanup"]]
+
+Although there are some attempts to move to a more modern microkernel
+altogether, the current Hurd implementation is based on
+[[GNU_Mach|microkernel/mach/gnumach]], which is only a slightly modified
+variant of the original CMU [[microkernel/Mach]].
+
+Unfortunately, Mach was created about two decades ago, and is in turn based on
+even older BSD code. Parts of the BSD kernel -- file systems, [[UNIX]] [[mechanism]]s
+like processes and signals, etc. -- were ripped out (to be implemented in
+[[userspace_servers|hurd/translator]] instead); while other mechanisms were
+added to allow implementing stuff in user space.
+([[Pager_interface|microkernel/mach/external_pager_mechanism]],
+[[microkernel/mach/IPC]], etc.)
+
+Also, Mach being a research project, many things were tried, adding lots of
+optional features not really needed.
+
+The result of all this is that the current code base is in a pretty bad shape.
+It's rather hard to make modifications -- to make better use of modern hardware
+for example, or even to fix bugs. The goal of this project is to improve the
+situation.
+
+There are various things you can do here: Fixing compiler warnings; removing
+dead or unneeded code paths; restructuring code for readability and
+maintainability etc. -- a glance at the source code should quickly give you
+some ideas.
+
+This task requires good knowledge of C, and experience with working on a large
+existing code base. Previous kernel hacking experience is an advantage, but
+not really necessary.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: You should have no trouble finding something to improve when looking
+at the gnumach code, or even just at compiler warnings.
diff --git a/community/gsoc/project_ideas/hardware_libs.mdwn b/community/gsoc/project_ideas/hardware_libs.mdwn
new file mode 100644
index 00000000..c30505cb
--- /dev/null
+++ b/community/gsoc/project_ideas/hardware_libs.mdwn
@@ -0,0 +1,42 @@
+[[!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="Stub Implementations of Hardware Specific Libraries"]]
+
+Many programs use special libraries to access certain hardware devices,
+like libusb, libbluetooth, libraw1394, libiw-dev (though there already is a
+wireless-tools-gnumach package), etc.
+
+The Hurd presently doesn't support these devices. Nevertheless, all of these
+programs could still be built -- and most of them would indeed be useful --
+without actual support of these hardware devices, kdebase for instance. However,
+as the libraries are presently not available for Hurd, the programs can't be
+easily built in Debian GNU/Hurd due to missing dependencies.
+
+This could be avoided by providing dummy libraries, which the programs could
+link against, but which wouldn't actually do any hardware access: instead, they
+would simply return appropriate error codes, reporting that no devices were
+found.
+
+There are two possible approaches for providing such stub libraries: Either
+implement replacement libraries providing the same API as the real ones; or
+implement dummy backends for the Hurd in the proper libraries. Which approach
+to prefer probably depends on the structure of the various libraries.
+
+The goal of this project is to create working dummy libraries/backends for the
+mentioned devices, and get them into Debian GNU/Hurd. It shouldn't require any
+special previous knowledge, though some experience with build systems would be
+helpful. Finishing this task will probably require learning a bit about the
+hardware devices in question, and about Debian packaging.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Get one of the libraries to compile on Debian GNU/Hurd. It doesn't
+need to report reasonable error codes yet -- just make it build at all for now.
diff --git a/community/gsoc/project_ideas/language_bindings.mdwn b/community/gsoc/project_ideas/language_bindings.mdwn
new file mode 100644
index 00000000..a27b0d30
--- /dev/null
+++ b/community/gsoc/project_ideas/language_bindings.mdwn
@@ -0,0 +1,67 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Bindings to Other Programming Languages"]]
+
+The main idea of the Hurd design is giving users the ability to easily
+modify/extend the system's functionality ([[extensible_system|extensibility]]).
+This is done by creating [[filesystem_translators|hurd/translator]] and other
+kinds of Hurd servers.
+
+However, in practice this is not as easy as it should, because creating
+translators and other servers is quite involved -- the interfaces for doing
+that are not exactly simple, and available only for C programs. Being able to
+easily create simple translators in RAD languages is highly desirable, to
+really be able to reap the advantages of the Hurd architecture.
+
+Originally Lisp was meant to be the second system language besides C in the GNU
+system; but that doesn't mean we are bound to Lisp. Bindings for any popular
+high-level language, that helps quickly creating simple programs, are highly
+welcome.
+
+Several approaches are possible when creating such bindings. One way is simply
+to provide wrappers to all the available C libraries ([[hurd/libtrivfs]], [[hurd/libnetfs]]
+etc.). While this is easy (it requires relatively little consideration), it may
+not be the optimal solution. It is preferable to hook in at a lower level, thus
+being able to create interfaces that are specially adapted to make good use of
+the features available in the respective language.
+
+These more specialized bindings could hook in at some of the lower level
+library interfaces ([[hurd/libports]], [[hurd/glibc]], etc.); use the
+[[microkernel/mach/MIG]]-provided [[microkernel/mach/RPC]] stubs directly; or
+even create native stubs directly from the interface definitions. The
+[[lisp_bindings_created_by_Flavio_Cruz|flaviocruz]] in last year's GSoC mostly
+use the latter approach, and can serve as a good example.
+
+There is another possible reason for preferring lower-level bindings:
+Presently, the Hurd server libraries use the cthreads threading library, which
+predates the pthread standard prevalent today. There is a pthread library for
+the Hurd as well, but it's not possible to use both cthreads and pthreads in
+the same executable. Thus, until
+[[porting_the_Hurd_libraries_to_pthreads|community/gsoc/project_ideas/pthreads]]
+is finished, implementing bindings for any language that uses pthreads (in the
+runtime environment or the actual programs) is only possible when not using the
+standard Hurd server libraries at all -- i.e. when binding at MIG stub level or
+interface definition level.
+
+The task is to create easy to use Hurd bindings for a language of the student's
+choice, and some example servers to prove that it works well in practice. This
+project will require gaining a very good understanding of the various Hurd
+interfaces. Skills in designing nice programming interfaces are a must.
+
+Anatoly A. Kazantsev has started working on [Python
+bindings](http://savannah.nongnu.org/projects/pyhurd/) last year -- if Python
+is your language of choice, you probably should take his work and complete it.
+
+There was also some previous work on [Perl
+bindings](http://www.nongnu.org/hurdextras/#pith), which might serve as a
+reference if you want to work on Perl.
+
+Possible mentors: Anatoly A. Kazantsev (anatoly) for Python
diff --git a/community/gsoc/project_ideas/lexical_dot-dot.mdwn b/community/gsoc/project_ideas/lexical_dot-dot.mdwn
new file mode 100644
index 00000000..e0dabc01
--- /dev/null
+++ b/community/gsoc/project_ideas/lexical_dot-dot.mdwn
@@ -0,0 +1,40 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Lexical .. Resolution"]]
+
+For historical reasons, [[UNIX]] filesystems have a real (hard) `..` link from each
+directory pointing to its parent. However, this is problematic, because the
+meaning of "parent" really depends on context. If you have a symlink for
+example, you can reach a certain node in the filesystem by a different path. If
+you go to `..` from there, UNIX will traditionally take you to the hard-coded
+parent node -- but this is usually not what you want. Usually you want to go
+back to the logical parent from which you came. That is called "lexical"
+resolution.
+
+Some application already use lexical resolution internally for that reason. It
+is generally agreed that many problems could be avoided if the standard
+filesystem lookup calls used lexical resolution as well. The compatibility
+problems probably would be negligible.
+
+The goal of this project is to modify the filename lookup mechanism in the Hurd
+to use lexical resolution, and to check that the system is still fully
+functional afterwards. This task requires understanding the filename resolution
+mechanism.
+
+See also [[!GNU_Savannah_bug 17133]].
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: This project requires changes to the name lookup mechanism in the
+Hurd-related glibc parts, as well as the Hurd servers. Thus, the exercise task
+should involve hacking glibc or Hurd servers, or even both. Fixing the bug in
+the client-side nfs translator (/hurd/nfs) that makes "rmdir foo/" fail while
+"rmdir foo" works, seems a good candidate.
diff --git a/community/gsoc/project_ideas/libcap.mdwn b/community/gsoc/project_ideas/libcap.mdwn
new file mode 100644
index 00000000..1346203d
--- /dev/null
+++ b/community/gsoc/project_ideas/libcap.mdwn
@@ -0,0 +1,41 @@
+[[!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="Implementing libcap"]]
+
+libcap is a library providing the API to access POSIX capabilities. These allow
+giving various kinds of specific privileges to individual users, without giving
+them full root permissions.
+
+Although the Hurd design should facilitate implementing such features in a quite
+natural fashion, there is no support for POSIX capabilities yet. As a
+consequence, libcap is not available on the Hurd, and thus various packages
+using it can not be easily built in Debian GNU/Hurd.
+
+The first goal of this project is implementing a dummy libcap, which doesn't
+actually do anything useful yet, but returns appropriate status messages, so
+program using the library can be built and run on Debian GNU/Hurd.
+
+Having this, actual support for at least some of the capabilities should be
+implemented, as time permits. This will require some digging into Hurd
+internals.
+
+Some knowledge of POSIX capabilities will need to be obtained, and for the
+latter part also some knowledge about the Hurd architecture. This project is
+probably doable without previous experience with either, though.
+
+David Hedberg applied for this project in 2010,
+and though he didn't go through with it,
+he fleshed out many [[libcap/details]].
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Make libcap compile on Debian GNU/Hurd. It doesn't need to actually
+do anything yet -- just make it build at all for now.
diff --git a/community/gsoc/project_ideas/libcap/details.mdwn b/community/gsoc/project_ideas/libcap/details.mdwn
new file mode 100644
index 00000000..aa27a84e
--- /dev/null
+++ b/community/gsoc/project_ideas/libcap/details.mdwn
@@ -0,0 +1,766 @@
+[[!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="Details on implementing libcap"]]
+
+
+This is the proposal submitted by David Hedberg for GSoC 2010 (who opted
+to go with another mentoring organization), adapted from an initial
+proposal and several amendments into a single document, but the idea
+is to further adapt it to a more neutral design document over time.
+
+
+# The proposal
+
+### Quick description of POSIX capabilities
+
+The original suggestion can be found [[here|libcap]].
+POSIX capabilities never actually entered the POSIX standard but was
+left as a draft. Linux has nevertheless implemented this draft, and
+there are reasons for doing the same in the Hurd - a more fine grained
+control of rights leading to increased security being one of them.
+
+POSIX capabilities are give on a per-process basis, and basically allows
+splitting up those rights usually granted to root into smaller and more
+specific rights. Examples of capabilities are CAP_CHOWN and CAP_KILL,
+overriding certain restrictions on chown and allowing the process to
+kill processes with different UID's, respectively.
+
+Each process is given three sets with capabilities: the Permitted set
+(P), the Effective set (E) and the Inheritable set (I). The effective
+set contains the capabilities that are currently active. The permitted
+set contains the capabilities that the process has the right to use.
+The inheritable set contains the capabilities that can be inherited
+by children to the process. A process can drop capabilities from its
+permitted set, but not set them. The effective set and the inheritable
+set can be changed freely as long as they stay subsets of the permitted
+set.
+
+Capabilities can also be set on executables. When executed, the resulting
+process is given the capabilities both as defined by the parent process
+and by the capabilities set on the file (formula below), resulting in
+what might be explained as a fine-grained setuid. Implementing this
+requires support for *xattr* or similar.
+
+Some applications that are currently using capabilities are samba, ntp,
+vsftp, pure-ftpd, proftpd, squid, asterisk and dovecot.
+
+
+### A quick description of capabilities in Linux
+
+Each process has a three bit fields representing each of the three
+sets (P, E and I). Each bit field is currently built up of two (32
+bit) integers to be able to hold the 33 currently defined capabilities
+(see linux/capability.h). Each process further has a bounding set which
+bounds the permitted set. Two syscalls handles the setting and getting
+of capabilities; *capset* and *capget*. Some related functionality
+can also be controlled by calling *prctl*: the right to read/drop the
+bounding capabilities (PR_CAPBSET_READ/PR_CAPBSET_DROP) and whether
+or not the process should keep its capabilities when a change is made
+to the threads UID's (PR_SET_KEEPCAPS/PR_GET_KEEPCAPS). User space
+applications are expected(recommended?) to use libcap to take advantage
+of the functionality provided. Some applications also use libcap-ng
+which is "intended to make programming with POSIX capabilities much
+easier than the traditional libcap library". Most applications seem
+to be using the original libcap, however.
+
+
+## Implementing libcap
+
+The exercise for this assignment was to get the libcap used in
+Linux to compile under the Hurd. This was accomplished using the
+latest git version of libcap from (..), corresponding to libcap
+2.19. The changes were simple and amounted to simply removing the
+dependency on some Linux-specific headers and creating stubs for
+capset, capget and prctl described above. This suggests that porting
+this library to the Hurd once the proper functionality is in place
+could be relatively simple. The patch is available
+[here](https://alioth.debian.org/tracker/index.php?func=detail&aid=312442&amp;group_id=30628&atid=410472 "Alioth").
+One could also consider implementing the three missing functions in the
+Hurd (or Hurd glibc) which would allow the usage of the Linux libcap
+without modifications. As the Linux libcap maintainer might or might
+not be interested in making libcap multi platform, this approach might
+be preferable.
+
+
+## Implementing POSIX capabilities in the Hurd
+
+As I am still reading up on how things fit together in the Hurd this is
+very likely to contain some misunderstandings and be at least partly off
+the mark. I intend to have grasped this by the time I start working on
+it however, if I were to be given the chance. Below are two possible
+approaches as I have understood them after some reading and discussions
+on #hurd@freenode.
+
+
+### The basics, Approach 1: Special UID's
+
+Let each capability be represented by a specific UID. One could imagine
+reserving a range of the possible uid_t's for this purpose. The euids
+vector in the authhandle struct could perhaps hold the effective set while
+the auids vector could hold the permitted set as these seem to roughly
+correspond to eachother in intent. This leaves the Inheritable set.
+One solution could be to store the inheritable set in the agids vector,
+but that does not seem to be a very natural nor nice solution. One could
+extend the authhandle struct with an additional vector, but one would then
+need to also extend the auth interface with RPC's to be able to modify
+and access it. Another possibility is to store all the capabilities
+in the same idvec and use separate defines for the the different sets
+(CAP_P_CHMOD, CAP_E_CHMOD, CAP_I_CHMOD). This does not seem like a
+good solution.
+
+Storing each capability in its own uid_t might also arguably be somewhat
+wasteful, although this is probably of secondary concern (if at all).
+One could also imagine that legacy applications might be confused,
+although I am not sure I can see any obvious problems. What happens
+when a process have only capability id's?
+
+
+### The basics, Approach 2: Extend the auth interface
+
+This approach would expand the auth interface and extend
+the auth server with another set of RPC's for capabilities
+(*auth_getcaps*, *auth_makecaps*, *auth_user_authenticate* and
+*auth_server_authenticate*), mirroring those currently declared for id's.
+This would obviously require changes to more parts of the Hurd for
+processes to be able to take advantage of capabilities, but as the logic
+behind handling capabilities and that behind handling user id's might
+not be completely comparable, this might make for a cleaner solution.
+It would also remove the problem of having to sensibly map all the
+three capability sets onto semantically differing sets of user/group
+ids, something that might be even more important if we were to also
+implement something like the bounding sets used in Linux or perhaps
+other related functionality. We are also not limited to having to store
+the capabilities as id vectors, although doing so would perhaps still
+make sense.
+
+
+### The individual capabilities
+
+Implementing the individual capabilities will probably have to be thought
+of on a case-by-case basis. Taking chown (in *libdiskfs*) as an example,
+the exact approach would differ slightly depending on how the approach
+taken to implement capabilities. If the first approach were to be taken,
+the UID's (and thus the capabilities) of the caller would already be
+available to the function through the *iouser* struct contained in the
+*protid* struct given as the first argument. Implementing capabilities
+would then simply be a matter of checking for the special UID's. If the
+second approach were to be taken, one would need to perhaps expand the
+iouser struct to contain information about the capabilities.
+
+Just like Linux has defined many Linux-specific capabilities - some of
+which could certainly be useful also applied to the Hurd - one could
+also imagine extending the POSIX capability system also for Hurd specific
+purposes.
+
+
+## Some applications using capabilities
+
+#### Samba 3
+
+Uses CAP_MKNOD and CAP_LEASE in smbd to only keep the necessary abilities.
+Documentation mentions CAP_LINUX_IMMUTABLE as a way to protect files
+from being deleted. Can also use a couple of IRIX specific capabilities
+(CAP_NETWORK_MGT and CAP_DEVICE_MGT) as alternatives to the Linux-specific
+ones if running on IRIX.
+
+
+#### ntpd
+
+Checks if capabilities are supported, more precisely if CAP_SYS_TIME,
+CAP_SETUID, CAP_SETGID, CAP_SYS_CHROOT and CAP_NET_BIND_SERVICE are
+supported. If they are supported, it uses prctl with PR_SET_KEEPCAPS
+to keep privileges across setuid() and then drops root. After done with
+CAP_SETUID, CAP_SETGID, CAP_SYS_CHROOT it drops every capability except
+CAP_SYS_TIME and, if needed, CAP_NET_BIND_SERVICE.
+
+
+#### vsftpd
+
+Uses CAP_CHOWN, CAP_NET_BIND_SERVICE when using the "one process"
+security model (typically disabled by default).
+
+
+#### proftpd-basic
+
+Provides support for capabilities from mod_cap. Uses CAP_USE_CHOWN,
+CAP_USE_DAC_OVERRIDE, CAP_USE_DAC_READ_SEARCH and CAP_USE_AUDIT_WRITE.
+Distribution contains README.capabilities with some explanations.
+Also ships with their own libcap for some reason, based on libcap 1.10.
+
+
+#### dovecot
+
+Keeps CAP_CHOWN, CAP_SYS_CHROOT, CAP_SETUID, CAP_SETGID,
+CAP_NET_BIND_SERVICE, CAP_DAC_OVERRIDE for proper operations, drops
+the rest.
+
+
+#### bind9
+
+Reasons for each capability are clearly noted in comments in update.c
+in linux_initialprivs() and linux_minprivs(). initialprivs drops all
+capabilities and proceeds to set CAP_NET_BIND_SERVICE, CAP_SYS_CHROOT,
+CAP_SETUID, CAP_SETGID, CAP_DAC_READ_SEARCH and CAP_CHOWN. minprivs only
+sets CAP_NET_BIND_SERVICE and CAP_SYS_RESOURCE.
+
+
+#### pulseaudio
+
+Mentions CAP_NICE (CAP_SYS_NICE), but does not appear to be using it
+(anymore?). Seems to use libcap to drop caps, however.
+
+
+#### pinentry
+
+Checks if CAP_IPC_LOCK is available and "uses it" to gain only the
+ability to lock memory when needed.
+
+
+#### zsh
+
+Comes with a module "caps" which contains "[b]uiltins for manipulating
+POSIX.1e (POSIX.6) capability (privilege) sets." Most useful here is the
+"cap" builtin, which makes it possible to change the shell's process
+capability sets. This might be useful for testing.
+
+
+#### inetutils (ping,traceroute)
+
+Does not use capabilities explicitly, but is nevertheless a useful
+example of how file capabilities could be used. ping and traceroute
+are currently installed suid root since they need to be able to open
+raw sockets. With file capabilities, this could be accomplished by
+instead setting the capability CAP_NET_RAW on the two executables,
+thus giving the utilities almost only the specific rights they need.
+
+
+## The capabilities
+
+The above might give some hint as to what capabilities should be
+prioritized. One assumption I have made is that the goal of this project
+is to implement, as far as possible, the same functionality as what is
+present in Linux. No effort has (so far) been made to look into possible
+applications specific to the Hurd.
+
+A few of the above mentioned applications also explicitly uses
+PR_SET_KEEPCAPS (through prctl()) to specify that capabilities should
+be passed on to children. This means that the implementation in the
+Hurd should take this into account.
+
+I have below done a preliminary classification of the capabilities
+as defined in Linux capability.h into four "classes": Network, File
+management, "glibc -> mach" and Other. There are also some capabilities
+that either depend on functionality not implemented or are too Linux
+specific. I have not described each capability in detail as looking
+at the comments in capability.h and reading in capabilities(7) are
+better sources.
+
+
+### The Networking Class
+
+These would mostly affect pfinet. The general picture seem to be that
+pfinet currently uses a boolean (int) isroot in struct sock_user to keep
+track of the credentials of the caller. This would need to be expanded
+somehow to keep track of the separate capabilities.
+
+CAP_NET_BIND_SERVICE: Allow binding to TCP/UDP sockets below 1024
+CAP_NET_RAW: Allow use of RAW and PACKET sockets.
+CAP_NET_BROADCAST: "Allow broadcasting, listen to multicast"
+CAP_NET_ADMIN: This seem to be a bit of a "catch-all" for network-related
+administration.
+
+
+### The Files Management Class
+
+The description of CAP_CHOWN in the original proposal should apply to
+(most of?) these. That is, modify the iouser struct. At least libdiskfs
+should be modified, but the same or similar modifications might need to
+be made to several servers (libnetfs..? The actual servers implementing
+the filesystem?)
+
+CAP_CHOWN: "Make arbitrary changes to file UIDs and GIDs"
+CAP_FOWNER: allow chmod, utime, .. for files not owned.
+CAP_FSETID: Don't clear setuid/setgid when a file is modified.
+CAP_DAC_OVERRIDE and
+CAP_DAC_READ_SEARCH: Bypasses file/directory read/write/execute permission
+checks. ( hurdexec.c, file-access.c, .. ? )
+CAP_MKNOD: allows usage of "the privileged aspects of mknod()". Does this
+one make sense in the Hurd?
+
+
+### The (glibc -> gnumach) Class
+
+These seem to be implemented in glibc by direct calls to gnumach.
+If they should be implemented, maybe a proxy in the Hurd is needed?
+
+CAP_SYS_TIME: manipulate the system clock, set real-time clock.
+CAP_IPC_LOCK: mlock, mlockall, mmap, shmctl
+CAP_KILL: No permission checks for killing processes
+CAP_SYS_NICE: setpriority/getpriority for arbitrary processes.
+
+
+### The Rest Class
+
+CAP_SYS_CHROOT: Allows usage of chroot().
+It's either really simple (not needed in the case of the Hurd) or really
+difficult. Needs some figuring out. One of the calls that should be
+high-priority.
+CAP_SYS_ADMIN: General administration rights. Seemingly sprinkled out
+into just about everything. Quick grep through the Linux sources gives
+440 hits in .c-files.
+CAP_SYS_BOOT: Allow use of reboot().
+glibc calls init:startup_reboot..
+CAP_SETGID: Allows usage of setgid,setgroups and "forged gids on socket
+credentials passing"
+CAP_SETUID: Allows usage of set*uid and "forged pids on socket credentials
+passing"
+CAP_SYS_TTY_CONFIG: vhangup, some other places. vhangup() is a stub in
+the Hurd, but maybe the console server is otherwise affected?
+CAP_SYS_RESOURCE: Override various limits. (quota, reserved space etc.
+on ext2, interrupt frequencies, consoles,...). According to "The Critique"
+mach performs no resource accounting so some of these might be moot to
+implement, while others still apply.
+CAP_SYS_RAWIO Allow raw input/output. Sprinkled in many places,
+device drivers among others. Many of these will probably be difficult
+to implement.
+CAP_SETPCAP: This one has (or had?) two different usages in Linux:
+If file capabilities are not supported it gives the right to grant
+or remove capabilities from the permitted set of arbitrary processes.
+If file capabilities are supported, it allows for removing capabilities
+from the bounding set of the current process. As the Hurd implementation
+won't have file capabilities initially it might make sense to implement
+this if possible. If bounding sets are implemented this should probably
+be the way provided to modify them.
+
+
+### Unimplementable
+
+*(At this point in time, as far as I can determine)*
+
+CAP_LINUX_IMMUTABLE: depends on chattr etc. working.
+CAP_SETFCAP: depends on xattr's
+CAP_SYS_PACCT: acct() missing in the Hurd.
+CAP_SYS_MODULE, CAP_SYS_PTRACE, CAP_MAC_OVERRIDE, CAP_MAC_ADMIN,
+CAP_AUDIT_WRITE, CAP_AUDIT_CONTROL, CAP_LEASE
+
+
+## Priority when implementing
+
+The two most used capabilities as unscientifically judged from
+the selection of applications above are CAP_NET_BIND_SERVICE and
+CAP_CHOWN, suggesting that implementing the "network class" and the
+"file management" class of capabilities as classified above might be a
+good start. These also, to me, seem to be easier classes to implement.
+CAP_NET_ADMIN might need some extra work.
+
+Second most common were CAP_SYS_CHROOT, CAP_SETGID and CAP_SETUID. I am
+not completely clear on how these should be handled.
+
+Assuming those are out of the way, CAP_IPC_LOCK, CAP_SYS_TIME, CAP_KILL
+and CAP_SYS_NICE might be a good choice to tackle if possible. This
+might, if I have understood things correctly, involve writing a proxy
+Hurd server for these calls in mach.
+
+CAP_SYS_ADMIN, CAP_SYS_RESOURCE and CAP_SYS_RAWIO. These contains a bit
+of "everything" (ADMIN being the worse one), meaning that experience
+and infrastructure gained from implementing the previous capabilities
+might come in handy. CAP_SYS_RAWIO might be difficult; it can be found
+inside many drivers in the Linux source.
+
+
+## Additional general details
+
+[This article](http://www.ibm.com/developerworks/library/l-posixcap.html)
+contains a good general description of how capabilities in Linux
+works. As there will be no file capabilities in the Hurd initially,
+an approach emulating the behavior Linux exhibits when SECURE_NOROOT
+and SECURE_NO_SETUID_FIXUP are *not* set seems to be a good start.
+This is called the "root-user-is-privileged" model in the article,
+and somewhat simplified it means that processes started by root, or
+setuid-root, is given all capabilities no matter what capabilities the
+parent might or might not hold at the time of execution. Quoting verbatim
+from the article:
+
+> * When SECURE_NOROOT is not set, then when a process executes a file,
+> the new capability sets may be calculated as though the file had some
+> file capability sets set fully populated. In particular:
+>
+> * The file inheritable and permitted sets will be full on if the
+> process's real or effective uid is 0 (root) or the file is setuid
+> root.
+>
+> * The file effective set will be full on if the process's effective
+> uid is root or the file is setuid root.
+>
+>
+> * When SECURE_NO_SETUID_FIXUP is not set, then when a process switches
+> its real or effective uids to or from 0, capability sets are further
+> shifted around:
+>
+> * If a process switches its effective uid from 0 to non-0, then its
+> effective capability set is cleared.
+>
+> * If a process switches its real, effective, or saved uids from at
+> least one being 0 to all being non-zero, then both the permitted
+> and effective capabilities are cleared.
+>
+> * If a process sets its effective uid from non-zero to 0, then the
+> effective capabilities are set equal to the permitted capabilities.
+
+The capabilities of the resulting process are determined by the following
+formulas, again taken from the article, with p for Process and f for file:
+
+> pI' = pI
+> pP' = fP | (fI & pI)
+> pE' = pP' & fE
+
+The security under the above described model, being what at least some
+of the applications I listed in my last comment employs, is basically
+the following (also detailed somewhat in the same article):
+
+* Execute process as root (or setuid) to gain all capabilities.
+
+* Use the prctl system call to enable keepcaps for the process
+ (same(?) effect as enabling SECURE_NO_SETUID_FIXUP for the process).
+ keepcaps should be off by default.
+
+* setuid to a non-root user, and by doing so losing the possibility to
+ regain capabilities by simply starting a new process.
+
+* Drop all the capabilities except those few actually needed.
+
+
+## Infrastructure details - Special UIDs approach
+
+The auth server must somehow keep track of three sets of capabilities.
+I suggest keeping these three sets in three additional idvec's in the
+authhandle struct, and will for the purpose of this description name
+these pcaps (permitted), ecaps (effective) and icaps (inheritable).
+This will simplify keeping track of the internal logic somewhat.
+In addition to this, there is a need to keep track of the "keepcaps" flag
+as described above. I suggest representing this with an int keepcaps
+in the same struct.
+
+1. Expand authhandle struct with three additional idvecs and one integer.
+Fix static functions handling the struct, such as destroy_authhandle.
+
+2. Implement the necessary logic in auth_makeauth to handle capabilities.
+
+Problems:
+Assume that all capabilities are mapped onto uids, given names on the form
+uid_<capability>, for example uid_cap_net_raw. Assume that the presence
+of an uid in euids suggest that the capability is in the effective set
+of the process, that the presence of this uid in auids suggests that it
+is in the permitted set of the process, and that the presence of this
+uid in aguids suggest that it is in the inheritable set of the process.
+That they are internally stored in separate idvec's can be ignored as
+an implementation detail.
+
+* The UID's have as it is different meanings depending on where in the
+ array they are positioned, and certain clients seem to rely on this.
+ The first UID in euids is the effective uid, and the first and second
+ UIDs in auids are the real and saved UIDS respectively. At least
+ some users of makeauth would need to made aware of capabilities,
+ for example setuid in glibc.
+
+* Setting/getting the keepcaps-flag is also a bit of a problem. To avoid
+ changing the auth interface yet another special UID could be used
+ for this purpose, although that seems to be really stretching it.
+ The cleaner solution would probably be to expand the interface with
+ something along the lines of auth_setkeepcaps/auth_getkeepcaps.
+ This interface would only be used by prctl.
+
+Another problem with this approach is that it seems a bit difficult
+to oversee the affects that using other RPC's like fsys_getroot and
+io_restrict_auth might have on capabilities.
+
+
+## Infrastructure details - "extend-interfaces" approach
+
+This approach has started to seem like the better way to me, as the
+usage of capabilities becomes more explicit through the entire "chain",
+perhaps making it somewhat more easy to understand all the interactions.
+
+I suggest something like the following new interface methods:
+
+***
+
+
+### The auth interface
+
+ routine auth_getauth_caps (
+ handle: auth_t;
+ out euids: idarray_t;
+ out auids: idarray_t;
+ out egids: idarray_t;
+ out agids: idarray_t;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t);
+
+ routine auth_makeauth_caps (
+ handle: auth_t;
+ other_handles: portarray_t;
+ euids: idarray_t;
+ auids: idarray_t;
+ egids: idarray_t;
+ agids: idarray_t;
+ ecaps: idarray_t;
+ pcaps: idarray_t;
+ icaps: idarray_t;
+ flags: int; /* keepcaps.. ? */
+ out newhandle: mach_port_make_send_t);
+
+ routine auth_server_authenticate_caps (
+ handle: auth_t;
+ sreplyport reply: mach_port_poly_t;
+ rendezvous: mach_port_send_t;
+ newport: mach_port_poly_t;
+ out euids: idarray_t;
+ out auids: idarray_t;
+ out egids: idarray_t;
+ out agids: idarray_t;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t);
+
+
+### The io interface
+
+ routine io_restrict_auth_caps (
+ io_object: io_t;
+ RPT
+ out new_object: mach_port_send_t;
+ uids: idarray_t SCP;
+ gids: idarray_t SCP;
+ ecaps: idarray_t SCP);
+
+
+### The fsys interface
+
+ routine fsys_getroot_caps (
+ 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;
+ out ecaps: idarray_t;
+ out pcaps: idarray_t;
+ out icaps: idarray_t;
+ flags: int;
+ out do_retry: retry_type;
+ out retry_name: string_t;
+ out file: mach_port_send_t);
+
+***
+
+These are meant to be able to replace the old methods with
+capability-aware methods, instead of merely complementing them.
+The replacing work could then be made a more gradual process. Steps:
+
+* Extend authhandle with the same data members as in the UID-case.
+
+* Implement new _caps-functions according to described interface
+ extensions above, refactor code a bit to share common uid-handling
+ logic. Both makeauth's should drop all capabilities if switching from
+ uid 0 without having keepcaps. For example, keepcaps should be unset
+ by default.
+
+* Fix glibc. Extend hurd_id_data in hurd/id.h to store capabilities,
+ switch to capability aware functions where necessary.
+
+* io-reauthenticate. Fix implementations to use
+ auth_server_authenticate_caps instead. For this we also need somewhere
+ to save the caps, so it ties in with for example the extension of
+ iouser as mentioned in the details.
+
+* fsys_getroot. Implement fsys_getroot_caps in libdiskfs, trans,
+ libtreefs, libtrivs, libnetfs. Fix users of function in libdiskfs,
+ libfshelp, settrans, libtreefs, clookup.
+
+* io_restrict_auth. Implement io_restrict_auth_caps in libdiskfs,
+ libtreefs, libtrivfs, libnetfs, boot. Fix users in utils(symlink,
+ firmlink), libtrivs, term, clookup
+
+Among the problems might be that there are a lot of arguments that
+needs to be passed around, and that it seems somewhat ugly to end up
+with function names referencing caps in particular.
+
+Below some more about the specific capabilities. This should in large
+be common to the two approaches above.
+
+
+## Actually handing out the capabilities to process
+
+This seems like a good job for the file_exec route in the fs interface.
+Quoting from the comments above the definition in fs.defs: "*Necessary
+initialization, including authentication changes associated with set[ug]id
+execution must be handled by the filesystem*". The capability-granting
+functionality should to be added in at least the implementations in
+libdiskfs and libnetfs as far as I can determine, and should be "easy
+enough" once the infrastructure for implementing the file-related
+capabilities (CAP_CHOWN etc.) are in place. This also seem to make
+sense considering the future possibility for file capabilities.
+
+
+## Some implementation details of individual capabilities.
+
+### Net-related capabilities.
+
+This turned out to be a bit less work than I had thought, as the
+imported Linux code already seem to contain all the necessary checks.
+What remains to do to implement all of these capabilities is mostly a
+matter of putting some infrastructure in place.
+
+* In struct sock_user (pfinet.h), change isroot for idvec
+ caps. Alternatively, add idvec caps.
+
+* Change the function make_sock_user in socket.c to take an idvec caps
+ as a parameter and properly set the given caps to the corresponding
+ idvec in sock_user.
+
+* Fix users of make_sock_user: S_io_reauthenticate, S_io_restrict_auth,
+ S_socket_create, S_socket_accept. This should be doable with the
+ current infrastructure. For example, S_socket_create currently
+ sets isroot in the new sock_user from the corresponding member in
+ the trivfs_protid struct. This does not present a problem however,
+ as the latter struct also provides access to an iouser (iohelp.h)
+ from which the needed uids of the user should be available.
+
+* Fix up parts of source from Linux, modify task_struct add idvec,
+ modify prepare_current to take the caps idvec instead of isroot.
+ Re-implement the existing function capable(int cap) to actually check
+ for the capability passed as an argument instead of just return isroot.
+
+* Change a few isroot's at 3 other places in the code to check for
+ capabilities. Since these places all have access to isroot and thus by
+ implication the sock_user, they also have access to the new capability
+ information; no restructuring necessary.
+
+
+### File-related capabilities
+
+While there are a lot of servers in the Hurd, I am not sure all of these
+capabilities actually make sense to implement in all of them.
+
+
+#### CAP_CHOWN
+
+Implementing this in libdiskfs should take care of it where it makes
+sense. Servers using libdiskfs uses iouser from libiohelp to hold
+user credentials. As noted above, this struct is already capable of
+holding our capabilities as uid's or is otherwise extended to contain
+the necessary idvecs if using the second general approach. Adding a
+check along the lines of *idvec_contains(uid_cap_chown)* in function
+diskfs_S_file_chown (file-chown.c) should be all that's needed.
+
+In libnetfs, netfs_attempt_chown is declared as a function that the
+server using the library must implement. Any checks for chown rights
+are however most likely performed on the server side, suggesting that
+there is nothing we can do here to implement CAP_CHOWN. Even if we do
+need to add something, an iouser containing the necessary information
+to implement the checks in a manner analogous to that in libdiskfs seems
+to be passed to each important function.
+
+
+#### CAP_DAC_*
+
+These might actually make sense to implement in more servers, and the
+logic seems somewhat involved. Need to add the necessary checks to
+at least file_check_access, file_exec in libdiskfs. file_exec also in
+libnetfs, probably. Possibly changes also in other places.
+
+The main difficulties overall seem to lie in getting the infrastructure
+properly in place rather than implementing most of the individual
+capabilities, and I have updated the schedule a bit in an attempt to
+reflect this.
+
+
+## Schedule updating
+
+The more I look into this the less time it seems likely to take to
+do the work. Below is my best estimation at the moment, and I have
+basically adjusted everything to what I think is more likely estimations.
+If this is correct I would be more or less around midterm. I haven't
+gone completely to the individual level as that doesn't seem to make
+sense, but what is clustered together are either related capabilities
+or a collection of capabilities classified roughly with regards to how
+much I know about the area and how many different rights they control.
+It's not my intention to "slack off" or anything, so if this estimation
+were to be correct I could perhaps take a look at the xattrs-patch,
+or spend the rest of my time fixing PATH_MAX-issues. Then again, maybe
+there is some great difficulty hidden somewhere.
+
+
+#### Some justifications:
+
+Dummy libcap, more or less done.
+*1 day* (making sure it "fails gracefully" shouldn't really take longer than this)
+
+Application for testing, the beginnings of a fairly extensive "test suit" on Linux.
+*2 days*
+
+Basic infrastructure.
+*5 days*, depends on the chosen approach, but it is probably wise to
+reserve at least a bunch of days for this.
+
+Implementations of prctl/capset/capget in libshouldbeinlibc,
+or a port of libcap to the Hurd in any other way.
+*5 days*
+
+CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_NET_BROADCAST, CAP_NET_ADMIN
+*4 days*, as noted above this should be easy, but it might uncover bugs
+in the newly implemented infrastructure for example.
+
+CAP_CHOWN,CAP_FOWNER,CAP_FSETID
+*2 days*, I think these only needs to be done in libdiskfs
+
+CAP_DAC_OVERRIDE,CAP_DAC_READ_SEARCH
+*4 days*, these might need changes to various servers
+
+CAP_SYS_TIME,CAP_IPC_LOCK,CAP_KILL
+CAP_SYS_NICE,CAP_SYS_CHROOT,CAP_SYS_BOOT
+*2 weeks*, these are varied and I'm not that sure exactly how each should
+be tackled so some research is needed.
+
+CAP_SETGID,CAP_SETUID,CAP_SYS_TTY_CONFIG
+*4 days*
+
+CAP_SYS_ADMIN,CAP_SYS_RESOURCE,CAP_SYS_RAWIO
+*2 weeks*, these too are pretty varied and some might need some individual
+researching
+
+CAP_SETPCAP
+*1 day*
+
+
+## Schedule
+
+24/5 Start coding
+25/5 Dummy libcap ready for use.
+27/5 The beginnings of a "test suite", written on Linux.
+ 1/6 Basic infrastructure in place
+ 6/6 Dummy libcap extended with real functionality to make use of
+ implemented capability and infrastructure, or the Hurd adapted for
+ compatibility with Linux libcap.
+10/6 The "network class" of capabilities implemented.
+12/6 CAP_CHOWN, CAP_FOWNER, CAP_FSETID
+16/6 CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH
+30/6 CAP_SYS_TIME, CAP_IPC_LOCK, CAP_KILL, CAP_SYS_NICE,
+ CAP_SYS_CHROOT, CAP_SYS_BOOT
+ 4/7 CAP_SETGID,CAP_SETUID,CAP_SYS_TTY_CONFIG
+12/7 "Mentors and students can begin submitting mid-term evaluations"
+16/7 GSoC Mid-term evaluations deadline.
+18/7 CAP_SYS_ADMIN, CAP_SYS_RESOURCE, CAP_SYS_RAWIO
+19/7 CAP_SETPCAP
diff --git a/community/gsoc/project_ideas/libdiskfs_locking.mdwn b/community/gsoc/project_ideas/libdiskfs_locking.mdwn
new file mode 100644
index 00000000..0618bbe6
--- /dev/null
+++ b/community/gsoc/project_ideas/libdiskfs_locking.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Fix libdiskfs Locking Issues"]]
+
+Nowadays the most often encountered cause of Hurd crashes seems to be lockups
+in the [[hurd/translator/ext2fs]] server. One of these could be traced
+recently, and turned out to be a lock inside [[hurd/libdiskfs]] that was taken
+and not released in some cases. There is reason to believe that there are more
+faulty paths causing these lockups.
+
+The task is systematically checking the [[hurd/libdiskfs]] code for this kind of locking
+issues. To achieve this, some kind of test harness has to be implemented: For
+example instrumenting the code to check locking correctness constantly at
+runtime. Or implementing a unit testing framework that explicitly checks
+locking in various code paths. (The latter could serve as a template for
+implementing unit checks in other parts of the Hurd codebase...)
+
+(A systematic code review would probably suffice to find the existing locking
+issues; but it wouldn't document the work in terms of actual code produced, and
+thus it's not suitable for a GSoC project...)
+
+[Linux' *sparse*](https://sparse.wiki.kernel.org/) could be worth looking at.
+
+This task requires experience with debugging locking issues in multithreaded
+applications.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: If you could actually track down and fix one of the existing locking
+errors before the end of the application process, that would be excellent. This
+might be rather tough though, so probably you need to talk to us about an
+alternative exercise task...
diff --git a/community/gsoc/project_ideas/libgtop.mdwn b/community/gsoc/project_ideas/libgtop.mdwn
new file mode 100644
index 00000000..14304de2
--- /dev/null
+++ b/community/gsoc/project_ideas/libgtop.mdwn
@@ -0,0 +1,34 @@
+[[!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="Porting libgtop"]]
+
+libgtop is a library used by many applications (especially GNOME applications)
+to abstract the system-specific methods for obtaining information about the
+current state of the system -- processes running, system load etc.
+
+A [[Linux-compatible_procfs|madhusudancs]] implementation has been created
+during GSoC 2008, and should cover a large part of the functionality of
+libgtop. However, not all necessary information is exported via /proc (even on
+Linux); there are some bits still missing in the Hurd procfs implementation;
+and there are a couple of bugs that need to be fixed to make it fully usable.
+
+The goal of this project is a fully functional libgtop in Debian GNU/Hurd. Some
+application(s) using it also need to be ported, e.g. gnome-system-monitor.
+
+Some bits of this work are easy, others need some digging into Hurd internals.
+This task doesn't require any specific previous knowledge (besides of general
+C/UNIX programming skills of course); but during the course of the project,
+some knowledge about Hurd internals will have to be obtained, along with a bit
+of Debian stuff.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix one of the shortcomings in the existing procfs implementation.
diff --git a/community/gsoc/project_ideas/maxpath.mdwn b/community/gsoc/project_ideas/maxpath.mdwn
new file mode 100644
index 00000000..5be8917f
--- /dev/null
+++ b/community/gsoc/project_ideas/maxpath.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]]."]]"""]]
+
+[[!meta title="Fixing Programs Using PATH_MAX et al Unconditionally"]]
+
+POSIX describes some constants (or rather macros) like PATH_MAX/MAXPATHLEN and
+similar, which may be defined by the system to indicate certain limits. Many
+people overlook the *may* though: Systems only should define them if they
+actually have such fixed limits. The Hurd, following the GNU Coding Standards,
+tries to avoid this kind of arbitrary limits, and consequently doesn't define
+the macros.
+
+Many programs however just assume their presence, and use them unconditionally.
+This is simply sloppy coding: not only does it violate POSIX and fails on
+systems not defining the macros, but in fact most common use cases of these
+macros are simply wrong! (See
+<http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html> for some
+hints as to why this is so.)
+
+There are a few hundred packages in Debian GNU/Hurd failing to build because of
+this -- simply grep for the offending macros in the
+[list_of_build_failures](http://unstable.buildd.net/buildd/hurd-i386_Failed.html).
+
+Fixing these issues usually boils down to replacing `char foo[PATH_MAX]`
+by `char *foo`, and using dynamic memory allocation, i.e. e.g. a loop
+that tries geometrically growing sizes. Sometimes this is tricky, but
+more often not very hard. Sometimes it is even trivial because the GNU
+system has proper replacements. See the corresponding section of the
+[[porting_guidelines_page|hurd/porting/guidelines]] for more details. With a bit of
+practice, it should be easily possible to fix several programs per day.
+
+The goal of this project is to fix the PATH_MAX and related problems in a
+significant number of packages, and make the fixes ready for inclusion in
+Debian and (where possible) upstream. No Hurd-specific knowledge is needed, nor
+any other special knowledge aside from general C programming skills.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Fix the PATH_MAX issues in some Debian package.
diff --git a/community/gsoc/project_ideas/mtab.mdwn b/community/gsoc/project_ideas/mtab.mdwn
new file mode 100644
index 00000000..a60a8038
--- /dev/null
+++ b/community/gsoc/project_ideas/mtab.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!meta title="mtab"]]
+
+In traditional monolithic system, the kernel keeps track of all mounts; the
+information is available through `/proc/mounts` (on Linux at least), and in a
+very similar form in `/etc/mtab`.
+
+The Hurd on the other hand has a totally
+[[decentralized_file_system|hurd/virtual_file_system]]. There is no single
+entity involved in all mounts. Rather, only the parent file system to which a
+mountpoint ([[hurd/translator]]) is attached is involved. As a result, there
+is no central place keeping track of mounts.
+
+As a consequence, there is currently no easy way to obtain a listing of all
+mounted file systems. This also means that commands like `df` can only work on
+explicitly specified mountpoints, instead of displaying the usual listing.
+
+One possible solution to this would be for the translator startup mechanism to
+update the `mtab` on any `mount`/`unmount`, like in traditional systems.
+However, there are some problems with this approach. Most notably: what to do
+with passive translators, i.e., translators that are not presently running, but
+set up to be started automatically whenever the node is accessed? Probably
+these should be counted among the mounted filesystems; but how to handle the
+`mtab` updates for a translator that is not started yet? Generally, being
+centralized and event-based, this is a pretty inelegant, non-hurdish solution.
+
+A more promising approach is to have `mtab` exported by a special translator,
+which gathers the necessary information on demand. This could work by
+traversing the tree of translators, asking each one for mount points attached
+to it. (Theoretically, it could also be done by just traversing *all* nodes,
+checking each one for attached translators. That would be very inefficient,
+though. Thus a special interface is probably required, that allows asking a
+translator to list mount points only.)
+
+There are also some other issues to keep in mind. Traversing arbitrary
+translators set by other users can be quite dangerous -- and it's probably not
+very interesting anyways what private filesystems some other user has mounted.
+But what about the global `/etc/mtab`? Should it list only root-owned
+filesystems? Or should it create different listings depending on what user
+contacts it?...
+
+That leads to a more generic question: which translators should be actually
+listed? There are different kinds of translators: ranging from traditional
+filesystems ([[disks|hurd/libdiskfs]] and other actual
+[[stores|hurd/translator/storeio]]), but also purely virtual filesystems like
+[[hurd/translator/ftpfs]] or [[hurd/translator/unionfs]], and even things that
+have very little to do with a traditional filesystem, like a
+[[gzip_translator|hurd/translator/storeio]],
+[[mbox_translator|hurd/translator/mboxfs]],
+[[xml_translator|hurd/translator/xmlfs]], or various device file translators...
+Listing all of these in `/etc/mtab` would be pretty pointless, so some kind of
+classification mechanism is necessary. By default it probably should list only
+translators that claim to be real filesystems, though alternative views with
+other filtering rules might be desirable.
+
+After taking decisions on the outstanding design questions, the student will
+implement both the actual [[mtab_translator|hurd/translator/mtabfs]], and the
+necessary interface(s) for gathering the data. It requires getting a good
+understanding of the translator mechanism and Hurd interfaces in general.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
+
+Exercise: Make some improvement to any of the existing Hurd translators.
+Especially those in [hurdextras](http://www.nongnu.org/hurdextras/) are often
+quite rudimentary, and it shouldn't be hard to find something to improve.
diff --git a/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn b/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn
new file mode 100644
index 00000000..67e3fc28
--- /dev/null
+++ b/community/gsoc/project_ideas/namespace-based_translator_selection.mdwn
@@ -0,0 +1,82 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Namespace-based Translator Selection"]]
+
+The main idea behind the Hurd is to make (almost) all system functionality
+user-modifiable ([[extensible_system|extensibility]]). This includes a
+user-modifiable filesystem: the whole filesystem is implemented decentrally, by
+a set of filesystem servers forming the directory tree together, a
+[[hurd/virtual_file_system]]. These filesystem servers are called
+[[translators|hurd/translator]], and are the most visible feature of the Hurd.
+
+The reason they are called translators is because when you set a translator on
+a filesystem node, the underlying node(s) are hidden by the translator, but the
+translator itself can access them, and present their contents in a different
+format -- translate them. A simple example is a
+[[gunzip_translator|hurd/translator/storeio]], which can be set on a gzipped
+file, and presents a virtual file with the uncompressed contents. Or the other
+way around. Or a translator that presents an
+[[XML_file_as_a_directory_tree|hurd/translator/xmlfs]]. Or an mbox as a set of
+individual files for each mail ([[hurd/translator/mboxfs]]); or ever further
+breaking it down into headers, body, attachments...
+
+This gets even more powerful when translators are used as building blocks for
+larger applications: A mail reader for example doesn't need backends for
+understanding various mailbox formats anymore. All formats can be parsed by
+special translators, and the mail reader gets the data as a uniform, directly
+usable filesystem structure. Translators can also be stacked: If you have a
+compressed mailbox for example, first apply a gunzip translator, and then an
+mbox translator on top of that.
+
+There are a few problems with the way translators are set, though. For one,
+once a translator is set on a node, you always see the translated content. If
+you need the untranslated contents again, to do a backup for example, you first
+need to remove the translator again. Also, having to set a translator
+explicitly before accessing the contents is pretty cumbersome, making this
+feature almost useless.
+
+A possible solution is implementing a mechanism for selecting translators
+through special filename attributes. For example you could use
+`index.html.gz,,+` and `index.html.gz,,-` to choose between translated and
+untranslated versions of a file. Or you could use `index.html.gz,,u` to get
+the contents of the file with a gunzip translator applied automatically. You
+could also use attributes on whole directory trees: `.,,0/` would give you a
+directory tree corresponding to the current directory, but with any translators
+disabled, for doing a backup. And `site,,u/*.html.gz` would present a whole
+directory tree of compressed HTML files as uncompressed files.
+
+One benefit of the Hurd's flexibility is that it should be possible to
+implement such a mechanism without touching the existing Hurd components:
+Rather, just implement a special proxy, that mirrors the normal filesystem, but
+is able to interpret the special extensions and present transformed files in
+place of the original ones.
+
+In the long run it's probably desirable to have the mechanism implemented in
+the standard name lookup mechanism, so it will be available globally, and avoid
+the overhead of a proxy; but for the beginning the proxy solution is much more
+flexible.
+
+The goal of this project is implementing a prototype proxy; perhaps also a
+first version of the global variant as proof of concept, if time permits. It
+requires good understanding of the name lookup mechanism, and translator
+programming; but the implementation should not be too hard. Perhaps the hardest
+part is finding a convenient, flexible, elegant, hurdish method for mapping the
+special extensions to actual translators...
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Try to make some modification to the existing unionfs and/or firmlink
+translators. (More specific suggestions welcome... :-) )
+
+*Status*: Sergiu Ivanov has been working *voluntarily* on
+[[namespace-based_translator_selection|scolobb]], as an inofficial GSoC 2008
+participant! Not all the desired functionality is in place yet; work is
+ongoing.
diff --git a/community/gsoc/project_ideas/nfs.mdwn b/community/gsoc/project_ideas/nfs.mdwn
new file mode 100644
index 00000000..e7c18324
--- /dev/null
+++ b/community/gsoc/project_ideas/nfs.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Improved NFS Implementation"]]
+
+The Hurd has both NFS server and client implementations, which work, but not
+very well: File locking doesn't work properly (at least in conjunction with a
+GNU/Linux server), and performance is extremely poor. Part of the problems
+could be owed to the fact that only NFSv2 is supported so far.
+
+(Note though that locking on the Hurd is problematic in general, not only in
+conjunction with NFS -- see the [[file_locking]] task.)
+
+This project encompasses implementing NFSv3 support, fixing bugs and
+performance problems -- the goal is to have good NFS support. The work done in
+a previous unfinished GSoC project can serve as a starting point.
+
+Both client and server parts need work, though the client is probably much more
+important for now, and shall be the major focus of this project.
+
+Some [discussion of NFS
+improvements](http://lists.gnu.org/archive/html/bug-hurd/2008-04/msg00035.html)
+has been done for a former GSoC application -- it might give you some pointers.
+But don't take any of the statements made there for granted -- check the facts
+yourself!
+
+This task, [[!GNU_Savannah_task 5497]], has no special prerequisites besides general programming skills, and
+an interest in file systems and network protocols.
+
+Possible mentors: ?
+
+Exercise: Look into one of the existing issues in the NFS code. It's quite
+possible that you will not be able to fix any of the visible problems before
+the end of the application process; but you might discover something else you
+could improve in the code while working on it :-)
+
+If you can't find anything suitable, talk to us about possible other exercise
+tasks.
diff --git a/community/gsoc/project_ideas/package_manager.mdwn b/community/gsoc/project_ideas/package_manager.mdwn
new file mode 100644
index 00000000..23304f6b
--- /dev/null
+++ b/community/gsoc/project_ideas/package_manager.mdwn
@@ -0,0 +1,51 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Hurdish Package Manager for the GNU System"]]
+
+Most GNU/Linux systems use pretty sophisticated package managers, to ease the
+management of installed software. These keep track of all installed files, and
+various kinds of other necessary information, in special databases. On package
+installation, deinstallation, and upgrade, scripts are used that make all kinds
+of modifications to other parts of the system, making sure the packages get
+properly integrated.
+
+This approach creates various problems. For one, *all* management has to be
+done with the distribution package management tools, or otherwise they would
+loose track of the system state. This is reinforced by the fact that the state
+information is stored in special databases, that only the special package
+management tools can work with.
+
+Also, as changes to various parts of the system are made on certain events
+(installation/deinstallation/update), managing the various possible state
+transitions becomes very complex and bug-prone.
+
+For the official (Hurd-based) GNU system, a different approach is intended:
+making use of Hurd [[translators|hurd/translator]] -- more specifically their
+ability to present existing data in a different form -- the whole system state
+will be created on the fly, directly from the information provided by the
+individual packages. The visible system state is always a reflection of the
+sum of packages installed at a certain moment; it doesn't matter how this state
+came about. There are no global databases of any kind. (Some things might
+require caching for better performance, but this must happen transparently.)
+
+The core of this approach is formed by [[hurd/translator/stowfs]], which
+creates a traditional Unix directory structure from all the files in the
+individual package directories. But this only handles the lowest level of
+package management. Additional mechanisms are necessary to handle stuff like
+dependencies on other packages.
+
+The goal of this task is to create these mechanisms.
+
+Possible mentors: Ben Asselstine (bing)
+
+Exercise: Make some improvement to any of the existing Hurd translators.
+Especially those in [hurdextras](http://www.nongnu.org/hurdextras/) are often
+quite rudimentary, and it shouldn't be hard to find something to improve.
diff --git a/community/gsoc/project_ideas/perl_python.mdwn b/community/gsoc/project_ideas/perl_python.mdwn
new file mode 100644
index 00000000..34e877ab
--- /dev/null
+++ b/community/gsoc/project_ideas/perl_python.mdwn
@@ -0,0 +1,38 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Improving Perl or Python Support"]]
+
+Perl and Python are available on the Hurd, but there are quite a lot of test suite
+failures. These could be caused by problems in the system-specific
+implementation bits of Perl/Python, and/or shortcomings in the actual system
+functionality which Perl/Python depends on.
+
+The student applying for this project can pick either Perl or Python,
+whichever he is more comfortable with.
+(Perl is higher priority though; and there are more failures too.)
+
+The goal then is to fix all of the problems with the chosen language if possible, or at
+least some of them. Some issues might require digging quite deep into Hurd
+internals, while others are probably easy to fix.
+
+Note that while some Perl/Python knowledge is probably necessary to understand what
+the test suite failures are about, the actual work necessary to fix these
+issues is mostly C programming -- in the implementation of Perl/Python and/or the
+Hurd.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Take a stab at one of the testsuite failures,
+and write a minimal testcase exposing the underlying problem.
+Actually fixing it would be a bonus of course --
+but as it's hard to predict which issues will be easy and which will be tricky,
+we will already be satisfied if the student makes a good effort.
+(We hope to see some discussion of the problems in this case though :-) )
diff --git a/community/gsoc/project_ideas/procfs.mdwn b/community/gsoc/project_ideas/procfs.mdwn
new file mode 100644
index 00000000..d4760aae
--- /dev/null
+++ b/community/gsoc/project_ideas/procfs.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="procfs"]]
+
+Although there is no standard (POSIX or other) for the layout of the `/proc`
+pseudo-filesystem, it turned out a very useful facility in GNU/Linux and other
+systems, and many tools concerned with process management use it. (`ps`, `top`,
+`htop`, `gtop`, `killall`, `pkill`, ...)
+
+Instead of porting all these tools to use [[hurd/libps]] (Hurd's official method for
+accessing process information), they could be made to run out of the box, by
+implementing a Linux-compatible `/proc` filesystem for the Hurd.
+
+The goal is to implement all `/proc` functionality needed for the various process
+management tools to work. (On Linux, the `/proc` filesystem is used also for
+debugging purposes; but this is highly system-specific anyways, so there is
+probably no point in trying to duplicate this functionality as well...)
+
+The [[existing_partially_working_procfs_implementation|hurd/translator/procfs]]
+can serve as a starting point, but needs to be largely rewritten. (It should
+use [[hurd/libnetfs]] rather than [[hurd/libtrivfs]]; the data format needs to
+change to be more Linux-compatible; and it needs adaptation to newer system
+interfaces.)
+
+This project requires learning [[hurd/translator]] programming, and
+understanding some of the internals of process management in the Hurd. It
+should not be too hard coding-wise; and the task is very nicely defined by the
+existing Linux `/proc` interface -- no design considerations necessary.
+
+**Note**: We already have several applications for this task.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Add or fix one piece in the existing procfs translator.
+
+*Status*: Madhusudan.C.S has implemented a new, fully functional [[procfs|madhusudancs]] for
+GSoC 2008. He is still working on some outstanding issues.
diff --git a/community/gsoc/project_ideas/pthreads.mdwn b/community/gsoc/project_ideas/pthreads.mdwn
new file mode 100644
index 00000000..a33187f6
--- /dev/null
+++ b/community/gsoc/project_ideas/pthreads.mdwn
@@ -0,0 +1,48 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Convert Hurd Libraries and Servers to pthreads"]]
+
+[[!tag open_issue_libpthread]]
+
+The Hurd was originally created at a time when the [pthreads
+standard](http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html)
+didn't exist yet. Thus all Hurd servers and libraries are using the old
+[[cthreads|hurd/libcthreads]] package that came with [[microkernel/Mach]],
+which is not compatible with [[pthreads|hurd/libpthread]].
+
+Not only does that mean that people hacking on Hurd internals have to deal with
+a non-standard thread package, which nobody is familiar with. Although a
+pthreads implementation for the Hurd was created in the meantime, it's not
+possible to use both cthreads and pthreads in the same program. Consequently,
+pthreads can't presently be used in any Hurd servers -- including translators.
+
+(Thus it's impossible to use the [Hurd
+libfuse](http://www.nongnu.org/hurdextras/#libfuse) with any FUSE modules
+depending on pthreads for example.)
+
+Most of the conversion has already been done in previous efforts (see
+[[!GNU_Savannah_task 5487]]) -- but the tricky parts are still missing.
+
+The goal of this project is to have all the Hurd code use pthreads. Should any
+limitations in the existing pthreads implementation turn up that hinder this
+transition, they will have to be fixed as well.
+
+This project requires relatively little Hurd-specific knowledge. Experience
+with multithreaded programming in general and pthreads in particular is
+required, though.
+
+Possible mentors: Barry deFreese (bddebian), Samuel Thibault (youpi)
+
+Exercise: Try to fix one of the outstanding issues with the work done so far.
+It's not yet complete, and there hasn't been much debugging yet, so it should
+not be too hard to find something needing improvement -- but if you don't see
+anything obvious, feel free to talk to us about an alternative exercise task.
diff --git a/community/gsoc/project_ideas/secure_chroot.mdwn b/community/gsoc/project_ideas/secure_chroot.mdwn
new file mode 100644
index 00000000..feb30a7c
--- /dev/null
+++ b/community/gsoc/project_ideas/secure_chroot.mdwn
@@ -0,0 +1,47 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Secure chroot Implementation"]]
+
+As the Hurd attempts to be (almost) fully [[UNIX]]-compatible, it also implements a
+`chroot()` system call. However, the current implementation is not really
+good, as it allows easily escaping the `chroot`, for example by use of
+[[passive_translators|hurd/translator]].
+
+Many solutions have been suggested for this problem -- ranging from simple
+workaround changing the behavior of passive translators in a `chroot`;
+changing the context in which passive translators are executed; changing the
+interpretation of filenames in a chroot; to reworking the whole passive
+translator mechanism. Some involving a completely different approach to
+`chroot` implementation, using a proxy instead of a special system call in the
+filesystem servers.
+
+See <http://tri-ceps.blogspot.com/2007/07/theory-of-filesystem-relativity.html>
+for some suggestions, as well as the followup discussions on
+<http://lists.gnu.org/archive/html/gnu-system-discuss/2007-09/msg00118.html>
+and <http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00089.html>.
+
+The task is to pick and implement one approach for fixing chroot.
+
+This task is pretty heavy: it requires a very good understanding of file name
+lookup and the translator mechanism, as well as of security concerns in general
+-- the student must prove that he really understands security implications of
+the UNIX namespace approach, and how they are affected by the introduction of
+new mechanisms. (Translators.) More important than the actual code is the
+documentation of what he did: he must be able to defend why he chose a certain
+approach, and explain why he believes this approach really secure.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: It's hard to come up with a relevant exercise, as there are so many
+possible solutions... Probably best to make an improvement to one of the
+existing translators -- if possible, something touching name resolution or and
+such, e.g. implementing file_reparent() in a translator that doesn't support it
+yet.
diff --git a/community/gsoc/project_ideas/server_overriding.mdwn b/community/gsoc/project_ideas/server_overriding.mdwn
new file mode 100644
index 00000000..c35d88de
--- /dev/null
+++ b/community/gsoc/project_ideas/server_overriding.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Server Overriding Mechanism"]]
+
+The main idea of the Hurd is that every user can influence almost all system
+functionality ([[extensible_system|extensibility]]), by running private Hurd
+servers that replace or proxy the global default implementations.
+
+However, running such a customized subenvironment presently is not easy,
+because there is no standard mechanism to easily replace an individual standard
+server, keeping everything else. (Presently there is only the [[hurd/subhurd]]
+method, which creates a completely new system instance with a completely
+independent set of servers.)
+
+The goal of this project is to provide a simple method for overriding
+individual standard servers, using environment variables, or a special
+subshell, or something like that. It is closely related to the
+[[virtualization]] task.
+
+Various approaches for such a mechanism has been discussed before.
+Probably the easiest (1) would be to modify the Hurd-specific parts of [[hurd/glibc]],
+which are contacting various standard servers to implement certain system
+calls, so that instead of always looking for the servers in default locations,
+they first check for overrides in environment variables, and use these instead
+if present. Take a look at the [socket server overriding
+patch](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc)
+for an example.
+
+A somewhat more generic solution (2) could use some mechanism for arbitrary
+client-side namespace overrides. The client-side part of the filename lookup
+mechanism would have to check an override table on each lookup, and apply the
+desired replacement whenever a match is found.
+
+Another approach would be server-side overrides. Again there are various
+variants. The actual servers themselves could provide a mechanism to redirect to
+other servers on request. (3) Or we could use some more generic server-side
+namespace overrides: Either all filesystem servers could provide a mechanism to
+modify the namespace they export to certain clients (4), or proxies could be
+used that mirror the default namespace but override certain locations. (5)
+
+Variants (4) and (5) are the most powerful. They are intimately related to
+chroots: (4) is like the current chroot implementation works in the Hurd, and
+(5) has been proposed as an alternative. The generic overriding mechanism could
+be implemented on top of chroot, or chroot could be implemented on top of the
+generic overriding mechanism. But this is out of scope for this project...
+
+In practice, probably a mix of the different approaches would prove most useful
+for various servers and use cases. It is strongly recommended that the student
+starts with (1) as the simplest approach, perhaps augmenting it with (3) for
+certain servers that don't work with (1) because of indirect invocation.
+
+This tasks requires some understanding of the Hurd internals, especially a good
+understanding of the file name lookup mechanism. It's probably not too heavy on
+the coding side.
+
+This is [[!GNU_Savannah_task 6612]]. Also there are quite a bit of emails
+discussing this topic, from a previous year's GSoC application -- see
+<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00050.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00114.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2007-06/msg00082.html>,
+<http://lists.gnu.org/archive/html/bug-hurd/2008-03/msg00039.html>.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
+
+Exercise: Come up with a glibc patch that allows overriding one specific
+standard server using method (1).
diff --git a/community/gsoc/project_ideas/sound.mdwn b/community/gsoc/project_ideas/sound.mdwn
new file mode 100644
index 00000000..8411831b
--- /dev/null
+++ b/community/gsoc/project_ideas/sound.mdwn
@@ -0,0 +1,42 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Sound Support"]]
+
+The Hurd presently has no sound support. Fixing this, [[!GNU_Savannah_task
+5485]], requires two steps: the first is to port some other kernel's drivers to
+[[GNU_Mach|microkernel/mach/gnumach]] so we can get access to actual sound
+hardware. The second is to implement a userspace server ([[hurd/translator]]),
+that implements an interface on top of the kernel device that can be used by
+applications -- probably OSS or maybe ALSA.
+
+Completing this task requires porting at least one driver (e.g. from Linux) for
+a popular piece of sound hardware, and the basic userspace server. For the
+driver part, previous experience with programming kernel drivers is strongly
+advisable. The userspace part requires some knowledge about programming Hurd
+translators, but shouldn't be too hard.
+
+Once the basic support is working, it's up to the student to use the remaining
+time for porting more drivers, or implementing a more sophisticated userspace
+infrastructure. The latter requires good understanding of the Hurd philosophy,
+to come up with an appropriate design.
+
+Another option would be to evaluate whether a driver that is completely running
+in user-space is feasible. <!-- TODO. Elaborate. -->
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: This project requires kernel (driver framework) hacking as well as
+some Hurd server hacking; so the exercise should involve either of these, or
+even both. You could for example port some newer driver to run in the existing
+framework (see the [[device_driver|driver_glue_code]] project description), or
+try to make some fix(es) to the [unfinished random device
+implementation](http://savannah.gnu.org/patch/?6088) created by Michael
+Casadevall.
diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
new file mode 100644
index 00000000..331336ac
--- /dev/null
+++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
@@ -0,0 +1,42 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Hurdish TCP/IP Stack"]]
+
+The Hurd presently uses a [[TCP/IP_stack|hurd/translator/pfinet]] based on code from an old Linux version.
+This works, but lacks some rather important features (like PPP/PPPoE), and the
+design is not hurdish at all.
+
+A true hurdish network stack will use a set of [[hurd/translator]] processes,
+each implementing a different protocol layer. This way not only the
+implementation gets more modular, but also the network stack can be used way
+more flexibly. Rather than just having the standard socket interface, plus some
+lower-level hooks for special needs, there are explicit (perhaps
+filesystem-based) interfaces at all the individual levels; special application
+can just directly access the desired layer. All kinds of packet filtering,
+routing, tunneling etc. can be easily achieved by stacking components in the
+desired constellation.
+
+Implementing a complete modular network stack is not feasible as a GSoC
+project, though. Instead, the task is to take some existing user space TCP/IP
+implementation, and make it run as a single Hurd server for now, so it can be
+used in place of the existing pfinet. The idea is to split it up into
+individual layers later. The initial implementation, and the choice of a TCP/IP
+stack, should be done with this in mind -- it needs to be modular enough to
+make such a split later on feasible.
+
+This is [[!GNU_Savannah_task 5469]].
+
+Possible mentors: zhengda
+
+Exercise: You could try making some improvement to the existing pfinet
+implementation; or you could work towards running some existing userspace
+TCP/IP stack on Hurd. (As a normal program for now, not a proper Hurd server
+yet.)
diff --git a/community/gsoc/project_ideas/testsuites.mdwn b/community/gsoc/project_ideas/testsuites.mdwn
new file mode 100644
index 00000000..4f8d43fc
--- /dev/null
+++ b/community/gsoc/project_ideas/testsuites.mdwn
@@ -0,0 +1,52 @@
+[[!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="Fix Compatibility Problems Exposed by Testsuites"]]
+
+A number of software packages come with extensive testsuites.
+Some notable ones are Perl, Python, GNU Coreutils, and glib.
+While these testsuites were written mostly to track regressions in the respective packages,
+some of the tests fail on the Hurd in general.
+
+While in some cases these might point to wrong usage of system interfaces,
+most of the time such failures are actually caused by shortcomings in Hurd's implementation of these interfaces.
+These shortcomings are often not obvious in normal use,
+but can be directly or indirectly responsible for all kinds of failures.
+The testsuites help in isolating such problems,
+so they can be tracked down and fixed.
+
+This task thus consists in running some of the mentioned testsuites
+(and/or any other ones that come to mind),
+and looking into the causes of failures.
+The goal is to analyze all failures in one or more of the listed testsuites,
+to find out what shortcomings in the Hurd implementation cause them (if any),
+and to fix at least some of these shortcomings.
+
+Note that this task somewhat overlaps with the [[Perl/Python task|perl_python]] listed above.
+Here the focus however is not on improving the support for any particular program,
+but on fixing general problems in the Hurd.
+
+This is a very flexible task:
+while less experienced students should be able to tackle at least a few of the easier problems,
+other issues will be challenging even for experienced hackers.
+No specific previous knowledge is required for this task;
+only fairly decent C programming skills.
+While tracking down the various issues,
+the student will be digging into the inner workings of the Hurd,
+and thus gradually gaining the knowledge required for Hurd development in general.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Take a stab at one of the testsuite failures,
+and write a minimal testcase exposing the underlying problem.
+Actually fixing it would be a bonus of course --
+but as it's hard to predict which issues will be easy and which will be tricky,
+we will already be satisfied if the student makes a good effort.
+(We hope to see some discussion of the problems in this case though :-) )
diff --git a/community/gsoc/project_ideas/tmpfs.mdwn b/community/gsoc/project_ideas/tmpfs.mdwn
new file mode 100644
index 00000000..63b4effe
--- /dev/null
+++ b/community/gsoc/project_ideas/tmpfs.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Fix tmpfs"]]
+
+In some situations it is desirable to have a file system that is not backed by
+actual disk storage, but only by anonymous memory, i.e. lives in the RAM (and
+possibly swap space).
+
+A simplistic way to implement such a memory filesystem is literally creating a
+ramdisk, i.e. simply allocating a big chunk of RAM (called a memory store in
+Hurd terminology), and create a normal filesystem like ext2 on that. However,
+this is not very efficient, and not very convenient either (the filesystem
+needs to be recreated each time the ramdisk is invoked). A nicer solution is
+having a real [[hurd/translator/tmpfs]], which creates all filesystem
+structures directly in RAM, allocating memory on demand.
+
+The Hurd has had such a tmpfs for a long time. However, the existing
+implementation doesn't work anymore -- it got broken by changes in other parts
+of the Hurd design.
+
+There are several issues. The most serious known problem seems to be that for
+technical reasons it receives [[microkernel/mach/RPC]]s from two different
+sources on one [[microkernel/mach/port]], and gets mixed up with them. Fixing
+this is non-trivial, and requires a good understanding of the involved
+mechanisms.
+
+The goal of this project is to get a fully working, full featured tmpfs
+implementation. It requires digging into some parts of the Hurd, including the
+[[pager_interface|hurd/libpager]] and [[hurd/translator]] programming. This
+task probably doesn't require any design work, only good debugging skills.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
+
+Exercise: Take a look at tmpfs and try to fix one of the existing issues. Some
+of them are probably not too tricky; or you might discover something else you
+could improve while working on it. If you don't find anything obvious, contact
+us about a different exercise task.
diff --git a/community/gsoc/project_ideas/unionfs_boot.mdwn b/community/gsoc/project_ideas/unionfs_boot.mdwn
new file mode 100644
index 00000000..d9f1a9e1
--- /dev/null
+++ b/community/gsoc/project_ideas/unionfs_boot.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Allow Using unionfs Early at Boot"]]
+
+In [[UNIX]] systems, traditionally most software is installed in a common directory
+hierarchy, where files from various packages live beside each other, grouped by
+function: user-invokable executables in `/bin`, system-wide configuration files
+in `/etc`, architecture specific static files in `/lib`, variable data in
+`/var`, and so on. To allow clean installation, deinstallation, and upgrade of
+software packages, GNU/Linux distributions usually come with a package manager,
+which keeps track of all files upon installation/removal in some kind of
+central database.
+
+An alternative approach is the one implemented by GNU Stow: each package is
+actually installed in a private directory tree. The actual standard directory
+structure is then created by collecting the individual files from all the
+packages, and presenting them in the common `/bin`, `/lib`, etc. locations.
+
+While the normal Stow package (for traditional UNIX systems) uses symlinks to
+the actual files, updated on installation/deinstallation events, the Hurd
+[[hurd/translator]] mechanism allows a much more elegant solution:
+[[hurd/translator/stowfs]] (which is actually a special mode of
+[[hurd/translator/unionfs]]) creates virtual directories on the fly, composed
+of all the files from the individual package directories.
+
+The problem with this approach is that unionfs presently can be launched only
+once the system is booted up, meaning the virtual directories are not available
+at boot time. But the boot process itself already needs access to files from
+various packages. So to make this design actually usable, it is necessary to
+come up with a way to launch unionfs very early at boot time, along with the
+root filesystem.
+
+Completing this task will require gaining a very good understanding of the Hurd
+boot process and other parts of the design. It requires some design skills
+also to come up with a working mechanism.
+
+Possible mentors: Carl Fredrik Hammar (cfhammar)
diff --git a/community/gsoc/project_ideas/unionmount.mdwn b/community/gsoc/project_ideas/unionmount.mdwn
new file mode 100644
index 00000000..86ef96c7
--- /dev/null
+++ b/community/gsoc/project_ideas/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=hurd/translator/unionmount]]
diff --git a/community/gsoc/project_ideas/valgrind.mdwn b/community/gsoc/project_ideas/valgrind.mdwn
new file mode 100644
index 00000000..c6fc7459
--- /dev/null
+++ b/community/gsoc/project_ideas/valgrind.mdwn
@@ -0,0 +1,80 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Porting Valgrind to the Hurd"]]
+
+[Valgrind](http://valgrind.org/) is an extremely useful debugging tool for memory errors.
+(And some other kinds of hard-to-find errors too.)
+Aside from being useful for program development in general,
+a Hurd port will help finding out why certain programs segfault on the Hurd,
+although they work on Linux.
+Even more importantly, it will help finding bugs in the Hurd servers themselfs.
+
+To keep track of memory use,
+Valgrind however needs to know how each system call affects the validity of memory regions.
+This knowledge is highly kernel-specific,
+and thus Valgrind needs to be explicitely ported for every system.
+
+Such a port involves two major steps:
+making Valgrind understand how kernel traps work in general on the system in question;
+and how all the individual kernel calls affect memory.
+The latter step is where most of the work is,
+as the behaviour of each single system call needs to be described.
+
+Compared to Linux,
+Mach (the microkernel used by the Hurd) has very few kernel traps.
+Almost all system calls are implemented as RPCs instead --
+either handled by Mach itself, or by the various Hurd servers.
+All RPCs use a pair of mach\_msg() invocations:
+one to send a request message, and one to receive a reply.
+However, while all RPCs use the same mach\_msg() trap,
+the actual effect of the call varies greatly depending on which RPC is invoked --
+similar to the ioctl() call on Linux.
+Each request thus must be handled individually.
+
+Unlike ioctl(),
+the RPC invocations have explicit type information for the parameters though,
+which can be retrieved from the message header.
+By analyzing the parameters of the RPC reply message,
+Valgrind can know exactly which memory regions are affected by that call,
+even without specific knowledge of the RPC in question.
+Thus implementing a general parser for the reply messages
+will already give Valgrind a fairly good approximation of memory validity --
+without having to specify the exact semantic of each RPC by hand.
+
+While this should make Valgrind quite usable on the Hurd already, it's not perfect:
+some RPCs might return a buffer that is only partially filled with valid data;
+or some reply parameters might be optional,
+and only contain valid data under certain conditions.
+Such specific semantics can't be deduced from the message headers alone.
+Thus for a complete port,
+it will still be necessary to go through the list of all known RPCs,
+and implement special handling in Valgrind for those RPCs that need it.
+
+The goal of this task is at minimum to make Valgrind grok Mach traps,
+and to implement the generic RPC handler.
+Ideally, specific handling for RPCs needing it should also be implemented.
+
+Completing this project will require digging into Valgrind's handling of system calls,
+and into Hurd RPCs.
+It is not an easy task, but a fairly predictable one --
+there shouldn't be any unexpected difficulties,
+and no major design work is necessary.
+It doesn't require any specific previous knowledge:
+only good programming skills in general.
+On the other hand,
+the student will obtain a good understanding of Hurd RPCs while working on this task,
+and thus perfect qualifications for Hurd development in general :-)
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: As a starter,
+students can try to teach valgrind a couple of Linux ioctls,
+as this will make them learn how to use the read/write primitives of valgrind.
diff --git a/community/gsoc/project_ideas/virtualization.mdwn b/community/gsoc/project_ideas/virtualization.mdwn
new file mode 100644
index 00000000..822b8d99
--- /dev/null
+++ b/community/gsoc/project_ideas/virtualization.mdwn
@@ -0,0 +1,76 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Virtualization Using Hurd Mechanisms"]]
+
+The main idea behind the Hurd design is to allow users to replace almost any
+system functionality ([[extensible_system|extensibility]]). Any user can easily
+create a subenvironment using some custom [[servers|hurd/translator]] instead
+of the default system servers. This can be seen as an
+[[advanced_lightweight_virtualization|hurd/virtualization]] mechanism, which
+allows implementing all kinds of standard and nonstandard virtualization
+scenarios.
+
+However, though the basic mechanisms are there, currently it's not easy to make
+use of these possibilities, because we lack tools to automatically launch the
+desired constellations.
+
+The goal is to create a set of powerful tools for managing at least one
+desirable virtualization scenario. One possible starting point could be the
+[[hurd/subhurd]]/[[hurd/neighborhurd]] mechanism, which allows a second almost totally
+independent instance of the Hurd in parallel to the main one.
+
+While subhurd allow creating a complete second system instance, with an own set
+of Hurd servers and [[UNIX]] daemons and all, there are also situations where it is
+desirable to have a smaller subenvironment, living withing the main system and
+using most of its facilities -- similar to a chroot environment. A simple way
+to create such a subenvironment with a single command would be very helpful.
+
+It might be possible to implement (perhaps as a prototype) a wrapper using
+existing tools (chroot and [[hurd/translator/unionfs]]); or it might require more specific tools,
+like some kind of unionfs-like filesystem proxy that mirrors other parts of the
+filesystem, but allows overriding individual locations, in conjunction with
+either chroot or some similar mechanism to create a subenvironment with a
+different root filesystem.
+
+It's also desirable to have a mechanism allowing a user to set up such a custom
+environment in a way that it will automatically get launched on login --
+practically allowing the user to run a customized operating system in his own
+account.
+
+Yet another interesting scenario would be a subenvironment -- using some kind
+of special filesystem proxy again -- in which the user serves as root, being
+able to create local sub-users and/or sub-groups.
+
+This would allow the user to run "dangerous" applications (webbrowser, chat
+client etc.) in a confined fashion, allowing it access to only a subset of the
+user's files and other resources. (This could be done either using a lot of
+groups for individual resources, and lots of users for individual applications;
+adding a user to a group would give the corresponding application access to the
+corresponding resource -- an advanced [[ACL]] mechanism. Or leave out the groups,
+assigning the resources to users instead, and use the Hurd's ability for a
+process to have multiple user IDs, to equip individual applications with sets
+of user IDs giving them access to the necessary resources -- basically a
+[[capability]] mechanism.)
+
+The student will have to pick (at least) one of the described scenarios -- or
+come up with some other one in a similar spirit -- and implement all the tools
+(scripts, translators) necessary to make it available to users in an
+easy-to-use fashion. While the Hurd by default already offers the necessary
+mechanisms for that, these are not perfect and could be further refined for
+even better virtualization capabilities. Should need or desire for specific
+improvements in that regard come up in the course of this project, implementing
+these improvements can be considered part of the task.
+
+Completing this project will require gaining a very good understanding of the
+Hurd architecture and spirit. Previous experience with other virtualization
+solutions would be very helpful.
+
+Possible mentors: Olaf Buddenhagen (antrik), Carl Fredrik Hammar (cfhammar)
diff --git a/community/gsoc/project_ideas/vm_tuning.mdwn b/community/gsoc/project_ideas/vm_tuning.mdwn
new file mode 100644
index 00000000..ecc5f9f4
--- /dev/null
+++ b/community/gsoc/project_ideas/vm_tuning.mdwn
@@ -0,0 +1,35 @@
+[[!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]]."]]"""]]
+
+[[!meta title="VM Tuning"]]
+
+Hurd/[[microkernel/Mach]] presently make very bad use of the available physical memory in the
+system. Some of the problems are inherent to the system design (the kernel
+can't distinguish between important application data and discardable disk
+buffers for example), and can't be fixed without fundamental changes. Other
+problems however are an ordinary lack of optimization, like extremely crude
+heuristics when to start paging. (See <http://lists.gnu.org/archive/html/bug-hurd/2007-08/msg00034.html> for example.)
+Many parameters are based on assumptions from
+a time when typical machines had like 16 MiB of RAM, or simply have been set to
+arbitrary values and never tuned for actual use.
+
+The goal of this project is to bring the virtual memory management in Hurd/Mach
+closer to that of modern mainstream kernels (Linux, FreeBSD), by comparing the
+implementation to other systems, implementing any worthwhile improvements, and
+general optimization/tuning. It requires very good understanding of the Mach
+VM, and virtual memory in general.
+
+This project is related to [[!GNU_Savannah_task 5489]].
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Make some modification to the existing VM code. You could try to find
+a piece of code that can be improved with simple code optimization, for
+example.
diff --git a/community/gsoc/project_ideas/xattr.mdwn b/community/gsoc/project_ideas/xattr.mdwn
new file mode 100644
index 00000000..7178d826
--- /dev/null
+++ b/community/gsoc/project_ideas/xattr.mdwn
@@ -0,0 +1,47 @@
+[[!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="Implement xattr Support"]]
+
+Extended attributes (xattr) are a standardized, generic method for storing
+additional metadata along with a file (inode). Most modern UNIX filesystems
+support xattrs.
+
+In general, xattrs should be used sparingly, as they are less transparent than
+data stored as explicit file contents; however, there are some cases where they
+really make sense. The Hurd's variant of ext2 presently uses some additional
+fields in the inode to store Hurd-specific metadata: most notable passive
+translator settings. As these fields are Hurd-specific, they can't be accessed
+by the standard methods from Linux for example, so it's not possible to fully
+work with a Hurd filesystem on GNU/Linux (copy, backup etc.); and also, even
+when on Hurd, only tools that explicitly support the Hurd-specific information
+can handle them.
+
+Using extended attributes instead of custom fields for the Hurd-specific
+information would be very helpful.
+
+The most important goal of this project thus is to make the Hurd ext2fs server
+able to store and read the Hurd-specific information with extended attributes
+instead of the custom fields, so it become accessible from other systems. Being
+able to access the information through the standard xattr API instead of
+Hurd-specific calls is also desirable. (And in turn requires implementing the
+generic xattr API first, which can be useful for other purposes as well.)
+
+Completing this project will require digging into some parts of the Hurd, but
+it should be quite doable without previous Hurd experience. Some experience
+with xattrs might help a bit, but shouldn't be really necessary either.
+
+Some previous work on xattr support is available in [[!GNU_Savannah_patch
+5126]], and might serve as a starting point.
+
+Possible mentors: Samuel Thibault (youpi)
+
+Exercise: Implement support for different inode sizes (other than 128 bytes) in
+Hurd's ext2fs.
diff --git a/community/gsoc/project_ideas/xmlfs.mdwn b/community/gsoc/project_ideas/xmlfs.mdwn
new file mode 100644
index 00000000..5e5eaa13
--- /dev/null
+++ b/community/gsoc/project_ideas/xmlfs.mdwn
@@ -0,0 +1,54 @@
+[[!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]]."]]"""]]
+
+[[!meta title="xmlfs"]]
+
+Hurd [[translators|hurd/translator]] allow presenting underlying data in a
+different format. This is a very powerful ability: it allows using standard
+tools on all kinds of data, and combining existing components in new ways, once
+you have the necessary translators.
+
+A typical example for such a translator would be xmlfs: a translator that
+presents the contents of an underlying XML file in the form of a directory
+tree, so it can be studied and edited with standard filesystem tools, or using
+a graphical file manager, or to easily extract data from an XML file in a
+script etc.
+
+The exported directory tree should represent the DOM structure of the document,
+or implement XPath/XQuery, or both, or some combination thereof (perhaps XPath/XQuery could
+be implemented as a second translator working on top of the DOM one) --
+whatever works well, while sticking to XML standards as much as possible.
+
+Ideally, the translation should be reversible, so that another, complementary
+translator applied on the expanded directory tree would yield the original XML
+file again; and also the other way round, applying the complementary translator
+on top of some directory tree and xmlfs on top of that would yield the original
+directory again. However, with the different semantics of directory trees and
+XML files, it might not be possible to create such a universal mapping. Thus
+it is a desirable goal, but not a strict requirement.
+
+The goal of this project is to create a fully usable XML translator, that
+allows both reading and writing any XML file. Implementing the complementary
+translator also would be nice if time permits, but is not mandatory part of the
+task.
+
+The [[existing_partial_(read-only)_xmlfs_implementation|hurd/translator/xmlfs]]
+can serve as a starting point.
+
+This task requires pretty good designing skills. Very good knowledge of XML is also
+necessary. Learning translator programming will obviously be necessary to
+complete the task.
+
+Possible mentors: Olaf Buddenhagen (antrik)
+
+Exercise: Make some improvement to the existing xmlfs, or some other existing
+Hurd translator. (Especially those in
+[hurdextras](http://www.nongnu.org/hurdextras/) are often quite rudimental --
+it shouldn't be hard to find something to improve...)
diff --git a/community/gsoc/student_application_form.mdwn b/community/gsoc/student_application_form.mdwn
new file mode 100644
index 00000000..ba339dc9
--- /dev/null
+++ b/community/gsoc/student_application_form.mdwn
@@ -0,0 +1,211 @@
+[[!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]]."]]"""]]
+
+Before we get to the actual application form, some important remarks about the
+application process -- please read them carefully.
+
+First of all, please give your application a useful title. In many cases, you
+can simply copy it from the project ideas list. Some ideas -- like language
+bindings for example -- are rather broad, and require an additional specifier.
+(e.g. "Python Bindings")
+
+If you are proposing a project not on the ideas list, you have to find a useful
+title yourself of course -- but surely this isn't hard, if you were able to
+come up with your own project idea :-)
+
+Submitting the application form is only part of the deal: we expect a few other
+things on top of that, as explained below. This is important, so please take
+it seriously -- without these things, the application is not complete, and we
+won't consider it.
+
+One of the things we expect is that you contact us directly as soon as possible
+(preferably even before you send the application form), on our developer
+[[mailing lists]] and [[IRC]] channel. Don't be afraid -- we won't bite :-) IRC
+in particular allows for very informal conversations.
+
+(Note though that we are not all in the same time zone, and people generally
+don't stare at the IRC screen all the time: it can take quite a long time
+until somebody replies -- even several hours. Don't get discouraged by that. Just
+be patient and hang on, or try again later.)
+
+Contacting us as soon as possible is crucial, as regular communication is the
+single most important factor for a successful GSoC project. We need to see that
+you are able and willing to talk to us regularly. Also, we get to
+know you much better this way than what the application form alone would allow us to.
+
+You shouldn't be at a loss for reasons to contact us. You ought to discuss your
+project and application with us for example -- you will gain a much better idea
+about the project, our expectations etc. In short, you will be able to
+submit a better application right from the beginning, saving both yourself and
+us some tedious round trips :-)
+
+Also, if you really want to get involved with the Hurd project, there are
+surely many things you will want to know -- after all, it's a fascinating
+project, with a fascinating architecture etc., right? :-)
+
+All in all, you should have ample
+causes to get in touch during the application period. Bonus points if you also
+participate in discussions not directly related to your project.
+
+The other thing necessary to complete your application is making a change to
+some part of the Hurd code, and submitting a patch implementing that change. (If you are
+not sure what that means, ask us!)
+
+This is important, as it shows that you have everything set up to start hacking
+on the project (source code, tool chain, testing environment etc.); and that
+you have all kinds of qualifications necessary to successfully finish your
+project: general programming skills; working in the Hurd environment;
+submitting patches and reacting to feedback; finding and/or asking for any
+information you need; and so on.
+
+Don't get us wrong: We absolutely do *not* demand that you have and know all
+this up front. After all, the idea of GSoC is to *introduce* you to free
+software development in general, and to our project specifically :-) We are
+eager to help you with anything you will need to create the patch -- you just
+need to ask!
+
+We actively encourage you to contact us whenever you have any doubts. Don't be
+afraid that we will think worse of you when you ask too much. On the contrary:
+this is an occasion for you to show us that whenever there is something you
+don't know yet, you are able to learn quickly, and know how to ask for help :-)
+
+As for the kind of change we want: ideally, it would be some real improvement
+(bug fix or new feature) in a part of the Hurd related to the specific project
+you want to work on. (This is not always possible though -- in that case, a
+useful change to some unrelated part of the Hurd would also do, or perhaps some
+not strictly useful change to the part you will be working on.)
+
+The [[project_ideas]] page has more information on this. In either case, please
+contact us, so we can discuss it, and together come up with something suitable.
+
+Note that we do not place any demands on the size of the change. Even a very
+simple modification suffices to meet the minimum requirements -- after all, the
+amount of time available for working on this before the end of the student
+selection process is quite short; and you are not obliged to do a substantial
+amount of work before you get accepted. (But if you feel more ambitious, that's
+fine of course :-) )
+
+Now to the actual questions in the application form. Please answer *all*
+questions -- we are asking them for a reason. (Whether you answer them one by
+one, or all in a larger piece of prose, is up to you.)
+
+If some of these questions look strange to you and/or you don't quite know what
+to answer, don't despair. This is not some kind of exam -- we do not expect you
+to have good answers for all of them up front. (In fact, we would be very
+surprised if anyone did...) The idea is more that you learn the answers before
+the end of the application process -- with our help. Please talk to us whenever
+you are unsure about something.
+
+And now that you are prepared to face the enemy, here we go :-)
+
+* Please supply your contact information here: full name, email address, IRC
+nick, Jabber ID, phone number, etc. -- anything we might need to recognize you
+and to keep in touch.
+
+* Introduce yourself: who are you, where are you from, what do you do, how did
+you get here... Don't write a long essay here -- just a bunch of basic facts
+you think we should know, so we get some idea whom we are talking to :-)
+
+* Please describe the task of the project you want to work on, in your own
+words. Be as specific as possible. It's not sufficient to rephrase the
+description from the project ideas page -- show us that you actually understand
+what this task involves! Read the available documentation (and possibly code)
+if necessary. And don't hesitate to ask us if you have any doubts :-)
+
+* Give a preliminary schedule for your work. The exact dates will obviously be
+only guesses; but try to be specific about all the individual steps you will
+have to do to complete the task.
+
+Note: By the end of the summer session, the code is expected to be in a state
+ready to be merged to mainline. Experience shows that adding the "final
+touches" necessary for that, tends to take up quite a lot of time -- there are
+always some bugs here and there, some misunderstandings about how things are
+supposed to work, build system issues, missing documentation, forgotten bits,
+and so on. Thus, the schedule should assume that a larger part of the main
+implementation work will be done by midterm!
+
+Also note that by the beginning of the summer session, you need to be able to
+work on the task at more or less full speed -- meaning that you need to get
+familiar with the code, think through the design (and discuss it with us) etc.
+already in the interim period *before* the summer session.
+
+* What things will you have to learn to be able to complete the project? What
+do you already know?
+
+In case you wonder what this question is getting at: Again, we want you to show
+us that you really understand what kind of work the task involves. As always,
+we encourage you to ask us for pointers if you are not sure how to go about
+this :-)
+
+* Why did you choose this project idea? What do you consider most appealing
+about it?
+
+* Please describe your previous programming experience in detail. What
+languages do you use? How long have you been programming, and how much? What
+kind of programs have you written? What kind of programming (and related) work
+are you enjoying most?
+
+* Have you been involved in any free software ("Open Source") projects yet?
+Which projects, how long, and in what way have you been involved? Have you been
+active in the Hurd project/Hurd community before?
+
+* Please briefly describe the Hurd, including the goals, architecture etc.
+Also, what makes you interested in the Hurd? Why do you want to work on it?
+What is your vision of it's future development?
+
+We ask this because we want to make sure that people working on the Hurd do
+understand what it is all about. You will probably need to read some
+documentation -- as always, you are encouraged to ask for pointers, and
+generally to talk to us about it :-)
+
+* Are you subscribed to the bug-hurd@gnu.org mailing list? (See
+http://lists.gnu.org/mailman/listinfo/bug-hurd )
+
+Hint: This is mostly a rhetoric question. If you haven't subscribed yet, now
+would be a good time to do it! You will need it to communicate with us during
+the application process.
+
+* Do you have a permanent internet connection, especially during the time of
+the summer session? Are you able and willing to hang out on the Hurd IRC
+channel regularly? (As in: Running the IRC client more or less permanently and
+checking for activity now and then.) If it turns out that your mentor lives in
+a different time zone, could you shift your day/night rhythm to better match
+that of your mentor and other Hurd developers?
+
+Hint: Hanging out on the channel regularly during the application process
+would be a good start :-)
+
+* When does your university term end, when are your exams, and when does the
+next term begin?
+
+We need to know up front whether there are any overlaps with the GSoC time
+frame (especially the summer session), so we can make a plan how to deal with
+it properly.
+
+* How much time do you intend to spend on your GSoC project per day/week during
+the summer months?
+
+Note that according to the GSoC FAQ, the project is meant to be "your major
+occupation during the summer". In other words, you should treat it more or less
+as a normal full-time job.
+
+* What other major activities will you engage in during the summer? (Moving
+apartments, longer vacations, other obligations, etc.) If any, how do you
+intend to make sure you will be able to dedicate sufficient time to your
+project nevertheless?
+
+Please be open about this, and also mention things you are not yet sure about.
+We can be flexible about time arrangements; but we absolutely need to know about any
+possible obstacles up front. Surprises on that score are not acceptable.
+
+* How do you intend to make sure that your code will keep on being maintained
+and supported properly after the end of the GSoC program?
+
+* Anything else you want to add to your application?
diff --git a/community/gsoc/xorg_ideas.mdwn b/community/gsoc/xorg_ideas.mdwn
new file mode 100644
index 00000000..26177345
--- /dev/null
+++ b/community/gsoc/xorg_ideas.mdwn
@@ -0,0 +1,67 @@
+[[!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]]."]]"""]]
+
+## VT Switching for GNU Hurd
+
+While XFree86 was first ported to the Hurd more than a decade ago, and there
+are updates now and then to make newer versions of Xorg run as well,
+the support is quite rudimentary: in particular, there
+is no support for switching back to the text console while X is running.
+
+Implementing this requires creating an interface between the X server and the
+Hurd console, and implementing the necessary code on both sides.
+
+The goal of this project is to get console switching fully working on the Hurd.
+Some Hurd-specific and X-specific knowlegde will need to be obtained, but the
+task should be quite doable without previous experience with either. It
+requires implementing some pieces of code that are not quite trivial, but
+shouldn't be terribly hard either.
+
+Exercise: Try fixing <http://savannah.gnu.org/bugs/?21000>, or perhaps some
+other minor issue with X on the Hurd.
+
+
+## Initial work on porting DRM to GNU Hurd
+
+The Direct Rendering Manager (DRM) is a kernel driver component taking care of
+graphics hardware access. Originally, it only took care of the 3D acceleration
+unit, and was used mostly by the DRI (Direct Rendering Infrastructure) in Mesa.
+
+A few years ago, the developers came to the conclusion that a more robust
+and functional graphics stack requires the kernel driver to take care of other
+graphics access as well: mode setting in particular. (Essentially what the old
+KGI project proposed, see <http://www.kgi-project.org>.) Also, with the new GEM
+interface, the DRM now takes care of graphics memory management as well.
+
+With the new responsibilities, the DRM is no longer an optional addon for fast
+3D support, but a central component of the graphics stack. It needs to be
+implemented by any operating system that wants good Xorg driver support in the
+future. (Moreover, it is now also useful outside the context of Xorg.)
+
+The Hurd implementation of DRM will be somewhat special, as -- following the
+microkernel idea -- we want to run the drivers as priviledged user space server
+processes, rather than actual kernel modules.
+
+This task is about doing the first steps for porting the DRM to the Hurd. This
+can be done by taking one of the existing DRM modesetting drivers (Intel, Nouveau (Nvidia), or
+Radeon), trying to get parts of it running as a Hurd server, and
+porting/implementing necessary pieces of the general DRM framework as needed
+along the way.
+
+It is probably not realistic to get the driver fully working over the summer.
+The goal however is to get at least some parts going.
+
+This task will require obtaining a considerable amount of knowledge about the
+Hurd and Mach (especially things like virtual memory management) -- it goes
+deep into system internals. Previous experience with operating system and/or
+graphics driver development would definitely be helpful.
+
+Exercise: Try to get some part of the driver compiling on the Hurd, using stubs
+for any system-specific functionality.
diff --git a/community/hurdbr.mdwn b/community/hurdbr.mdwn
new file mode 100644
index 00000000..d28e25f7
--- /dev/null
+++ b/community/hurdbr.mdwn
@@ -0,0 +1,11 @@
+Hurd Br is a brasilian, portuguese speaking, HUG.
+
+Hurd Br � um grupo de usu�rios de l�ngua portuguesa, principalmente brasileiros, do GNU/Hurd.
+
+Nossa lista de discuss�o �: <http://www.freelists.org/list/hurd-br>
+
+Creio que o prop�sito principal do grupo nesse momento � fazer com que o Hurd rode em cima do L4 :-), e mostrar que � poss�vel n�s termos um sistema livre que use um microkernel avan�ado (segunda gera��o)!
+
+-- [[Main/PietroFerrari]] - 03 Sep 2003
+
+-- [[Main/RafaelK]] - 05 Oct 2004
diff --git a/community/livejournal.mdwn b/community/livejournal.mdwn
new file mode 100644
index 00000000..9b845d9b
--- /dev/null
+++ b/community/livejournal.mdwn
@@ -0,0 +1,6 @@
+Pop over to <http://www.LiveJournal.org> where I have [created a community](http://www.livejournal.com/community/gnu_hurd/). You can do the following to show your support:
+
+* list GNU/Hurd as one of your "Interests". You can even click through to make your interest visible to others, listing your name in the results of a related search with others that are interested.
+* Subscribe to the gnu\_hurd community
+
+-- [[Main/GrantBow]] - 27 Feb 2004
diff --git a/community/meetings.mdwn b/community/meetings.mdwn
new file mode 100644
index 00000000..ba4fc2bd
--- /dev/null
+++ b/community/meetings.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Meetings with Hurd developer attendance"]]
+
+# Upcoming
+
+ * [[Self-organised]]
+
+# Past
+
+ * [GNU Hackers Meeting in the Hague 2010](http://www.gnu.org/ghm/2010/denhaag/)
+ * [[FOSDEM 2010]]
+ * [[EuroSys_2009]]
+ * [[FOSDEM_2008]]
+ * [[Weekend_at_stesie's|stesie_2007-10-12]]
+ * [[FOSDEM_2007]]
+ * [[RMLL_2006]]
+ * [[FOSDEM_2006]]
+ * [[RMLL_2005]]
+ * [[FOSDEM_2005]]
+ * ...
diff --git a/community/meetings/eurosys_2009.mdwn b/community/meetings/eurosys_2009.mdwn
new file mode 100644
index 00000000..24c2b112
--- /dev/null
+++ b/community/meetings/eurosys_2009.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2006, 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="EuroSys 2009"]]
+
+<http://eurosys2009.informatik.uni-erlangen.de/>
+
+EuroSys will take place on March 30th to April 3rd in Nuremberg, Germany.
+
+
+# Who and When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return"
+"Neal Walfield","yes","Monday evening","Friday"
+"[[Thomas_Schwinge|tschwinge]]","yes","Monday evening","Friday"
+"""]]
diff --git a/community/meetings/fosdem_2005.mdwn b/community/meetings/fosdem_2005.mdwn
new file mode 100644
index 00000000..8d7f459d
--- /dev/null
+++ b/community/meetings/fosdem_2005.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2006, 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="FOSDEM 2005"]]
+
+<http://fosdem.org/2005>
+
+[Article on KernelTrap](http://kerneltrap.org/node/5122)
+
+[FOSDEM 2005 Hurd Developers'
+Mini-Symposium](http://people.debian.org/~neal/FOSDEM-2005/)
diff --git a/community/meetings/fosdem_2006.mdwn b/community/meetings/fosdem_2006.mdwn
new file mode 100644
index 00000000..a869f262
--- /dev/null
+++ b/community/meetings/fosdem_2006.mdwn
@@ -0,0 +1,248 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2006"]]
+
+<http://fosdem.org/2006>
+
+FOSDEM will take place on February 25th/26th at the Université Libre de
+Bruxelles.
+
+# Who And When
+
+<!-- TODO. Use the table plugin. See `fosdem_2007.mdwn'. -->
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Name</strong></th>
+ <th bgcolor="#99CCCC"><strong>Attending</strong></th>
+ <th bgcolor="#99CCCC"><strong>Arrival</strong></th>
+ <th bgcolor="#99CCCC"><strong>Return</strong></th>
+ <th bgcolor="#99CCCC"><strong>Share room with us</strong></th>
+ </tr>
+ <tr>
+ <td>[[AurelienJarno]]</td>
+ <td> yes </td>
+ <td> Sat </td>
+ <td> Sun </td>
+ <td> probably </td>
+ </tr>
+ <tr>
+ <td>[[BasWijnen]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[ChristopherBodenstein]]</td>
+ <td> yes </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> no </td>
+ </tr>
+ <tr>
+ <td>[[GianlucaGuida]]</td>
+ <td> yes </td>
+ <td> Sat </td>
+ <td> Mon </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[GuillemJover]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[IsabelHuenig]]</td>
+ <td> no </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ </tr>
+ <tr>
+ <td>[[JeroenDekkers]]</td>
+ <td> yes </td>
+ <td> ? </td>
+ <td> ? </td>
+ <td> no </td>
+ </tr>
+ <tr>
+ <td>[[JohanRydberg]]</td>
+ <td> no </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ </tr>
+ <tr>
+ <td>[[JordiMallach]]</td>
+ <td> yes </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> no </td>
+ </tr>
+ <tr>
+ <td>[[MartinMichlmayr]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[MarcoGerards]]</td>
+ <td> yes </td>
+ <td> Thu </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[MarcusBrinkmann]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[MatthieuLemerre]]</td>
+ <td> probably not </td>
+ <td> ? </td>
+ <td> ? </td>
+ <td> yes, if coming </td>
+ </tr>
+ <tr>
+ <td>[[MichaelAblassmeier]]</td>
+ <td> probably not </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes, if coming </td>
+ </tr>
+ <tr>
+ <td>[[MichaelBanck]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[NealWalfield]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[OgnyanKulev]]</td>
+ <td> yes </td>
+ <td> Thu </td>
+ <td> Sun </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[PeterDeSchrijver]]</td>
+ <td> yes </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> no </td>
+ </tr>
+ <tr>
+ <td>[[OlafBuddenhagen]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> ? </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[RobertLemmen]]</td>
+ <td> no </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ </tr>
+ <tr>
+ <td>[[SamuelThibault]]</td>
+ <td> no </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ </tr>
+ <tr>
+ <td>[[SoerenSchulze]]</td>
+ <td> no </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ <td> N/A </td>
+ </tr>
+ <tr>
+ <td>[[Stefan_Siegl|stesie]]</td>
+ <td> yes </td>
+ <td> Thu </td>
+ <td> Mon </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[Thomas_Schwinge|tschwinge]]</td>
+ <td> yes </td>
+ <td> Thu </td>
+ <td> Mon </td>
+ <td> yes </td>
+ </tr>
+ <tr>
+ <td>[[TheDuck]]</td>
+ <td> yes </td>
+ <td> Fri </td>
+ <td> Sun </td>
+ <td> no (with [[HurdFr]]) </td>
+ </tr>
+</table>
+
+
+# General
+
+There will be a [Keysigning
+party](http://wiki.fosdem.org/tiki-index.php?page=KeySigningParty).
+
+
+# Youth Hostel
+
+<http://www.vjh.be/jeugdherbergen/brussel/main1-5n7-1.htm>
+
+<http://link2.map24.com/?street0=Heilige%20Geeststraat&zip0=1000&city0=Br%FCssel&state0=&country0=be&name0=&lid=43c26f81&ol=de-de>
+
+Heilige Geeststraat 2
+
+1000 Brüssel
+
+Phone: +32(0)2 511 04 36
+
+Fax: +32(0)2 512 07 11
+
+<brussel@vjh.be>
+
+
+# What
+
+We don't have a Developers Room at FOSDEM, but we could book a meeting room at
+the hostel (40 EUR for half a day)
+
+There is a pre-FOSDEM meeting on Friday night in the Roi d'Espagne on Grand
+Place
+
+
+# Photos
+
+Gianluca: <http://it.gnu.org/~gianluca/images/FOSDEM2006/>
+
+Michael: <http://people.debian.org/~mbanck/photos/fosdem_2006/>
+
+Ogi: <http://debian.fmi.uni-sofia.bg/~ogi/gallery/20060318-fosdem2006/>
+
+Stefan: <http://brokenpipe.de/misc/images/index.cgi?d=fosdem-2006>
diff --git a/community/meetings/fosdem_2007.mdwn b/community/meetings/fosdem_2007.mdwn
new file mode 100644
index 00000000..ab9fa413
--- /dev/null
+++ b/community/meetings/fosdem_2007.mdwn
@@ -0,0 +1,141 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2007"]]
+
+<http://fosdem.org/2007>
+
+FOSDEM will take place on February 24th/25th at the Université Libre de
+Bruxelles.
+
+# Who And When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return","Share room with us"
+"[[AlfredoBeaumont]]","no","n/a","n/a","n/a"
+"[[AndrewResch]]","no","n/a","n/a","n/a"
+"[[BenAsselstine]]","no","n/a","n/a","n/a"
+"[[Barry_de_Freese|bddebian]]","undecided; help convince the boss","?","?","?"
+"[[BasWijnen]]","no","n/a","n/a","n/a"
+"[[ColinLeitner]] and<br />KaroRilling","yes","2007-02-23<br />late","2007-02-26","**yes<br />(two persons)**"
+"[[CyrilBrulebois]]","yes","2007-02-23<br />late","?","no (HurdFR)"
+"Gaël Le Mignot","no","n/a","n/a","n/a"
+"[[GianlucaGuida]]","no","n/a","n/a","n/a"
+"[[GuillaumeLibersat]]","yes","?","?","no (HurdFR)"
+"[[GuillemJover]]","no","n/a","n/a","n/a"
+"[[JeroenDekkers]]","yes","2007-02-22<br />15:30","2007-02-26","**yes**"
+"[[JohanRydberg]]","no","n/a","n/a","n/a"
+"[[Main/TheDuck]]","yes","2007-02-23<br />late","?","no (HurdFR)"
+"[[MarcPoulhies]]","no","n/a","n/a","n/a"
+"[[MarcoGerards]]","most probably not","n/a","n/a","n/a"
+"[[MarcusBrinkmann]]","yes","2007-02-<strike>22</strike>**23**<br />12:38","2007-02-<strike>26</strike>**25**<br />19:00","**yes**"
+"[[MatthieuLemerre]]","no","n/a","n/a","n/a"
+"[[MichaelBanck]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
+"[[NealWalfield]]","no","n/a","n/a","n/a"
+"[[NicolasCenta]]","yes","?","?","no (HurdFR)"
+"[[OgnyanKulev]]","no","n/a","n/a","n/a"
+"[[OlafBuddenhagen]]","yes","probably 2007-02-22<br />14:32","2007-02-26","**yes**"
+"[[PeterDeSchrijver]]","yes","?","?","no"
+"[[RichardBraun]]","yes","2007-02-23<br />late","?","no (HurdFR)"
+"[[SamuelThibault]]","yes","2007-02-24<br />10h17","2007-02-25<br />19h43","**yes**"
+"[[SoerenSchulze]]","yes","2007-02-23<br />20:03","2007-02-25","**yes**"
+"[[Stefan_Siegl|stesie]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
+"[[Thomas_Schwinge|tschwinge]]","yes","2007-02-22<br />12:10","2007-02-26<br />11:05","**yes**"
+"[[TimRetout]]","yes","2007-02-23<br />lunchtime","2007-02-25<br />evening","no"
+"[[TomBachmann]]","no","n/a","n/a","n/a"
+"[[WouterVanHeyst]]","yes","2007-02-22<br />15:30","2007-02-26","**yes**"
+"""]]
+
+[[HurdFR]] page: <http://wiki.hurdfr.org/index.php/FOSDEM2007>
+
+
+# General
+
+There will be a keysigning party, see <http://fosdem.org/2007/keysigning>.
+
+
+# Accommodation
+
+## A-XL flathotel
+
+<http://www.axlflathotel.be/fr/tarifs.html>
+
+Fully booked.
+
+
+## Youth hostel _Bruegel_
+
+<http://www.vjh.be/jeugdherbergen/brussel/mainE.htm>
+
+Heilige Geeststraat 2
+1000 Brussels
+Phone: +32(0)2 511 04 36
+Fax: +32(0)2 512 07 11
+<brussel@vjh.be>
+
+[Map via Google maps](http://maps.google.com/maps?f=q&hl=en&q=Heilige+Geeststraat+2,+1000+Brussels,+Belgium&sll=50.846056,4.344578&sspn=0.022599,0.086517&ie=UTF8&om=1&z=15&ll=50.843942,4.351444&spn=0.0113,0.043259&iwloc=cent).
+[Map via Map24](http://link2.map24.com/?street0=Heilige%20Geeststraat&zip0=1000&city0=Br%FCssel&state0=&country0=be&name0=&lid=43c26f81&ol=de-de).
+
+Been there in 2006. It was okay.
+
+[[SamuelThibault]] booked rooms at ~ 18.60€ there:
+
+[[!table class="table_style_1" data="""
+"Night of...","Persons"
+"2007-02-22","<strike>7</strike>**6**"
+"2007-02-23","10"
+"2007-02-24","11"
+"2007-02-25","<strike>9</strike>**8**"
+"""]]
+
+i.e including sdschulze, who hereby confirms
+
+We need someone (not me, since I'm arriving on Saturday) to get the keys before
+20:00. Reservations last until 16:00, so either he gets the keys before 16:00,
+or I'll just need to call for confirming the reservation
+
+
+## Sleep Well Youth Hostel
+
+<http://www.sleepwell.be/>
+
+Fully booked.
+
+
+## Youth Hostel Can Gogh
+
+<http://chab.be/>
+
+No under 18-ers and over 35-ers allowed.
+
+FULL
+
+
+## Auberge de Jeunesse Jacques Brel
+
+<http://www.laj.be/html/fr/auberges/brel/aubergesbrel_01.htm>.
+
+Samuel knows that one and liked it.
+
+FULL
+
+
+# What
+
+We don't have a Developers Room at FOSDEM.
+
+There is again a pre-FOSDEM meeting on Friday night in the Roi d'Espagne on
+Grand Place, see <http://fosdem.org/2007/beerevent>.
+
+
+# Photos
+
+Stefan: <http://brokenpipe.de/misc/images/index.cgi?d=fosdem-2007>
diff --git a/community/meetings/fosdem_2008.mdwn b/community/meetings/fosdem_2008.mdwn
new file mode 100644
index 00000000..e9625fdf
--- /dev/null
+++ b/community/meetings/fosdem_2008.mdwn
@@ -0,0 +1,154 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2008"]]
+
+<http://fosdem.org/2008>
+
+FOSDEM will take place on February 23rd/24th at the Université Libre de
+Bruxelles.
+
+
+# Who And When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return","Share room with us"
+"[[Bas_Wijnen|baswijnen]] and girlfriend","yes","Friday","Monday","yes (two)"
+"Christian Dietrich","no","n/a","n/a","n/a"
+"Colin Leitner","no","n/a","n/a","n/a"
+"[[Gianluca_Guida|GianlucaGuida]]","yes","Thursday","Monday","yes"
+"Marcus Brinkmann","yes","Friday, 17:00","Monday, 12:00","yes"
+"[[Michael_Banck|MichaelBanck]]","yes","Friday, 17:00","Monday, 14:00","yes"
+"Neal Walfield","yes","Friday, 15:20","Monday, 12:00","yes"
+"Olaf Buddenhagen","yes","Fr 15:27/15:32/15:36 (nord/central/midi)","Mo 12:09 (central)","yes"
+"Richard Braun","no","n/a","n/a","n/a"
+"[[Samuel_Thibault|SamuelThibault]]","yes","Thursday","Monday","yes"
+"[[Soeren_Schulze|SoerenSchulze]]","yes","Friday 19:43/19:46 Midi/Central","Sunday 13:14 Central","yes"
+"[[Stefan_Siegl|stesie]]","no","n/a","n/a","n/a"
+"[[Thomas_Schwinge|tschwinge]]","yes","Friday, 17:00","Monday, 14:00","yes"
+"Tim Retout","plans to go","?","?","no"
+"[[Vikram_Vincent|vincentvikram]]","no","n/a","n/a","n/a"
+"""]]
+
+# Accommodation
+
+(Large) evening counts:
+
+[[!table class="table_style_1" data="""
+ , Bas, Gianluca, Marcus, Michael, Neal, Olaf, Samuel, Soeren, Thomas, Total
+Thu 21, , 1? , *<strike>1</strike>*, , , , 1 , , *<strike>1</strike>*, *<strike>4</strike>* 2
+Fri 22, 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,10
+Sat 23, 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,10
+Sun 24, 2 , 1 , 1 , 1 , 1 , 1 , 1 , *<strike>1</strike>*, 1 , *<strike>10</strike>* 9
+"""]]
+
+## The Moon Hotel
+
+Samuel booked rooms at The Moon Hotel, Rue de la Montagne 4B
+
+- one triple room for the night of Thirsday 21
+- two double rooms and two triple rooms for the nights of Friday 22, Saturday 23 and Sunday 24.
+(these were the last rooms of the hotel)
+
+i.e. 3+10*3 nights for a total cost of 1104&euro;, which makes 33.5&euro;/night.
+
+in each room there is a double bed, so some people will have to be "couples".
+
+Breakfast is included, there is hotspot wifi
+
+check-in can be between 13:00 and 00:00, departure is before 11:00
+
+
+## A-XL flathotel
+
+<http://www.axlflathotel.be/fr/tarifs.html>
+
+
+## Youth hostel _Bruegel_
+
+<http://www.vjh.be/jeugdherbergen/brussel/mainE.htm>
+
+Heilige Geeststraat 2
+1000 Brussels
+Phone: +32(0)2 511 04 36
+Fax: +32(0)2 512 07 11
+<brussel@vjh.be>
+
+[Map via Google maps](http://maps.google.com/maps?f=q&hl=en&q=Heilige+Geeststraat+2,+1000+Brussels,+Belgium&sll=50.846056,4.344578&sspn=0.022599,0.086517&ie=UTF8&om=1&z=15&ll=50.843942,4.351444&spn=0.0113,0.043259&iwloc=cent).
+[Map via Map24](http://link2.map24.com/?street0=Heilige%20Geeststraat&zip0=1000&city0=Br%FCssel&state0=&country0=be&name0=&lid=43c26f81&ol=de-de).
+
+Been there in 2006 and 2007. It was okay.
+
+Rooms at ~ 18.60&euro;
+
+gaah, Full!
+
+<!--
+[[SamuelThibault]] booked rooms at ~ 18.60&euro; there:
+
+[[!table class="table_style_1" data="""
+"Night of...","Persons"
+"2007-02-22","<strike>7</strike>**6**"
+"2007-02-23","10"
+"2007-02-24","11"
+"2007-02-25","<strike>9</strike>**8**"
+"""]]
+
+i.e including sdschulze, who hereby confirms
+-->
+
+We need someone to get the keys before
+20:00. Reservations last until 16:00, so either he gets the keys before 16:00,
+or we just need to call for confirming the reservation
+
+[[I|tschwinge]] seem to remember something that in 2007 the Madame at the
+reception wasn't really happy with us arriving later than 16:00 even with
+having had confirmed that via a phone call.
+
+
+## Sleep Well Youth Hostel
+
+<http://www.sleepwell.be/>
+
+Overbooked
+
+## Youth Hostel Can Gogh
+
+<http://chab.be/>
+
+No under 18-ers and over 35-ers allowed.
+
+
+## Auberge de Jeunesse Jacques Brel
+
+<http://www.laj.be/html/fr/auberges/brel/aubergesbrel_01.htm>.
+
+Samuel knows that one and liked it. antrik too :-)
+
+Unfortunately it's already full
+
+
+# What
+
+There will be a keysigning party, see <http://fosdem.org/2008/keysigning>.
+
+We don't have a Developers Room at FOSDEM.
+
+There is again a pre-FOSDEM meeting on Friday night, see <http://fosdem.org/2008/beerevent>.
+
+Both Neal and Bas would be happy to show their recent kernel works.
+
+
+<!--
+# Photos
+
+Put links to your photos here.
+-->
diff --git a/community/meetings/fosdem_2010.mdwn b/community/meetings/fosdem_2010.mdwn
new file mode 100644
index 00000000..9def3c1c
--- /dev/null
+++ b/community/meetings/fosdem_2010.mdwn
@@ -0,0 +1,86 @@
+[[!meta copyright="Copyright © 2006, 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]]."]]"""]]
+
+[[!meta title="FOSDEM 2010"]]
+
+<http://fosdem.org/2010>
+
+FOSDEM will take place on February 6th/7th at the Université Libre de
+Bruxelles.
+
+
+# Who And When
+
+[[!table class="table_style_1" data="""
+"Name","Attending","Arrival","Return","Share room with us"
+"Anatoly A. Kazantsev","no","","",""
+"Andrei Barbu","no","","",""
+"Arne Babenhauserheide","no","","",""
+"[[Bas Wijnen|baswijnen]]","Yes","Friday evening","Sunday afternoon","no"
+"Ben Asselstine","yes","?","?","yes (but no dates confirmed)"
+"Carl Fredrik Hammar","no","","",""
+"Colin Leitner","no","","",""
+"Emilio Pozuelo Monfort","probably not","","",""
+"Flavio Cruz","no","","",""
+"[[Gianluca Guida|GianlucaGuida]]","yes","Fr.","Mo.","yes"
+"Guillem Jover","no","","",""
+"Madhusudan C.S.","?","","",""
+"Marcus Brinkmann","yes","fr","mo","yes"
+"[[Michael Banck|MichaelBanck]]","yes","Fr., early afternoon","Su., night","yes"
+"Neal Walfield","yes","Fr","Mo","yes"
+"Olaf Buddenhagen","yes","fr","mo","yes"
+"Pino Toscano","no","","",""
+"[[Samuel Thibault|SamuelThibault]]","no","","",""
+"Sergiu Ivanov","no","","",""
+"[[Soeren Schulze|SoerenSchulze]]","yes","Fr","Mo","yes"
+"[[Stefan Siegl|stesie]]","no","","",""
+"[[Thomas Schwinge|tschwinge]]","yes","Fr., 10:35","Mo., 18:25","yes"
+"Vasily Sartakov","maybe","","",""
+"Zheng Da","no","","",""
+"""]]
+
+
+# Where (Accommodation)
+
+This year, we'll stay in the [Hotel Astrid](http://www.astridhotel.be/),
+together with the FSFE folks. The following data (without Ben's) has been
+forwarded to them:
+
+[[!table class="table_style_1" data="""
+ , Ben , Gianluca, Marcus, Michael, Neal, Olaf, Thomas, Total
+Fri 5, **?**, 1 , 1 , 1 , 1 , 1 , 1 , 6
+Sat 6, **?**, 1 , 1 , 1 , 1 , 1 , 1 , 6
+Sun 7, **?**, 1 , 1 , , 1 , 1 , 1 , 5
+"""]]
+
+
+# What
+
+On Saturday, Bas will be giving a [talk about *Iris*, his new
+kernel](http://fosdem.org/2010/schedule/events/emb_iris) (Sat., 18:00, Embedded
+Developer Room).
+
+On Sunday, one can join the other folks at the [Alt-OS Developer
+Room](http://fosdem.org/2010/schedule/devrooms/altos) (also see the [Haiku
+FOSDEM2010AltOSDevroomSchedule
+page](http://dev.haiku-os.org/wiki/FOSDEM2010AltOSDevroomSchedule)) where at
+least some of us will [spend their
+time](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00080.html).
+
+At this very place, Olaf will be giving two presentations: [*Why is Anyone
+Still Working on the GNU
+Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd) (Sun., 10:30, Alt-OS
+Developer Room), and [*Porting KGI graphics drivers from Linux to GNU
+Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd) (Sun., 13:00,
+Alt-OS Developer Room).
+
+There'll be further GNU folks around; [Mini GNU Hackers Meeting at FOSDEM
+Brussels 2010](http://www.gnu.org/ghm/2010/fosdem/).
diff --git a/community/meetings/rmll_2006.mdwn b/community/meetings/rmll_2006.mdwn
new file mode 100644
index 00000000..0d82a2b1
--- /dev/null
+++ b/community/meetings/rmll_2006.mdwn
@@ -0,0 +1,110 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="RMLL 2006"]]
+
+The 7th Rencontres Mondiales du Logiciel Libre (also known as Libre Software
+Meeting) will be held on July 4th-8th 2006 in Vandoeuvre-les-Nancy.
+
+There won't be a track of OS-related talks as it has been last year, see
+<http://lists.gnu.org/archive/html/bug-hurd/2006-06/msg00005.html>.
+
+Dorms have to be reserved on <http://resa.rmll.info/> as soon as possible.
+
+# Who And When
+
+<!-- TODO. Use the table plugin. See `fosdem_2007.mdwn'. -->
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Name</strong></th>
+ <th bgcolor="#99CCCC"><strong>Attending</strong></th>
+ <th bgcolor="#99CCCC"><strong>Arrival</strong></th>
+ <th bgcolor="#99CCCC"><strong>Return</strong></th>
+ </tr>
+ <tr>
+ <td>[[JeroenDekkers]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[ManuelMenal]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[MarcoGerards]]</td>
+ <td> no </td>
+ <td> n/a </td>
+ <td> n/a </td>
+ </tr>
+ <tr>
+ <td>[[MarcusBrinkmann]]</td>
+ <td> probably not </td>
+ <td> n/a </td>
+ <td> n/a </td>
+ </tr>
+ <tr>
+ <td>[[MichaelBanck]]</td>
+ <td> probably not </td>
+ <td> n/a </td>
+ <td> n/a </td>
+ </tr>
+ <tr>
+ <td>[[NealWalfield]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[PeterDeSchrijver]]</td>
+ <td> no </td>
+ <td> n/a </td>
+ <td> n/a </td>
+ </tr>
+ <tr>
+ <td>[[OlafBuddenhagen]]</td>
+ <td> ? </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[SamuelThibault]]</td>
+ <td> yes </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[SoerenSchulze]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[Stefan_Siegl|stesie]]</td>
+ <td> no </td>
+ <td> n/a </td>
+ <td> n/a </td>
+ </tr>
+ <tr>
+ <td>[[Thomas_Schwinge|tschwinge]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+ <tr>
+ <td>[[YoshinoriOkuji]]</td>
+ <td> perhaps </td>
+ <td> ? </td>
+ <td> ? </td>
+ </tr>
+</table>
diff --git a/community/meetings/self-organised.mdwn b/community/meetings/self-organised.mdwn
new file mode 100644
index 00000000..1403c115
--- /dev/null
+++ b/community/meetings/self-organised.mdwn
@@ -0,0 +1,54 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Self-organised meeting"]]
+
+This meeting will be held in a to-be-determined place, at a to-be-determined time. This page hopes to help finding a good time and place, and finding out who wants to come.
+
+# Who wants to come?
+
+Please add yourself here.
+
+* [[Bas_Wijnen|baswijnen]] (no preference for specific times)
+* [[Thomas_Schwinge|tschwinge]]
+* [[Tom_Bachmann|tombachmann]] (weekend in the middle of germany would be preferred)
+* [[Gianluca_Guida|GianlucaGuida]] (wherever, whenever)
+* [[Samuel_Thibault|SamuelThibault]] (wherever, whenever)
+
+# Who will come?
+
+* (to be filled in when the date is set)
+
+# When is a good time?
+
+Please add any suggestions here, and add to your name above if that time is good for you.
+
+# Where is a good place?
+
+## Somewhere in Germany
+
+This likely has the benefit of being relatively close to most people
+
+<http://www.linuxhotel.de/community.html> might be a suitable venue at very
+reasonable pricing.
+
+## Somewhere in Italy
+
+This likely has the benefit of better weather. ;-)
+
+## Venice (Italy)
+
+This certainly has the benefit of being in an awesome place. :-) Perhaps we shouldn't care too much about that, since we're mostly busy with ourselves anyway. Or perhaps we should: beauty helps creativity (wow, I should use this as my next catch-phrase to convince a girl to stay with me: I will fail again, but with style! Gianluca).
+
+# What will we do?
+
+There will be talks with discussions:
+
+* Bas will give a talk about Capability-microkernel-based operating systems, with an emphasis on how this can be useful for the Hurd. The talk hopes to get people enthousiastic for the concept, and it will be tried to keep it interesting for people who are not yet familiar with the concepts.
diff --git a/community/meetings/stesie_2007-10-12.mdwn b/community/meetings/stesie_2007-10-12.mdwn
new file mode 100644
index 00000000..d59ceded
--- /dev/null
+++ b/community/meetings/stesie_2007-10-12.mdwn
@@ -0,0 +1,23 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+On the weekend 2007-10-12 to 14 [[Stefan_Siegl|stesie]] invited Hurd people.
+Colin Leitner and [[Thomas_Schwinge|tschwinge]] came, as well as novice
+Christian Dietrich. [[Michael_Banck|MichaelBanck]] also joined in for one
+evening.
+
+Stefan and Christian mainly worked on [[hurd/translator/pfinet]] and
+[DHCP](http://lists.gnu.org/archive/html/bug-hurd/2007-10/msg00036.html),
+Michael on the [orbit2
+issue](http://lists.debian.org/debian-hurd/2007/09/msg00067.html) and Colin and
+Thomas on PAE support for GNU Mach, amongst other things.
+
+Pictures can be found at
+<http://brokenpipe.de/misc/images/index.cgi?d=hackend-200710>.
diff --git a/community/orkut.mdwn b/community/orkut.mdwn
new file mode 100644
index 00000000..2e7aae09
--- /dev/null
+++ b/community/orkut.mdwn
@@ -0,0 +1,3 @@
+As of March 6, 2004 the Gnu/Hurd community on <http://www.orkut.com/> has a membership of 89 people. An invitation from a current Orkut member is required to register with the Orkut site and join us.
+
+-- [[Main/GrantBow]] - 06 Mar 2004
diff --git a/community/thug.mdwn b/community/thug.mdwn
new file mode 100644
index 00000000..721c5aaf
--- /dev/null
+++ b/community/thug.mdwn
@@ -0,0 +1,25 @@
+# <a name="Toronto_GNU_Hurd_User_Group"> </a> Toronto (GNU/)Hurd User Group
+
+We are the first of the [[WebHome]] [[UserGroups]], and consequently the biggest! Our name is a slight misnomer, since we have plenty of members who live outside of Toronto, Ontario, Canada. We have a members in the Kitchener/Waterloo area who are about two hours from Toronto (by automobile,) and a member in Oakland, California, USA who is about two hours from Toronto (by aeroplane.)
+
+We are also expanding our reach. Currently our core members range in location from Montreal, PQ. to Waterloo, On.
+
+## <a name="Membership"> Membership </a>
+
+Anyone can join! Just find us, and help contribute.
+
+## <a name="Services"> Services </a>
+
+Currently, we maintain a [Savannah](http://savannah.gnu.org) project site at <http://savannah.nongnu.org/projects/thug>.
+
+As well, our web page links to lots of useful [documentation](http://www.nongnu.org/thug/docs.html).
+
+## <a name="Contact_us"> Contact us </a>
+
+Our website can be found at: <http://www.nongnu.org/thug/>.
+
+You can typically find us in the #thug channel on the Official GNU IRC network (irc.gnu.org).
+
+As well, we have a mailing list at [thug at gnu dot org](http://mail.gnu.org/mailman/listinfo/thug).
+
+-- [[Main/SimonLaw]] - 25 May 2002
diff --git a/community/weblogs.mdwn b/community/weblogs.mdwn
new file mode 100644
index 00000000..28f413eb
--- /dev/null
+++ b/community/weblogs.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Weblogs from Hurd programmers and enthusiasts.
+
+[[!map
+pages="community/weblogs/* and !community/weblogs/*/*"
+show=title]]
+
+---
+
+[[!inline
+pages="community/weblogs/*/* and !community/weblogs/*/*/*"
+show=0
+actions=no
+rootpage="community/weblogs" postformtext="Add a new user named:"]]
diff --git a/community/weblogs/ArneBab.mdwn b/community/weblogs/ArneBab.mdwn
new file mode 100644
index 00000000..1e80e5a8
--- /dev/null
+++ b/community/weblogs/ArneBab.mdwn
@@ -0,0 +1,45 @@
+[[!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]]."]]"""]]
+
+I'm just a Hurd dabbler who likes the ideas behind the Hurd:
+
+*"With the Hurd, users can change anything in their system which doesn't affect other
+users."*
+
+And this is one definition of freedom in a community: *"Do what you want as long as
+you don't restrict others from doing what they want."*
+
+In contrast, current systems (like Linux, MacOSX, Windows or others) require root/admin access to just install a new file system for reading out a nonstandard USB-stick (OK, who'd put reiserfs, zfs or similar on a USB stick? but still...).
+
+Why do I have to be root or even to recompile my kernel in Linux to get a new filesystem to run? Why can't I just start a program which takes care of the filesystem for me, and only for me?
+
+Well, with the Hurd I can do that, and it will be a transparent layer over my normal filesystem.
+
+And the same is true for networking stuff and anything else. Hacking on the deep internals of the system is possible with the Hurd without all the pain of having to compile the kernel to check it - and even without the need of superuser access for doing to.
+
+And sharing and exchanging programs deep inside the core is possible, too, since any Hurd user can just test them without fearing to compromise his/her machine.
+
+
+Myself, I don't hack the kernel or anything (this shouldn't be a 'yet', I think, but I try not to be too sure about these kinds of things - life is weird :) ), but I'd sure like to be able to just get a new filesystem when I need it (and I don't dig rebooting my computer).
+
+And I like my freedom - in my life as well as in technology.
+
+
+See you in the Hurd!
+
+- Arne Babenhauserheide ( http://draketo.de )
+
+----- My Blog -----
+
+[[!inline
+pages="community/weblogs/ArneBab/* and !community/weblogs/ArneBab/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/ArneBab" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/ArneBab/2008-06-17-latest-changes-in-the-hurd.mdwn b/community/weblogs/ArneBab/2008-06-17-latest-changes-in-the-hurd.mdwn
new file mode 100644
index 00000000..111bb640
--- /dev/null
+++ b/community/weblogs/ArneBab/2008-06-17-latest-changes-in-the-hurd.mdwn
@@ -0,0 +1,18 @@
+In the past few months the Hurd got quite many commits.
+
+I want to write a bit about the changes they brought, and what they mean to the Hurd.
+
+If some of my comments seem too 'simple' to you, just ignore them :)
+
+First we got many Bug fixes from Samuel Thibault, mainly in libpthread (multithreading), ext2fs and libdiskfs (both filesystem interaction).
+
+Then hurd-l4 (the port of the Hurd on the L4 kernel) seems to get quite much love by Neal H. Walfield (neal) at the moment.
+Quite much is saying a bit to little: hurd-l4 looks steamingly active in the commits :)
+
+And there is the [PyHurd](http://pypi.python.org/pypi/PyHurd) project. It attempts to create a full binding to the GNU/Hurd API, so people should someday be able to, for example, create translators in Python.
+
+There's been more - a lot more in fact, but much of it is above my coding horizon, and this entry shall end someplace (it's late - too late :) ).
+
+Best wishes,
+Arne
+
diff --git a/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn b/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn
new file mode 100644
index 00000000..54bd0eff
--- /dev/null
+++ b/community/weblogs/ArneBab/2008-07-12-codeswarm-movies-for-the-hurd.mdwn
@@ -0,0 +1,29 @@
+Today (OK, this night) I created some codeswarm movies to visualize the code history of the Hurd.
+
+What's particularly interesting to me in gnumach is the tschwinge - sthibaul effect in march 2008, where development suddenly seems to speed up enormeously.
+
+It clearly shows how much impact just two developers can have - you can have that kind of an impact, too!
+
+The code movies are created from the history of the cvs branches gnumach, hurd-l4 and
+hurd.
+
+The movies:
+
+ - [Gnumach](http://draketo.de/filme/codeswarm/gnumach_code_evolution.avi)
+
+ - [Hurd](http://draketo.de/filme/codeswarm/gnu_hurd_code_evolution_1_min.avi)
+
+ - [Hurd L4](http://draketo.de/filme/codeswarm/hurd-l4.avi)
+
+ - [Hurd wiki](http://draketo.de/filme/codeswarm/hurd_wiki.avi)
+
+in gnumach, red is the "kern", while in "hurd" red is stuff in "release".
+
+.*doc.* is dark blue and any stuff named .*linux.* is shown in a blue-green in
+both. In Hurd-L4 is annotated: It shows libc, gcc, Hurd and L4 kernel commits in
+different colors.
+
+The hurd wiki movie shows all web commits as "web-hurd@gnu.org", and you can clearly see that most changes are being done via the version control system. There's a way to split the web-commits, but since there aren't many, I leave that for another day :) - [article on the ikiwiki page](http://ikiwiki.info/news/code_swarm/).
+
+Best wishes,
+Arne
diff --git a/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn b/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
new file mode 100644
index 00000000..d72f4cef
--- /dev/null
+++ b/community/weblogs/ArneBab/2008-08-02-gnu_hurd_and_x.mdwn
@@ -0,0 +1,38 @@
+Getting X to work on the GNU/Hurd
+=================================
+
+This is a try to get X to work in my qemu GNU/Hurd.
+
+*This is a first try, my next one will be with the [[guide_from_this_wiki|Hurd/DebianXorg]].*
+
+Firstoff: I used the following guides:
+
+* [X Under the Hurd from debian-hurd](http://www.kerneltraffic.org/debian-hurd/dh20000112_31.html#3)
+* [GNU/Hurd FAQ](http://www.gnu.org/software/hurd/faq.en.html#q4-7)
+
+
+What I did
+----------
+
+I worked as root.
+
+First I installed xorg, x-window-system-code, rxvt and twm:
+
+ apt-get install xserver-xorg x-window-system-core rxvt twm
+
+Then I set the LD_LIBRARY_PATH and DISPLAY
+
+ export LD_LIBRARY_PATH=/usr/X11R6/lib
+ export DISPLAY=localhost:0.0
+
+After that I set the mouse and keyboard translator.
+
+ settrans /dev/kbd /hurd/kbd /dev/kbd
+ settrans -c /dev/mouse /hurd/mouse --protocol=ps/2
+
+Then I started x
+
+ startx
+
+It didn't work yet - but watch the blog for updates - I'll post once I get it
+working.
diff --git a/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn b/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn
new file mode 100644
index 00000000..d55527a7
--- /dev/null
+++ b/community/weblogs/ArneBab/Hurd-showcase-qemu-image.mdwn
@@ -0,0 +1,106 @@
+I’m currently preparing a qemu image for the Hurd which allows testing the capabilities of the Hurd with as little effort as possible.
+
+**Work in progress. These are my in-development notes.**
+
+For that I want to use:
+
+* An up to date debian image (no longer online, but I have a copy here).
+* My [Hurd Intro](http://bitbucket.org/ArneBab/hurd_intro),
+* Translators from [hurd-extras](http://www.nongnu.org/hurdextras/) and the [incubator](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), and naturally
+* a lot of apt-get update; apt-get upgrade and apt-get dist-upgrade :) (all worked flawlessly).
+
+## Working
+
+### Generally
+
+ # ssh with public key
+ apt-get install random-egd
+ ssh-keygen
+
+ # build tools
+ apt-get install build-essential
+
+### StoreIO
+
+ # mount an iso image
+ mount foo.iso bar -t iso9660fs
+ # see myfile as device
+ settrans foo /hurd/storeio myfile
+ # so that means I can pack a complete chroot (300MB) into a file with storeio and ext2fs — giselher
+
+ # nfs mount anywhere (TODO: check this with antrik)
+ mount server:/home /home -t nfs
+ settrans /home /hurd/nfs server:/home
+
+## In Progress
+
+### Hurdextras
+
+ hg clone <hurdextras repo>
+
+### httpfs
+
+ # pkg-config is needed to avoid “PKG_CHECK_MODULES syntax error near unexpected token `HTTPFS,'”
+ # pkg-config must be installed before you run autoreconf.
+ apt-get install autoconf autoconf-archive libxml2-dev pkg-config
+ autoreconf -i -f
+ ./configure
+ make
+ make install
+
+ settrans -ac gnu /usr/local/httpfs www.gnu.org/
+ # (breaks, because libxml2 needs pthreads → work to do.)
+ # (what we need: pthreads in translators. → see the [work of Barry](https://savannah.gnu.org/task/?func=detailitem&item_id=5487))
+ # check: for i in `objdump -x /usr/local/bin/httpfs |grep NEEDED| sed s/.*NEEDED//`; do echo $i; objdump -x /usr/lib/$i | grep pthread; objdump -x /lib/$i | grep pthread; done
+
+### Tarfs
+
+ apt-get install zip libz-dev libbz2-dev
+ hg clone http://bitbucket.org/ArneBab/hurd-tarfs tarfs
+ cd tarfs
+ make
+ make install
+ # works, though with warnings.
+
+ settrans -ca new /hurd/tarfs -cz test/intro.tar.gz
+ cp repos/intro/README new/
+ settrans -g new
+ tar -tf test/intro.tar.gz
+ # works
+
+ tar -cf test/intro.tar repos/intro
+ settrans -ac t /hurd/tarfs test/intro.tar
+ # (settrans: /hurd/tarfs: Translator died :( ⇒ more work to do )
+
+### nsmux
+
+ git clone git://git.sv.gnu.org/hurd/incubator.git nsmux
+ cd nsmux/
+ git checkout -b nsmux origin/nsmux
+
+ apt-get install autoconf autoconf-archive
+ autoreconf -i -f
+ ./configure
+ make
+ make install
+
+ cd ../..
+ mkdir test
+ settrans -c test2 /usr/local/bin/nsmux test
+ tar -cf test/intro.tar repos/hurd_intro
+ ls test2/intro.tar,,tarfs
+
+### clisp
+
+ git clone git://git.sv.gnu.org/hurd/incubator.git clisp
+ cd clisp/
+ git checkout -b clisp origin/clisp
+
+ apt-get install texi2html
+ make
+ make install
+
+
+### debugging Translators
+
+ rpctrace
diff --git a/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn b/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn
new file mode 100644
index 00000000..51ef2a85
--- /dev/null
+++ b/community/weblogs/ArneBab/What_a_Hurd_release_should_be_able_to_do_for_me.mdwn
@@ -0,0 +1,40 @@
+I thought a bit about what I’d need from Hurd to use it for some of my real life tasks.
+
+My desktop has to be able to do everything it does now, and that under high load, so it currently is no useful target for the Hurd.
+
+But then I have an OLPC XO sitting here, and I use it mostly for work and for clearly defined tasks. As such it seems natural to me to check, what the Hurd would have to be able to do to support my workflow on the OLPC.
+
+### What I need
+
+* Writing text and programming Python with emacs. - *works*.
+* Use Mercurial for my versiontracked stuff. - *works*.
+* Reading websites with emacs and w3m or with lynx. - *works*.
+* Use SSH to go on my desktop and on the university machine. - *should work*.
+* Run X11 with dwm and emacs. - *should work*.
+* Boot Hurd on the OLPC from a USB stick. - *not yet*?
+* Support networking over wlan and wpa_supplicant. - *not yet*? Might DDE kit help?
+* Listen to music with Quod Libet in X11. - *not yet*. Needs audio support.
+
+### What would be nice
+
+* Run a Gentoo system. - not *really* needed, but nice to update my system with the same tools.
+* Watch videos with mplayer. - unlikely. Even with Linux as kernel watching videos pushes my XO to the limit. But this is not essential.
+
+
+So, as soon as Debian GNU/Hurd (or Arch Hurd) supports the things I need, I’ll put it on a USB-stick and use it for coding and writing.
+
+To be frank: I’d likely even use it without audio-support. I have an mp3 player and can feed it via USB. So the essential features for me are:
+
+### Essential features
+
+* Writing text and programming Python with emacs. - works.
+* Use Mercurial for my versiontracked stuff. - works.
+* Use SSH to go on my desktop and on the university machine. - should work.
+* Boot Hurd on the OLPC from a USB stick. - not yet?
+* Support networking over wlan and wpa_supplicant. - not yet? Might DDE kit help?
+
+### Conclusion
+
+The Hurd doesn’t yet do everything I need for my OLPC, but it isn’t that far away either. Grub already gets [ported to OLPC](http://grub.enbug.org/OLPC), so what’s missing to make the Hurd a work system for me are just *booting on OLPC from USB stick* and *wlan-support on OLPC*.
+
+All the rest I need for work is already in place.
diff --git a/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn b/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn
new file mode 100644
index 00000000..01757867
--- /dev/null
+++ b/community/weblogs/ArneBab/hurd-gsoc2008-code_swarm.mdwn
@@ -0,0 +1,11 @@
+Hurd GSoC 2008 code_swarm
+=========================
+
+I created a code_swarm of the work done in the Hurd project during this years Google
+Summer of Code.
+
+* [Hurd GSoC 2008 code_swarm](http://draketo.de/filme/codeswarm/hurd-gsoc2008.ogv)
+
+I hope you enjoy it!
+
+PS: Now also available [on vimeo](http://www.vimeo.com/2097773) thanks to scolobb!
diff --git a/community/weblogs/ArneBab/niches_for_the_hurd.mdwn b/community/weblogs/ArneBab/niches_for_the_hurd.mdwn
new file mode 100644
index 00000000..6f0af07e
--- /dev/null
+++ b/community/weblogs/ArneBab/niches_for_the_hurd.mdwn
@@ -0,0 +1,340 @@
+Niches for the Hurd
+===================
+
+In the bug-hud mailinglist we did a search for niches where the Hurd is *the biggest
+fish in the pond*.
+
+This search was segmented into four distinct phases, three of them major:
+
+- Brainstorm
+- Reality check: can already do vs. could be used for
+- Turn ideas into applications
+- Find a compromise -> About which niches should we talk in the wiki?
+
+
+Brainstorm
+----------
+
+"Which niches could there be for the Hurd?"
+
+### Basic Results
+
+The result is a mix of target groups,
+nice features and options of the Hurd, reasons for running a Hurd and areas where
+the Hurd offers advantages:
+
+#### Nice features and options the Hurd offers
+
+- Give back power to users: arbitrary mounts, subhurds
+- Nice features: dpkg -iO ftp://foo/bar/*.deb
+- Easier access to low-level functions
+- Advanced lightweight virtualization
+- operating system study purposes as its done with minix
+- The possibility to create more efficient and powerful desktop environments
+- Having a _complete_ GNU System
+- All-in-one out-of-the-box distro running a webserver for crash-proof operation.
+
+
+#### Target groups and strong environments
+
+- Tinkerers who like its design.
+- multicore-systems
+
+
+### The keyphrases in more detail or with additional ideas
+
+#### Give back power to users: arbitrary mounts, subhurds
+
+Simpler virtual computing environments - no need to setup XEN, everyone can
+just open up his/her computer for someone else by creating a new user account,
+and the other one can login and easily adapt the system for his/her own needs.
+If most systems just differ by the translators setup on them, people could
+even transfer their whole environment from one computer to another one without
+needing root access or more root interaction than creating a new user account.
+"I want my tools" -> "no problem, just setup your translators".
+
+Also it would be possible to just open an account for stuff like joining the
+"World Community Grid" allowing for easier sharing of CPU time.
+
+
+#### Easier access to low-level functions
+
+*"One important use is for very technical people, who don't always go with
+standard solutions, but rather use new approaches to best solve their
+problems, and will often find traditional kernels too limiting."*
+
+*"Another interesting aspect is application development: With the easily
+customized/extended system functionality, and the ability to contain
+such customizations in subenvironments, I believe that Hurd offers a
+good platform for much more efficient development of complex
+applications. Application developers can just introduce the desired
+mechanisms on a very low level, instead of building around existing
+abstractions. The extensible filesystem in particular seems extremely
+helpful as a powerful, intuitive and transparent communication
+mechanism, which allows creating truly modular applications."*
+
+
+#### Advanced lightweight virtualization
+
+*"There is also the whole area I called "advanced lightweight
+virtualization" (see
+http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html
+), i.e. the ability to create various kinds of interesting
+subenvironments. Many use cases are covered by much bigger fish; but the
+flexibility we offer here could still be interesting: I think the middle
+grounds we cover between directly running applications, and full
+isolation through containers or VMs, are quite unique. This could
+simplify management of demanding applications for example, by partially
+isolating them from other applications and the main system, and thus
+reducing incompatibilities. Creating lightweight software appliances
+sounds like an interesting option.*"
+
+#### The possibility to create more efficient and powerful desktop environments
+
+*"While I believe this can be applied to any kind of applications, I'm
+personally most interested in more efficient and powerful desktop
+environments -- these considerations are in fact what got me seriously
+interested in the Hurd.*
+
+*Even more specifically, I've done most considerations (though by far not
+all) on modular web browsing environments. Those interested can read up
+some of my thoughts on this:*
+
+
+http://sourceforge.net/mailarchive/message.php?msg_name=20080909073154.GB821%40alien.local
+
+*(Just skip the text mode browsing stuff -- the relevant part is the long
+monologue at the end... I really should put these ideas into my blog.)"*
+
+
+
+#### Nice features
+
+Another example of features which would be easily possible with the Hurd:
+
+* transparent ftp (already possible!):
+ - settrans -c ftp: /hurd/hostmux /hurd/ftpfs /
+ - ls ftp://ftp.gnu.org/
+ - # -> list the files on the FTP server.
+
+
+* media-player translator:
+ - settrans play /hurd/mediaplayer_play
+ - cp song1.ogg song2.ogg play
+ - # -> files get buffered and played.
+
+or even:
+
+* cp ftp://foo/bar/ogg play
+
+that's KDEs fabled network transparency on the filesystem / shell level (where it belongs to be desktop agnostic).
+
+* add temporary filesystems anywhere via `settrans -a NODE /hurd/ext2fs`
+
+* make everything temporarily writeable without really changing it via [[hurd/translator/unionfs]].
+
+* Read tar archives and mbox files via `ls foo.tar.gz,,tarfs` and `ls foo.mbox,,mboxfs`, respectively → [[hurd/translator/nsmux]].
+
+* Use stuff like the new akonady (personal information) framework in KDE more efficiently from the shell.
+
+
+Reality check
+-------------
+
+Check which of the ideas can already be done easily with the Hurd in its current
+state, which ones are a bit more complex but already possible, which ones need a bit
+of coding (could be accomplished in a few months judging from the current speed of
+development), which ones need a lot of work (or fundamental changes) and which ones
+aren't possible.
+
+### Already possible and easy
+
+- Sample translators:
+ * hello world.
+ * transparently bind FTP into the filesystem
+ * hostmux + ftpfs -> connect to FTP automatically via asking for a dir named after the hostname -> fully transparent FTP filesystem: "touch ftp: ; settrans ftp: /hurd/hostmux /hurd/ftpfs / "
+ * bind any filesystem at any place in the directory tree (you have access to) without needing to be root.
+ * elegantly mount iso images and similar as unprivileged user.
+
+- Other useful stuff:
+ * Install deb-packages from an ftp server via 'dpkg -iO ftp://foo/bar/*.deb'
+ * remount a filesystem readonly as regular user: fsysopts /foo -r
+ * give a process additional group and user permissions at runtime:
+ $ groups
+ root
+ $ ps -L # gives me the PID of my login bash -> bashPID
+ ...
+ $ addauth -p bashPID -g mail
+ $ groups
+ root mail
+
+- Having a complete GNU System (but not yet on every hardware, and only about half the software Debian offers has been ported).
+
+### Already possible but complex or underdocumented
+
+- Easier access to low-level functions via translators.
+
+- Operating system study purposes as it's done with minix.
+
+- Tinkering for fun - need documentation about the fun things which can be done.
+
+### Need a few months of coding
+
+- A filesystem-based package manager.
+
+- subhurds for regular users
+ * A framework for confining individual applications is
+ really just one possible use case of the hurdish
+ subenvironments. Writing the tools necessary for that
+ should be quite doable in a few months. It's probably
+ not really much coding -- most of the work would be
+ figuring out how it should be set up exactly.
+ * subusers
+ * "subdo":
+ # Example: Let a virus run free, but any effect vanishes
+ # once the subhurd closes.
+ $ subdo --no-lasting-changes ./virus
+
+- Running parts of the Hurd on different computers, maybe even with shared servers on
+dedicated hardware (Cloud Computing when the servers can be made to migrate from
+between computers). Maybe this should be placed in "need a lot of coding".
+
+- subhurds for quickly adapting the whole system without bothering others.
+
+- Define your personal environment via translators, so you can easily take it with
+you (translators written in scripting laguages can make this easier - they could
+also for example be taken to each computer on USB stick).
+
+- A more powerful alternative to FUSE filesystems: While FUSE is limited to standard
+filesystem semantics, while Hurd translators can implement whatever they
+want.
+It is possible to change the behaviour in any aspect, including the way
+file name lookup works. Admittedly the only specific use case I know is
+the possibility to implement namespace-based translator selection with a
+set of normal translators, without any changes to the Hurd itself.
+It is also possible to extend the filesystem interfaces, adding new RPCs
+and options as needed. This allows using the filesystem for
+communication, yet implementing domain-specific interfaces where
+standard filesystems are too unefficient or cumbersome. A sound server
+would be one possible use case.
+
+- Namespace based translator selection (if you for example want to quickly check the
+contents of an iso image, just look at them via 'ls image.iso,,iso9660fs').
+
+### Need a lot of coding or fundamental changes
+
+- Effective resource management (For example via Viengoos on which Neal Walfield is
+working). The idea is that we could make a virtue out of necessity: Once we have a
+proper resource management framework, we should be able not only to catch up with
+traditional systems in this reagard, but in fact surpass them.
+
+- The possibility to create more efficient and powerful desktop environments.
+
+- Multicore systems (need to fixup Mach for SMP)
+
+- Currently to offer CPU time to some project (like the World Community Grid), it is
+necessary to install a program from them, and they can then do only what that proram
+allows them to - which leads to reinventing a processing environment instead of just
+using the existing OS.
+With the Hurd people could just create a user for them, give that user specific
+permissions (like "you're always lowest priority"), add the public ssh keys of
+the project they want to donate CPU cycles to, and the project could just turn
+the computer into the environment it needs for the specific computation,
+without compromising the main system in any way (needs better resource management).
+
+- A shared MMORPG game world consisting simply of files for levels and person
+descriptions with access rights. All synchronizing is done on the translator
+level. Programs only have to display the given files and quickly update the
+state of their own files, so the programs stay very easy. The translator could
+notify the program when something changes.
+
+
+
+### Unfeasible ideas
+
+
+
+Applications
+------------
+
+A minor phase, which will surely be interleaved with the others: Making the ideas
+tangible to turn them into ways how people can use the Hurd.
+
+*"Hey, look, this is the Hurd. You can use it like this to do that which you can't do
+as well/easily/elegantly in any other way."*
+
+
+### Applications for private use
+
+### Applications for companies
+
+### How an application should be presented so people can easily test and digest it
+
+We need stuff which gets people to say "hey that's cool!"
+
+And it must be readily available.
+If I have to search for arcane command line parameters before I can use it,
+it's too hard.
+
+From what I see, each direct cool application must be about as simple as
+
+$ qemu hurd-is-cool.img
+$ login root
+$ settrans cool /hurd/cool
+$ ls cool
+
+One main focus in this example is: No command line parameters but the ones we
+really need. No "-a", if the example is also cool without it.
+No "--console" if it works otherwise.
+
+Especially no *"qemu --cd livecd --hda hurd.img ..."* - that one is great for
+people who already know qemu or want to learn it, but the goal here isn't to teach people
+better usage of qemu, but to show them that the Hurd is cool, and only that.
+
+All that interesting advanced stuff just gets newcomers confused.
+
+The translator concept in itself is enough news to faze a mind - anything else
+can easily be too much.
+
+If the application isn't as simple as the example above, then the best step
+would be to see if we can make it as simple - if that involves writing trivial
+scripts than be it so. They are trivial only to those who already understand
+the underlying concepts.
+
+And now enough with rambling :)
+
+The Hurd is cool, and the complex to use applications are cool, too.
+But they are hard to present in a way newcomers easily understand.
+
+
+Compromise
+----------
+
+For each niche:
+
+- What do we have to do to conquer the niche?
+- How many additional programmers can the Hurd get in this niche?
+- How does choosing this niche limit the flexibility of further development (for example due to the goals of the people who join up)?
+- Can we easily move on to conquering the next niche once we got this one?
+- What should the Hurd accomplish on the long term (long term goals)? Which possible niches help that?
+
+Each participant:
+
+- Give your personal priorities to the niches:
+ * Must -> all of these of all developers must be included;
+ remember that at most 3 to 4 ideas can be conveyed in any text.
+ * Should -> The number of shoulds can be used for ranking and similar.
+
+("must", because in a community people can do what they perceive as important, and
+telling someone to stop what he's doing is no option (in my opinion))
+
+
+Things to do
+------------
+
+todo-item -> niches for which it is useful.
+
+### Easy
+
+- Port debian packages to the Hurd -> mainly tinkerers, but also any other niche.
+
diff --git a/community/weblogs/ArneBab/what_we_need.mdwn b/community/weblogs/ArneBab/what_we_need.mdwn
new file mode 100644
index 00000000..cb4e55b2
--- /dev/null
+++ b/community/weblogs/ArneBab/what_we_need.mdwn
@@ -0,0 +1,39 @@
+We created a list of the things we still need for using the Hurd for in our day-to-day activities (work or hobby).
+
+As soon as these issues are taken care of, the Hurd offers everything we need for fullfilling most of our computing needs on at least one of our devices:
+
+- USB (5): Arne, ms, Michael, Emilio, antrik²³
+- Wireless (5): Arne, ms, Carl Fredrik, Michael (netbook), antrik (notebook)
+- Sound (4): ms, Carl Fredrik, Michael, antrik²
+
+- SATA (2): Michael, (Emilio)
+- Tested for modern machines°¹ (2): Emilio, antrik (notebook)
+- Stable Xorg° (2): Emilio, antrik
+- PPPoE (2): Carl Fredrik, antrik²
+
+- Graphical Desktop (1): Emilio
+- Full featured high-resultion console which doesn’t need X (1): antrik
+- Switching between console and X° (1): antrik
+- full-featured browser (i.e. Firefox)°⁵ (1): antrik
+- NFS working for climm, w3m and git (1): antrik⁴
+- mplayer with win32codecs (1): antrik³
+- gnash or alternatives (1): antrik³
+
+°: Very likely needed by more people, but not named as most pressing issue.
+¹: It’s unclear on which processors the Hurd would have problems. Please report it if you have one!
+→ [http://www.mail-archive.com/bug-hurd@gnu.org/msg19105.html](info)
+²: Would be OK to use a router box instead.
+³: Not critical but would be convenient.
+⁴: Only while *not* using Hurd as the only machine.
+⁵: [We’re close to that](http://www.mail-archive.com/bug-hurd@gnu.org/msg19177.html).
+
+So, if one of these issues seems to be interesting for you, or you think “I can do that easily”,
+why not become a Hurd hacker and add your touch? :)
+
+You can reach us in the [[mailing_lists]] and in [[irc]].
+
+The sourcecode is in our [[source_repositories]] (git). When you want to check sources relevant for you, [DDE](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=dde) might be a good place to start for wireless and sound. USB on the other hand might need work in [gnumach](http://git.savannah.gnu.org/cgit/hurd/gnumach.git/) ([[hacking_info|microkernel/mach/gnumach]]).
+
+Besides: “The great next stuff” is in the [incubator git repo](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), including (among others) [clisp](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=clisp) (translators in lisp) and [nsmux](http://git.savannah.gnu.org/cgit/hurd/incubator.git/tree/?h=nsmux) (dynamically setting translators on files for one command by accessing `file,,translator`).
+
+Happy hacking!
diff --git a/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn b/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn
new file mode 100644
index 00000000..693168a4
--- /dev/null
+++ b/community/weblogs/ArneBab/xkb-woes-trying-to-get-a-german-keyboard-layout.mdwn
@@ -0,0 +1,47 @@
+[[!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]]."]]"""]]
+
+Yesterday I spent a few hours trying to get my german keyboard to let me use my umlauts (and to let me type without having to hunt down the right keys), but without much luck.
+
+I got xkb installed after following this FaQ answer:
+
+- <http://www.gnu.org/s/hurd/faq.en.html#q4-4>
+
+and this info:
+
+- <http://people.debian.org/~mbanck/hurd-console.default>
+
+(you can find the second under /etc/default/hurd-console ).
+
+But I didn't get it to work.
+
+### What I did in short:
+
+
+First I got the needed apt-sources:
+
+- <http://debian.duckcorp.org/>
+
+Then I installed the xkb console:
+
+- `apt-get install console-driver-xkb`
+
+
+And set it in the file /etc/default/hurd-console
+
+
+Sadly it didn't work, but maybe this posts will give You the needed headstart for success :) (I'd be glad to see a guide from you!).
+
+
+Some additional info:
+
+- <http://kerneltrap.org/node/420>
+- <http://www.bddebian.com/~wiki/hurd/console/>
+
diff --git a/community/weblogs/antrik.mdwn b/community/weblogs/antrik.mdwn
new file mode 100644
index 00000000..6db88dd9
--- /dev/null
+++ b/community/weblogs/antrik.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!inline
+pages="community/weblogs/antrik/* and !community/weblogs/antrik/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/antrik" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/antrik/hurd-mission-statement.mdwn b/community/weblogs/antrik/hurd-mission-statement.mdwn
new file mode 100644
index 00000000..592e176a
--- /dev/null
+++ b/community/weblogs/antrik/hurd-mission-statement.mdwn
@@ -0,0 +1,39 @@
+For a while I have been thinking about the lack of a roadmap for the
+Hurd; but now I realized that we lack something even more fundamental: a
+simple mission statement -- i.e. saying where we want to go, rather
+than how we want to get there. I think many of the problems we have are
+directly or indirectly related to that.
+
+As we didn't have such a mission statement so far, the people currently
+involved have vastly different ideas about the mission, which of course
+makes it a bit hard to come up with a suitable one now. However, I
+managed to come up with something that I believe is generic enough so
+all contributors can subscribe to it:
+
+> *The mission of the Hurd project is: to create a general-purpose
+> kernel suitable for the GNU operating system, which is viable for
+> everyday use, and gives users and programs as much control over their
+> computing environment as possible.*
+
+*"Suitable for GNU"* in the first part implies a number of things. I
+explicitely mentioned *"general-purpose"*, because this an important
+feature that sets the Hurd apart from many other microkernel projects,
+but isn't immediately obvious.
+
+I didn't mention that it must be entirely free software, as this should
+be obvious to anyone familiar with GNU.
+
+Another thing I did not mention, because it's too controversial: how
+much UNIX do we need? I think that being suitable for GNU requires a
+pretty high degree of UNIX compatibility, and also that the default
+environment looks to the user more or less like UNIX. However, some
+people claimed in the past that GNU could do without UNIX -- the wording
+used here doesn't totally preclude such views.
+
+The second part also leaves a lot of slack: I for my part still believe
+that a Mach-based Hurd can be viable for everyday use; but those who
+think that a microkernel change is required, should be happy with this
+wording as well.
+
+The third part tries to express the major idea behind the Hurd design in
+the most compact and generic way possible.
diff --git a/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn b/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn
new file mode 100644
index 00000000..9e6143bf
--- /dev/null
+++ b/community/weblogs/antrik/plan9-and-the-hurd-major-differences.mdwn
@@ -0,0 +1,50 @@
+[[!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="Major differences between Plan9 and the Hurd"]]
+
+There are some similarities between the Hurd and Plan 9 regarding the file
+system handling -- but there are also very fundamental differences which go
+far beyond monolithic vs. microkernel design:
+
+- The Hurd is UNIX (POSIX) compatible
+
+- While (almost) all services are attached to the file system tree, not
+ all services actually export a file system interface!
+
+ Personally, I advocate using FS-based interfaces as much as possible.
+ Yet, there are some cases where they get very awkward and/or
+ inefficient, and domain-specific interfaces simply make a lot more
+ sense.
+
+ Also, some Hurd services are indeed used to implement the file systems
+ in the first place -- they work below the FS level, and obviously
+ can't use an FS interface!
+
+- File systems are completely decentralized -- clients always talk to
+ the FS servers directly, without any central VFS layer. (I don't think
+ that's the case in Plan 9?)
+
+ This offers much more flexibility -- the way the FS interfaces
+ themselves work can be modified. Many things can be implemented as
+ normal translators, that would require special VFS support on other
+ systems. (Extended attributes, VFS-based union mounts, local
+ namespaces, firmlink, magic file name suffixes etc.)
+
+- The system design allows users and applications to change almost all
+ aspects of the system functionality in the local environment easily
+ and without affecting other parts of the system.
+
+ (This is possible with Plan 9 to some extent; but the Hurd allows it
+ at a much lower level -- including stuff like the filesystem
+ interfaces, access control mechanisms, program execution and process
+ management, and so on.)
+
+I hope I didn't forget any major differences...
diff --git a/community/weblogs/hook.mdwn b/community/weblogs/hook.mdwn
new file mode 100644
index 00000000..e9e083dc
--- /dev/null
+++ b/community/weblogs/hook.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+Well as [[weblogs/ArneBab]] asked me to, I made a blog here in the Hurd's community section.
+
+So I suppose it's time for me to introduce myself. I'm a lawyer student just short of my masters' (called "diploma" here in Slovenia) and a hacker by heart. I've been using GNU/Linux for over a decade now, started on Slackware and continued on Gentoo. I try to give back to the community by being an active member (posting bugs and whatnot), coordinating the local FSFE Fellowship group and lately also lending a hand to the Gentoo Licenses team. I keep a [website and blog](http://matija.suklje.name) of my own and occasionally even write some short sad piece of sloppy code.
+
+Small disclaimer about my coding abilities:
+
+ 10 IANAC IAAL
+
+For those who wonder about what IANAC IAAL means — it's the oposite of IANAL IAAC and means "I Am Not A Coder, I Am A Lawyer" ;)
+
+[[!inline
+pages="community/weblogs/hook/* and !community/weblogs/hook/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/hook" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/tschwinge.mdwn b/community/weblogs/tschwinge.mdwn
new file mode 100644
index 00000000..fc0d2ace
--- /dev/null
+++ b/community/weblogs/tschwinge.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!inline
+pages="community/weblogs/tschwinge/* and !community/weblogs/tschwinge/*/*"
+show=0
+actions=no
+rootpage="community/weblogs/tschwinge" postformtext="Add a new entry named:"]]
diff --git a/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn
new file mode 100644
index 00000000..bd08060e
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive.mdwn
@@ -0,0 +1,545 @@
+[[!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="splitting a patch into three, and then some git rebase
+--interactive"]]
+
+I was revisiting the issue of getting the Hurd's code base compiled with recent
+versions of GCC. Specifically, there were a lot of duplicate symbols shown at
+linking time, and all these were related to `inline` functions. Originally, in
+2007, we had solved this problem already (or rather, shifted it) by using GCC's
+`-fgnu89-inline` option, but as we [[!GNU_Savannah_patch 6840 desc="saw now"]],
+that one obviously doesn't help anymore if third-party code is using the Hurd's
+unfixed header files.
+
+So I was revisiting this issue. I was already prepared that this would take
+some hours, with lots of editing, compiling cycles, plus some analyzing of the
+binaries. So I made up a fresh repository for this work.
+
+ $ mkdir hurd-ei
+ $ cd hurd-ei/
+ $ git init
+ [...]
+ $ git remote add savannah git://git.savannah.gnu.org/hurd/hurd.git
+ $ git fetch
+ [...]
+
+Switch to a new topic-branch.
+
+ $ git checkout -b master-ei savannah/master
+ Branch master-ei set up to track remote branch master from savannah.
+ Switched to a new branch 'master-ei'
+
+(*`ei`* is short for `extern inline`.)
+
+The first thing to do was to disable that `-fgnu89-inline` option, so I edited
+`Makeconf` where it was added to `CFLAGS`.
+
+I started editing, compiling, editing, compiling, and so on.
+
+Finally, the tree was in a shape where everything was building fine and the
+resulting libraries contained the symbols they should, etc.
+
+I committed the whole junk as one *big blob* commit, to store it in a safe
+place (you never know with these Hurd machines...), and to continue working on
+it the next day.
+
+ $ git commit -a
+
+For the commit message, I already mostly assembled a `ChangeLog`-style log.
+Then:
+
+ $ git format-patch savannah/master..
+ 0001-Bla.patch
+
+... and here is [[0001-Bla.patch.bz2]] (compressed).
+
+
+The next day, a.k.a. today, in a different Git repository.
+
+ $ git checkout -b master-fix_inline savannah/master
+ Branch master-fix_inline set up to track remote branch master from savannah.
+ Switched to a new branch 'master-fix_inline'
+ $ bunzip2 < ../some/where/0001-Bla.patch.bz2 | git am
+ Applying: Bla.
+
+The *big blob* is now on top of savannah/master (which was
+`2772f5c6a6a51cf946fd95bf6ffe254273157a21`, by the way -- in case that you want
+to reproduce this tutorial later, simply substitute `savannah/master` with
+`2772...`).
+
+By then, I had come to the conclusion that the commit essentially was fine, but
+should be split into two, and the `configure` hunk shouldn't be in there. So
+be it.
+
+So, the `HEAD` of the active branch is our *big blob* commit that we want to
+work on. Check with `git show HEAD`:
+
+ $ git show HEAD
+ commit 93e97f3351337c349e2926f4041e61bc487ef9e6
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Bla.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ * ext2fs/ext2fs.h (test_bit, set_bit, clear_bit, dino, global_block_modified)
+ (record_global_poke, sync_global_ptr, record_indir_poke, sync_global)
+ (alloc_sync): Likewise.
+ * libftpconn/priv.h (unexpected_reply): Likewise.
+ * term/term.h (qsize, qavail, clear_queue, dequeue_quote, dequeue)
+ (enqueue_internal, enqueue, enqueue_quote, unquote_char, char_quoted_p)
+ (queue_erase): Likewise.
+ * ufs/ufs.h (dino, indir_block, cg_locate, sync_disk_blocks, sync_dinode)
+ (swab_short, swab_long, swab_long_long): Likewise.
+ * term/munge.c (poutput): Use static inline instead of inline.
+
+ * libdiskfs/diskfs.h: Apply inline optimization only ifdef
+ [__USE_EXTERN_INLINES]. Use __extern_inline instead of extern inline.
+ * libftpconn/ftpconn.h: Likewise.
+ * libpipe/pipe.h: Likewise.
+ * libpipe/pq.h: Likewise.
+ * libshouldbeinlibc/idvec.h: Likewise.
+ * libshouldbeinlibc/maptime.h: Likewise.
+ * libshouldbeinlibc/ugids.h: Likewise.
+ * libstore/store.h: Likewise.
+ * libthreads/rwlock.h: Likewise.
+ * libdiskfs/extern-inline.c: Adapt to these changes.
+ * libftpconn/xinl.c: Likewise. And don't #include "priv.h".
+ * libpipe/pipe-funcs.c: Likewise.
+ * libpipe/pq-funcs.c: Likewise.
+ * libshouldbeinlibc/maptime-funcs.c: Likewise. And remove superfluous
+ includes.
+ * libstore/xinl.c: Likewise.
+ * libthreads/rwlock.c: Likewise.
+
+ * Makeconf (CFLAGS): Don't append $(gnu89-inline-CFLAGS).
+ * pfinet/Makefile (CFLAGS): Append $(gnu89-inline-CFLAGS).
+
+ diff --git a/Makeconf b/Makeconf
+ index e9b2045..236f1ec 100644
+ --- a/Makeconf
+ +++ b/Makeconf
+ @@ -65,7 +65,7 @@ INCLUDES += -I$(..)include -I$(top_srcdir)/include
+ CPPFLAGS += $(INCLUDES) \
+ -D_GNU_SOURCE -D_IO_MTSAFE_IO -D_FILE_OFFSET_BITS=64 \
+ $($*-CPPFLAGS)
+ -CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -g -O3 \
+ +CFLAGS += -std=gnu99 -Wall -g -O3 \
+ [...]
+
+We want to undo this one commit, but preserve its changes in the working
+directory.
+
+ $ git reset HEAD^
+ Makeconf: locally modified
+ configure: locally modified
+ console-client/timer.h: locally modified
+ ext2fs/ext2fs.h: locally modified
+ libdiskfs/diskfs.h: locally modified
+ libdiskfs/extern-inline.c: locally modified
+ libftpconn/ftpconn.h: locally modified
+ libftpconn/priv.h: locally modified
+ libftpconn/xinl.c: locally modified
+ libpipe/pipe-funcs.c: locally modified
+ libpipe/pipe.h: locally modified
+ libpipe/pq-funcs.c: locally modified
+ libpipe/pq.h: locally modified
+ libshouldbeinlibc/idvec.h: locally modified
+ libshouldbeinlibc/maptime-funcs.c: locally modified
+ libshouldbeinlibc/maptime.h: locally modified
+ libshouldbeinlibc/ugids.h: locally modified
+ libstore/store.h: locally modified
+ libstore/xinl.c: locally modified
+ libthreads/rwlock.c: locally modified
+ libthreads/rwlock.h: locally modified
+ pfinet/Makefile: locally modified
+ term/munge.c: locally modified
+ term/term.h: locally modified
+ ufs/ufs.h: locally modified
+
+Now, `HEAD` points to the commit before the previous `HEAD`, i.e. `HEAD^`.
+Again, check with `git show HEAD`:
+
+ $ git show HEAD
+ commit 2772f5c6a6a51cf946fd95bf6ffe254273157a21
+ Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+ Date: Thu Apr 2 23:06:37 2009 +0000
+
+ 2009-04-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * exec.c (prepare): Call PREPARE_STREAM earlier to permit calling
+ finish_mapping on E even after errors, as is already done in do_exec.
+
+ diff --git a/exec/ChangeLog b/exec/ChangeLog
+ index 5a0ad1d..a9300bf 100644
+ --- a/exec/ChangeLog
+ +++ b/exec/ChangeLog
+ @@ -1,3 +1,8 @@
+ +2009-04-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+ +
+ + * exec.c (prepare): Call PREPARE_STREAM earlier to permit calling
+ + finish_mapping on E even after errors, as is already done in do_exec.
+ +
+ 2008-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * elfcore.c (TIME_VALUE_TO_TIMESPEC): Completely implement instead of
+ diff --git a/exec/exec.c b/exec/exec.c
+ index 05dc883..cb3d741 100644
+ --- a/exec/exec.c
+ +++ b/exec/exec.c
+ @@ -726,6 +726,9 @@ prepare (file_t file, struct execdata *e)
+
+ e->interp.section = NULL;
+
+ + /* Initialize E's stdio stream. */
+ + prepare_stream (e);
+ [...]
+
+Luckily, Git saves the previous (i.e. before the `git reset`) `HEAD` reference
+as `ORIG_HEAD`. Have a look at it with `git show ORIG_HEAD` -- it contains the
+*big blob* commit, including the preliminary commit message -- just what HEAD
+was before:
+
+ $ git show ORIG_HEAD
+ commit 93e97f3351337c349e2926f4041e61bc487ef9e6
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Bla.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ [...]
+
+ diff --git a/Makeconf b/Makeconf
+ index e9b2045..236f1ec 100644
+ --- a/Makeconf
+ +++ b/Makeconf
+ @@ -65,7 +65,7 @@ INCLUDES += -I$(..)include -I$(top_srcdir)/include
+ CPPFLAGS += $(INCLUDES) \
+ -D_GNU_SOURCE -D_IO_MTSAFE_IO -D_FILE_OFFSET_BITS=64 \
+ $($*-CPPFLAGS)
+ -CFLAGS += -std=gnu99 $(gnu89-inline-CFLAGS) -Wall -g -O3 \
+ +CFLAGS += -std=gnu99 -Wall -g -O3 \
+ [...]
+
+OK, now let's pick the files that we want to have in the first of the
+envisioned two commits: these are the *static inline instead of extern inline*
+and *apply inline optimization only...* sections.
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] libthreads/rwlock.c
+
+Oh, we forgot something: now that we're preparing this stuff to go into the
+*master* repository, update the copyright years. Edit, edit, edit, and then,
+again:
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] libthreads/rwlock.c
+
+Now Git's staging area contains the changes that we want to commit (and the
+working directory contains the rest of the *big blob*). Commit these `add`ed
+files, and use *big blob*'s commit message as a template for the new one, as it
+already contains most of what we want (don't forget to chop off the unneeded
+parts).
+
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [master-fix_inline 51c15bc] Use static inline where appropriate.
+ 6 files changed, 50 insertions(+), 51 deletions(-)
+ $ git show HEAD
+ commit c6c9d7a69dea26e04bba7010582e7bcd612e710c
+ Author: Thomas Schwinge <tschwinge@gnu.org>
+ Date: Tue Jun 23 00:27:28 2009 +0200
+
+ Use static inline where appropriate and use glibc's __extern_inline machinery.
+
+ * console-client/timer.h (fetch_jiffies): Use static inline instead of extern
+ inline.
+ * ext2fs/ext2fs.h (test_bit, set_bit, clear_bit, dino, global_block_modified)
+ (record_global_poke, sync_global_ptr, record_indir_poke, sync_global)
+ (alloc_sync): Likewise.
+ * libftpconn/priv.h (unexpected_reply): Likewise.
+ * term/term.h (qsize, qavail, clear_queue, dequeue_quote, dequeue)
+ (enqueue_internal, enqueue, enqueue_quote, unquote_char, char_quoted_p)
+ (queue_erase): Likewise.
+ * ufs/ufs.h (dino, indir_block, cg_locate, sync_disk_blocks, sync_dinode)
+ (swab_short, swab_long, swab_long_long): Likewise.
+ * term/munge.c (poutput): Use static inline instead of inline.
+
+ * libdiskfs/diskfs.h: Apply inline optimization only ifdef
+ [__USE_EXTERN_INLINES]. Use __extern_inline instead of extern inline.
+ * libftpconn/ftpconn.h: Likewise.
+ * libpipe/pipe.h: Likewise.
+ * libpipe/pq.h: Likewise.
+ * libshouldbeinlibc/idvec.h: Likewise.
+ * libshouldbeinlibc/maptime.h: Likewise.
+ * libshouldbeinlibc/ugids.h: Likewise.
+ * libstore/store.h: Likewise.
+ * libthreads/rwlock.h: Likewise.
+ * libdiskfs/extern-inline.c: Adapt to these changes.
+ * libftpconn/xinl.c: Likewise. And don't #include "priv.h".
+ * libpipe/pipe-funcs.c: Likewise.
+ * libpipe/pq-funcs.c: Likewise.
+ * libshouldbeinlibc/maptime-funcs.c: Likewise. And remove superfluous
+ includes.
+ * libstore/xinl.c: Likewise.
+ * libthreads/rwlock.c: Likewise.
+
+ diff --git a/console-client/timer.h b/console-client/timer.h
+ index 4204192..5e64e97 100644
+ --- a/console-client/timer.h
+ +++ b/console-client/timer.h
+ @@ -1,5 +1,7 @@
+ /* timer.h - Interface to a timer module for Mach.
+ - Copyright (C) 1995,96,2000,02 Free Software Foundation, Inc.
+ +
+ + Copyright (C) 1995, 1996, 2000, 2002, 2009 Free Software Foundation, Inc.
+ +
+ Written by Michael I. Bushnell, p/BSG and Marcus Brinkmann.
+
+ This file is part of the GNU Hurd.
+ @@ -54,7 +56,7 @@ int timer_remove (struct timer_list *timer);
+ /* Change the expiration time of the timer TIMER to EXPIRES. */
+ void timer_change (struct timer_list *timer, long long expires);
+
+ -extern inline long long
+ +static inline long long
+ [...]
+
+As you can see, `HEAD` now points to the new commit on top of the current
+branch. (`ORIG_HEAD` doesn't change.)
+
+On to the next, and last one, only two changes should be left: the `Makeconf`
+and `pfinet/Makefile` ones.
+
+ $ git status
+ # On branch master-fix_inline
+ # Your branch is ahead of 'savannah/master' by 1 commit.
+ #
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: Makeconf
+ # modified: configure
+ # modified: pfinet/Makefile
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Alright, there is as well still the `configure` hunk that we want to get rid
+of. But first for the real second commit, after editing for again adding the
+copyright year update:
+
+ $ git add Makeconf pfinet/Makefile
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [master-fix_inline 6a967d1] We're now C99 inline safe -- apart from the Linux code in pfinet.
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+Check that we're in a clean state now:
+
+ $ git status
+ # On branch master-fix_inline
+ # Your branch is ahead of 'savannah/master' by 2 commits.
+ #
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: configure
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Oops, we forgot something...
+
+ $ git checkout -- configure
+
+Now, our tree is clean again. (Check with `git status`.)
+
+By now, we came to the conclusion that the first of the two commits should have
+been further split into two separate ones. Of course, essentially we would do
+the same splitting again that we've done just now -- but how to easily modify
+the first commit, now that we have another one on top of it?
+
+Alright, `git rebase --interactive` to the rescue -- let's interactively
+*`rebase`* the last two commits, to modify them as wanted.
+
+ $ git rebase --interactive HEAD~2
+ Waiting for Emacs...
+
+Emacs wants us to tell which commits we want to keep as they are (`pick`),
+which should be merged into others (`squash`), and which we want to `edit`. In
+our scenario, we want to `edit` the first one and `pick` the second one.
+Change the file thusly and close it.
+
+ Stopped at 5becbb5... Use static inline where appropriate and use...
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+We want to undo this first commit to split it into two. Again, use `git reset`
+for that, while preserving the commit's changes in the working directory.
+
+ $ git reset HEAD^
+ console-client/timer.h: locally modified
+ [...]
+
+Pick the set of files that we want to have in the first of the envisioned two
+commits: the *static inline instead of extern inline* section, and commit them,
+again using the previous commit message as a template for the new one:
+
+ $ git add console-client/timer.h ext2fs/ext2fs.h [...] term/munge.c
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [detached HEAD 51c15bc] Use static inline where appropriate.
+ 6 files changed, 50 insertions(+), 51 deletions(-)
+
+Next part: *apply inline optimization only...*. Again, `git add` those files
+that shall be part of the next commit, i.e. all remaining ones. As before, use
+the previous commit message as a template.
+
+ $ git add libdiskfs/diskfs.h [...] libthreads/rwlock.c
+ $ git commit -c ORIG_HEAD
+ Waiting for Emacs...
+ [detached HEAD 8ac30ea] [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ 16 files changed, 508 insertions(+), 356 deletions(-)
+
+Now we're done with splitting that commit into two. (Check with `git status`
+that we didn't forget anything.) What's missing is getting back the other
+commit on top of the two now-split ones:
+
+ $ git rebase --continue
+ Successfully rebased and updated refs/heads/master-fix_inline.
+
+Here we go. The other commit has been applied on top of the two new ones.
+
+Due to time-honored tradition, I always double-check what I have just
+committed, before distributing it to the world:
+
+ $ git log --reverse -p -C --cc savannah/master..
+
+... and promptly, I recognize some changes that shouldn't be in there: when
+using it on some files, Emacs' `copyright-fix-years`, aside from indeed fixing
+the list of copyright years, and adding the current year, also changed *GPL
+... version 2* into *version 3*, which would be nice, but which we can't do for
+the moment. The error is present only in the first and second commit. If it
+were in only in the third (the last) one, simply editing the files, and then
+using `git commit --amend` would be the solution. But again there is the
+problem about how to modify the first (`HEAD~2`) and second (`HEAD~1`, or
+`HEAD^`) commit now that there is another one on top of it. By now, we know
+the solution:
+
+ $ git rebase --interactive HEAD~3
+ Waiting for Emacs...
+
+This time, we need to `edit` the first and second commits, and `pick` the third
+one.
+
+ Stopped at ffd215b... Use static inline where appropriate.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+`git show` (which defaults to showing `HEAD`, by the way) can again be used to
+have a look at the current `HEAD` (which is the first of the three commits),
+and then we revert the unwanted changes in the editor, resulting with the
+following changed files:
+
+ $ git status
+ # Not currently on any branch.
+ # Changed but not updated:
+ # (use "git add <file>..." to update what will be committed)
+ # (use "git checkout -- <file>..." to discard changes in working directory)
+ #
+ # modified: ext2fs/ext2fs.h
+ # modified: libftpconn/priv.h
+ # modified: term/munge.c
+ # modified: term/term.h
+ # modified: ufs/ufs.h
+ #
+ # Untracked files:
+ # (use "git add <file>..." to include in what will be committed)
+ #
+ # 0001-Bla.patch
+ # autom4te.cache/
+ # hurd_extern_inline_fix.patch?file_id=18191
+ no changes added to commit (use "git add" and/or "git commit -a")
+
+Then, we can -- as `git rebase` suggested above -- *amend* the existing `HEAD`
+commit with these changes (`--amend` and `--all`), reusing `HEAD`'s commit
+message without spawning an editor (`-C HEAD`):
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD c6c9d7a] Use static inline where appropriate.
+ 6 files changed, 45 insertions(+), 46 deletions(-)
+
+Continue with the next commit:
+
+ $ git rebase --continue
+ Stopped at 8ac30ea... [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+Again, have a look at the commit (`git show`), revert the unwanted changes,
+*amend* `HEAD`, and continue to the next commit:
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD 9990dc6] [__USE_EXTERN_INLINES]: Use glibc's __extern_inline machinery.
+ 16 files changed, 500 insertions(+), 348 deletions(-)
+ $ git rebase --continue
+ Stopped at 6a967d1... We're now C99 inline safe -- apart from the Linux code in pfinet.
+ You can amend the commit now, with
+
+ git commit --amend
+
+ Once you are satisfied with your changes, run
+
+ git rebase --continue
+
+Two files are left to be edited (`git show`, etc., again), and finally:
+
+ $ git commit --amend -C HEAD --all
+ [detached HEAD 241c605] We're now C99 inline safe -- apart from the Linux code in pfinet.
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+ $ git rebase --continue
+ Successfully rebased and updated refs/heads/master-fix_inline.
+
+That's it. `git log --reverse -p -C --cc savannah/master..` now looks as nice
+as can be.
+
+
+Of course, this is only a small insight of what is possible to do with `git
+rebase` and friends -- see the manual for further explanations.
diff --git a/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2 b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2
new file mode 100644
index 00000000..4a682c86
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-23_split_patch_and_git_rebase_--interactive/0001-Bla.patch.bz2
Binary files differ
diff --git a/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn b/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn
new file mode 100644
index 00000000..f397e75b
--- /dev/null
+++ b/community/weblogs/tschwinge/2009-06-24_importing_from_gnu_arch_into_git.mdwn
@@ -0,0 +1,104 @@
+[[!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="converting from GNU arch to Git -- without direct repository
+access"]]
+
+I wanted to import an old GNU arch repository into Git, but only had HTTP
+access via ArchZoom. I spent quite some time to try teaching `git archimport`
+to use HTTP access to that repository, but this didn't work out. Too bad --
+but at least, using ArchZoom, I was able to get the individual revisions'
+tarballs:
+
+ $ ls -1 *.tar.gz
+ bpf--devel--0.0--base-0.tar.gz
+ bpf--devel--0.0--patch-1.tar.gz
+ bpf--devel--0.0--patch-10.tar.gz
+ bpf--devel--0.0--patch-11.tar.gz
+ bpf--devel--0.0--patch-12.tar.gz
+ bpf--devel--0.0--patch-2.tar.gz
+ bpf--devel--0.0--patch-3.tar.gz
+ [...]
+ bpf--devel--0.0--patch-9.tar.gz
+ bpf--release--0.1--base-0.tar.gz
+ bpf--release--0.1--patch-1.tar.gz
+ bpf--release--0.1--patch-2.tar.gz
+ [...]
+ bpf--release--0.1--patch-8.tar.gz
+
+I unpacked these:
+
+ $ for f in *.tar.gz; do tar -xz < "$f" || echo >&2 "$f" failed; done
+
+The last revision's tree apparently contains all previous revisions' commit
+information (author, date, message), so use that:
+
+ $ cp -a ↩
+ bpf--release--0.1--patch-8/{arch}/bpf/bpf--devel/bpf--devel--0.0/info@hurdfr.org--hurdfr/patch-log ↩
+ d-patch-log
+ $ cp -a ↩
+ bpf--release--0.1--patch-8/{arch}/bpf/bpf--release/bpf--release--0.1/info@hurdfr.org--hurdfr/patch-log ↩
+ r-patch-log
+
+... and extract the information that we need:
+
+ $ base=bpf--devel--0.0-- && ↩
+ for f in d-patch-log/*; do ↩
+ grep < "$f" ^Creator: | head -n 1 ↩
+ | { read j c && ↩
+ echo "$c" | sed s%' <.*'%% ↩
+ > "$base""$(basename "$f")".author_name && ↩
+ echo "$c" | sed -e 's%.*<%%' -e 's%>.*%%' ↩
+ > "$base""$(basename "$f")".author_email; } && ↩
+ grep < "$f" ^Standard-date: | head -n 1 | { read j d && echo "$d" ↩
+ > "$base""$(basename "$f")".author_date; } && ↩
+ { grep < "$f" ^Summary: | head -n 1 | { read j m && echo "$m"; } && ↩
+ echo && sed < "$f" '1,/^$/d'; } ↩
+ > "$base""$(basename "$f")".log ↩
+ || echo >&2 "$f" failed; ↩
+ done
+ $ base=bpf--release--0.1-- && ↩
+ for f in r-patch-log/*; [...]
+
+(Of course, I could have used something more elaborate than shell scripting...)
+
+Remove the GNU arch stuff that we don't need anymore:
+
+ $ find bpf--*/ -type d \( -name {arch} -o -name .arch-ids \) -print0 ↩
+ | xargs -0 rm -r
+
+The `base-0` revisions are actually either empty (the `devel` one) or
+equivalent to the previous revision (the `release` one), so remove these:
+
+ $ rm -rf bpf--devel--0.0--base-0 bpf--release--0.1--base-0
+
+Finally, import all the other ones:
+
+ $ mkdir g && ( cd g/ && git init )
+ $ for d in bpf--d*-? bpf--d*-?? bpf--r*; do ↩
+ test -d "$d"/ || continue && ↩
+ ( cd g/ && ↩
+ rsync -a --delete --exclude=/.git ../"$d"/ ./ && ↩
+ git add . && ↩
+ GIT_AUTHOR_NAME="$(cat ../"$d".author_name)" ↩
+ GIT_AUTHOR_EMAIL="$(cat ../"$d".author_email)" ↩
+ GIT_AUTHOR_DATE="$(cat ../"$d".author_date)" ↩
+ git commit -F ../"$d".log -a ); ↩
+ done
+
+Voilà!
+
+
+**Update 2009-06-25:**
+
+Half a day later, [[HurdFr]] published a `git archimport`-converted repository
+-- which was *identical* to my hand-crafted one (apart from having
+`git-archimport-id:` tags in the commit messages, and the first (empty) commit
+not being stripped off). :-)
diff --git a/config_edittemplate.mdwn b/config_edittemplate.mdwn
new file mode 100644
index 00000000..a61dbb5f
--- /dev/null
+++ b/config_edittemplate.mdwn
@@ -0,0 +1,18 @@
+[[!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]]."]]"""]]
+
+This page exists purely for configuring the [[!iki plugins/edittemplate]]
+plugin.
+
+ * [[!edittemplate template="config_edittemplate/regular_page" match="* and
+ !open_issues/*"]]
+ * [[!edittemplate template="config_edittemplate/open_issue_page"
+ match="open_issues/*"]]
diff --git a/config_edittemplate/open_issue_page.mdwn b/config_edittemplate/open_issue_page.mdwn
new file mode 100644
index 00000000..78533450
--- /dev/null
+++ b/config_edittemplate/open_issue_page.mdwn
@@ -0,0 +1,33 @@
+[[!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]]."]]"""]]
+
+HERE STARTS YOUR NEW CONTENT -- remove everything from here on, including this
+line.
+
+By creating this page, you agree to assign copyright for your contribution to
+the Free Software Foundation, <http://www.fsf.org/>. The Free Software
+Foundation promises to always use a free documentation license (as per our
+criteria of free documentation) when publishing your contribution. We grant
+you back all your rights under copyright, including the rights to copy, modify,
+and redistribute your contributions.
+
+We're requiring these copyright assignments, so that we'll easily be able to
+include your contributions in official GNU documentation, such as the GNU Hurd
+Reference Manual, etc. Send email to <hurd-maintainers@gnu.org> if there are
+questions.
+
+
+As you're creating a new open issue page, please supply some suitable tags
+(like \[[!tag open_issue_porting]], or \[[!tag open_issue_hurd
+open_issue_mig]], etc.; remove the backslash, of course) to make sure that your
+report shows up on the relevant lists of open issues. Select *Preview* on this
+page to see all tags that are currently in active use.
+
+[[!inline pages=tag raw=yes feeds=no]]
diff --git a/config_edittemplate/regular_page.mdwn b/config_edittemplate/regular_page.mdwn
new file mode 100644
index 00000000..63cc6343
--- /dev/null
+++ b/config_edittemplate/regular_page.mdwn
@@ -0,0 +1,24 @@
+[[!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]]."]]"""]]
+
+HERE STARTS YOUR NEW CONTENT -- remove everything from here on, including this
+line.
+
+By creating this page, you agree to assign copyright for your contribution to
+the Free Software Foundation, <http://www.fsf.org/>. The Free Software
+Foundation promises to always use a free documentation license (as per our
+criteria of free documentation) when publishing your contribution. We grant
+you back all your rights under copyright, including the rights to copy, modify,
+and redistribute your contributions.
+
+We're requiring these copyright assignments, so that we'll easily be able to
+include your contributions in official GNU documentation, such as the GNU Hurd
+Reference Manual, etc. Send email to <hurd-maintainers@gnu.org> if there are
+questions.
diff --git a/confused_deputy.mdwn b/confused_deputy.mdwn
new file mode 100644
index 00000000..92be6415
--- /dev/null
+++ b/confused_deputy.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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 confused deputy](http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html)
+problem was articulated by Norm Hardy. It is a possible consequence
+when [[designation]] and [[authorization]] are separated. [[Capabilities|capability]]
+help with this problem.
diff --git a/contact_us.mdwn b/contact_us.mdwn
new file mode 100644
index 00000000..2f483780
--- /dev/null
+++ b/contact_us.mdwn
@@ -0,0 +1,26 @@
+[[!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
+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]] -- the community around GNU Hurd.
+
+ * [[Trackers]] -- for reporting issues.
+
+ * [[Mailing_Lists]] -- preferred for general discussions, questions, bug
+ reports, etc.
+
+ * [[IRC]] -- for interactive discussions with a smaller audience.
+
+ * Non-public mail contact to the maintainers.
+
+ If you have a concern you want to send to the Hurd maintainers without
+ writing to a public mailing list, then please send email to
+ <hurd-maintainers@gnu.org>. Please don't send general support requests or
+ questions there, but instead use the [[mailing lists]].
diff --git a/contributing.mdwn b/contributing.mdwn
new file mode 100644
index 00000000..3a713520
--- /dev/null
+++ b/contributing.mdwn
@@ -0,0 +1,112 @@
+[[!meta copyright="Copyright © 2006, 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]]."]]"""]]
+
+So, you are interested in contributing to the GNU Hurd project?
+
+Welcome! Every single contribution is very much encouraged!
+
+There are various ways of contributing, read on about contributing to...
+
+[[!toc levels=3]]
+
+If someone of you is lurking around here and would like to contribute, but
+feels she / he could do so better under formal mentoring: please speak up at
+one of the [[regular_IRC_meetings|IRC#regular_meetings]]!
+
+Generally we also have a list of [[open_issues]] and one for
+[[project_ideas|community/gsoc/project_ideas]] - the latter written for the
+Google Summer of Code.
+
+
+# Documentation
+
+## These Web Pages
+
+Please read about [[how_to_contribute_to_these_web_pages|web_pages]].
+
+
+# The System Itself
+
+There are essential two kinds of Hurd system designs.
+
+<a name="hurd_on_mach"> </a>
+## Hurd on Mach
+
+For one there's the implementation of the *[[Hurd]] running on the
+[[GNU_Mach_microkernel|microkernel/mach/gnumach]]*. This is what is commonly
+meant when people are talking about GNU/Hurd systems.
+
+This system has mostly been designed and implemented
+[[in the '90s|history]]. It works and is usable.
+For example, these web pages have been rendered on a GNU/Hurd system.
+
+You can try it out for yourself: for getting access, installing
+[[Debian_GNU/Hurd|hurd/running/debian]] will probably be the easiest and most
+feature-complete solution. If you don't have spare hardware to use for doing
+so, you can also get a
+[[shell_account_on_a_public_Hurd_machine|public_hurd_boxen]]. Depending on the
+things you're going to work on (and on your internet connection), this may be
+an easy way of getting used to Hurd systems. Installing in a virtual machine
+is another possibility, see the page about
+[[running_a_Hurd_system|hurd/running]] for the full story.
+
+Then you can either play around and eventually strive to do something
+useful or -- if you want -- [[ask_us|contact_us]] to assign something to you, depending
+on the skills you have and the resources you intend to invest.
+
+Please spend some time with thinking about the items in this [[questionnaire]].
+
+Before you can significantly contribute, take some time to learn about the
+system, e.g., [[microkernels_for_beginners|microkernel/for_beginners]]. Until
+you can do the basic exercises listed there, you won't be able to significantly
+contribute to the Hurd.
+
+For more reading resources, please see these web pages, for example,
+[[Hurd_documentation|hurd/documentation]] and
+[[Mach_documentation|microkernel/mach/documentation]] for links to a bunch of
+documents.
+
+### Porting Packages
+
+Debian is currently the Hurd distribution of choice among Hurd users and
+developers.
+
+Here is a
+[[list_of_Debian_packages_that_need_porting|hurd/running/debian/porting]].
+
+You can also just [[install_Debian_GNU/Hurd|hurd/running/debian]] and find what
+doesn't work or suit you and try to improve that.
+
+### Open Issues
+
+Here is a list of [[open_issues]].
+
+
+<a name="hurd_on_modern_microkernel"> </a>
+## Hurd on a modern microkernel
+
+Developers [[have_identified|hurd/critique]] a number of problem with the *Hurd on
+Mach* system. Problems, that can not easily be fixed by bug-fixing the
+existing code base, but which require design changes -- deep going ones
+actually.
+
+As such systems (as the desired one) are not in common use, but are -- if at
+all -- research projects, this new *Hurd on a modern microkernel* project
+itself is more a research project than a *sit down and implement/code/hack*
+project.
+
+If you're interested in contributing in this area, knowing the *Hurd on Mach*
+system nevertheless is a prerequisite. At least have a deep look at the
+documentation pointers given in the previous section. Also read through the
+[[HurdNG|hurd/ng]] section.
+
+Please send email to the [[mailing lists/l4-hurd]] mailing list for discussing
+this post-Mach system design.
diff --git a/contributing/questionnaire.mdwn b/contributing/questionnaire.mdwn
new file mode 100644
index 00000000..bc548b64
--- /dev/null
+++ b/contributing/questionnaire.mdwn
@@ -0,0 +1,45 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+People often come to us and state that they'd like to help with the GNU/Hurd.
+This is very good and very much encouraged: we're always looking for volunteers
+to help with the effort! However, for things to eventually become productive,
+we'd like every new potential contributor to read through the following list of
+items and spend some time thinking about those.
+
+
+* What areas are you interested in contributing to?
+
+ Think a moment about this list: porting and extending existing software to
+ run on Hurd systems; work on existing or write new Hurd servers or
+ libraries; work on the standard C library; make Hurd stuff usuable from
+ other programming languages than C; work on the current Mach microkernel;
+ do research and development of a next-generation microkernel; help with
+ development of new Hurd libraries and servers on top of that. Those
+ projects are all within the *Hurd* topic, but are vastly different
+ projects.
+
+* How is your expertise about system and kernel programming?
+
+ Sadly we don't have the ressources to teach you from ground-up. We will --
+ of course! -- try to give answers to specific questions, but on substantial
+ parts of your contribution you'll have to work on your own. (Unless there
+ is someone who is already working in the same area, of course.)
+
+* Have you previously been working on Free Software projects?
+
+ Are you used to the working-style Free Software projects bring with them?
+ Did you already contribute to other projects? What sort of contributions?
+
+* What is your motivation to work on the GNU Hurd?
+
+
+Every new contributor is very much encouraged to take some notes about these
+items and post them to *[[mailing lists/bug-hurd]]*.
diff --git a/contributing/web_pages.mdwn b/contributing/web_pages.mdwn
new file mode 100644
index 00000000..51ce873e
--- /dev/null
+++ b/contributing/web_pages.mdwn
@@ -0,0 +1,230 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Contribute to the Web Pages"]]
+
+[[!toc levels=3]]
+
+
+# General Information
+
+(!) Some general hints first; they may sound very familiar from other software
+projects:
+
+ * Do independent changes *separately*: don't aggregate changes that don't
+ belong together.
+ * Install your changes *early* and *often*: don't hold your contribution back
+ until you think it is perfect.
+
+## Syntax
+
+Before doing any changes, you are encouraged to play a bit in the
+[[sandbox]], to become familiar with the [[ikiwiki/Markdown]] syntax. Get some
+[[help_on_formatting|ikiwiki/formatting]].
+
+## Commit Messages
+
+Please comment every change you make, however small. Keep all comments short
+and to the point, e.g. "Fixed typo." or "Added link to main page.".
+
+## Asking Questions -- on Sub-Pages
+
+Feel free to ask questions or report problems on every page's [[discussion]]
+sub-page. They're reachable from the *Discussion* link on the top of the page,
+which will, when selected, create a new page if there isn't one yet.
+
+## Editing Pages
+
+Every page on the site is editable, like in a wiki. Feel free to join in, but
+we do have some simple requests. Please try to match the *tone* of your topics
+and edits with the existing topics. If we all pull in the same direction these
+pages will be more useful for everyone, especially for our own use.
+
+### News Items
+
+There are [[more detailed instructions about editing news items|news]].
+
+<a name="staging_area">
+## Staging Area
+</a>
+
+When you commit changes, either using the web interface or checking them in
+into the repository; they won't become visible on
+<http://www.gnu.org/software/hurd/> immediately, but on
+<http://www.bddebian.com:8888/~hurd-web/> instead. The former set of pages,
+the official GNU Hurd web appearance, will be updated periodically (but
+manually) from the latter one, where every edit is visible immediately. This
+is so that we have a chance to have the pages make fit for appearance on
+`www.gnu.org`, but you are nevertheless able to work on all pages
+unrestrictedly.
+
+
+# Editing via the Web Interface
+
+When you have found a page you want to work on, just follow the *Edit* link at the
+top of the page. When doing this for the first time, this will first redirect
+you to a page where you will have to create an account. After logging in, you
+can edit pages.
+
+
+# Working on a Checkout of the Git Repository
+
+(!) What is being described here is only the basics. The checkouts are
+completely valid Git repositories and can (and want to) be treated as such.
+Consult the Git documentation about how to shuffle around with branches, how to
+rename files, how to add arbitrary data files, and so on.
+
+(!) Before attempting any bigger editing work (to which you are sincerely
+invited!) be sure to check the involved pages' *Discussion* sub-pages (linked
+from the pages' header line) and in there take down (short) notes about the
+editing endeavours you're going to undertake. Doing so should help to (a) avoid
+double work and (b) avoid merge conflicts if you install your changes into the
+main repository.
+
+## Identifying Yourself
+
+First, let's make sure that you're properly identifying yourself towards Git.
+
+ $ git var GIT_AUTHOR_IDENT
+ Thomas Schwinge <tschwinge@gnu.org> 1186743435 +0200
+
+If it doesn't look akin to that for you, you'd better adjust either your
+`EMAIL` environment variable or alternatively tell Git about your real
+identity:
+
+ $ git config --global user.name 'Your Name'
+ $ git config --global user.email you@somewhere.invalid
+
+## Getting the Sources
+
+To be able to do a checkout from which you can later directly push your
+changes back into the master repository, you need a
+[[shell_account_on_*flubber*|public_hurd_boxen]] and need to be a member of
+the *hurd-web* group. (It's also recommended that you set up your local
+SSH configuration as advised on that page.) If you have an account on there:
+
+ $ git clone flubber:~hurd-web/hurd-web [dest]
+
+If you don't have such an account or don't have your login data handy, you can
+still get pages the read-only way.
+
+ $ git clone git://flubber.bddebian.com/~hurd-web/hurd-web [dest]
+
+If that also doesn't work out, you have yet another chance: pull over the HTTP
+protocol. Not very efficient (read: rather inefficient), but it works. This
+is also read-only.
+
+ $ git clone http://www.bddebian.com:8888/git/hurd-web [dest]
+
+For all cases: if you omit `[dest]` it will default to `hurd-web`.
+
+Later, you can just `cd` into the `hurd-web` directory and run a `git pull` to
+get hold of the latest changes others have been installing in the mean time.
+(In most cases, you should use `git pull --rebase`,
+to avoid useless *Merge branch ...* messages. See the
+Git documentation for details.)
+
+## Editing the Content
+
+But now: work on these files.
+
+ $ cd hurd-web/
+ $ emacs hurd/ng.mdwn
+ $ # Check what you've done.
+ $ git diff hurd/ng.mdwn
+ $ git commit hurd/ng.mdwn
+ [...]
+ $ # Add a new file.
+ $ emacs microkernel/mach/issues.mdwn
+ $ git add microkernel/mach/issues.mdwn
+ $ git commit microkernel/mach/issues.mdwn
+ [...]
+ $ [...]
+
+Remember that at this stage your commits have only been installed into your
+personal working copy. You'll finally have to explicitly install your changes
+into the master repository, see below.
+
+## Preview Changes
+
+You can also locally get the whole set of pages rendered to HTML:
+
+ $ hurd-web/render_locally
+ [...]
+ scanning contributing/web_pages.mdwn
+ rendering contributing/web_pages.mdwn
+
+ Now open `hurd-web.rendered/index.html' to browse the pages.
+
+### ikiwiki's `w3mmode`
+
+If you're a [`w3m`](http://w3m.sourceforge.net/) user, you can also use `w3m`
+to edit your files locally, as it were done through the web interface at
+<http://www.bddebian.com:8888/~hurd-web/>.
+
+First, generate the wrapper. Unless the configuration is changed, this has to
+be done only once.
+
+ $ hurd-web/render_locally --w3m-wrapper
+ successfully generated /home/thomas/.ikiwiki/wrappers/hurd-web.cgi
+
+Render the pages:
+
+ $ hurd-web/render_locally --w3m
+ [...]
+ scanning contributing/web_pages.mdwn
+ rendering contributing/web_pages.mdwn
+
+ Now open `hurd-web.rendered.w3m/index.html' to browse the pages.
+
+Invoke `w3m`:
+
+ $ w3m hurd-web.rendered.w3m/index.html
+
+Or, to directly create a new page:
+
+ $ w3m 'file:///$LIB/ikiwiki-w3m.cgi/hurd-web.cgi?page=open_issues/gnumach_has_a_bug&do=create'
+
+Note that the changes you do via `w3m` will not be committed to the VCS (see
+[[render_locally]] for details.)
+
+## Publish Your Changes
+
+If you like what you've done, then it's now time to publish your changes.
+
+If you can push directly into the master repository this is really simple:
+
+ $ git push
+ updating 'refs/heads/master'
+ from d83f93f34b69633ca1afb588001df7addd708faf
+ to c0b8171de9c69e029bf998aafd4682105c217eb8
+ Generating pack...
+ [...]
+ Updating web pages. This may up to a few minutes at the utmost...
+
+If you can't do that, then first prepare to publish your changes:
+
+ $ git format-patch -M -B origin
+ 0001-Be-a-bit-more-expressive.patch
+ [...]
+
+See through the generated `*.patch` files and simply delete those you don't
+want to publish.
+
+Finally, publish the good ones. If you have a local mail transfer agent
+running, the following is all you have to do:
+
+ $ git send-email --to web-hurd@gnu.org *.patch
+ [...]
+
+If you don't have an MTA running, you'll have to find another way: either post
+the `*.patch` files to <web-hurd@gnu.org> or upload them somewhere for us to
+download them from.
diff --git a/contributing/web_pages/news.mdwn b/contributing/web_pages/news.mdwn
new file mode 100644
index 00000000..a9a86d75
--- /dev/null
+++ b/contributing/web_pages/news.mdwn
@@ -0,0 +1,110 @@
+[[!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]]."]]"""]]
+
+[[!meta title="""How to prepare and publish "a month of the Hurd" for the last
+month"""]]
+
+We prepare *a month of the Hurd* in a public git branch (`master-news_next`),
+and merge that one into `master` once we want to publish the news. The idea is
+to record to-be-published changes on that branch at they time they arise, and
+then publish them en bloc at the end of the month.
+
+As this is done on a separate branch, there are two options: you can have
+separate repositories (*clones*, or *checkouts*; what you get from `git clone`)
+for the `master` and `master-news_next` branches, or you can deal with both in
+the same repository. Having separate repositories you don't have to remember
+which branch you're on, and don't have to switch between branches before
+beginning to edit files, and it doesn't matter -- as no switching between
+branches is needed -- if you have uncomitted changes to some files. On the
+other hand, you may want to keep it all in one repository, to save disk space,
+and for shuffling different branches' commits being (a bit) easier.
+
+For practical work that means to use the following commands:
+
+ * create a local branch for `master-news_next`
+
+ $ git fetch
+ $ git checkout -b master-news_next origin/master-news_next
+
+ * if you already have created a local branch `master-news_next`: update to
+ the latest version of it
+
+ $ git checkout master-news_next
+ $ git pull --rebase
+
+ * edit
+
+ Always do check which branch you're on (asterisk in the first column of
+ `git branch`'s output), and only then begin to do your changes and commit
+ them.
+
+ We should not update news items that have already been published (that is,
+ on <http://www.gnu.org/software/hurd/news.html>; no problem for the
+ [[staging area|web_pages#staging_area]]), as the system will always also
+ update the RSS feeds, etc., causing the old news item to reappear on feeds,
+ which is a bit of a nuisance.
+
+ * at the beginning of a month: create a new news entry
+
+ $ cp contributing/web_pages/news/skeleton.mdwn news/YYYY-MM-DD.mdwn
+ $ # edit the new file, then add the changes in git
+ $ git add news/YYYY-MM-DD.mdwn
+ $ git commit -m "Begun the news entry for YYYY-MM-DD."
+
+ That is, use the [[news_skelleton|skeleton]] as a template for the new
+ news snippet.
+
+ * check the outgoing changes
+
+ $ git log --reverse -p -C origin/master-news_next..master-news_next
+
+ * push the changes
+
+ $ git push origin master-news_next
+
+ * if push fails, pull and rebase the local changes on top of the remote
+ changes
+
+ $ git pull --rebase
+
+ This will only happen if someone else has been installing commits into
+ `origin`'s `master-news_next` branch since the last time you
+ synchronized to it.
+
+ Note that this might cause some conflicts to arise -- if the remote
+ repository contains commits that conflict with any that you've been
+ recording in your local repository. For this reason, you might want to
+ already do this *rebase* before beginning you local edits, simply to
+ shorten the time frame in which such conflicts can arise.
+ (Theoretically, in the very rare case of very much concurrent editing
+ going on, you'd have to repeat this again (and again...) before
+ succeeding to push your changes.)
+
+ * at the end of the month: prepare for publishing the news
+
+ Edit the news entry's *meta date* value to the timestamp when the news
+ entry is [[published|news]]. We have to set that one manually, as
+ otherwise the timestamp of the news entry file's creation will be taken,
+ which is (much) earlier, and not what we want. We do not set the *meta
+ updated* value, as it's correct to update that one upon further
+ modifications of the news entries.
+
+ * ... and publish
+
+ $ git checkout master
+ $ git pull --rebase
+ $ git merge master-news_next
+ $ git push origin master
+
+ That means, for publishing we merge `master-news_next` into `master`.
+ After that merge, work for the next month's news item can continue on
+ `master-news_next`.
+
+ Arne Babenhauserheide uses a [[merge-news]] script for doing this.
diff --git a/contributing/web_pages/news/merge-news b/contributing/web_pages/news/merge-news
new file mode 100644
index 00000000..33c01b7b
--- /dev/null
+++ b/contributing/web_pages/news/merge-news
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# merge into master
+git checkout master
+git pull --rebase
+git merge master-news_next
+
+# push master
+git push origin master
+
+# switch back to master-news_next
+git checkout master-news_next
+git pull --rebase
diff --git a/contributing/web_pages/news/skeleton.mdwn b/contributing/web_pages/news/skeleton.mdwn
new file mode 100644
index 00000000..0d0af8de
--- /dev/null
+++ b/contributing/web_pages/news/skeleton.mdwn
@@ -0,0 +1,33 @@
+[[!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]]."]]"""]]
+
+<!-- Date when the news item is (to be) pulished (important for RSS feeds).
+Will be set by tschwinge when publishing.
+[[!meta date="YYYY-MM-DD HH:MM UTC"]]
+-->
+
+A month of the Hurd: **, ** and **.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month
+>
+> Also
+>
+> Mainly thanks to
+>
+> Additionally
+>
+> And
+>
+
+"""]]
diff --git a/copyright.mdwn b/copyright.mdwn
new file mode 100644
index 00000000..8cd0aa21
--- /dev/null
+++ b/copyright.mdwn
@@ -0,0 +1,2 @@
+Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 The Contributing
+Authors
diff --git a/dde.mdwn b/dde.mdwn
new file mode 100644
index 00000000..7d341da5
--- /dev/null
+++ b/dde.mdwn
@@ -0,0 +1,42 @@
+[[!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]]
+
+---
+
+# Documentation
+
+ * <http://demo.tudos.org/dsweeper_tutorial.html>
+
+ Why device drivers in user space; different possibilities for getting
+ device drivers; DDE's origins and rationale.
+
+ * <http://wiki.tudos.org/DDE/DDEKit>,
+ <http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html>
+
+ Structural overview of the components.
+
+
+# Discussion
+
+DDE essentially is a glue layer to embed Linux device drivers into another
+environement. In the DDE case, this *other environment* is a user-space task
+-- compared to the GNU Mach kernel having a *in-kernel* Linux 2.0 device
+drivers glue code (cf. paper by Goel et al.).
+
+
+# Source Code
+
+ * <http://www.inf.tu-dresden.de/index.php?node_id=1584&ln=en>
diff --git a/designation.mdwn b/designation.mdwn
new file mode 100644
index 00000000..771d8e66
--- /dev/null
+++ b/designation.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+To designate is to name.
diff --git a/destructive_interference.mdwn b/destructive_interference.mdwn
new file mode 100644
index 00000000..1f468034
--- /dev/null
+++ b/destructive_interference.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Interference can be destructive or non-destructive. When a [[principal]]
+invokes an object (thereby requesting a service) and the implementation
+carries out the principal's intent, the interference was non-destructive
+in the sense that the interference was desired.
+
+In invoking the object, the principal may make itself vulnerable to
+destructive interference. When a user runs Solitaire on Windows,
+the Solitaire program is instantiated and given all of the user's
+authority. The program may delete all of the users files after
+publishing credit card and other sensitive information on the Internet.
+This type of interference is undesirable, however, generally practically
+unavoidable due to the way programs work on Windows (and [[Unix]], for that
+matter).
+
+The problem is that the callee has induced negative consequence for caller
+due to actions of the former. To not have to depend on another program (and
+thereby not have to add it to its [[tcb]]), it is necessary that the
+caller only make itself vulnerable to destructive inference in ways that
+can be detected and from which it can recover.
+
+Mark Miller examines the idea of destructive interference in his PhD thesis
+[Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control](http://www.erights.org/talks/thesis/).
diff --git a/documentation.mdwn b/documentation.mdwn
new file mode 100644
index 00000000..62d96e9c
--- /dev/null
+++ b/documentation.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 2008, 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]]."]]"""]]
+
+[[FAQ]]
+
+Documentation for...
+
+ * [[GNU_Hurd|hurd/documentation]]
+
+ * [[Mach|microkernel/mach/documentation]]
+
+ * [[MIG|microkernel/mach/mig/documentation]]
+
+
+# Presentations
+
+## 2004
+
+ * 2004-07-02
+
+ Ognyan Kulev, *presentation of the Hurd*, at the seminar *LIO and friends*,
+ <http://debian.fmi.uni-sofia.bg/~ogi/hurd/liofest-20040702-hurd.ppt>, in
+ Bulgarian.
+
+# General
+
+ * [[Media_Appearances]]
diff --git a/donate.mdwn b/donate.mdwn
new file mode 100644
index 00000000..22b218c1
--- /dev/null
+++ b/donate.mdwn
@@ -0,0 +1,66 @@
+[[!meta copyright="Copyright © 2003, 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]]."]]"""]]
+
+If you feel like donating goods or money for the work the developers are doing,
+then we're happy to confirm that this is indeed possible. Of course we'd
+really like to have you working with us on the system, but if you're feeling
+generous we won't stop you either.
+
+Note that you can't donate directly to the Hurd project, but only to either the
+Free Software Foundation or individually to the developers. Donations to the
+Free Software Foundation are tax deducible, see <http://fsf.org/donate>.
+
+If you've got more money on hand than hacking time, you might consider buying
+some [maintenance points](http://g10code.com/products.html#maintpoints) (EUR 10 a point) to
+help the Hurd along. From the [g10 Code](http://www.g10code.com/products.html)
+site:
+
+> Hurd Maintenance Points are special: Some of our employees are well known
+> Hurd hackers in their spare time; collected points for this program will be
+> given to them in form of paid time.
+
+See also this related
+[mailing-list](http://mail.gnu.org/archive/html/help-hurd/2003-04/msg00044.html)
+thread.
+
+And for further motivation, some words of wisdom from Marcus Brinkmann:
+
+> By the way, if you are more on the speculating side, then it can't harm to
+> just buy one or two maintenance points. That means that at some time I get
+> an incentive to start the hacking, and there is a chance that when I start I
+> don't stop for a while, and just continue on my private time (as I did for
+> the last five years, if I might add that ;).
+
+Another possibility is to meet with the Hurd developers at a
+[[meeting|community/meetings]] and spend them a pizza or beer or both or
+similar.
+
+
+# Developers
+
+<small>(alphabetically)</small>
+
+<!-- TODO. Need some real ikiwiki way of adding such anchors. -->
+
+<a name="Marcus_Brinkmann"></a>
+## Marcus Brinkmann
+
+... would like you to donate to the Free Software Foundation (see the top of
+this page) or to the [Electronic Frontier Foundation](http://eff.org/support/).
+
+<a name="Thomas_Schwinge"></a>
+## [[Thomas_Schwinge|tschwinge]]
+
+Rate him and donate money to the Free Software Foundation [through
+Affero](http://rate.affero.net/tschwinge/Hurd/).
+
+For specifically donating to him [go
+here](http://nic-nac-project.de/~schwinge/donate.html).
diff --git a/download.mdwn b/download.mdwn
new file mode 100644
index 00000000..542a9e5b
--- /dev/null
+++ b/download.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]]."]]"""]]
+
+[[!tag stable_URL]]
+
+[[!meta redir=source_repositories]]
diff --git a/emulation.mdwn b/emulation.mdwn
new file mode 100644
index 00000000..9e6a5e55
--- /dev/null
+++ b/emulation.mdwn
@@ -0,0 +1,20 @@
+[[!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]]."]]"""]]
+
+# External
+
+ * [*Emulation: Role-Playing for
+ Computers*](http://www.informit.com/articles/printerfriendly.aspx?p=659522),
+ an article by David Chisnall.
+
+
+# See Also
+
+ * [[Virtualization]].
diff --git a/extensibility.mdwn b/extensibility.mdwn
new file mode 100644
index 00000000..01b1f3b1
--- /dev/null
+++ b/extensibility.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+An extensible system is one that enables extensibility. Enabling extensibility
+means providing non-privileged mechanisms to extend existing objects and to
+introduce new objects. [[UNIX]] is generally not an extensible system as it does
+not generally facilitate the hooking of system calls. For instance, there is
+no way to hook into the virtual file system. This has motivated the introduction
+of separate, parallel interfaces by both the GNOME and KDE projects to provide
+users a more integrated view of their objects.
diff --git a/faq.mdwn b/faq.mdwn
new file mode 100644
index 00000000..9167ede6
--- /dev/null
+++ b/faq.mdwn
@@ -0,0 +1,28 @@
+[[!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="FAQ"]]
+
+Also see the...
+
+ * [[microkernel FAQ|microkernel/faq]],
+
+ * [[GNU Hurd FAQ|hurd/faq]],
+
+ * [[running GNU Hurd FAQ|hurd/running/faq]],
+
+ * [[Debian GNU/Hurd FAQ|hurd/running/debian/faq]].
+
+[[!inline
+pages="faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="faq" postformtext="Add a new item titled:"]]
diff --git a/faq/sharing_the_user_space.mdwn b/faq/sharing_the_user_space.mdwn
new file mode 100644
index 00000000..7d09ccc0
--- /dev/null
+++ b/faq/sharing_the_user_space.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+*Question:* Could it be possible to have a system installation where you can
+dual-boot using either the [[Linux]] kernel, or the GNU Hurd, so that
+everything but the kernel is shared?
+
+*Answer:* Given that both Linux and GNU Hurd are using the [[ELF]] binary
+format, this could indeed be made possible, if all programs agreed to rely on
+only one abstraction layer, for example the standard C library ([[glibc]]).
+(Additionally, for example for system calls that are not covered by glibc
+calls, you'd need to be able to reliably trap and emulate these.) However,
+Linux' and the GNU Hurd's [[ABI]]'s have sufficiently diverged, so that this is
+not easy to do. That's why you can't currently install a system in this way,
+but you need a separate installation of the userspace suited for the Linux
+kernel, or the GNU Hurd.
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 00000000..a8ad72f8
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/fdl.texi b/fdl.texi
new file mode 100644
index 00000000..26bc2d64
--- /dev/null
+++ b/fdl.texi
@@ -0,0 +1,458 @@
+[[!meta copyright="Copyright © 2000, 2001, 2002 Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
+USA"]]
+
+[[!meta license="Everyone is permitted to copy and distribute verbatim
+copies of this license document, but changing it is not allowed."]]
+
+@c The GNU Free Documentation License.
+@center Version 1.2, November 2002
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ 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''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/gcc.mdwn b/gcc.mdwn
new file mode 100644
index 00000000..81a2a357
--- /dev/null
+++ b/gcc.mdwn
@@ -0,0 +1,14 @@
+[[!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]]."]]"""]]
+
+The [GNU Compiler Collection](http://gcc.gnu.org/).
+
+ * [[Open Issues|tag/open_issue_gcc]]
diff --git a/gdb.mdwn b/gdb.mdwn
new file mode 100644
index 00000000..6c43728c
--- /dev/null
+++ b/gdb.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+The [GNU debugger *GDB*](http://www.gnu.org/software/gdb/).
+
+ * [[Backtrace]]s
+
+ * [Manual](http://sourceware.org/gdb/documentation/)
+
+ * [When disassemble doesn't
+ work](http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html)
+
+ * [[Open Issues|tag/open_issue_gdb]]
diff --git a/gdb/backtrace.mdwn b/gdb/backtrace.mdwn
new file mode 100644
index 00000000..7411ad05
--- /dev/null
+++ b/gdb/backtrace.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+When someone asks you to supply a backtrace (from a [[segmentation_fault]], for
+example), here is roughly what you have to do.
+
+Run the faulting program like this:
+
+ $ gdb --args PROGRAM [ARGUMENTS]
+ [...]
+ (gdb) run
+ [...]
+ [Segmentation fault.]
+ (gdb) bt
+ [...]
+
+(!) This will only provide useful information if the executable (and additional
+libraries) contain debugging symbols, or those are available separartely.
+
+If you're one a [[Debian_GNU/Hurd_system|hurd/running/debian]], you'll have
+to have the *hurd-dbg* package installed for debugging Hurd stuff, and perhaps
+*libc0.3-dbg* as well if it's inside the glibc.
diff --git a/generate_interface_redir_pages b/generate_interface_redir_pages
new file mode 100755
index 00000000..b6adc349
--- /dev/null
+++ b/generate_interface_redir_pages
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+for s; do
+ s=$(basename "$s") &&
+ for i in "$s"/??.mdwn; do
+ t=$(grep '^\[\[!meta title' | cut -d \" -f 2) \
+ < "$i" &&
+ i=$(expr "$i" : '\(.*\)\.mdwn') &&
+ cat \
+ > "$t".mdwn \
+ <<EOF
+[[!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=$i]]
+EOF
+ done
+done
diff --git a/getting_help.mdwn b/getting_help.mdwn
new file mode 100644
index 00000000..92efabbe
--- /dev/null
+++ b/getting_help.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# Essential Documentation
+
+ * GNU/Hurd [[hurd/FAQ]]
+
+ * Debian GNU/Hurd [[hurd/running/debian/FAQ]]
+
+ * Microkernel [[microkernel/FAQ]]
+
+ * GNU Mach's [[microkernel/mach/gnumach/Hardware_Compatibility_List]]
+
+ * [[Documentation]]
+
+
+# Forums
+
+[[!inline pages=asking_questions raw=yes feeds=no]]
+
+ * [[Mailing_lists]]
+ * [[IRC]]
diff --git a/glibc.mdwn b/glibc.mdwn
new file mode 100644
index 00000000..c7e5eeb7
--- /dev/null
+++ b/glibc.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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 [GNU C Library](http://www.gnu.org/software/libc/).
diff --git a/grub.mdwn b/grub.mdwn
new file mode 100644
index 00000000..9327ecdf
--- /dev/null
+++ b/grub.mdwn
@@ -0,0 +1,109 @@
+<http://www.gnu.org/software/grub/>
+
+This section complements the [[InstallNotes]] with complete information
+regarding the GRUB 2 boot loader. The syntax is different from GRUB Legacy aka
+GRUB 1 (see below).
+
+ * `update-grub` is *Debian specific* and very useful. It will automatically
+ create a `/boot/grub/grub.cfg` file for the kernels in `/boot/` and for
+ OSes that it finds on various partitions, including GNU/Hurd.
+
+ * Make sure that GRUB 2's version is at least 20091130 and GNU Mach's version
+ is at least 20091020.
+
+ * Sample file:
+
+ menuentry "GNU/Linux" {
+ insmod ext2
+ set root=(hd0,12)
+ linux /boot/vmlinuz-2.6.32 root=/dev/hda12 ro
+ initrd /boot/initrd.img-2.6.32
+ }
+
+ menuentry "GNU" {
+ insmod ext2
+ set root=(hd0,16)
+ multiboot /boot/gnumach.gz root=device:hd0s16
+ module /hurd/ext2fs.static ext2fs --readonly \
+ --multiboot-command-line='${kernel-command-line}' \
+ --host-priv-port='${host-port}' \
+ --device-master-port='${device-port}' \
+ --exec-server-task='${exec-task}' -T typed '${root}' \
+ '$(task-create)' '$(task-resume)'
+ module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
+ }
+
+---
+
+**The following information may be outdated and should be revised.**
+
+This section complements the [[InstallNotes]] with complete information regarding the GRUB boot loader. The syntax is different from Lilo's and so to scratch my own itch I'm creating this quick reference. The [Grub manual](http://www.gnu.org/software/grub/manual/grub.html) is another good reference.
+
+* update-grub is **Debian specific** and very nice. It will automatically create a /boot/grub/menu.lst file for the kernels in /boot/. It will also append a manually configured set for other partitions like the GNU/Hurd.
+* grub-floppy is a **Debian specific** boot floppy creation script.
+* mkbimage is a **Debian specific** boot disk image creation script.
+* <http://khazad.dyndns.org/packages/grub-disk/> contains a Debian packaged makefile for creating CD &amp; floppy images. Looks like it doesn't work properly. If you fix it, please send patches to the maintainer.
+* essential GRUB commands &amp; disk syntax
+ * root
+ * kernel
+ * module
+ * boot
+* sample file
+
+ title GNU/Linux
+ root (hd0,11)
+ kernel /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
+ initrd /boot/initrd.img-2.4.18
+ savedefault
+
+ title GNU
+ root (hd0,15)
+ kernel /boot/oskit-mach root=device:hd0s16 --
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+ savedefault
+
+ title DOS
+ rootnoverify (hd0,0)
+ chainloader +1
+
+-- [[Main/GrantBow]] - 01 Oct 2002 <br /> -- [[Main/GrantBow]] - 22 Dec 2002
+
+Another example, just as good, but a lot easier to read. The backslash at the end of each line is to "escape" the enter-key. So make sure there are no spaces following the backslashes!
+
+ title GNU/Linux (Linux 2.4.18)
+ root (hd0,11)
+ kernel /boot/vmlinuz-2.4.18 root=/dev/hda12 ro
+ initrd /boot/initrd.img-2.4.18
+ savedefault
+
+ title GNUmach 1.3
+ root (hd0,1)
+ kernel /boot/gnumach.gz root=device:hd0s2
+ module /hurd/ext2fs.static --readonly \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ title GNUmach 1.90 (CVS)
+ root (hd0,1)
+ kernel /boot/oskit-mach.gz root=device:hd0s2 --
+ module /hurd/ext2fs.static --readonly \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+Note the differences between GNUmach and OSKit-Mach. The latter **needs** the two dashes after the root specification!
+
+-- [[Main/JoachimNilsson]] - 09 Nov 2002
diff --git a/grub/tftp_boot.mdwn b/grub/tftp_boot.mdwn
new file mode 100644
index 00000000..8e307b4f
--- /dev/null
+++ b/grub/tftp_boot.mdwn
@@ -0,0 +1,42 @@
+## <a name="Advanced_Grub"> Advanced Grub </a>
+
+[Grub](http://www.gnu.org/software/grub/) is a capable boot loader. This document is intended to capture some of its most interesting features and try to explain them a bit better than the texinfo documentation.
+
+### <a name="Debian_Grub"> Debian Grub </a>
+
+The Debian grub packages do not have networking enabled, so you have to apt-get the source, modify the debian/rules file to include --enable-network-card and dpkg-buildpackage to get a .deb of grub that supports TFTP.
+
+1. cd /usr/src/debian
+2. apt-get source grub
+3. cd grub-\_VERSION\_
+4. Add `--enable-tulip` or similar for your NIC to the `./configure` line of the `configure-stamp` target in the `debian/rules` file.
+5. `dpkg-buildpackage` (as `root`)
+6. `cd ..`
+7. `dpkg -i grub*.deb`
+8. cp /lib/grub/\_ARCH\_/\* /boot/grub/, e.g., _ARCH_ is `i386-pc`
+9. Edit your `/boot/grub/menu.lst` (see below)
+10. If your boot disk is `/dev/hda` ==&gt; `grub-install (hd0)`
+
+### <a name="TFTP_Boot"> </a> TFTP Boot
+
+Using trivial ftp to load a kernel is one of the best features of Grub. Here is how it is done.
+
+The `menu.lst` can look something like this:
+
+ ifconfig --address=192.168.1.2 --server=192.168.1.1
+ root (nd)
+ kernel /gnu/boot/oskit-mach.gz root=device:hd0s2 --
+ root (hd0,1)
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+**Note: Make sure there are NO spaces after the trailing backslases (\\)!!**
+
+For more information on GNUmach modules lines and installation setup, see [[Hurd/InstallNotes]]
+
+-- [[Main/JoachimNilsson]] - 13 Apr 2005
diff --git a/history.mdwn b/history.mdwn
new file mode 100644
index 00000000..8f155b54
--- /dev/null
+++ b/history.mdwn
@@ -0,0 +1,94 @@
+[[!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]]."]]"""]]
+
+[[!tag stable_URL]]
+
+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 Hurd and
+Linux|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/history/hurd-announce b/history/hurd-announce
new file mode 100644
index 00000000..2f165ad8
--- /dev/null
+++ b/history/hurd-announce
@@ -0,0 +1,47 @@
+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/history/hurd-announce2 b/history/hurd-announce2
new file mode 100644
index 00000000..dce41c43
--- /dev/null
+++ b/history/hurd-announce2
@@ -0,0 +1,143 @@
+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/history/hurd-flash b/history/hurd-flash
new file mode 100644
index 00000000..d1bacc79
--- /dev/null
+++ b/history/hurd-flash
@@ -0,0 +1,22 @@
+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/history/hurd-flash10 b/history/hurd-flash10
new file mode 100644
index 00000000..d6d5685b
--- /dev/null
+++ b/history/hurd-flash10
@@ -0,0 +1,25 @@
+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/history/hurd-flash11 b/history/hurd-flash11
new file mode 100644
index 00000000..57851b01
--- /dev/null
+++ b/history/hurd-flash11
@@ -0,0 +1,25 @@
+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/history/hurd-flash12 b/history/hurd-flash12
new file mode 100644
index 00000000..5be9c94e
--- /dev/null
+++ b/history/hurd-flash12
@@ -0,0 +1,76 @@
+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/history/hurd-flash13 b/history/hurd-flash13
new file mode 100644
index 00000000..a2de6bfd
--- /dev/null
+++ b/history/hurd-flash13
@@ -0,0 +1,120 @@
+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/history/hurd-flash14 b/history/hurd-flash14
new file mode 100644
index 00000000..2d67687a
--- /dev/null
+++ b/history/hurd-flash14
@@ -0,0 +1,62 @@
+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/history/hurd-flash15 b/history/hurd-flash15
new file mode 100644
index 00000000..0785ac59
--- /dev/null
+++ b/history/hurd-flash15
@@ -0,0 +1,60 @@
+
+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/history/hurd-flash2 b/history/hurd-flash2
new file mode 100644
index 00000000..b1d4f66f
--- /dev/null
+++ b/history/hurd-flash2
@@ -0,0 +1,152 @@
+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/history/hurd-flash3 b/history/hurd-flash3
new file mode 100644
index 00000000..19a5f371
--- /dev/null
+++ b/history/hurd-flash3
@@ -0,0 +1,77 @@
+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/history/hurd-flash4 b/history/hurd-flash4
new file mode 100644
index 00000000..89ae9848
--- /dev/null
+++ b/history/hurd-flash4
@@ -0,0 +1,101 @@
+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/history/hurd-flash5 b/history/hurd-flash5
new file mode 100644
index 00000000..041a0ef7
--- /dev/null
+++ b/history/hurd-flash5
@@ -0,0 +1,23 @@
+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/history/hurd-flash6 b/history/hurd-flash6
new file mode 100644
index 00000000..e774714e
--- /dev/null
+++ b/history/hurd-flash6
@@ -0,0 +1,46 @@
+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/history/hurd-flash7 b/history/hurd-flash7
new file mode 100644
index 00000000..ce6e08d2
--- /dev/null
+++ b/history/hurd-flash7
@@ -0,0 +1,17 @@
+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/history/hurd-flash8 b/history/hurd-flash8
new file mode 100644
index 00000000..555186ec
--- /dev/null
+++ b/history/hurd-flash8
@@ -0,0 +1,73 @@
+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/history/hurd-flash9 b/history/hurd-flash9
new file mode 100644
index 00000000..1ff32ba9
--- /dev/null
+++ b/history/hurd-flash9
@@ -0,0 +1,39 @@
+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/history/port_to_l4.mdwn b/history/port_to_l4.mdwn
new file mode 100644
index 00000000..cdf048e6
--- /dev/null
+++ b/history/port_to_l4.mdwn
@@ -0,0 +1,102 @@
+[[!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|hurd/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 [[hurd/critique]] and a
+[[hurd/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|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
+> [[open issues/resource management problems]] were
+> what prompted me to look at L4. Also, some of the problems with
+> [[hurd/translator]]s were already well-known to us. (For a more detailed
+> description of the problems we have identified, see our [[hurd/critique]] in the
+> 2007 July's SIGOPS OSR. We have also written a forward-looking
+> [[hurd/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-and-linux.html b/hurd-and-linux.html
new file mode 100644
index 00000000..01b08aa1
--- /dev/null
+++ b/hurd-and-linux.html
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2008, 2009 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"]]
+
+[[!tag stable_URL]]
+
+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-l4.mdwn b/hurd-l4.mdwn
new file mode 100644
index 00000000..579c1190
--- /dev/null
+++ b/hurd-l4.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]]."]]"""]]
+
+[[!tag stable_URL]]
+
+[[!meta redir=history/port_to_l4]]
diff --git a/hurd-paper.html b/hurd-paper.html
new file mode 100644
index 00000000..880f5fca
--- /dev/null
+++ b/hurd-paper.html
@@ -0,0 +1,761 @@
+[[!meta copyright="Copyright © 1996, 1997, 1998, 2007, 2008, 2009 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."]]
+
+[[!tag stable_URL]]
+
+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-talk.html b/hurd-talk.html
new file mode 100644
index 00000000..ec9eb777
--- /dev/null
+++ b/hurd-talk.html
@@ -0,0 +1,1062 @@
+[[!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"]]
+
+[[!tag stable_URL]]
+
+<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.mdwn b/hurd.mdwn
new file mode 100644
index 00000000..c5627e29
--- /dev/null
+++ b/hurd.mdwn
@@ -0,0 +1,103 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+The GNU Hurd is under active development. Because of that, there is no
+*stable* version. We distribute the Hurd sources only through CVS at present.
+
+Although it is possible to bootstrap the GNU/Hurd system from the sources by
+cross-compiling and installing the system software and the basic applications,
+this is a difficult process. It is not recommended that you do this. Instead,
+you should get a binary distribution of the GNU/Hurd, which comes with all the
+GNU software precompiled and an installation routine which is easy to use.
+
+The Debian project has commited to provide such a binary distribution.
+[[Debian_GNU/Hurd|running/debian]] is currently under development and available
+in the *unstable* branch of the Debian archive.
+
+---
+
+[[!toc]]
+
+# Introduction
+
+* [[What_Is_the_GNU_Hurd]] - A Brief Description
+* [[Advantages]]
+* [[History]]
+ * [[history/Port_to_L4]]
+* [[Logo]]
+* [[Status]]
+* [[KnownHurdLimits]]
+* [[Translation]] - Localized sites about the Hurd
+* [[Donate]]
+* [[SeenHurd]] - Media references
+* [[Shopping]] - Hurd Gear
+* [[FunnyHurd]] - From a different Herd
+* [[FAQ]]
+
+# Understanding
+
+* Introductory Material
+ * [[Documentation]]
+ * [Gaël Le Mignot](http://kilobug.free.fr/hurd/pres-en/slides/slides.html)
+* Architecture
+ * [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]] by Thomas Bushnell, BSG.
+ * Marcus Brinkmann's [revisit](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html)
+ * Jonathan S. Shapiro [comments](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html)
+ * [[Critique]] - Analysis
+ * [[Hurd_Hacking_Guide]]
+* [[Concepts]]
+
+# Using
+
+* [[Running]]
+* [[running/Distrib]] -- Distributions
+* [[Public_Hurd_Boxen]]
+* [[Neighborhurd]]s and [[Subhurd]]s
+* [[DDE]] -- Device Driver Environment
+
+## Common Problems
+
+* [[Console]]
+* [[Xfree86]] -- [[DebianX]] -- [[DebianXorg]]
+* [[GNUstep]]
+* [[XattrHurd]]: Setting translators under GNU/Linux
+* [[SerialConsole]]: Setting up a serial console.
+
+# Contributing
+
+* [[Contributing]]
+
+* [[Building]]
+ * [[building/Cross-Compiling]]
+
+* [[Open Issues|tag/open_issue_hurd]]
+
+# Developer References
+
+* [[Rules]]
+* [[Trackers]]
+* [[Toolchain]]
+ * [[glibc]]
+* RPC [[Interface]]s
+* Libraries
+ * [[libpager]]
+ * [[libports]]
+ * [[libstore]]
+ * [[libchannel]]
+ * [[libhello_example]] -- Hurd library example
+ * [[libtrivfs]]
+ * [[libnetfs]] -- short introductory material
+ * [[libihash]]
+* [[IO_Path]]
+* [[Porting]]
+* [[Debugging]]
+* [Hurd Sourcecode Reference](http://www.htu.tugraz.at/~past/hurd/global/): Searchable and browsable index of the code.
+* [[Networking]]
diff --git a/hurd/advantages.mdwn b/hurd/advantages.mdwn
new file mode 100644
index 00000000..ba3a134b
--- /dev/null
+++ b/hurd/advantages.mdwn
@@ -0,0 +1,68 @@
+[[!meta copyright="Copyright © 2001, 2002, 2008, 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]]."]]"""]]
+
+The Hurd is not the most advanced kernel known to the planet (yet),
+but it does have a number of enticing features:
+
+ * **it's free software**
+
+ Anybody can use, modify, and redistribute it under the terms of the
+ [[GNU_General_Public_License_(GPL)|GPL]]
+
+ * **it's compatible**
+
+ The Hurd provides a familiar programming and user environment. For all
+ intents and purposes, the Hurd is a modern Unix-like kernel. The Hurd uses
+ the [[GNU_C_Library|glibc]], whose development closely tracks standards
+ such as ANSI/ISO, BSD, POSIX, Single Unix, SVID, and X/Open.
+
+ * **it's built to survive**
+
+ Unlike other popular kernel software, the Hurd has an object-oriented
+ structure that allows it to evolve without compromising its design. This
+ structure will help the Hurd undergo major redesign and modifications
+ without having to be entirely rewritten.
+
+ * **it's scalable**
+
+ The Hurd implementation is aggressively multithreaded so that it runs
+ efficiently on both single processors and symmetric multiprocessors. The
+ Hurd interfaces are designed to allow transparent network clusters
+ (*collectives*), although this feature has not yet been implemented.
+
+ * **it's extensible**
+
+ The Hurd is an attractive platform for learning how to become a kernel
+ hacker or for implementing new ideas in kernel technology. Every part of
+ the system is designed to be modified and extended.
+
+ * **it's stable**
+
+ It is possible to develop and test new Hurd kernel components without
+ rebooting the machine (not even accidentally). Running your own kernel
+ components doesn't interfere with other users, and so no special system
+ privileges are required. The mechanism for kernel extensions is secure by
+ design: it is impossible to impose your changes upon other users unless
+ they authorize them or you are the system administrator.
+
+ * **it exists**
+
+ 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
new file mode 100644
index 00000000..2d6084bf
--- /dev/null
+++ b/hurd/authentication.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+UIDs on the Hurd are separate from processes. A process has
+[[capabilities|capability]] designating so-called UID vectors that
+are implemented by an [[translator/auth]] server. This
+makes them easily [[virtualizable|virtualization]].
+
+When a process wishes to gain access to a resource provided by a third
+party (e.g., a file system) and that party wishes to authenticate the client
+so as to implement some identity-based access control ([[IBAC]]) policy,
+the latter initiates a three-way authentication handshake. The server
+and client each then begin an authentication sequence with
+their respective [[trust]]ed auth servers. If they have
+a mutally trusted ancestor and an auth server does not abort the
+transaction, then the client is delivered a new capability
+naming a newly authenticated session with the server
+and the server is delivered the client's designated UID vector.
+
+For more details, see section 2.3 of the [[critique]].
diff --git a/hurd/binutils.mdwn b/hurd/binutils.mdwn
new file mode 100644
index 00000000..76b0ae60
--- /dev/null
+++ b/hurd/binutils.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[General_information|/binutils]] about the binutils.
+
+There shouldn't be any differences within the binutils between, for example,
+the GNU/Hurd and GNU/Linux ports.
diff --git a/hurd/building.mdwn b/hurd/building.mdwn
new file mode 100644
index 00000000..01586c84
--- /dev/null
+++ b/hurd/building.mdwn
@@ -0,0 +1,116 @@
+Additional to the following text, a further [[example]] has be posted.
+
+/!\ The following information may very well be incomplete and out-dated.
+
+
+# Building the Hurd from Source
+
+If you want to build the Hurd libraries and servers (translators) yourself
+instead of just using pre-built binaries, follow these instructions.
+
+One note before we begin: the likelihood that the compiled result will actually
+do what you expect it to do is the highest if you try building from the Debian
+source packages. This is especially true if you want to use your compilation
+within a Debian system.
+
+## Getting the Source Code
+
+You can chose between getting the [sources from the developers's
+RCS](http://savannah.gnu.org/cvs/?group=hurd):
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
+
+... or (if you are working on a Debian system) the ones that are used for the
+[current Debian hurd package](http://packages.debian.net/source/unstable/hurd):
+
+ $ apt-get source hurd
+
+Please see the Debian [[running/debian/FAQ]] before using `apt-get source`.
+
+The unpacked source tree is around 20 MiB, and the build tree (configured with
+`--disable-profile`) is around 100 MiB.
+
+## Preparing for the Build
+
+### ... on Debian systems
+
+Building the Hurd requires the *build-essential* and *fakeroot* packages, their
+dependencies and additional packages that are specified by the source hurd
+package:
+
+ # apt-get install build-essential fakeroot
+ # apt-get build-dep hurd
+
+### ... on non-Debian systems
+
+[TODO]
+
+## Building
+
+### Debian `.deb` Files
+
+Change into the directory with the downloaded / unpacked Hurd sources, e.g.
+
+ $ cd hurd-[TODO]
+
+If you want to work on the sources before building them, it's advisable to
+first apply the patches the Debian hurd package additionally contains:
+
+ $ debian/rules apply-patches
+
+Then edit and change whatever files you want and finally start the build
+process with
+
+ $ dpkg-buildpackage -us -uc -nc -b -rfakeroot
+
+The `.deb` packages will then drop out at the `../` directory.
+
+### Building, but not the Debian Way
+
+The Hurd has to be built in a separate directory:
+
+ $ mkdir hurd-build
+ $ cd hurd-build
+
+ $ [...]/hurd-[TODO]/configure --disable-profile
+ $ make
+ $ make install
+
+Notice that `make install` will install the Hurd in `/`, not in `/usr/local/`
+or `/local/`, so your current Hurd servers will be replaced. [TODO: how to
+install somewhere else.]
+
+By default profiling versions of all the libraries and code are generated but
+this is useless in most of the cases, so we disable them by specifying
+`--disable-profile` on `configure`'s command line.
+
+If you just want to build a specific server or library, you can pass its name
+to `make`:
+
+ $ make ext2fs
+ $ make libtrivfs
+
+This will automatically build all libraries that are required to build the
+requested server or library.
+
+### Cross Compiling
+
+Read about [[cross-compiling]].
+
+
+## RPC IDs
+
+[TODO: update / integrate somewhere.]
+
+If you want to trace the RPC calls made by some process by using `rpctrace`
+command, you will also want some more human-readable output of this
+command. This is achieved by generating `hurd.msgids` file that includes the
+mapping between the number of the RPC call and its name:
+
+ $ cd build/hurd
+ $ make hurd.msgids
+ $ cp hurd.msgids ~
+
+Now you can use this file in the following way:
+
+ $ rpctrace -i ~/hurd.msgids ls
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn
new file mode 100644
index 00000000..d5beade9
--- /dev/null
+++ b/hurd/building/cross-compiling.mdwn
@@ -0,0 +1,208 @@
+[[!meta copyright="Copyright © 2007, 2008, 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]]."]]"""]]
+
+# `cross-gnu`
+
+[[Thomas_Schwinge|tschwinge]] has written a shell script for building a
+complete cross-build environment for GNU/Hurd systems.
+
+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.
+
+
+## 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
+
+The following ones are known to work. Others may work as well, but no
+guarantee is given. Always the preferred version is listed first.
+
+ * `src/binutils`: [[GNU_Binutils|binutils]]
+
+ * CVS `binutils-2_20-branch`
+
+ $ mkdir binutils-2_20-branch
+ $ cd binutils-2_20-branch/
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r binutils-2_20-branch binutils
+
+ The sources are rooted in `binutils-2_20-branch/src/`. Also use the above
+ commands for updating, instead of the usual `cvs update`.
+
+ * 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_5-branch`
+
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch
+
+ Patches:
+
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
+
+ Prepare:
+
+ $ ( cd gcc-4_5-branch/ && contrib/gcc_update --touch )
+
+ * SVN `gcc-4_4-branch`
+
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch
+
+ Patches:
+
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
+
+ Prepare:
+
+ $ ( cd gcc-4_4-branch/ && 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]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/gnumach.git gnumach
+
+ Prepare:
+
+ $ ( cd gnumach/ && autoreconf -vi )
+
+ * `src/mig`: [[microkernel/mach/mig/GNU_MIG]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/mig.git mig
+
+ Prepare:
+
+ $ ( cd mig/ && autoreconf -vi )
+
+ * `src/hurd`: [[GNU_Hurd|hurd]]
+
+ * Git `master` branch
+
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/hurd.git hurd
+
+ * `src/libpthread`: [[libpthread]]
+
+ * Git `tschwinge/Peter_Herbolzheimer` branch
+
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/libpthread.git libpthread
+ $ cd libpthread/
+ $ git checkout origin/tschwinge/Peter_Herbolzheimer
+
+ * `src/glibc`: [[GNU_C_Library|glibc]]
+
+ * 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
+
+<!--
+
+ * `src/gdb`: [[GNU_Debugger|gdb]]
+
+ This is optional and will only be compiled if present.
+
+ * CVS `gdb_6_6-branch`
+
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r gdb_6_6-branch gdb
+ $ mv src gdb_6_6-branch
+
+ Also needs some patch because of MIG changes, if I remember correctly.
+
+ * Recent tarballs from <ftp://ftp.gnu.org/gnu/gdb/> should also work.
+
+-->
+
+
+### Preparation
+
+Unpack the tarballs if you downloaded any.
+
+Create a directory where the cross build shall be rooted in and a `src`
+subdirectory in there. Then create symbolic links for every of the above
+packages: from `src/PACKAGE` to where you stored or unpacked it. If you don't
+intend to build several cross compilers or use the source trees otherwise, you
+can also directly store the source trees in `src/`. The source trees can be
+shared between multiple cross build trees since the packages' build systems are
+supposed not to modify the files in the source trees. Not all packages adhere
+to that, but they fail to do so only for pre-processed documentation, etc.
+
+Either make sure that `cross-gnu-env` and `cross-gnu` are found in `$PATH`
+(`~/bin/`, for example) or alternatively remember to use their full paths in
+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 (4.3 onwards)
+you'll need to have development packages of GMP and MPFR installed.
+
+
+### Setting Up the Environment
+
+Do this every time you intend to use the cross compiler:
+
+ $ ROOT=to/the/cross/build/root
+ $ . cross-gnu-env
+
+This will set several environment variables, which are later used by (a) the
+`cross-gnu` script and (b) by you, the user of the cross compiler. `$TARGET`
+will be set by the script, `$PATH` will be adjusted, etc. See the
+`cross-gnu-env` file for all environment variables that are set, as well as
+their default values. `$ROOT` will be made an absolute path if it isn't
+already.
+
+Later, you'll be able to do things like `../configure --host="$TARGET"` and the
+cross compiler will be found automatically.
+
+
+### Creating the Cross Build Environment
+
+After setting up the environemt, just run `cross-gnu` and watch the messages
+flow by. In the end you should see a message: *[...]/cross-gnu: Everything
+should be in place now.*
+
+
+### 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 / 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.4 to GCC 4.5.
diff --git a/hurd/building/cross-compiling/discussion.mdwn b/hurd/building/cross-compiling/discussion.mdwn
new file mode 100644
index 00000000..dbe317ad
--- /dev/null
+++ b/hurd/building/cross-compiling/discussion.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+What happens if the external link goes down? Is there any way to store files
+within the wiki itself? --[[vincentvikram]]
+
+> You can store files in the wiki if you have direct access to the Git
+> repository.
+
+> I'm not sure I'd like arbitrary people to be able to store files in the wiki,
+> as that might be abused easily and once a file is stored in the Git
+> repository, there's no clean way to get rid of it anymore. Of course, there
+> are valid cases for adding raw files, then you can always send me a link and
+> ask me to add that file.
+
+> Now, as for the `cross-gnu` shell script, as I said: it will eventually be
+> made part of the Hurd CVS repository.
+
+> --[[tschwinge]]
diff --git a/hurd/building/example.mdwn b/hurd/building/example.mdwn
new file mode 100644
index 00000000..bf31bf7e
--- /dev/null
+++ b/hurd/building/example.mdwn
@@ -0,0 +1,60 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+I checked out the source code on my Ubuntu GNU/Linux system connected to the
+Internet using:
+
+ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
+
+I mounted the hurd directory on Ubuntu from my GNU Hurd system connected to the
+LAN through NFS:
+
+ settrans -ac /mnt /hurd/nfs ubuntu:/home/shaks/code
+
+Copy the hurd directory, locally.
+
+For compilation, you require build-essential, libc0.3-dev, hurd-dev. I used
+Debian GNU Hurd K10 CDs for installation and they are available in the first
+CD.
+
+ apt-get update
+ apt-get install build-essential libc0.3-dev hurd-dev
+
+Enter into the hurd directory and start building it:
+
+ cd hurd
+ mkdir build
+ cd build
+ ../configure
+ make
+
+There is a "libiohelp needed by" error. So, do a manual compilation for
+libiohelp.
+
+ cd ..
+ make libiohelp
+ cd build
+ make
+
+There is a "libiostore needed by" error. So, do a manual compilation for
+libiostore.
+
+ cd ..
+ make libiostore
+ cd build
+ make
+
+There is a "libiohelp.so: No such file or directory" error.
+
+Copy libiohelp/libiohelp.so file to build/libiohelp/ and re-run make,
+
+ make
+
+The executables are created in the subdirectories in build/ directory.
diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn
new file mode 100644
index 00000000..e8183d79
--- /dev/null
+++ b/hurd/concepts.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+* [[Translator]]
+* [[Virtual_File_System]]
+* [[Authentication]]
+* [[Virtualization]]
+* [[Neighborhurd]]
diff --git a/hurd/console.mdwn b/hurd/console.mdwn
new file mode 100644
index 00000000..4f976efd
--- /dev/null
+++ b/hurd/console.mdwn
@@ -0,0 +1,274 @@
+The below is a reworked version of Marcus Brinkmann's [letter to the debian-hurd list](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html). It describes how to setup the new console server for the Hurd. I am testing this right now, so this document is a work in progress.
+
+-- [[Main/JoachimNilsson]] - 21 Jan 2003
+
+Many of the shortcomings of the console are not true anymore. I've updated the page to match the state as it is in CVS.
+
+-- [[Main/MarcoGerards]] - 28 May 2004
+
+The latest Hurd package in Debian has all that is needed to run (dunno about hurd.ti though). The native-install script sets up all the necessary nodes, so all you really need is to run:
+
+ console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \
+ -d generic_speaker -c /dev/vcs
+
+-- [[Main/JoachimNilsson]] - 17 Apr 2005
+
+Additional information about the console can be found in the [Hurd Console Tutorial](http://uwhug.org.uk/index.pl?Hurd_Console_Tutorial)
+
+
+## <a name="What_is_the_new_console_"> What is the new console? </a>
+
+**_The new Hurd console features:_**
+
+**A console server**, which provides a number of virtual consoles to term servers, with a full set of terminal capabilities.
+
+The console server supports any encoding supported by iconv, but uses Unicode internally. The default encoding is ISO8859-1, another useful variant is UTF-8.
+
+The console server provides an arbitrary number of virtual consoles (numbered starting from 1, but the numbers don't need to be consecutive), which are created dynamically. A virtual console is not automatically displayed, for this you need a console client program which attaches to the virtual console you want to use.
+
+You can attach any number of console clients to the same virtual console, and detach them at any time.
+
+The console server provides a scrollback buffer for each virtual console. Currently, this is about one and a half screen full in addition to the screen. This should be configurable, of course, but isn't right now.
+
+**libcons**, a library that makes it easy to write console clients that attach to the console server.
+
+The client interface of the server is quite complicated, because it is based on shared memory and broadcasts the data to potentially many clients without blocking. It also includes a notification scheme so that clients remain idle when there is no console activity. This saves cpu power (compared to the alternative which would be polling).
+
+**The default console client**, which you will normally use to use a virtual console in a console server. Rather than writing many similar console client programs, I decided to write only one initially and make it extensible via dynamically loaded modules called "drivers".
+
+The console client uses libcons, of course. There are a number of drivers that exists already:
+
+* The ncursesw driver. You can use this if you log in from a remote unicode-capable console to attach to the local console server and use virtual console over the telnet/ssh session or similar. The ncursesw driver contains an output, input and bell driver components, so it is the only driver you need to get full access.
+
+* The vga driver. The VGA driver can be used locally to display a virtual console on a VGA card device. This driver provides a number of exciting features, and all of them are available in the fast text mode, and do not require a graphical framebuffer:
+
+* BDF font support. Load any BDF font with a Unicode encoding and a size from 8x13 up to 9x15 (recommended).
+
+* Dynamic glyph allocation. You can use up to 512 glyphs at any time. This means you can display cyrillic, greek, english runes, thai, etc. often at the same time, up to 512 different glyphs on the screen in parallel. The 512 is not a fixed set, they are chosen automatically out of the font you have loaded. This means that we only need one font for all users, regardless of the locale.
+
+* Dynamic color allocation. Because the above 512 glyph modus is only available with a reduced amount of colors, you can use only up to 8 different colors, but which of the 16 colors are available is chosen dynamically based on the colors actually used.
+
+_Note:_
+
+* Support for multiple fonts at the same time. The VGA driver supports italic and real bold (not bright color) mode. This will hopefully be used in emacs font lock mode and other applications.
+
+* The pc\_kbd driver. This is a hack for a PC eyboard with an american keymap. We all want configurable keyboard layouts of course, but I had to set priorities, and extracting xkb (so we can reuse the X keymaps) is on the TODO list. For now, this driver with a fixed US keymap is available for immediate use. Although it is only considered to be a temporary solution, it provides all features you need (except changing the keymap):
+ * All keys of a standard 102(?) keys keyboard, including Ctrl, LeftAlt, RightAlt, CapsLock, NumLock, Keypad, cursor block, function keys are supported and have a sensible default value.
+ * _LeftAlt_ + _Function key N_ switches the virtual console N.
+ * _LeftAlt_ + _ArrowRight_ or _ArrowLeft_ switches to previous or next virtual console.
+ * _RightShift_ + _PageUp_ or _PageDown_ scrolls back or forward in the scrollback buffer by half pages.
+ * _LeftAlt_ + _ArrowUp_ or _ArrowDown_ scroll back or forward one line.
+ * _LeftCtrl_ + _LeftAlt_ + _Backspace_ terminates the console client, and reverts the VGA card etc to its original state.
+ * _RightAlt_ + _Keypad_ enables you to directly enter unicode characters in hexadecimal numbers. 0-9 have their standard meaning, and NumLock is 0xa, Keypad `/` is 0xb, `*` is 0xc, `-` is 0xd, `+` is 0xe and the enter key at the lower right of the keypad is 0xf. Up to four digits are memorized, if you type more, the earlier ones are forgotten. This allows to cover up typing mistakes.
+
+_For example:_AltGr + (Keypad 4, Keypad 1) = 0x41 = 'A'.<br />AltGr + (Keypad 2, 6, 3, NumLock) = 0x263a = smiley.
+You can get unicode tables from <http://www.unicode.org>
+
+* The generic\_speaker driver supports the speaker commonly found in PCs and other computers. It is good enough for a simple bell tone or a small melody. I have several default bell styles implemented, but currently there is no configuration option to access them at run time, sorry! Load this module to make the console beep on ^G.
+
+## <a name="How_do_I_install_the_new_Hurd_co"> How do I install the new Hurd console? </a>
+
+### <a name="Setting_up_for_older_hurd_packag"> Setting up for older hurd packages </a>
+
+You either need the latest .deb of the Hurd, version 20020918-1 or later, or you need current CVS sources and compile them yourself.
+
+Then, the console server is in `/hurd/console`, the client in `/bin/console`. The installation is painless.
+
+First, make some device files:
+
+ # cd /dev
+ # ./MAKEDEV vcs tty1 tty2 tty3 tty4 tty5 tty6
+
+The above six ttys are only suggestions. You might want to give or take a few, depending on your needs.
+
+You need the terminal description. This is not yet in the ncurses package, because I am not finished yet. But you can download [hurd.ti from CVS](http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/hurd.ti). Please add it with
+
+ # tic -x hurd.ti
+
+Then you should add the terminals to ttys, so you get a login session on them at boot time. Edit the file `/etc/ttys`, and add the following lines (or similar if you made more/less ttys):
+
+ tty1 "/libexec/getty 38400" hurd on secure trusted console
+ tty2 "/libexec/getty 38400" hurd on secure trusted console
+ tty3 "/libexec/getty 38400" hurd on secure trusted console
+ tty4 "/libexec/getty 38400" hurd on secure trusted console
+ tty5 "/libexec/getty 38400" hurd on secure trusted console
+ tty6 "/libexec/getty 38400" hurd on secure trusted console
+
+This is all. If you now reboot, you will get six virtual consoles with a login prompt on each. But of course, the console client is not started automatically yet, so you don't see them.
+
+### <a name="Activating_the_console"> Activating the console </a>
+
+Login at the normal system console, and try to attach to the console server, either with the `ncursesw` driver or with the vga/pc\_kbd driver:
+
+ # console -d ncursesw /dev/vcs
+
+or
+
+ # console -d vga -d pc_kbd -d generic_speaker /dev/vcs
+
+That should work. The `ncursesw` driver supports console switching via _C-w C-1_ (or 2, 3, ...) and you can exit it with _C-w x_. However, the VGA client is more suitable on the local console.
+
+If you want repeater support (needed for X):
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/vcs
+
+Available mouse protocols are:
+
+* `mousesystem`
+* `microsoft`
+* `ps/2`
+* `nomouse`
+* `logitech`
+* `mouse7`
+
+### <a name="Setting_up_encoding"> Setting up encoding </a>
+
+The virtual consoles you are now running on are providing an ISO8859-1 environment (also known as latin1), which is good enough for the USA and some countries in Europe. If you require a different encoding for your locale (like, let's say, ISO8859-2), you can specify this as an argument to the console server. I am sorry to say that fsysopts doesn't do the trick yet, so you have to set the option with `settrans -fg`, which will _terminate all your login sessions and restart the console server_.
+
+To do this, _first_ exit the client. It will get disconnected anyway (and doesn't attempt to reconnnect yet in such a case). Then do a
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=ISO8859-2
+
+or
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8
+
+or similar. A list of supported locales is not easily available, but you can poke into `/share/i18n/SUPPORTED` to get an idea what is expected for your locale, and you can also check out `/share/i18n/charmaps`. Theoretically all of these encodings are "supported". In the file SUPPORTED, you see the locale (what you should export in the LANG environment variable, and enable in `/etc/locale.gen`) and the corresponding encoding.
+
+If you actually try this, you will notice two problems:
+
+1. You can not enter the letters in your locale, because the keyboard doesn't have the right layout. See above. Keyboard maps come later. For now, you have to help yourself with the direct input with RightAlt. Maybe I will put a simple compose key feature in the pc\_kbd driver, so that some western locales can be used more easily.
+2. If you bother to look up the unicode hex code and enter it with AltGr, the font can not display it! If you are using the ncursesw driver, do you use it while you are logged in from a working UTF-8 terminal? If not, then this is your problem. An ncurses driver for non-UTF-8 terminals is on the TODO list. But if you use the VGA driver, you need to load a different font.
+
+This is because by default, the vga driver just reads the VGA card memory and takes the font that is stored there. This font has a limited characterset (256 characters, many graphical symbols among that), so you won't get more than a few western characters with that.
+
+## <a name="Unicode_support"> Unicode support </a>
+
+But you want it all. You want to read Middle Old English. You want to read Thai. Your Korean spam. Georgian script. Hebrew. And you can have it.
+
+First you have to set the encoding to UTF-8:
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8
+
+Then you need a Unicode font. There are good ones provided by Markus Kuhn, [the UCS fonts](http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz). See also [the web page](http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html).
+
+Now, load the font by providing it with the `--font` option to the vga driver. I suggest only the 8x13 and the 9x15 fonts, but feel free to try others, too. Note that the VGA text mode can not really display 9 pixel wide characters. But as most characters have the ninth column empty, and the VGA text mode can display an empty column between two adjacent character cells, this trick allows us to display most of the 9x15 font correctly. So you won't notice a difference until you come to very broad characters or special symbols, where you will see that the last column is cut off. (BTW, I wrote the dynafont code carefully to still support horizontal line graphic characters properly in 9 pixel wide fonts. This is done by exploiting some special modes in the VGA hardware. This is why in 512 (256) glyph mode and 9 pixel wide fonts, you are limited to 448 (224) normal characters: 64 (32) slots are reserved for the horizontal line graphic characters so they are drawn continuously.)
+
+So, try the following:
+
+ # console -d vga --font 8x13.bdf -d pc_kbd -d generic_speaker /dev/vcs
+
+or
+
+ # console -d vga --font 9x15.bdf -d pc_kbd -d generic_speaker /dev/vcs
+
+If you are satisfied, copy your default font to `/lib/hurd/fonts/vga-system.bdf`, where it will be picked up automatically in favor to the graphic card's font.
+
+### <a name="More_about_fonts"> More about fonts </a>
+
+While we are talking about fonts, try also the 8x13O font with `--font-italic` and 8x13B or 9x15B font with `--font-bold`. You can save them in `/lib/hurd/fonts/vga-system-bold.bdf` and `/lib/hurd/fonts/vga-system-italic.bdf`, too.
+
+To activate those fonts on your virtual console, try the following:
+
+ # echo `tput sitm` Hello slanted world. `tput ritm`
+
+and
+
+ # echo `tput gsbom` Hello bold world. `tput grbom`
+
+I hope you like what you see. Imagine this in emacs font-lock mode.
+
+### <a name="Unicode_finally"> Unicode, finally </a>
+
+There are a few more steps necessary to make your Unicode environment ready:
+
+Install the locales package. The current version does want a newer glibc than we have in the archive, but this can be overridden with the `--force-depends` option to dpkg. The old glibc is good enough.
+
+Add a Unicode locale to `/etc/locale.gen`, and generate the locale information for that! For example, I am living in Germany, and normally use `de_DE` with the encoding ISO8859-1. My Unicode locale is `de_DE.UTF-8`, so I am adding that to `/etc/locale.gen`:
+
+ de_DE.UTF-8 UTF-8
+
+and rerun locale-gen:
+
+ # locale-gen
+
+See also `/share/i18n/SUPPORTED`. You can also do this more conveniently with
+
+ # dpkg-reconfigure locales
+
+Once you generated this, make it your default locale:
+
+ # export LANG=de_DE.UTF-8
+
+If you have also loaded the unicode font above, you are set up. Try for example to view the `examples/` files in the `ucs-fonts` package with less.
+
+ # less fonts/examples/UTF_8-demo.txt
+
+You should see most of that file with the 9x15 font (a bit less with the 8x13 font).
+
+You should be able to do the above process with other encodings than UTF-8. But you should _always_ use a Unicode font, because the console client uses Unicode internally fo everything.
+
+## <a name="Application_specific_notes"> Application specific notes </a>
+
+If you enter unicode characters at the shell, libreadline loses track of the number of characters displayed (it is not aware of multi-byte encodings like UTF-8). This is fixed in readline 4.3 (which is not yet in Debian).
+
+If you use mutt, install `mutt-utf8` package. For lynx, edit `/etc/lynx.cfg`, making sure that `CHARACTER_SET` is set to `utf-8`.
+
+If you use other applications, try to search with google for "application-name utf8" or "application-name unicode". Often you find what you need. The issues are the same for the GNU/Hurd and GNU/Linux systems, so most of the information can be shared, except how to setup the system console to support Unicode, of course.
+
+The `console-server` watches for new hurdio terms (devices translated with `/hurd/term`) and adds them to `/dev/vcs` automatically. What this means is, if you create a new tty with `MAKEDEV`, and then attach something to it, it will now appear in `/dev/vcs`. When a term is disconnected from, it disappears from `/dev/vcs`. `/libexec/getty` is what is usually attached to a term. You can see this automatic adding and removing of terms from the `console-server` by typing the following:
+
+ # cd /dev
+ # ls vcs/
+ 1 2 3 4 5 6
+ # MAKEDEV tty7
+ # cat > tty7 &
+ [1]+ Stopped cat > tty7
+ # ls vcs/
+ 1 2 3 4 5 6 7
+ # kill %1
+ # ls vcs/
+ 1 2 3 4 5 6
+
+## <a name="Known_problems_and_important_mis"> Known problems and important missing features </a>
+
+Squeezed at the end so nobody sees it ;)
+
+**console server:** Is probably too lax in permission checking. Does not implement settable tab stops. Does not allow to change encoding at run time. Does not allow any other screen size but 80x25.
+
+Combining characters is not supported.
+
+**libcons/console-client:** If you have one virtual console active, and another one receives a bell character, you don't hear the bell. This is because only the active virtual console is watched for anything interesting to happen. I think that is ok, but you might be surprised if you are used to how it works on GNU/Linux.
+
+Copy &amp; Paste not supported.
+
+**vga driver:** Does not recalculate the mode lines if the font height is changed. This makes font heights below 13 or over 16 infeasible.
+
+Should support other text modes (integrate svgatextmode?)
+
+**pc\_kbd driver:** No keyboard layout but US supported! Maybe in some cases left/right shift/ctrl/alt is allowed where both left and right should be allowed. Keyboard LEDs are only supported when using OSKIT-Mach or the CVS branch gnumach-1-branch of GNU Mach.
+
+**ncursesw driver:** Doesn't work properly on other terminals but UTF-8. Should not use C-w, this should be configurable. Does not support use of scroll back buffer.
+
+**Other programs:** Readline doesn't support multibyte encodings (4.2 and earlier). term doesn't either (all versions).
+
+----
+
+----
+
+Here's a June 2002 [status report](http://mail.gnu.org/archive/html/bug-hurd/2002-06/msg00549.html)
+
+In September 2002 there was a [request for testers](http://mail.gnu.org/archive/html/bug-hurd/2002-09/msg00121.html). There's been quite a bit of discussion on <bug-hurd@gnuNOSPAM.org> about updates, test results and changes.
+
+-- [[Main/GrantBow]] - 22 Oct 2002
+
+There are several patches for the console on savannah to deal with the shortcommings described in Marcus' email. [Patches ](http://savannah.gnu.org/patch/index.php?group_id=30&set=custom&msort=0&report_id=100&advsrch=0&go_report=Apply&category_id=162&assigned_to=0&status_id=1&chunksz=50) for broadcasting the bell event, for setting other text modes and a patch to make it possible to start XFree from the console can be found on savannah.
+
+An [experimental plugin to load XKB keymaps](http://kilobug.free.fr/hurd/xkb-0.3.tar.gz) exists, although it is alpha quality.
+
+-- [[Main/MarcoGerards]] - 28 May 2004
+
+Added examples that use repeaters needed by X.
+
+-- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/hurd/critique.mdwn b/hurd/critique.mdwn
new file mode 100644
index 00000000..c432cc17
--- /dev/null
+++ b/hurd/critique.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!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
+System*](http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf).
+This was published in ACM SIGOPS Operating Systems Review in July 2007. This
+is sometimes referred to as *the critique*.
+
+The paper provides a technical overview of the Hurd's
+architecture and critiques some of the decisions made.
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..72294629
--- /dev/null
+++ b/hurd/dde/guide.mdwn
@@ -0,0 +1,153 @@
+[[!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
+
+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
+
+> $ 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>
+
+> $ 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
new file mode 100644
index 00000000..36ab769a
--- /dev/null
+++ b/hurd/debugging.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# Strategies
+
+* [[GDB]] -- the GNU debugger
+ * [[gdb/Backtrace]]s
+* [[subhurd]] -- running another Hurd system in parallel
+* [[rpctrace]] -- tracing [[RPC]]s
+
+
+# About Specific Packages
+
+ * [[glibc]]
+ * [[translator]]s
diff --git a/hurd/debugging/gdb.mdwn b/hurd/debugging/gdb.mdwn
new file mode 100644
index 00000000..1fede74f
--- /dev/null
+++ b/hurd/debugging/gdb.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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 [[GNU_debugger_*GDB*|/gdb]] works on GNU/Hurd
+systems as it does on other system, but has some additional [hurd-specific
+features](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native)
+to offer, such as [[noninvasive_debugging]] (for avoiding [[deadlock]]s), for
+example.
diff --git a/hurd/debugging/gdb/noninvasive_debugging.mdwn b/hurd/debugging/gdb/noninvasive_debugging.mdwn
new file mode 100644
index 00000000..fa7a3c5b
--- /dev/null
+++ b/hurd/debugging/gdb/noninvasive_debugging.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Sometimes using [[GDB]] on a [[system_server|translator]] can result in a [[deadlock]]. You
+can however still use GDB by using the [`set
+noninvasive`](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native)
+option. This indicates to GDB to not stop the program but allows you to
+nevertheless examine its state. Thus, you can get [[/gdb/backtrace]]s and values of
+variables (and watch them change underneath you).
diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn
new file mode 100644
index 00000000..905dd0da
--- /dev/null
+++ b/hurd/debugging/glibc.mdwn
@@ -0,0 +1,92 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Here are some hints about how to approach testing after nontrivial changes to
+glibc have been done.
+
+---
+
+First step is having the build of glibc succeed. This is actually more
+difficult than one might expect as it involves (towards the end of the build
+process -- unless you are [[building/cross-compiling]], of course -- that the
+newly created libraries and loader actually work: they'll be used to run the
+`rpcgen` program. If that step doesn't succeed, it'll look similar to this:
+
+ [...]
+ CPP='gcc -E -x c-header' [...]/build/elf/ld.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...]
+ Segmentation fault
+
+---
+
+Unless [[building/cross-compiling]], the next thing you'll probably want to do
+is running the test suite, or parts of it.
+
+Here is a list of known failures:
+
+[TODO].
+
+---
+
+If you've been doing simple changes to glibc functions that end up in
+`libc.so`, you may test them like this (like for a `strerror_l` implementation
+in this case):
+
+ $ LD_PRELOAD=./libc.so ./ld.so ./a.out 10 1073741928 de_DE.utf8
+ 1073741928 (0x40000068): Computer bought the farm
+ 1073741928 (0x40000068): Der Computer hat den Bauernhof erworben
+
+You usually will only have luck using the new `libc.so` (from
+`[glibc-build]/libc.so`) in combination together with the new `ld.so` (from
+`[glibc-build]/elf/ld.so`):
+
+ $ LD_PRELOAD=./libc.so ./a.out 10 1073741928 de_DE.utf8
+ Killed
+ $ LD_PRELOAD=./libc.so /lib/ld.so ./a.out 10 1073741928 de_DE.utf8
+ Killed
+
+Make sure static linking is working OK at all. Running the
+`[glibc-build]/elf/sln` program (a stripped-down `ln` that is statically
+linked) ought to test that. Also, static linking under various conditions will
+already have been tested when running the test suite, especially in `elf/` and
+`dlfcn/`.
+
+Make sure static linking with cthreads is working. If you can get an
+`ext2fs.static` compiled and linked against the new glibc, that is good.
+
+[TODO].
+
+Then debug its startup as a normal program on your working hurd.
+
+ $ [...]/ext2fs.static --help
+ [...]
+
+Then try its full server startup.
+
+ $ settrans -ca node [...]/ext2fs.static BACKING_STORE
+ $ ls -l node/
+ [...]
+
+Make sure dynamic linking for servers is working. If you haven't broken the
+ABI, you can just use an existing `/hurd/foobar` binary, started the way
+glibc's `testrun.sh` does it.
+
+[TODO]: Is this the correct way to do that?
+
+ $ settrans -ca node [glibc]/build/testrun.sh /hurd/ext2fs BACKING_STORE
+ $ cd node/
+ [...]
+
+---
+
+Test it in a [[subhurd]].
+
+---
+
+Test it on a real system.
diff --git a/hurd/debugging/rpctrace.mdwn b/hurd/debugging/rpctrace.mdwn
new file mode 100644
index 00000000..de46c08d
--- /dev/null
+++ b/hurd/debugging/rpctrace.mdwn
@@ -0,0 +1,53 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+*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
+doing.
+
+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
+ that terminates or suspends it is sent
+ * <http://savannah.gnu.org/patch/?1633> -- terminated with `C-c` `rpctrace`d
+ programs hang
+* <http://savannah.gnu.org/patch/?5580> -- more readable output
+
+* 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) ...
+
+* IRC, unknown channel, unknown date
+
+ <antrik> hm... for a funny effect, try running rpctrace on
+ /servers/socket/1, and then use dpkg... ;-)
+
+* IRC, unknown channel, unknown date.
+
+ <youpi> the problem of rpctrace is that it's a man in the middle :)
+ <youpi> so in principle, by design authentication stuff shouldn't work
+ <antrik> I don't think the Hurd auth mechanism in any way prevents or tries to prevent man-in-the-middle...
+ <youpi> maybe, but just try, you'll see all kinds of issue as soon as you have authentication stuff
+ <youpi> and the basic reason is that being a man in the middle needs special care
+ <youpi> which rpctrace doesn't completely do
+ <antrik> it's a while since I have dived into rpctrace; but AIUI, it should work just fine if the proxying is done properly
+ <antrik> note that there is a number of known bugs in rpctrace, for which zhengda has sent patches... though I haven't reviewed all of them I think
+ <antrik> there are some nasty Mach operations that are really hard to proxy -- but I don't think the auth mechanism needs any of these...
diff --git a/hurd/debugging/subhurd.mdwn b/hurd/debugging/subhurd.mdwn
new file mode 100644
index 00000000..7b5b07b1
--- /dev/null
+++ b/hurd/debugging/subhurd.mdwn
@@ -0,0 +1,90 @@
+# General Information
+
+* [[/hurd/subhurd]]
+
+---
+
+# Debugging the Hurd Startup Process
+
+_one.full_ is the subhurd's root file system image and has been installed as
+follows: [TODO]
+
+_Wx_ translates to terminal window _x_.
+
+W1
+
+ $ fsysopts one.full/ --readonly
+ $ sudo boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2
+ Pausing. . .
+
+(In theory it shouldn't be neccessary to run the subhurd as user _root_, but in
+practice [that doesn't work at the
+moment](http://savannah.gnu.org/bugs/?17341).)
+
+W2
+
+ $ ps -Af
+ [...]
+ root 851 385 p4 0:00.01 boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2
+ - 853 1 ? 0:00.00 ?
+ - 854 1 ? 0:00.00 ?
+ [...]
+ $ sudo gdb /var/tmp/one.full/hurd/ext2fs.static
+ [...]
+ (gdb) attach 853
+ Attaching to program `/var/tmp/one.full/hurd/ext2fs.static', pid 853
+ warning: Can't modify tracing state for pid 853: No signal thread
+ Can't fetch registers from thread 1: No such thread
+
+(The _boot_ program [could be modified to print out the
+pids](http://savannah.gnu.org/bugs/?19254), so that one wouldn't have to fumble
+with _ps_.)
+
+W3
+
+ $ sudo gdb /var/tmp/one.full/lib/ld.so.1
+ [...]
+ (gdb) set solib-absolute-prefix /var/tmp/one.full
+ (gdb) attach 854
+ Attaching to program `/var/tmp/one.full/lib/ld.so.1', pid 854
+ warning: Can't modify tracing state for pid 854: No signal thread
+ Can't fetch registers from thread 1: No such thread
+
+W1
+
+ [<Enter>.]
+ /hurd/ext2fs.static --bootflags=-dsf --host-priv-port=38 --device-master-port=43 --exec-server-task=47 -Tdevice pseudo-root
+ /lib/ld.so.1 /hurd/exec
+
+Now that this step has been accomplished, you can set break points in GDB, etc.
+
+W2
+
+ (gdb) continue
+ Continuing.
+ warning: Can't wait for pid 853: No child processes
+
+W1
+
+ Hurd server bootstrap: ext2fs.static[pseudo-root] exec
+
+W3
+
+ (gdb) continue
+ Continuing.
+ warning: Can't wait for pid 854: No child processes
+
+ Program received signal EXC_BAD_ACCESS, Could not access memory.
+ __mach_port_mod_refs (task=1, name=139802, right=1, delta=-1)
+ at /var/tmp/glibc-2_5-branch/build_--without-tls_--without-__thread/mach/RPC_mach_port_mod_refs.c:132
+ 132 InP->Head.msgh_reply_port = __mig_get_reply_port();
+ (gdb) x/i $pc
+ 0x168f2 <__mach_port_mod_refs+82>: call 0x151b0 <__mig_get_reply_port>
+
+---
+
+Sources:
+
+* [[subhurd/running_a_subhurd]]
+* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00030.html>
+* [[Thomas_Schwinge|tschwinge]]'s mind
diff --git a/hurd/debugging/translator.mdwn b/hurd/debugging/translator.mdwn
new file mode 100644
index 00000000..d439e17b
--- /dev/null
+++ b/hurd/debugging/translator.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!inline
+pages="hurd/debugging/translator/* and !*/discussion"
+show=0
+feeds=no
+actions=yes]]
diff --git a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
new file mode 100644
index 00000000..b7cfc3c9
--- /dev/null
+++ b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Sometimes it may already be helpful to capture a translator's `stdout` and
+`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 ↩
+ /bin/sh -c '/hurd/pfinet -i eth0 -a [...] > /tmp/stdout 2> /tmp/stderr'
+ $ [...]
+ $ cat /tmp/stdout
+ NET4: Linux TCP/IP 1.0 for NET4.0
+ IP Protocols: ICMP, UDP, TCP
+ TCP: Hash tables configured (ehash 65536 bhash 65536)
+ $ cat /tmp/stderr
+ pfinet: ../../hurd.work/pfinet/ethernet.c:196: ethernet_xmit: Unexpected error: (os/device) invalid IO size.
+
+(Trying to run [[GDB]] in this case was of no help -- due to a bug in GDB
+(supposedly) it wouldn't catch the fault.)
+
+Be made aware that both `stdout` and `stderr` will be block bufferend and no
+longer line buffered when doing such a redirection, so you'll have to arrange
+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.
+
+There is also a [[related open issue|open_issues/translator_stdout_stderr]].
diff --git a/hurd/debugging/translator/gdb.mdwn b/hurd/debugging/translator/gdb.mdwn
new file mode 100644
index 00000000..82a50736
--- /dev/null
+++ b/hurd/debugging/translator/gdb.mdwn
@@ -0,0 +1,53 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Say you want to try running file system server ([[`ext2fs`|translator/ext2fs]],
+[[`jfs`|translator/jfs]], ...) against a modified version of
+[[`libpager`|libpager]] and debug the latter one using [[debugging/GDB]].
+
+Set the [[hurd/translator]] like this:
+
+ $ settrans -fgap ↩
+ jfs.img.i ↩
+ /usr/bin/env ↩
+ LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩
+ "$PWD"/jfs.obj/jfs ↩
+ "$PWD"/jfs.img
+
+Then, when starting GDB, start it like this (or use an equivalent method, of
+course):
+
+ $ LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩
+ gdb ↩
+ ~tschwinge/tmp/jfs/jfs.obj/jfs 15436
+ GNU gdb 6.5-debian
+ [...]
+ Reading symbols from /lib/libdiskfs.so.0.3...Reading symbols from /lib/debug/lib/libdiskfs.so.0.3...done.
+ done.
+ Loaded symbols for /lib/libdiskfs.so.0.3
+ Reading symbols from /devel4/tschwinge/tmp/hurd/hurd.ogi/build/libpager/libpager.so.0.3...done.
+ Loaded symbols for /devel4/tschwinge/tmp/hurd/hurd.ogi/build/libpager/libpager.so.0.3
+ Reading symbols from /lib/libstore.so.0.3...Reading symbols from /lib/debug/lib/libstore.so.0.3...done.
+ done.
+ Loaded symbols for /lib/libstore.so.0.3
+ [...]
+ (gdb) break pager_demuxer
+ Breakpoint 1 at 0x105c98d: file ../../libpager/demuxer.c, line 27.
+ [...]
+ Breakpoint 1, pager_demuxer (inp=0x12bded0, outp=0x12bbec0) at ../../libpager/demuxer.c:27
+ 27 {
+ (gdb) list
+ 22 /* Demultiplex a single message directed at a pager port; INP is the
+ 23 message received; fill OUTP with the reply. */
+ 24 int
+ 25 pager_demuxer (mach_msg_header_t *inp,
+ [...]
+
+Voilà.
diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
new file mode 100644
index 00000000..874ce847
--- /dev/null
+++ b/hurd/documentation.mdwn
@@ -0,0 +1,71 @@
+[[!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
+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]]."]]"""]]
+
+# Introductory Material
+
+ * [[What_Is_the_GNU_Hurd]]
+
+ * [[Advantages]]
+
+ * [[FAQ]]
+
+ * [[*The_Hurd_and_Linux*|/hurd-and-linux]], a comment by Richard Stallman.
+
+ * [[*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.
+
+ * A document about *[[translators]]* by Marcus Brinkmann.
+
+ * [[*A_Critique_of_the_GNU_Hurd_Multi-server_Operating_System*|critique]], an
+ analysis of the GNU Hurd on GNU Mach system, written by Neal Walfield and
+ Marcus Brinkmann.
+
+## External
+
+ * [*Examining the Legendary HURD
+ Kernel*](http://www.informit.com/articles/printerfriendly.aspx?p=1180992),
+ an article by David Chisnall.
+
+ Also covers a bit of GNU's and the Hurd's history, fundamental techniques
+ applied, comparisions to other systems.
+
+
+# Development
+
+ * *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*.
+
+ * The *[[Hurd_Hacking_Guide]]*, an introduction to GNU&nbsp;Hurd and Mach
+ programming by Wolfgang Jährling.
+
+ * [*Manually Bootstrapping a
+ Translator*](http://walfield.org/pub/people/neal/papers/hurd-misc/manual-bootstrap.txt),
+ a text by Neal Walfield about how to *manually connect the translator to
+ the filesystem*.
+
+ * [[*The_Authentication_Server*|auth]], the transcript of a talk about the
+ details of the authentication mechanisms in the Hurd by Wolfgang Jährling.
+
+ * [*The Mach Paging Interface as Used by the
+ Hurd*](http://lists.gnu.org/archive/html/l4-hurd/2002-06/msg00001.html), a
+ text by Neal Walfield.
+
+ * In the
+ [[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
new file mode 100644
index 00000000..27f9ca2c
--- /dev/null
+++ b/hurd/documentation/auth.html
@@ -0,0 +1,168 @@
+[[!meta copyright="Copyright © 2002, 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 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>
+<UL>
+ <LI><A HREF="#intro" NAME="TOCintro">Introduction</A>
+ <LI><A HREF="#ids" NAME="TOCids">How IDs are represented and used</A>
+ <LI><A HREF="#posix" NAME="TOCposix">POSIX and beyond</A>
+ <LI><A HREF="#servers" NAME="TOCservers">Related servers</A>
+</UL>
+<HR>
+
+<H3><A HREF="#TOCintro" NAME="intro">Introduction</A></H3>
+<P>
+In this text, which mostly resembles the talk I gave at Libre Software
+Meeting 2002 in Bordeaux, I will describe what the auth server does,
+why it is so important and which cool things you can do with it, both
+on the programming and the user side. I will also describe related
+programs like the password and fakeauth servers. Note that this text
+is targeted at programmers who want to understand the auth mechanism
+in detail and are already familiar with concepts like Remote Procedure
+Calls (RPCs) as well as the way User- and Group-IDs are used in the
+POSIX world.
+
+<P>
+The auth server is a very small server, therefore it gives a useful
+example when you want to learn how a server typically looks like. One
+reason why it is so small is that the auth interface, which it
+implements, consists of only four RPCs. You can find the interface in
+hurd/hurd/auth.defs and the server itself in hurd/auth/.
+
+<H3><A HREF="#TOCids" NAME="ids">How IDs are represented and used</A></H3>
+<P>
+Each process holds (usually) one port to auth (an auth_t in C source,
+which actually is a mach_port_t, of course). The purpose of auth is
+to manage User-IDs and Group-IDs, which is the reason why users often
+will have no choice but to make use of the systems main auth server,
+which does not listen on /servers/auth; instead you inherit a port to
+auth from your parent process. Each such port is (internally in the
+auth server) associated with a set of effective User- and Group-IDs as
+well as a set of available User- and Group-IDs. So we have four sets
+of IDs in total. The available IDs can be turned into corresponding
+effective IDs at any time.
+
+<P>
+When you send an auth_getids RPC on the port you hold, you will get
+information about which IDs are associated with it, so you can figure
+out which permissions you have. But how will a server know that you
+have these permissions and therefore know which actions (e.g. writing
+into file "foo") it is supposed to do on your behalf and which not?
+The establishing of a trusted connection to a server works as follows:
+
+<P><OL>
+<LI>A user wants a server to know its IDs</LI>
+<LI>The user requests a reauthentication from the server</LI>
+<LI>In this request the user will include a port</LI>
+<LI>Both will hand this port to auth</LI>
+<LI>The user uses auth_user_authenticate</LI>
+<LI>The server uses auth_server_authenticate</LI>
+<LI>The server also passes a new port to auth</LI>
+<LI>auth matches these two requests</LI>
+<LI>The user gets the new port from auth</LI>
+<LI>The server learns about the IDs of the user</LI>
+<LI>The user uses the new port for further communication</LI>
+</OL>
+
+<P>
+We have different RPCs for users and servers because what we pass and
+what we get back differs for them: Users get a port, and servers get
+the sets of IDs, and have to specify the port which the user will get.
+
+<P>
+It is interesting to note that auth can match the requests by
+comparing two integers, because when you get the same port from two
+people, you will have the same mach_port_t (which is nothing but an
+integer).
+
+<P>
+All of this of course only works if they use the same auth server,
+which is why I said often you have no choice other than to use the
+one main auth server. But this is no serious restriction, as the auth server has
+almost no functionality one might want to replace. In fact, there is
+one replacement for the default auth implementation, but more on that
+later.
+
+<H3><A HREF="#TOCposix" NAME="posix">POSIX and beyond</A></H3>
+<P>
+Before we examine what is possible with this design, let us take a
+short look at how the POSIX semantics are implemented on top of this
+design. When a program that comes out of POSIX-land asks for its own
+effective User- or Group-ID, we will tell it about the first of the
+effective IDs. In the same sense, the POSIX real User- or Group-ID is
+the first available ID and the POSIX saved User- or Group-ID is the
+second available ID, which is why you have the same ID two times in
+the available IDs when you log into your GNU/Hurd machine (you can
+figure out which IDs you have with the program "ids", that basically
+just does an auth_getauth RPC). When you lack one of those IDs (for
+example when you have no effective Group-ID), a POSIX program asking
+for this particular information will get "-1" as the ID.
+
+<P>
+But as you can imagine, we can do more than what POSIX specifies. Fox
+example, we can modify our permissions. This is always done with the
+auth_makeauth RPC. In this RPC, you specify the IDs that should be
+associated with the new port. All of these IDs must be associated
+with either the port where the RPC is sent to or one of the additional
+ports you can specify; an exception is the superuser root, which is
+allowed to creat ports that are associated with arbitrary IDs.
+Hereby you can convert available into effective IDs.
+
+<P>
+This opens the door to a bunch of nice features. For example, we have
+the addauth program in the Hurd, which makes it possible to add an ID
+to either a single process or a group of processes if you hold the ID or know the
+appropriate password, and there is a corresponding rmauth program that
+removes an ID. So when you are working on your computer with GNU
+Emacs and want to edit a system configuration file, you switch to
+Emacs' shell-mode, do an "addauth root", enter the password, edit the
+file, and when you are done switch back to shell-mode and do "rmauth
+root". These programs have some interesting options, and there are
+various other programs, for setting the complete list of IDs (setauth)
+and so on.
+
+<H3><A HREF="#TOCservers" NAME="servers">Related servers</A></H3>
+<P>
+Finally, I want to explain two servers which are related to auth. The
+first is the password server, which listens on /servers/password. If
+you pass to it a User- or Group-ID and the correct password for it, it
+will return a port to auth to you which is associated with the ID you
+passed to it. It can create such a port because it is running as
+root. So let us assume you are an FTP server process. You will start
+as root, because you want to use port 21 (in this case, "port" does
+not refer to a mach_port_t, of course). But then, you can drop all
+your permissions so that you run without any ID. This makes it far
+less dangerous to communicate with yet unknown users over the
+network. But when someone now hands a username and password to you,
+you can ask the password server for a new auth port. The password
+server will check the data you pass to it, for example by looking into
+/etc/shadow, and if it is valid, it will ask the auth server for a new
+port. It receives this port from auth and then passes it on to you.
+So you have raised your permissions. (And for the very curious: Yes,
+we are well aware of the differences between this concept and
+capabilities; and we also do have some kinds of capabilities in
+various parts of the Hurd.)
+
+<P>
+My second example is the fakeauth server. It also implements the auth
+protocol. It is the part of the fakeroot implementation that gives a
+process the impression that it runs as root, even if it doesn't. So
+when the process asks fakeauth about its own IDs, fakeauth will tell
+the process that it runs as root. But when the process wants to make
+use of the authentication protocol described earlier in this text,
+fakeauth will forward the request to its own auth server, which will
+usually be the systems main auth server, which will then be able to
+match the auth_*_authenticate requests. So what fakeauth does is
+acting as a proxy auth server that gives someone the impression to run
+as root, while not modifying what that one is allowed to do.
+
+<P>
+At this point, I have said at least most of what can be said about the
+auth server and the protocol it implements, so I will finish by saying
+that it might be an interesting task (for you) to modify some existing
+software to take advantage of the features I described here.
diff --git a/hurd/documentation/hurd-and-linux.mdwn b/hurd/documentation/hurd-and-linux.mdwn
new file mode 100644
index 00000000..678ea8da
--- /dev/null
+++ b/hurd/documentation/hurd-and-linux.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-and-linux]]
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.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
new file mode 100644
index 00000000..8ae2c180
--- /dev/null
+++ b/hurd/documentation/translators.html
@@ -0,0 +1,236 @@
+[[!meta copyright="Copyright © 1998, 1999, 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="Translators"]]
+
+By Marcus Brinkmann.
+
+<ul>
+<li><a href="#concept" name="TOC_concept">Concept</a></li>
+<li><a href="#examples" name="TOC_examples">Examples</a></li>
+<li><a href="#actpas" name="TOC_actpas">Passive Translators, Active Translators</a></li>
+<li><a href="#manage" name="TOC_manage">Managing Translators</a></li>
+</ul>
+<h3><a href="#TOC_concept" name="concept">Concept</a></h3>
+<p>
+Before we take a closer look at translators, let us consider regular
+filesystems. A filesystem is store for a hierarchical tree of directories
+and files. You access directories and files by a special character string,
+the path. Furthermore, there are symbolic links to refer to one file at
+several places in the tree, there are hard links to give one and the same
+file several names. There are also special device files for communication
+with the hardware device drivers of the kernel, and there are mount points
+to include other stores in the directory tree. Then there are obscure
+objects like fifos and hard links.</p>
+<p>
+Although these objects are very different, they share some common
+properties, for example, they have all an owner and a group associated with
+them as well as access rights (permissions). This information is written in
+inodes. This is a actually a further commonality: Every object has exactly
+one inode associated with it (hard links are somewhat special as they share
+one and the same inode). Sometimes, the inode has further information
+stored in it. For example, the inode can contain the target of a symbolic
+link.</p>
+<p>
+However, these commonalities are usually not exploited in the
+implementations, despite the common programming interface to them. All
+inodes can be accessed through the standard POSIX calls, for example
+<code>read()</code> and <code>write()</code>. For example, to add a new
+object type (for example a new link type) to a common monolithic unix
+kernel, you would need to modify the code for each filesystem
+seperately.</p>
+<p>
+In the Hurd, things work differently. Although in the Hurd a special
+filesystem server can exploit special properties of standard object types
+like links (in the ext2 filesystem with fast links, for example), it has a
+general interface to add such features without modifying existing code.</p>
+<p>
+The trick is to allow a program to be inserted between the actual content of
+a file and the user accessing this file. Such a program is called a
+translator, because it is able to process the incoming requests in many
+different ways. In other words, a translator is a Hurd server which provides
+the basic filesystem interface.</p>
+<p>
+Translators have very interesting properties. From the kernels point of
+view, they are just another user process. This means, translators can be run
+by any user. You don't need root priviligies to install or modify a
+translator, you only need the access rights for the underlying inode the
+translator is attached to. Many translators don't require an actual file to
+operate, they can provide information by their own means. This is why
+the information about translators is stored in the inode.</p>
+<p>
+Translators are responsible to serve all file system operations that involve
+the inode they are attached to. Because they are not restricted to the usual
+set of objects (device file, link etc), they are free to return anything
+that makes sense to the programmer. One could imagine a translator that
+behaves like a directory when accessed by <code>cd</code> or
+<code>ls</code> and at the same time behaves like a file when accessed by
+<code>cat</code>.</p>
+<h3><a href="#TOC_examples" name="examples">Examples</a></h3>
+<h4>Mount Points</h4>
+<p>
+A mount point can be seen as an inode that has a special translator attached
+to it. Its purpose would be to translate filesystem operations on the mount
+point in filesystem operations on another store, let's say, another
+partition.</p>
+<p>
+Indeed, this is how filesystems are implemented under the Hurd. A
+filesystem is a translator. This translator takes a store as its argument,
+and is able to serve all filesystem operations transparently.</p>
+<h4>Device Files</h4>
+<p>
+There are many different device files, and in systems with a monolithical
+kernel, they are all provided by the kernel itself. In the Hurd, all device
+files are provided by translators. One translator can provide support for
+many similar device files, for example all hard disk partitions. This way,
+the number of actual translators needed is quite small. However, note that
+for each device file accessed, a seperate translator task is started.
+Because the Hurd is heavily multi threaded, this is very cheap.</p>
+<p>
+When hardware is involved, a translator usually starts to communicate with
+the kernel to get the data from the hardware. However, if no hardware access
+is necessary, the kernel does not need to be involved. For example,
+<code>/dev/zero</code> does not require hardware access, and can therefore
+be implemented completely in user space.</p>
+<h4>Symbolic Links</h4>
+<p>
+A symbolic link can be seen as a translator. Accesing the symbolic link
+would start up the translator, which would forward the request to the
+filesystem that contains the file the link points to.</p>
+<p>
+However, for better performance, filesystems that have native support
+for symbolic links can take advantage of this feature and implement
+symbolic links differently. Internally, accessing a symbolic link would not
+start a new translator process. However, to the user, it would still look
+as if a passive translator is involved (see below for an explanation what a
+passsive translator is).</p>
+<p>
+Because the Hurd ships with a symlink translator, any filesystem server that
+provides support for translators automatically has support for symlinks (and
+firmlinks, and device files etc)! This means, you can get a working
+filesystem very fast, and add native support for symlinks and other features
+later.</p>
+<h3><a href="#TOC_actpas" name="actpas">Passive Translators, Active Translators</a></h3>
+<p>
+There are two types of translators, passive and active. They are really
+completely different things, so don't mix them up, but they have a close
+relation to each other.</p>
+<h4>Active Translators</h4>
+<p>
+An active translator is a running translator process, as introduced above.
+You can set and remove active translators using the
+<code>settrans -a</code></a>
+command. The <code>-a</code> option is necessary to tell
+<code>settrans</code> that you want to modify the active translator.</p>
+<p>
+The <code>settrans</code> command takes three kind of arguments. First, you
+can set options for the <code>settrans</code> command itself, like
+<code>-a</code> to modify the active translator. Then you set the inode you
+want to modify. Remember that a translator is always associated with an
+inode in the directory hierarchy. You can only modify one inode at a time.
+If you do not specify any more arguments, <code>settrans</code> will try to
+remove an existing translator. How hard it tries depends on the force
+options you specify (if the translator is in use by any process, you will
+get "device or resource busy" error message unless you force it to go away).</p>
+<p>
+But if you specify further arguments, it will be interpreted as a command
+line to run the translator. This means, the next argument is the filename of
+the translator executable. Further arguments are options to the translator,
+and not to the <code>settrans</code> command.</p>
+<p>
+For example, to mount an ext2fs partition, you can run
+<code>settrans -a -c /mnt /hurd/ext2fs /dev/hd2s5</code>. The
+<code>-c</code> option will create the mount point for you if it doesn't
+exist already. This does not need to be a directory, by the way. To unmount,
+you would try <code>settrans -a /mnt</code>.</p>
+<h4>Passive Translators</h4>
+<p>
+A passive translator is set and modified with the same syntax as the active
+translator (just leave away the <code>-a</code>, so everything said above is
+true for passive translators, too. However, there is a difference: passive
+translators are not yet started.</p>
+<p>
+This makes sense, because this is what you usually want. You don't want the
+partition mounted unless you really access files on this partition. You
+don't want to bring up the network unless there is some traffic and so
+on.</p>
+<p>
+Instead, the first time the passive translator is accessed, it is
+automatically read out of the inode and an active translator is started on
+top of it using the command line that was stored in the inode. This is
+similar to the Linux automounter functionality. However, it does not come as
+an additional bonus that you have to set up manually, but an integral part of
+the system. So, setting passive translators defers starting the translator
+task until you really need it. By the way, if the active translator dies for
+some reason, the next time the inode is accessed the translator is
+restarted.</p>
+<p>
+There is a further difference: active translators can die or get lost. As
+soon as the active translator process is killed (for example, because you
+reboot the machine) it is lost forever. Passive translators are not transient
+and stay in the inode during reboots until you modify them with the
+<code>settrans</code> program or delete the inodes they are attached to.
+This means, you don't need to maintain a configuration file with your mount
+points.</p>
+<p>
+One last point: Even if you have set a passive translator, you can still
+set a different active translator. Only if the translator is automatically
+started because there was no active translator the time the inode was
+accessed the passive translator is considered.</p>
+<h3><a href="#TOC_manage" name="manage">Managing Translators</a></h3>
+<p>
+As mentioned above, you can use
+<code>settrans</code></a>
+to set and alter passive and active translators. There are a lot of options
+to change the behaviour of <code>settrans</code> in case something goes
+wrong, and to conditionalize its action. Here are some common usages:</p>
+<ul><li><code>settrans -c /mnt /hurd/ext2fs /dev/hd2s5</code> mounts a
+partition, the translator will stay across reboots.</li>
+<li><code>settrans -a /mnt /hurd/ext2fs ~/dummy.fs</code> mounts a
+filesystem inside a data file, the translator will go away if it dies.</li>
+<li><code>settrans -fg /nfs-data</code> forces a translator to go away.</li>
+</ul>
+<p>
+You can use the <code>showtrans</code></a>
+command to see if a translator is attached to an inode. This will only show
+you the passive translator though.</p>
+<p>
+You can change the options of an active (filesystem) translator with
+<code>fsysopts</code> without actually restarting it. This is very
+convenient. For example, you can do what is called "remounting a
+partition read-only" under Linux simply by running <code>fsysopts
+/mntpoint --readonly</code>. The running active translator
+will change its behaviour according to your request if possible.
+<code>fsysopts /mntpoint</code> without a parameter shows you the current
+settings.</p>
+<h4>Examples</h4>
+<p>
+I recommend that you start by reading the <code>/bin/mount</code> command,
+it is only a small script. Because setting filesystem translators is
+similar to mounting partitions, you can easily grasp the concept this way.
+Make a file system image with <code>dd if=/dev/zero of=dummy.fs bs=1024k
+count=8; mke2fs dummy.fs</code> and "mount" it with <code>settrans -c dummy
+/hurd/ext2fs `pwd`/dummy.fs</code>. Note that the translator is not started
+yet, no new <code>ext2fs</code> process is running (verify with <code>ps
+Aux</code>). Check that everything is correct using <code>showtrans</code></p>
+<p>
+Now type <code>ls dummy</code> and you will notice the short delay that
+occurs while the translator is started. After that, there will be no more
+delays accessing dummy. Under Linux, one would say that you automounted a
+loop file system. Check with <code>ps Aux</code> that there is an <code>ext2fs
+dummy</code> process up and running now. Now put some files into the new
+directory. Try to make the filesystem read-only with <code>fsysopts</code>.
+Note how further write attempts fail now. Try to kill the active translator
+with <code>settrans -g</code>.</p>
+<p>
+You should have some understanding of what is going on now. Now remember
+that this was only <em>one</em> special server, the Hurd ext2fs server.
+There are many more server in the <code>hurd</code> directory. Some of them
+are for filesystems. Some are needed for file system features like links.
+Some are needed for device files. Some are useful for networking. Imagine
+"mounting" an FTP Server with <code>settrans</code> and downloading files
+simply with the standard <code>cp</code> command. Or editing your web sites
+with <code>emacs /ftp/homepage.my.server.org/index.html</code>!</p>
diff --git a/hurd/faq.mdwn b/hurd/faq.mdwn
new file mode 100644
index 00000000..413aaf3f
--- /dev/null
+++ b/hurd/faq.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2008, 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="GNU Hurd FAQ"]]
+
+See also other [[/FAQ]].
+
+[[!inline
+pages="hurd/faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="hurd/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/faq/how_about_drivers.mdwn b/hurd/faq/how_about_drivers.mdwn
new file mode 100644
index 00000000..0556fd28
--- /dev/null
+++ b/hurd/faq/how_about_drivers.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="What drivers does GNU/Hurd have?"]]
+
+Currently, Mach integrates drivers from Linux 2.0 through some glue code. As
+it's very old, that limits hardware support a lot, of course. We are however
+working on using the DDE toolkit to run linux drivers in userland processes,
+which provides both long-term support for new hardware and safety against driver
+bugs.
diff --git a/hurd/faq/how_to_switch_microkernels.mdwn b/hurd/faq/how_to_switch_microkernels.mdwn
new file mode 100644
index 00000000..468fab54
--- /dev/null
+++ b/hurd/faq/how_to_switch_microkernels.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]]."]]"""]]
+
+[[!meta title="How difficult would it be to switch to another microkernel?"]]
+
+One thing for sure is to rewrite the mach and sysdeps/mach parts of glibc and
+libpthread. Quite a few tools also assume a Mach kernel and would have to be
+rewritten.
diff --git a/hurd/faq/old-stuff.mdwn b/hurd/faq/old-stuff.mdwn
new file mode 100644
index 00000000..df2058c0
--- /dev/null
+++ b/hurd/faq/old-stuff.mdwn
@@ -0,0 +1,45 @@
+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]].
+
+* **_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`, 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.
+
+* **_Where are the virtual consoles I use when running Linux?_**
+ * You need to [use screen](http://www.gnu.org/software/hurd/faq.en.html#q4-6) instead, also available when running GNU/Linux.
+ * The [new console](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html) by Marcus Brinkmann could also be used. It supports the Alt-Fn keys for switching like in Linux. NOTE: that message has an error in the configuration steps, it says `/dev/vts` when it means `/dev/vcs`. A more up-to-date howto is [[console]].
+
+* **_What is a translator?_**
+ * The official FAQ [answers](http://www.gnu.org/software/hurd/faq.en.html#q4-2) this question by a reference to [hurd-doc-translator](http://www.debian.org/ports/hurd/hurd-doc-translator).
+
+* **_Where's the sauce?_**
+ * It's on [Savannah](http://savannah.gnu.org). See also the [GNU Development Resources](http://www.gnu.org/software/devel.html), for more information.
+
+* **_What is this "libio" stuff?_**
+ * There was an ABI change for glibc0.3. It's recommended you reinstall your GNU/Hurd system if you run a system installed before the summer of 2002. This is a similar cause for the various Linux distributions who changed from libc5 to libc6 or glibc2 around 1998.
+
+* **_What is GNU Mach vs. oskit-mach?_**
+ * 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 (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 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 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:
+ * It works with VMWare Workstation 4.0.5 build-6030.
+ * Running Debian GNU/HURD in VMWare works for me -- [[Main/MichaelAblassmeier]] - 03 Mar 2004
diff --git a/hurd/faq/old_faq.txt b/hurd/faq/old_faq.txt
new file mode 100644
index 00000000..617d7661
--- /dev/null
+++ b/hurd/faq/old_faq.txt
@@ -0,0 +1,562 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
+
+ Frequently Asked Questions about the GNU Hurd
+
+This document attempts to answer the questions that most often plague
+users when they are talking about, installing, using, compiling and
+developing the GNU Hurd as well as its binary distribution Debian
+GNU/Hurd. Be sure to read this before asking for help.
+
+The GNU Hurd is under active development and a stable version has not
+yet been released. Be aware that: there is a lot of work yet to be
+completed; you will find bugs; your system will crash. That said, there
+is a lot of room for contributions at all levels: development of the
+Hurd and Mach proper, porting applications, writing documentation and,
+most importantly, user feedback.
+
+Should you have a question that is not answered by this document and you
+feel that it should be, submit it and, if possible, with an answer.
+
+Each section is copyright its respective author(s). Permission is
+granted to copy, distribute and/or modify this document under the terms
+of the GNU Free Documentation License, Version 1.1 or any later version
+published by the Free Software Foundation; with no Invariant Sections,
+with no Front-Cover Texts and with no Back-Cover Texts. A copy of the
+license is included in the file COPYRIGHT.
+
+ Neal H Walfield
+ neal@cs.uml.edu
+
+? Installation
+
+?? What partition type should I use for my GNU/Hurd partitions?
+
+{MB} You should use an ext2 filesystem. Alternatively, you may use BSD
+style ufs. The partition type number for ext2fs is 0x83 (this is the
+same as in Linux), not 0x63 (GNU HURD). Thomas explains why 0x63 is the
+wrong choice:
+
+ One day we may have a new filesystem format, which would
+ probably be called the GNU Hurd filesystem format, and might
+ well use that partition code.
+
+Regardless, as Roland points out, it is always an error to use that code
+for an ext2fs partition,
+
+?? How do I name partitions?
+
+{MB,NHW} I knew you would ask this. If I had to reduce this FAQ to only
+one question, I'd choose this one. It is pretty easy, but you have to
+know that there are actually several incompatibly naming convention.
+
+First, the Hurd: if the disk is question is a SCSI disk, you must know
+the SCSI device number; if it is an IDE disk, you must know what
+controller the disk is on and whether it is a master or a slave. The
+Hurd uses the BSD naming convention which, is to say, disks are ordered
+according to their physical location, numerically, starting from zero.
+This naming scheme is quite similar to that found in Linux. There, the
+master disk on the primary controller is designated as `hda' and the
+slave as `hdb'. On the secondary controller, the master and the slave
+are designated by `hdc' and `hdd' respectively. Under the Hurd, `hda'
+would become `hd0', `hdb' would be referred to as `hd1', etc.
+
+In the Hurd, like in BSD, partitions are called `slices' and are
+numbered starting from one. Thus, to name a particular partition, we
+take the disk name, append a `s' and the partition number. Again, this
+is similar to Linux except, there is no `s'. For instance, `hda1' would
+become `hd0s1'.
+
+GRUB, the boot loader, uses a completely different nomenclature: it
+probes the BIOS and appends each disk in turn to an array. Both disks
+and partitions are enumerated using zero based arrays. The format is:
+`hd (<disk>, <partition>)'. Thus, `hd (0, 1)' refers to the second
+partition on the first drive detected by the BIOS. As Grub now has tab
+completion, there is not a lot of guess work.
+
+?? Can I use partitions larger than 2GB?
+
+{MB} No, not currently. The filesystem servers need to be changed to
+not map the whole store into memory, which is not too difficult. For
+large files, some interfaces need to be changed, which is a bit harder
+but still doable.
+
+?? How much swap do I need?
+
+{NHW} Generally, a lot; once you run out, Mach panics. I have at least
+128MB of ram and 256MB of swap on all of machines running GNU/Hurd.
+
+?? Can I share swap space between GNU/Linux and GNU/Hurd?
+
+{NHW} Yes. The default pager recognises and respects Linux swap
+partitions. It will also swap to a raw partition, i.e. anything that it
+does not recognize as Linux swap. Therefore: BE CAREFUL.
+
+?? Why do I get ``Operation not permitted error''?
+
+{MB} You forgot to set the file system owner of the GNU/Hurd partition to
+``hurd''. The Hurd uses additional information in the inodes to set
+translators. To make this work, the partition must be marked as ``owned
+by the Hurd''. This is normally done by passing the `-o hurd' option to
+`mke2fs' when creating ext2 system from other operating systems
+(filesystems created in GNU/Hurd automatically enable this option).
+If you failed to do this, you can still use the `e2os' script.
+
+?? After `native-install' is finished, I had to write tthhiiss
+ wwaayy. In particular, I had to type `rreebboooott' to reboot.
+
+{MB} Funny, isn't it? In addition to the rescue `term' server in
+`/tmp/console', another `term' server got started and is clobbing the
+keyboard input. After a reboot this problem vanishes as only one `term'
+server will remain. If `tar' would support translator, we would not
+have this problem... Even if you don't experience this problem right
+after the installation, reboot immediately so you don't hit this bug by
+accident.
+
+? Setup
+
+?? How do I add a swap partition?
+
+{MB} A swap partition is also called a paging file. Usually, it is
+sufficient to add the swap partition to `/etc/fstab', just as you would
+under Linux. You can swap to a Linux swap partition and the Hurd will
+honour the Linux swap signature (both versions). The Hurd will just as
+happily swap to any other raw disk space and overwrite anything it
+finds. So, be careful!
+
+If you want to swap to a file or make sure that it checks the Linux swap
+signature before, you need to edit `/boot/servers.boot'. The syntax is
+the partition device file name plus, optionally, the swap file inside an
+ext2fs partition, followed by a space and then one of:
+`$(add-raw-paging-file)', `$(add-linux-paging-file)',
+`$(add-paging-file)'. The first works with any partition or file and
+does not honour any swap signature or other data. The second has a
+safety check and only uses the file if a Linux swap signature is found.
+The third looks for a swap signature first and falls back to raw paging
+if it failed to find one. This is also the default for entries in
+`/etc/fstab'.
+
+?? How do I set up a network?
+ How do I set up a loopback device?
+
+{MB} In the former case, be sure that GNU Mach detected your network
+card. Either way, you need to setup `pfinet'. Documentation can be
+found at:
+
+ http://www.debian.org/ports/hurd/hurd-doc-server#pfinet
+
+Don't forget to fill in `/etc/resolv.conf', `/etc/hosts', etc.
+
+Of course, you only need to do this if the installation routine didn't
+do it for you.
+
+?? Can I use the GNU/Linux version of `e2fsck' on a GNU/Hurd partition?
+
+{MB} Yes, at least since `e2fsprogs-1.05'. Check this with `e2fsck -V'
+first.
+
+{NHW} Do not try to defrag your partition as this utility does not know
+about translators.
+
+?? Why are pipes not working?
+
+{MB} `settrans -fgc /servers/socket/1 /hurd/pflocal' should help.
+
+? Usage
+
+?? Where is the documentation?
+
+{NHW,MM} There are neither man pages nor info nodes for the Hurd
+translators and commands. Documentation lives inside of the binaries
+and can be found by passing the `--help' option to a given command.
+For instance:
+
+ # /hurd/ext2fs --help
+
+will tell you what types of options the ext2fs translator accepts.
+
+The GNU/Hurd User's Guide and the GNU Hurd Reference Manual both
+provide some help about the usage of and concepts behind the GNU Hurd.
+You can find them, among others, at:
+
+ http://www.gnu.org/software/hurd/docs.html
+
+?? What is a translator?
+
+{MB} There is a text about translators available at:
+
+ http://www.debian.org/ports/hurd/hurd-doc-translator
+
+Read this and ask further questions on the mailing lists.
+
+?? What is the login shell?
+
+{MB} The Hurd has the concept of a not-logged in user. This user has
+neither user ids nor groups ids. This stems from the fact that the Hurd
+supports uid and gid sets and one possibility is, of course, the empty
+set. Rather than deny access in this case, filesystems in the Hurd offer a
+fourth permission triplet (i.e. rwx) which is used to determine the
+privileges for users with no credentials. This, however, needs to be
+enabled on a file by file basis. By default, the `other' permission
+triplet is used.
+
+The Hurd login shell is a shell running with neither uids nor gids. To
+restrict access to your files, either enable and change the fourth
+permission triplet or change the login shell of the `login' user in the
+password file to `/bin/loginpr' which implements the standard login
+prompt.
+
+?? How do I use non-US keyboard bindings?
+
+{NHW,FH} Take a look at:
+
+ http://www.xs4all.nl/~mgerards/xkb8.tar.gz
+
+If you want a Debian package, you can add to your
+'etc/apt/sources.list'
+
+ deb http://debian.duckcorp.org/unstable/binary-hurd-i386/ ./
+
+and then run
+
+ apt-get install console-driver-xkb.
+
+?? How do I enable color on the console?
+
+{NHW} If you are using the GNU Mach microkernel, you can set your
+terminal to `mach-color'. For instance:
+
+ # export TERM=mach-color
+
+?? How can I enable virtual consoles?
+
+{AMS} This can be done by running the following command:
+
+ console -d vga -d pc_kbd -d generic_speaker /dev/vcs
+
+If something went wrong, or if you just wish to exit the Hurd console
+then hitting C-A-<backspace> will exit it.
+
+?? What is the status of X?
+
+{MB} It works! The packages are available at any Debian ftp mirror.
+XFree86 4.0.2 is available, as are some of the v3 servers. Instructions
+on how to use the packages are in the mailing list archive (link follow
+later).
+
+?? Why does X not work?
+
+{MB} Try `export LD_LIBRARY_PATH=/usr/X11R6/lib'. This is a linker
+issue. GNU/Hurd expects that `RPATH' is used, however, Debian takes
+certain measures to avoid this. Note that this does not cut it for suid
+binaries because of security implications. We expect to rectify this
+by using `RUNPATH', which is specified in the new ELF standard.
+
+?? What are these strange pids `2' and `3'?
+
+{MB} Two is the kernel, three is the default pager and four is the root
+filesystem.
+
+?? Why does `ps aux' give me strange output?
+
+{MB,MM} Try `ps Aux'. Indeed, under GNU/Hurd, `ps aux' doesn't list
+all processes: it omits the session and group leaders, and the
+processes without parent.
+
+?? I have a hung process that I want to kill, however, `ps' is now
+ hanging too.
+
+{MB} Interrupt it and pass it the `-M' option.
+
+{NHW} By default, `ps' gathers information from both the proc server and
+the processes themselves (via their message port). If a process it
+hung, it will not be able respond to its message port and thus, ps will
+wait forever. The `-M' option instructs ps to not gather information
+that would require use of the message port.
+
+?? Where are ...
+
+{MB} `fdisk' and `dmesg' are not yet ported.
+
+Instead of `free', use `vmstat' and `vminfo'.
+
+For kernel messages, read `/dev/klog' directly. Note, once you read
+this, it is gone forever.
+
+
+?? Is there a `/proc' filesystem?
+
+{MB} No. Maybe there will be an emulation filesystem someday for
+programs that rely it. If you are wondering about the empty `/proc'
+directory, this is a relict from a Debian GNU/Linux package
+(specifically, `base-files').
+
+You can probe for existing hardware devices with the devprobe utility.
+
+?? Why does the command `df' not work?
+
+{NHW} It does, you just have to tell it what filesystem to query. E.g.
+
+ # df /
+
+?? Why are my translators dying?
+
+{NHW} Try passing the `-ap' flag to settrans. By default, settrans only
+sets a passive translator, therefore, no output will show up on your
+terminal. Using `-ap', however, sets both the active and the passive
+translator which, means that the translator starts immediately and its
+stderr is connected to you terminal.
+
+Additionally, the biggest problem is passing relative paths to passive
+translators. You cannot predict what the current working directory of a
+translator will be when it is setup as a passive translator.
+
+?? Why can I `read' a directory?
+
+{MB} It is important to understand that there is nothing special about a
+directory under the Hurd, it is just another file. This fits in with
+the translator concept where a translator can appear as a directory but
+provide also as a file.
+
+? Trouble shooting
+
+?? When the APM support in the BIOS spins down my disk drives, the
+ Hurd is unable to wake up. What's wrong?
+
+{MB} APM is not supported in the current version of GNU Mach, sorry.
+Please disable APM in your BIOS setup.
+
+?? What are these messages referring to `default pager', `paging',
+ and `pager request'?
+
+{MB} The default pager handles virtual memory allocation. If it can't
+allocate a new memory page because you are out of memory, some terrible
+things may happen. Whenever you get errors referring to any of these,
+you either need more memory (make sure you have swap) or you have found
+a memory leak.
+
+?? What is a gratuitous error?
+
+{MB} This comes from `strerror(EGRATUITOUS)'. If you check glibc's
+documentation, it will say that this error code has no purpose. This,
+however, is not quite true. You only get this when something terrible
+happens. Thomas explains:
+
+ More precisely `EGRATUITOUS' officially means that some server
+ has responded in an impossible or protocol-violating fashion.
+ There are some cases in the Hurd where `EGRATUITOUS' is returned
+ and probably something else should be chosen instead.
+
+If you can reproduce this error message, please report it.
+
+?? What does ``computer bought the farm'' mean ?
+
+{FH} This message is the text that corresponds to the errno code
+`EIEIO'. Roland McGrath explains:
+
+ That message is not output by any particular servers at
+ particular times; rather it is the perror text for the errno
+ code EIEIO, which is returned by various RPCs and functions
+ for a variety of "hopeless" error conditions.
+
+
+?? What does ``/dev/hd0s1: MOUNTED READ-ONLY; MUST USE `fsysopts
+ --writable''' mean?
+
+{NHW} In this case, /dev/hd0s1 was not unmounted cleanly. The Hurd
+will, on boot up, run ``fsck -p'' on any partitions that it finds in
+/etc/fstab, so, you may want to consider adding this partition to that
+file. If you are sure that the partition is fine, you can run:
+
+ # fsysopts /home --writable
+
+to ask the translator sitting on /home to change from read-only to
+read/write mode. Note that the command is being sent to the filesystem
+and not the store (e.g. /dev/hd0s1).
+
+?? When GNU/Hurd crashes, GNU Mach automatically reboots. Is
+ there anyway I can make it pause so I can write down the error?
+
+{MB} Pass the `-H' option to init (add it to the boot command line), and
+`init' will tell Mach to enter the kernel debugger instead to rebooting
+it. At the debugger prompt (`db>'), you can type `reboot' any time to
+reboot the system.
+
+? Porting
+
+?? What programs have been ported?
+
+{NHW} A lot, take a look at the Debian archive. Many programs, however,
+do not necessarily need to be ported; they have just never been
+compiled.
+
+?? Is porting easy?
+
+{NHW} Porting applications to GNU/Hurd is relatively easy assuming the
+application is POSIX compliant as GNU/Hurd does its best to be a
+conforming operating system.
+
+The most common error made by programmers is assuming the MAXPATHLEN and
+PATH_MAX are defined. On most operating systems this is set to a few
+thousand, however, on GNU/Hurd, there is no maximum and thus, this is
+not set. The correct thing to do is to submit a patch to the upstream
+author that allocates memory dynamically.
+
+?? How can I help?
+
+{NHW} A effort to compile all of the Debian packages is underway by Jeff
+Bailey. Take a look at:
+
+ http://people.debian.org/~jbailey/oasis/group/Debian/index.html
+
+to see what has been done and how you can help.
+
+? Compiling
+
+?? Where can I get the source?
+
+{AMS} Instructions on how to download the CVS tree from Savanah are
+avaiable at https://savannah.gnu.org/cvs/?group=hurd
+
+{NHW} To get the source to the latest debian package, look on any
+debian mirror.
+
+?? Can I cross compile?
+
+{NHW} Yes. If you are running Debian GNU/Linux on IA32, this is quite
+easy as there is a cheap cross compiler available; all that is required
+is installing the gcc-i386-gnu and mig-i386-gnu Debian packages. When
+running configure, you will have to specify tools directly:
+
+ # MIG=/usr/bin/i386-gnu-mig CC=/usr/bin/i386-gnu-gcc \
+ ../src/hurd/configure ...
+
+If you are running another distribution, you will have to do this the
+long way. You can find instructions at the Cross Compiling HOW-TO
+available at:
+
+ http://hurddocs.sourceforge.net/howto/cross.html
+
+Farid Hajji <farid.hajji@ob.kamp.net> also talks about his experiences
+at:
+
+ http://lists.debian.org/debian-hurd-0012/msg00062.html
+
+?? Any general tips?
+
+{NHW} Yeah, building in the source tree is untested. Try:
+
+ # ../src/hurd/configure ...
+
+? Development
+
+?? What is OSKit-Mach?
+
+{NHW,FH} There are two versions of GNU Mac that are in use: GNU Mach
+1.x and GNU Mach 2.x, formerly known as OSKit-Mach. The former uses
+the drivers from Linux 2.0.x while the latter uses the University of
+Utah's OSKit library for drivers. You can find out more about the
+OSKit library at:
+
+ http://www.cs.utah.edu/flux/oskit
+
+GNU Mach 2.x is usable, but some things are still missing or not
+working, like the serial port and scsi drivers. This is why GNU Mach
+2.0 hasn't released yet and the two versions coexist.
+
+?? Where is the documentation?
+
+{NHW} There were several books written on the Mach kernel. The
+information that they contain is still mostly pertinent and should be
+considered required reading for potential hackers. They can be found
+at:
+
+ http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html
+
+The documentation for the Hurd is quite inadequate. The starting of a
+book, ``The GNU Hurd'' is in the doc directory in the Hurd source. You
+can read this using:
+
+ # info hurd
+
+The authoritative place is, of course, the source code; that does not,
+however, mean that we would not welcome more documentation. To get
+started, take a look at <hurd>/doc/navigating.
+
+?? How do I make sure that my code is POSIX compliant?
+
+{NHW} Unfortunately, you have to buy the POSIX standard from IEEE. The
+Single Unix Specification version 2, a superset of POSIX, is available
+for free on the Internet. Try:
+
+ http://www.unix-systems.org/online.html
+
+?? Who do I submit patches to?
+
+{NHW} If they are against the Hurd, Mach or MiG, send a patch to the
+bug-hurd mailing list.
+
+If they are against other packages, the Debian BTS is a good place. In
+this case, be sure to advise the debian-hurd mailing list of the bug.
+
+?? In what format should patches for the Hurd and GNU Mach be?
+
+{MB} All patches should be sent in unified context diff format (option
+`-u' to GNU diff). It is helpful for us if you also use the `-p'
+option which includes information about the function changed by a
+patch. Changes that are similar can be grouped together in one file,
+but unrelated changes should be sent in seperate files. The patches
+can be included in the message or as a MIME attachement. They should
+not be compressed and/or archived unless they are very large, and if
+they are very large it is probably better to store them on-line at
+some place and only sent an URL.
+
+Write a ChangeLog entry for each change, following the format of the
+existing files. Here is an example:
+
+ 2000-12-02 Marcus Brinkmann <marcus@gnu.org>
+
+ * ops.c (op_readlink): Before returning, check if the buffer
+ pointed to by transp is ours. If not, munmap it.
+ (op_read): Likewise for bp.
+ (op_readdir): Don't alloca a buffer here. Instead initialize
+ BUF and BUFSIZE to 0 and let the server (eh, MiG) do it.
+ munmap BUF before returning.
+
+The file name and the name of the function changed should always be
+spelled out completely, and not abbreviated or otherwise mangled (like
+foo.{c,h}), because that would make searching for all changes to a
+file or function impossible. Local variable names are all
+capitalized. There are two spaces between sentences. You can use
+``C-x 4 a'' in Emacs to add a new ChangeLog entry. If you do that
+with the mark being in a function, Emacs will automatically fill in
+the file and function name for you.
+
+Do not send in a patch for the ChangeLog file. Rather include the
+ChangeLog entries in the message that contains the patch. Patches for
+ChangeLog files often conflict.
+
+If you have the original source tree in the directory `hurd-orig', and
+the modified source tree in the directory `hurd', the following
+command will produce a good patch (please make sure there are no extra
+files like backups in the modified tree, or leave away the option
+`-N'). You will need to collect the ChangeLog entries seperately.
+
+ # diff -x ChangeLog -Nurp hurd-orig hurd
+
+
+Answers were given by (in chronological order):
+* {NHW} Neal H Walfield <neal@cs.uml.edu>
+* {MB} Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de>
+* {AMS} Alfred M. Szmidt <ams@gnu.org>
+* {OK} Ognyan Kulev <ogi@fmi.uni-sofia.bg>
+* {FH} Frédéric Henry <neryel@reveries.info>
+* {MM} Manuel Menal <mmenal@hurdfr.org>
diff --git a/hurd/faq/old_hurd_faq.txt b/hurd/faq/old_hurd_faq.txt
new file mode 100644
index 00000000..c7e0ffe8
--- /dev/null
+++ b/hurd/faq/old_hurd_faq.txt
@@ -0,0 +1,289 @@
+The Unofficial (and no longer maintained) GNU&nbsp;Hurd FAQ, Version 0.13
+
+Contributions by:
+
+Michael I. Bushnell <mib@gnu.org>
+Len Tower <tower@gnu.org>
+Trent Fisher <trent@gnurd.uu.pdx.edu>
+jlr@usoft.spb.su
+Remy Card <Remy.Card@masi.ibp.fr>
+Louis-Dominique Dubeau <hallu@info.polymtl.ca>
+
+Original Document by: Derek Upham <upham@cs.ubc.ca>
+
+
+==============================
+
+Contents:
+
+Q0. Where can I get the Unofficial GNU Hurd FAQ?
+Q2. Where can I get a copy?
+Q3. Why bother writing a new OS when we have Linux and 386/BSD?
+Q4. What's all this about Mach 3.0 (and Mach 4.0)?
+Q5. Where can I find more information?
+Q6. What's a proper machine?
+Q7. What sort of machines will run Hurd in the future?
+Q8. What is the current development status?
+Q9. What sort of system would we have if the Hurd was bootable today?
+
+==============================
+
+Q0. Where can I get the Unofficial GNU Hurd FAQ?
+
+The Unofficial Hurd FAQ (what you are reading now) is occasionally
+posted to the USENET newsgroup, gnu.misc.discuss. It is also
+available from
+
+ http://www.enci.ucalgary.ca/~gord/hurd/hurd-faq.txt (Broken Link ?)
+
+If you don't have WWW access, you may send mail to me, Gordon
+Matzigkeit <gord@enci.ucalgary.ca> with a subject line that reads:
+
+ Subject: send hurd-faq
+
+You should receive a PGP-signed copy of the current version of this
+document in a matter of minutes.
+
+
+Q2. Where can I get a copy?
+
+To put it simply, you can't. It is still under development (by
+Michael Bushnell, Roland McGrath and Miles Bader). It is almost, but
+not quite, at the point where you can do real work on it. Keep your
+fingers crossed.
+
+Some people have actually bootstrapped it, but the work is not easy,
+and the current snapshot won't work until a new multiserver boot
+mechanism is made.
+
+If you *really* want to try it, beware that it is still pre-alpha
+code, and that it will likely crash on you. See Trent Fisher's Hurd
+pages (under question 5) for the latest information.
+
+
+Q3. Why bother writing a new OS when we have Linux and 386/BSD?
+
+For one thing, Linux and BSD don't scale well. Hardware designers are
+shifting more and more toward multiprocessor machines for performance,
+and standard Unix kernels do not provide much multiprocessor support.
+The Hurd, on the other hand, runs on top of the Mach 3.0 micro-kernel
+[[1]] from CMU. Mach was designed precisely for multiprocessing
+machines, so its portability should carry over nicely to the Hurd.
+
+In addition, the Hurd will be considerably more flexible and robust
+than generic Unix. Wherever possible, Unix kernel features have been
+moved into unprivileged space. Once there, anyone who desires can
+develop custom replacements for them. Users will be able to write and
+use their own file systems, their own `exec' servers, or their own
+network protocols if they like, all without disturbing other users.
+
+The Linux kernel has now been modified to allow user-level file
+systems, so there is proof that people will actually use features such
+as these. It will be much easier to do under the Hurd, however,
+because the Hurd is almost entirely run in user space and because the
+various servers are designed for this sort of modification.
+
+
+Q4. What's all this about Mach 3.0 (and Mach 4.0)?
+
+As mentioned above, Mach is a micro-kernel, written at Carnegie Mellon
+University. A more descriptive term might be a greatest-common-factor
+kernel, since it provides facilities common to all ``real'' operating
+systems, such as memory management, interprocess communication,
+processes, and a bunch of other stuff. Unfortunately, the system
+calls used to access these facilities are only vaguely related to the
+familiar and cherished Unix system calls. There are no "fork",
+"wait", or "sleep" system-calls, no SIGHUPs, nothing like that. All
+this makes it rather difficult to, say, port GNU Emacs to a Mach box.
+
+The trick is, of course, to write an emulation library. Unix programs
+can then use (what they think are) POSIX system calls and facilities
+while they are really using Mach system calls and facilities.
+
+The simplest way of going about this is to take an ordinary Unix
+kernel, open it up, and rip out all the machine-specific guts; any
+time the Unix kernel talks to the machine, replace the code with calls
+to the Mach micro-kernel. Run this fake kernel on a Mach machine and
+you end up with something that looks and acts just like Unix (even to
+GNU Emacs). Note that the Unix kernel we have implemented is just one
+Really Big Mach program (called a single-server).
+
+The Hurd, on the other hand, breaks the giant Unix kernel down into
+various Mach programs running as daemons. Working in concert with
+facilities placed in the C library, these daemons provide all of the
+POSIX system-calls and features; from the outside they look just like
+a standard Unix kernel. This means that, for practical purposes,
+anything that you can port to Linux will also port to the Hurd.
+
+Of course, if a user wishes to run his own daemons, he can do that as
+well....
+
+Mach 4.0 is an enhanced version of Mach 3.0, put out by the people at
+the University of Utah. They are working on another free operating
+system, and part of it includes an enhanced, more flexible version of
+Mach. The Hurd has moved to Mach 4.0, which is good, because it is a
+lot easier to build than 3.0 was.
+
+You can find more information on Mach by browsing the Hurd pages given
+in the next answer, or by looking at the Project Mach and Flux
+homepages at:
+
+Carnegie Mellon University (for Mach versions before 4.0):
+
+ http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html
+
+the University of Utah (for Mach 4.0):
+
+ http://www.cs.utah.edu/projects/flux/mach4/html/
+
+
+Q5. Where can I find more information?
+
+The June 1995 GNU's Bulletin contains the following official
+information:
+
+ The GNU&nbsp;Hurd now runs programs native. We have implemented both
+ shared libraries using ELF, & the popular `ext2' file system used
+ by Linux. It can run GCC, `make', Emacs, & most other GNU
+ utilities. Progress is being made so rapidly that by the time you
+ read this it probably does much more. It is right on the verge of
+ being self-hosting (able to run on its own well enough to compile
+ its own source code, & be used for its own development). We have
+ much better device supportm [sic] & some new utilities, including a
+ fancy `ps' & `settrans'. For a complete system we still have much
+ more work to do, but we will make an alpha release as soon as the
+ network software is finished & shared libraries have been well
+ tested. We have a mailing list to announce progress; to be added
+ to it, ask `hurd-announce-request@gnu.org'.
+
+The Portland State University CS department (via Trent Fisher)
+maintains a WWW server with various Hurd documents, including Michael
+Bushnell's Hurd paper, all the collected GNU's Bulletins, and various
+announcements posted to "gnu.misc.discuss". The top-level GNU page is
+
+ http://www.cs.pdx.edu/~trent/gnu/gnu.html
+
+and the Hurd page is
+
+ http://www.cs.pdx.edu/~trent/gnu/hurd/hurd.html
+
+People in Europe might want to try the GNU WWW server for DESY
+Germany, first:
+
+ http://info.desy.de/gnu/www
+
+This site lacks culled, Hurd-specific information at the moment, but
+it does have the last two GNU's Bulletins plus lots of general
+information.
+
+There is a snapshot of the Hurd development tree on
+"alpha.gnu.ai.mit.edu" in the "/gnu" directory. It is updated as
+significant changes are made, and not guaranteed to run.
+
+You can subscribe to the Hurd announcement list by sending a request
+to "hurd-announce-request@gnu.org". This is a moderated list
+for distributing Hurd info to ``all and sundry'', and anyone can join.
+In addition, there is a private (invitation-only) list for developers
+to coordinate their efforts. It's not even worth thinking about
+unless you (a) have a lot of free time on your hands, (b) know Unix
+internals and Mach very well, and (c) have a proper machine.
+
+
+Q6. What's a proper machine?
+
+A ``proper machine'', at the moment, means an x86 box running Mach 3.0
+(or 4.0), with FreeBSD 2.x, NetBSD 1.x, or Linux.
+
+A single-server OS is no longer required for development because by
+the time the Hurd bootstrap mechanism is finished, the Hurd will
+probably be self-hosting.
+
+Linux, FreeBSD, or NetBSD will only be required to splat the Hurd
+binaries onto a partition of some sort, and to provide a way of
+transferring files to the Hurd until the networking code is ready.
+
+
+Q7. What sort of machines will run Hurd in the future?
+
+The first thing a prospective Hurd machine needs is a Mach 3.0 port.
+According to the most recent "comp.os.mach" FAQ (which hasn't been
+updated since February 1994), the following chips have redistributable
+Mach micro-kernels and device drivers:
+
+ Intel 80x86 (ISA and PS/2 buses)
+ Motorola 68000 (Sun 3)
+ Motorola 88000 (Omron Luna)
+ DEC Vax
+ DEC Pmax (DECstation 3100)
+ DEC Alpha
+ MIPS R4000 (DECstation 5000 et al.)
+ IBM RS/6000
+ Apple Macintosh
+
+IBM is planning to run WorkplaceOS (the OS/2 successor) over Mach 3.0
+on the PowerPC chip (closely related to the RS/6000), so the PowerPC
+will likely be added to this list soon. The University of Utah has
+ported Mach 4.0 to the HP700, but it is not yet stable.
+
+Sun Sparc machines have a redistributable Mach microkernel, but the
+device drivers require a SunOS 4.1.1 source license.
+
+In addition, any prospective Hurd machine needs a port of the GNU C
+library. Version 1.07.4 of the library can handle the following
+chips:
+
+ Intel 80x86 (BSD, Dynix, Hurd, SCO, SysV)
+ Motorola 68000 (HP BSD, NEWS, Sun 4)
+ MIPS R4000 (Ultrix)
+ Sun Sparc (Solaris 2, Sun 4)
+ DEC Alpha (OSF/1, mostly finished)
+
+So if the next Hurd snapshot is self-hosting, we will be able to run
+it (in theory) on Intel 80x86s, Motorola 68000s, MIPS R4000s and DEC
+Alphas.
+
+People who can port the Mach micro-kernel to new architectures are
+encouraged to do so. People who can port the GNU C library to new
+chips (a much larger group) are also encouraged to do so. You can
+help out here without knowing anything about Mach or having any
+special machine. Note that once the GNU C library exists for a new
+chip, for _any_ OS, making a Hurd port later is simple (and making
+ports to other chips becomes easier as well---the effects are
+cumulative).
+
+By current indications, the other hardware requirements (RAM, disk
+space, and the like) will be about the same as those of BSD 4.4.
+
+
+Q8. What is the current development status?
+
+Please see Trent Fisher's Hurd pages for details.
+
+
+Q9. What sort of a system would we have if the Hurd was bootable
+today?
+
+Quite likely, if you already use an end-user system like Linux,
+FreeBSD, or NetBSD, you'll be disappointed with the Hurd. It will
+take some time before the OS hackers really get to work on
+applications and major enhancements.
+
+But, rest assured, Hurd development should proceed very rapidly.
+
+Of course, if you think you can help, or you just enjoy neat stuff,
+then you'll probably like the Hurd. When you actually understand a
+fraction of what's going on behind the scenes, it's very impressive.
+
+All I'm saying is that I'm not expecting all the Windows '95 users in
+the world to switch to the Hurd right away. Wait a little while,
+maybe 5-6 years (ample time for GNUStep and Guile to be in use), and
+GNU users everywhere will be very happy that the FSF proceeded with
+the Hurd. :)
+
+
+==============================
+
+Footnotes:
+
+[[1]] Yes, I know that ``micro-kernel'' is about as apt a description
+as ``Reduced Instruction Set Chip'', but we're stuck with it.
diff --git a/hurd/faq/release.mdwn b/hurd/faq/release.mdwn
new file mode 100644
index 00000000..d80c6825
--- /dev/null
+++ b/hurd/faq/release.mdwn
@@ -0,0 +1,15 @@
+[[!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="When will the Hurd be released?"]]
+
+Next year.
+
+Save that, read about the Hurd's [[status]].
diff --git a/hurd/faq/slash_usr_symlink.mdwn b/hurd/faq/slash_usr_symlink.mdwn
new file mode 100644
index 00000000..5c47f4e1
--- /dev/null
+++ b/hurd/faq/slash_usr_symlink.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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="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.
+Today, we like to use different partitions for these two spaces. The Hurd
+throws this historical garbage away. We think that we have found a more
+flexible solution called union filesystems, which allow to create virtual
+filesystems which are the union of several other filesystems. However, support
+for union filesystems is still in early development.
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/faq/which_microkernel.mdwn b/hurd/faq/which_microkernel.mdwn
new file mode 100644
index 00000000..6180dbbb
--- /dev/null
+++ b/hurd/faq/which_microkernel.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="What happened to the L4/Coyotos/viengoos micro-kernels?"]]
+
+L4 was promising but happened to not be suitable for implementing a general-purpose operating system on top of it. See [[history/port_to_l4]].
+
+Coyotos is abandoned upstream
+
+Neal Walfield started working on a newly designed kernel called [[viengoos|microkernel/viengoos]]. Unfortunately, he currently lacks time and the projects it paused.
+
+In the meanwhile, people are thus continuing with [[microkernel/mach]].
diff --git a/hurd/gcc.mdwn b/hurd/gcc.mdwn
new file mode 100644
index 00000000..53b5e071
--- /dev/null
+++ b/hurd/gcc.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[General_information|/gcc]] about the GCC.
+
+Apart from the target-specific configuration machinery, there shouldn't be any
+major differences within GCC between, for example, the GNU/Hurd and GNU/Linux
+ports. Especially all the compiler magic is all the same.
diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn
new file mode 100644
index 00000000..bdfed833
--- /dev/null
+++ b/hurd/glibc.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+[[General_information|/glibc]] about the glibc.
+
+For information about how the glibc integrates into the system, see sections
+2.1 and 2.5 of the [[critique]].
+
+[[Hurd-specific_API]].
+
+[[Debugging_glibc|debugging/glibc]].
+
+[[Internals]].
diff --git a/hurd/glibc/hurd-specific_api.mdwn b/hurd/glibc/hurd-specific_api.mdwn
new file mode 100644
index 00000000..aeb63d91
--- /dev/null
+++ b/hurd/glibc/hurd-specific_api.mdwn
@@ -0,0 +1,177 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+[[!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`
+and `.h` files can be found in `/include/hurd` when all development files are
+installed (Debian package `hurd-dev`.) Note that `.defs` are not included in C
+programs -- they are used to produce `.h` files.
+
+<!-- TODO. Need to convert this to a proper table. --tschwinge -->
+
+<dl>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>getcwdir</b> (void);</tt></dt>
+ <p>
+ </p>
+ <dd>Get <tt>file_t</tt> port name of current working directory. See <tt>&amp;lt;hurd/fs.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/fs.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcwdir</b> (file_t);</tt></dt>
+ <dd>Set current working directory.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>getcrdir</b> (void);</tt></dt>
+ <dd>Get <tt>file_t</tt> port name of current root directory.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcrdir</b> (file_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current root directory.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_lookup</b> (const char *file, int flags, mode_t mode);</tt></dt>
+ <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&amp;lt;fcntl.h&amp;gt;</tt>). The file lookup uses the current root and working directory. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_lookup_under</b> (file_t startdir, const char *file, int flags, mode_t mode);</tt></dt>
+ <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&amp;lt;fcntl.h&amp;gt;</tt>). The file lookup uses the current root directory, but uses STARTDIR as the "working directory" for file relative names. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_path_lookup</b> (const char *file_name, const char *path, int flags, mode_t mode, char **prefixed_name);</tt></dt>
+ <dd>Lookup FILE_NAME and return the node opened with FLAGS &amp;amp; MODE (see <tt>hurd_file_name_lookup</tt> for details), but a simple file name (without any directory prefixes) will be consecutively prefixed with the pathnames in the <tt>:</tt> separated list PATH until one succeeds in a successful lookup. If none succeed, then the first error that wasn't ENOENT is returned, or ENOENT if no other errors were returned. If PREFIXED_NAME is non-NULL, then if the result is looked up directly, *PREFIXED_NAME is set to NULL, and if it is looked up using a prefix from PATH, *PREFIXED_NAME is set to malloc'd storage containing the prefixed name.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_split</b> (const char  file, char **name);</tt></dt>
+ <dd>Split FILE into a directory and a name within the directory. The directory lookup uses the current root and working directory. If successful, stores in *NAME a pointer into FILE where the name within directory begins and returns a port to the directory; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>directory_name_split</b> (const char *file, char **name);</tt></dt>
+ <p>
+ </p>
+ <dd>Split DIRECTORY into a parent directory and a name within the directory. This is the same as <tt>file_name_split</tt>, but ignores trailing slashes.</dd>
+ <p>
+ </p>
+ <dt><tt>FILE *</tt></dt>
+ <dt><tt><b>fopenport</b> (io_t port, const char *mode);</tt></dt>
+ <dd>Open a stream on a port. MODE is as for <tt>fopen</tt>. If successful, this consumes a user reference for PORT (which will be deallocated on fclose).</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>openport</b> (io_t port, int flags);</tt></dt>
+ <p>
+ </p>
+ <dd>Open a file descriptor on a port. FLAGS are as for <tt>open</tt>; flags affected by <tt>io_set_openmodes</tt> are not changed by this. If successful, this consumes a user reference for PORT (which will be deallocated on close.) See <tt>&amp;lt;hurd/io.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/io.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>task_t</tt></dt>
+ <dt><tt><b>pid2task</b> (pid_t pid);</tt></dt>
+ <p>
+ </p>
+ <dd>Return the task control port of process PID. On error, sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>pid_t</tt></dt>
+ <dt><tt><b>task2pid</b> (task_t task);</tt></dt>
+ <dd>Return the PID of the task whose control port is TASK. On error, sets <tt>errno</tt> and returns -1. </dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>geteuids</b> (int n, uid_t *uidset);</tt></dt>
+ <dd>Get the effective UID set.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>seteuids</b> (int n, const uid_t *uidset);</tt></dt>
+ <dd>Set the effective UID set.</dd>
+ <p>
+ </p>
+ <dt><tt>auth_t</tt></dt>
+ <dt><tt><b>getauth</b> (void);</tt></dt>
+ <dd>Get port name of current authentication server. See <tt>&amp;lt;hurd/auth.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/auth.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setauth</b> (auth_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current authentication server.</dd>
+ <p>
+ </p>
+ <dt><tt>process_t</tt></dt>
+ <dt><tt><b>getproc</b> (void);</tt></dt>
+ <dd>Get port name of current process server. See <tt>&amp;lt;hurd/process.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/process.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setproc</b> (process_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current process server.</dd>
+ <p>
+ </p>
+ <dt><tt>mach_port_t</tt></dt>
+ <dt><tt><b>getcttyid</b> (void);</tt></dt>
+ <dd>Get the CTTY port.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcttyid</b> (mach_port_t);</tt></dt>
+ <dd>Set the CTTY port.</dd>
+ <p>
+ </p>
+ <dt><tt>kern_return_t</tt></dt>
+ <dt><tt><b>get_privileged_ports</b> (host_priv_t *host_priv_ptr, device_t *device_master_ptr);</tt></dt>
+ <dd>Fetch the host privileged port and device master port from the process server.</dd>
+ <p>
+ </p>
+ <dt><tt>mode_t</tt></dt>
+ <dt><tt><b>getumask</b> (void);</tt></dt>
+ <dd>Get the current `umask' value without changing it (this glibc functions is available only under GNU Hurd.)</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>vpprintf</b> (io_t port, const char *format, va_list arg);</tt></dt>
+ <dd>Write formatted output to PORT, a Mach port supporting the i/o protocol, according to the format string FORMAT, using the argument list in ARG.</dd>
+ <p>
+ </p>
+ <dt><tt>thread_t</tt></dt>
+ <dt><tt><b>hurd_thread_self</b> (void);</tt></dt>
+ <dd>Return the current thread's thread port. This is a cheap operation (no system call), but it relies on Hurd signal state being set up.</dd>
+ <p>
+ </p>
+ <dt><tt>error_t</tt></dt>
+ <dt><tt><b>hurd_thread_cancel</b> (thread_t thread);</tt></dt>
+ <p>
+ </p>
+ <dd>Cancel pending operations on THREAD. If it is doing an interruptible RPC, that RPC will now return EINTR; otherwise, the "cancelled" flag will be set, causing the next <tt>hurd_check_cancel</tt> call to return nonzero or the next interruptible RPC to return <tt>EINTR</tt> (whichever is called first).</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>hurd_check_cancel</b> (void);</tt></dt>
+ <p>
+ </p>
+ <dd>Test and clear the calling thread's "cancelled" flag.</dd>
+ <p>
+ </p>
+</dl>
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/hurd_hacking_guide.mdwn b/hurd/hurd_hacking_guide.mdwn
new file mode 100644
index 00000000..ea9aa259
--- /dev/null
+++ b/hurd/hurd_hacking_guide.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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)
+ [187kB, 37 pages],
+ * [ASCII text
+ version](http://www.gnu.org/software/hurd/hacking-guide/hhg.txt) [59kB],
+ * [Texinfo source](http://www.gnu.org/software/hurd/hacking-guide/hhg.texi)
+ [60kB].
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
new file mode 100644
index 00000000..78e13efd
--- /dev/null
+++ b/hurd/io_path.mdwn
@@ -0,0 +1,40 @@
+[[!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]]."]]"""]]
+
+# read
+
+ * [[glibc]]'s `read` is in `glibc/sysdeps/mach/hurd/read.c:__libc_read`.
+
+ * That calls `glibc/hurd/fd-read.c:_hurd_fd_read()`.
+
+ * That calls `__io_read`, which is an [[RPC]], i.e., that actually results
+ into the [[translator/ext2fs]] server calling
+ `hurd/libdiskfs/io-read.c:diskfs_S_io_read`.
+
+ * That calls `_diskfs_rdwr_internal`, which calls
+ `hurd/libpager/pager-memcpy.c:pager_memcpy`, which usually basically just
+ tell the kernel to virtually project the memory object corresponding to the
+ file in the caller process's memory. No read is actually done.
+
+ * Then, when the process actually reads the data, the kernel gets the user
+ page fault (`gnumach/i386/i386/trap.c:user_trap`), which calls `vm_fault`,
+ etc., until actually getting to `gnumach/vm/vm_fault/vm_fault_page` which
+ eventually calls `memory_object_data_request`, which is an [[RPC]], i.e.,
+ that actually results into the [[translator/ext2fs]] server calling
+ `hurd/libpager/data-request.c:_pager_seqnos_memory_object_data_request`.
+
+ * That calls `hurd/ext2fs/pager.c:pager_read_page`, which looks for where the
+ data is on the disk, and eventually calls
+ `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
new file mode 100644
index 00000000..91c7810f
--- /dev/null
+++ b/hurd/libchannel.mdwn
@@ -0,0 +1,62 @@
+[[!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]]."]]"""]]
+
+# libchannel
+
+*libchannel* was accepted as a project for [[Google_Summer_of_Code|community/gsoc]] (or
+just GSoC) in 2007. It was written by Carl Fredrik Hammar who was mentored by
+Richard Braun.
+
+
+## Outline
+
+*libchannel* was intended to be used to cleanly and efficiently
+implement *channel* translators that would correspond to character
+device files. In other words, translators for input devices, sound,
+network and the like.
+
+There are many cases where one wishes to stack translators over one
+another. Take networking as an example, you may wish to have a pseudo
+network device that balance traffic over two real devices.
+
+The problem with stacking translators this way is that it's
+inefficient, for every RPC to the balancer a RPC is made to each of
+the real devices. Now a RPC isn't really *that* expensive, but in a
+more complex example with more layers the overhead of these RPC's makes
+such a stacking infeasible.
+
+However, by using *libchannel* a translator can provide a description
+of what it does (i.e. the code and data it uses), which a translator
+layered untop can fetch and use directly. Now only strictly required
+RPC's needs to be sent.
+
+
+## Result
+
+By the end of GSoC 2007, *libchannel* had mostly reached the initial
+goals. There some code missing, most notably the code for
+transferring channels via RPC, but similar code was already present in
+*libstore* and can be trivially adapted for *libchannel*. It also
+needed more debugging.
+
+Despite these minor deficiencies, the project was considered a
+success, never the less.
+
+
+## Future directions
+
+However, while *libchannel* matched the original specifications. It's
+believed that it's too inflexible to make use of in many specific
+cases and that a more general solution is desired. While the
+discussion isn't over yet, it seems *libchannel* will become a support
+library to implement specialized channel libraries, e.g. *libaudio*
+and *libnetwork* or similar.
+
+So work on *libchannel* will continue, in one form or another.
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
new file mode 100644
index 00000000..2c5490e2
--- /dev/null
+++ b/hurd/libhello_example.mdwn
@@ -0,0 +1,167 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Howto write a Hurd library
+
+Build the Hurd sources:
+------------------------
+
+Refer to this [[hurd/building/example]].
+
+Create the library files:
+----------------------
+
+Create a directory, say, libhello in the Hurd sources directory.
+
+Create a lhello.h header file:
+
+ /* lhello.h - Example library header file.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ Written by Shakthi Kannan <shaks@shakthimaan.com>.
+
+ This file is part of the GNU Hurd.
+
+ The GNU Hurd 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.
+
+ The GNU Hurd 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 the GNU Hurd; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #ifndef _HURD_HELLO_H
+ #define _HURD_HELLO_H 1
+
+ struct hello
+ {
+ int x;
+ };
+
+ #endif /* _HURD_HELLO_H */
+
+Replace filename, year, author name and e-mail address appropriately.
+
+Create a lhello.c file:
+
+ /* lhello.c - Example library .c file.
+ Copyright (C) 2006
+ Free Software Foundation, Inc.
+ Written by Shakthi Kannan <shaks@shakthimaan.com>.
+
+ This file is part of the GNU Hurd.
+
+ The GNU Hurd 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.
+
+ The GNU Hurd 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 the GNU Hurd; see the file COPYING. If not, write to
+ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #include "lhello.h"
+
+ void
+ print_hello (void)
+ {
+ struct hello example;
+ example.x = 2;
+ printf ("foo and bar are %d words!\n", example.x);
+ }
+
+Replace header file year, author name and e-mail address appropriately.
+
+Create a Makefile
+
+ #
+ # Copyright (C) 2006 Free Software Foundation, Inc.
+ #
+ # This file is part of the GNU Hurd.
+ #
+ # The GNU Hurd 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.
+ #
+ # The GNU Hurd 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ dir := libhello
+ makemode := library
+
+ libname := libhello
+ SRCS = lhello.c
+ installhdrs = lhello.h
+ LCLHDRS = $(installhdrs)
+
+ OBJS = $(SRCS:.c=.o)
+
+ include ../Makeconf
+
+Update the Makeconf file:
+
+Add libhello to lib-subdirs target in the top-level Makefile in the Hurd
+sources.
+
+ cd build
+ ../configure
+ make
+
+Testing the library
+-------------------
+
+Write a file, say, foo.c:
+
+ /* foo.c */
+
+ #define _GNU_SOURCE
+
+ int
+ main (int argc, char *argv[])
+ {
+ print_hello();
+ return 0;
+ }
+
+Static compilation and linking method:
+
+ gcc -g -o foo foo.c -L/path/to/libhello -lhello -static
+
+Run the example:
+
+ ./foo
+
+Compilation and dynamic linking method:
+
+ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libhello
+ gcc -g -o foo foo.c -L/path/to/libhello -lhello
+
+where /path/to/libhello = /path/to/hurd/build/libhello
+
+Run the example:
+
+ ./foo
diff --git a/hurd/libihash.mdwn b/hurd/libihash.mdwn
new file mode 100644
index 00000000..770770c7
--- /dev/null
+++ b/hurd/libihash.mdwn
@@ -0,0 +1,52 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+ * Hurd libihash
+
+ * old
+
+ * new
+
+ * hurd-l4 libhurd-ihash
+
+ * [[viengoos libhurd-ihash|microkernel/viengoos/projects/new_hash_function]]
+
+ IRC, unknown channel, unknown date
+
+ <neal> so, we need a new ihash implementation
+ <neal> marcusb: When 80% full, the collision rate is very high.
+ <neal> marcusb: I tested using 512mb / 4096 entries
+ <neal> marcusb: Changing the load factor to 30% resulted in my program running more than an order of magnitude faster.
+ <marcusb> yeah, it shouldn't get so full
+ <marcusb> don't we do an exponential back-off in the array size?
+ <marcusb> of course it's clear we can do much better
+ <marcusb> the ihash algo is very simple
+ <marcusb> I'm not even sure it makes much sense to have a generic library
+
+
+# Alternatives?
+
+ * glibc
+
+ * include/inline-hashtab.h
+
+ * locale/programs/simple-hash.h
+
+ * misc/hsearch_r.c
+
+ * NNS; cf. f46f0abfee5a2b34451708f2462a1c3b1701facd
+
+ * <http://cmph.sourceforge.net/>
+
+ * <http://libhashish.sourceforge.net/>
+
+ * <http://www.azillionmonkeys.com/qed/hash.html>
diff --git a/hurd/libnetfs.mdwn b/hurd/libnetfs.mdwn
new file mode 100644
index 00000000..8625f8bc
--- /dev/null
+++ b/hurd/libnetfs.mdwn
@@ -0,0 +1,298 @@
+[[!meta copyright="Copyright © 2007, 2008, 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]]."]]"""]]
+
+#libnetfs
+
+##What This Is
+
+This document is an attempt at a short overview of the main concepts
+used in the process of development of translators using
+*libnetfs*. You will **not** find here a detailed description of the
+required callbacks (for this take a look at
+<http://www.debian.org/ports/hurd/reference-manual/hurd.html>). You
+will **not** find a complete example of code either (usually,
+*unionfs* is suggested as an example)
+
+##What libnetfs Is
+
+*libnetfs* is a Hurd library used in writing translators providing
+some virtual directory structures. For example, if you would like to
+create a translator which shows a *.tar* archive in a unpacked way,
+you will definitely want to use *libnetfs*. However, it is important
+to understand one thing: real filesystem servers (like *ext3* and
+such) do **not** use *libnetfs*, instead, they rely on *libdiskfs*,
+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
+*libnetfs*, you can show to your clients not just a single file, but a
+whole directory tree.
+
+##How It Works: Short Description
+
+With the aid of *libnetfs* a translator (supposedly) publishes a
+directory tree. All lookups in this directory tree are directed to the
+translator and the latter is free to provide whatever (consistent)
+information as the result of the lookup. Of course, all other usual
+requests like reading, writing, setting a translator, etc. are
+directed to the translator, too. The translator has either to
+implement the required functionality in the corresponding callback or
+just return an appropriate error code (for example, EOPNOTSUPP), if
+the callback is compulsory.
+
+##The Main Concepts: Nodes
+
+The most fundamental thing to understand about *libnetfs* is the
+notion of a **node**. Nearly always there are two types of nodes in a
+*libnetfs*-based translator:
+
+* Generic **node**, defined in *&lt;hurd/netfs.h&gt;*. This node contains
+ information read and written by the programmer (like field
+ *nn_stat*), as well as some internal information (like fields
+ *references* and *transbox*). Of course, the programmer is free to
+ use these fields at will, but they should know what they are doing.
+
+* Custom **netnode**, defined by the programmer and containing only
+ the information valuable for the programmer, but not for *libnetfs*.
+
+The generic node is probably the most important primitive introduced
+by *libnetfs*. Callbacks receive the nodes they should work with as
+parameters; some of them return nodes as the result of their
+operation. To some extent of certainty, a *libnetfs* node can be
+perceived similarly to a filesystem node -- the building-brick out of
+which everything is composed.
+
+As it can be seen from the definition in *&lt;hurd/netfs.h&gt;*, a reference
+to a netnode is stored in each generic node. In a way, a netnode can
+be perceived as the custom attachment to the information contained in
+a generic node. The link between these is quite strong. At first this
+might not look like a very important thing, but let's analyze a simple
+example: you would like to show the contents of a directory in a
+filtered way. As a filtering criterion you would like to use the
+result of the execution of a command specified as a command line
+argument to the translator. If a client looks up a 'file' in the
+directory tree provided by the translator, the latter should feed the
+name of the file to the filtering command and decide whether to hide
+this file or not upon receiving the result.
+
+To avoid trouble, the translator had better use the *absolute* name of
+'file'. Obviously, the translator would like to organize all of the
+nodes in a hierarchy. To make things work more or less fast, it is a
+reasonable decision to construct the absolute path to a node at
+creation and store it inside the netnode (which, in turn, is inside
+the node). However, such an approach is not a good one when using
+*libnetfs*. Generally speaking, a *new* generic node is created at
+each lookup, and, together with it, a new netnode is constructed. The
+conclusion is that a *libnetfs* node is a rather transient phenomenon,
+and when we want to store some information which is relatively
+expensive to obtain, we need something more than a generic node +
+netnode. At this moment most of the translators (like *unionfs*,
+*ftpfs*, etc.) introduce the concept of a **light node**.
+
+A **light node** is a user-defined node which contains some
+information expensive to obtain, which had better not be stored
+directly in a netnode. All netnodes, contained in generic nodes which
+resulted in lookups of the same file, share references (pointers,
+actually) to a single light node. Light nodes are created when the
+first attempt to lookup a file is done, and they are destroyed when no
+netnodes reference them. It is very important to understand that
+*libnetfs* does **not** enforce the programmer to define light
+nodes. Everything can be stored within netnodes inside generic
+nodes. Light nodes are just a matter of organizing data in an
+efficient way.
+
+Probably, you are already thinking ``Why cannot *netnodes* be shared?
+Why do we need yet another notion?''. The answer is that the link
+between a netnode and a *libnetfs* node should be one-to-one, because
+netnodes usually store information specific of *only one* node, whilst
+light nodes contain information common to several nodes. If one chose
+to share netnodes, one would not be able to store additional
+information per a *libnetfs* node, and this is quite a serious problem
+in most practical problems.
+
+##Why a libnetfs Node Is Not Quit a Filesystem Node
+
+The most demonstrative argument in this case is the definition of
+*struct node* in *&lt;hurd/netfs.h&gt;*. If you try to find in this
+definition some reference to other generic node called *parent*, or an
+array of references called *children* (which would be quite classical
+for a member of a hierarchy), you will fail. There are fields *next*
+and *prevp*, but these are for internal use and only include the node
+in an internally maintained *list*, not a tree. Surprisingly enough,
+*libnetfs* does **not** manage the tree-like structure for you. You
+have to do that *on you own*. This is another moment when light nodes
+come triumphantly to light. Most *libnetfs*-based translators organize
+their light nodes in the tree-like structure reflecting the directory
+tree shown to the user. When a lookup is performed, a light node is
+either created or reused (if it has already been created in a previous
+lookup). The result of the lookup is a *libnetfs* node created basing
+on the information contained in the found light node.
+
+From the point of view of a *libnetfs* programmer, light nodes are the
+conceptual filesystem nodes. A translator knows who is the parent of
+who *only* from studying the links between light nodes. And a light
+node does contain a reference to its parent and an array of references
+to children. When a translator is asked to fetch a file, it finds this
+file in the tree of light nodes firstly, creates a *libnetfs* node
+based on the found light node, and returns the latter as the
+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 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
+is called. It knows the generic *libnetfs* node corresponding to the
+directory under which the lookup shall take place, the name it has to
+lookup, and the information about the user requesting the lookup. This
+callback is supposed to create a new *libnetfs* node corresponding to
+the requested file or return an error. As it has been said before,
+usually translators browse their hierarchy of light nodes to know
+whether a file exists within a directory or not. Note that
+*netfs_attempt_lookup* does not know the flags with which a
+*file_name_lookup* call is done, what it has to do is just to provide
+a new node or return an error.
+
+Then *netfs_validate_stat* callback is called and a node and
+information about the user is passed inside. This callback is a rather
+simple one: it has to assure that the *nn_stat* field of the supplied
+node is valid and up to date. Translators which mirror parts of real
+filesystem, like *unionfs*, usually treat the node corresponding to the
+root of their node hierarchy in a specific way. The reason is that the
+root node is not a mirror of a real file -- it is almost always a
+directory in translators of this kind.
+
+The third stage is an invocation of
+*netfs_check_open_permissions*. This callback is, probably, one of the
+simplest in most cases. It knows some information about the user
+requesting the open, about the node that is about to be returned to
+the user, and about the flags supplied by the user in the call to
+*file_name_lookup*. Besides that, this callback is provided with the
+information whether the requested lookup ended in creating a new file
+or whether the requested file already
+existed. *netfs_check_open_permissions* has to decide if the user has
+the right to access the resulting file under the permissions specified
+in flags. It has to return either 0 or the corresponding error.
+
+These are the most basic steps of the lookup. Note that if the file
+was requested with O_CREAT flag and *netfs_attempt_lookup* could not
+locate this file, *netfs_attempt_create_file* is called. In many ways
+a typical implementation of this callback might be similar to the
+implementation of *netfs_attempt_lookup*. However,
+*netfs_attempt_create_file* will most probably have to do less checks.
+
+Let's move to listing the contents of a directory. The corresponding
+callback, *netfs_get_dirents* is triggered when a user invokes
+*dir_readdir* upon a directory provided by the translator. The
+parameters of *netfs_get_dirents* are therefore very similar to the
+parameters of *dir_readdir*. Actually, translator *fakeroot* only
+calls *dir_readdir* in this callback and nothing more. In translators
+which need more complex handling (like filtering the contents) the
+code of this is more sophisticated. Sometimes the listing of directory
+entries happens in several stages: *netfs_get_dirents* may call
+something like *node_entries_get*, and the latter may invoke
+*dir_entries_get*. The latter function calls *dir_readdir* and
+converts the result to an array of *struct dirent*
+'s. *node_entries_get* converts the array of *struct dirent* 's to a
+linked list and decides whether a specific file shall be included in
+the result or not. Finally, *netfs_get_dirents* converts the linked
+list provided by *node_entries_get* to the format of the result of
+*dir_readdir* and returns the converted data to the user. The
+described stages are the stages of listing directory entries in
+*unionfs*, for instance.
+
+Other callbacks are, generally speaking, less sophisticated. For
+example, when the client wants to read (write) from a node provided
+by *netfs_attempt_lookup*, the callback *netfs_attempt_read*
+(*netfs_attempt_write*) is triggered. Both callbacks have sets of
+parameters to the corresponding *io_read* and *io_write* functions.
+
+While browsing the code of very many *libnetfs*-based translators, you
+might notice that they define callbacks starting with
+*netfs&#95;S&#95;*. Usually a name similar to that of one of the file
+management function follows (like netfs&#95;S&#95;*dir_lookup*). These
+callbacks are triggered when the corresponding functions are called on
+files shown by the translator. Such translators override parts of the
+core functionality provided by *libnetfs* to achieve better
+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
+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
+loosely coupled and are often processed separately.
+
+##Node Cache
+
+Most of *libnetfs* translators organize a *node cache*. However, this
+structure is not a real cache. The idea is to hold some control over
+life and death of *libnetfs* nodes. The cache is usually a
+doubly-linked list: each netnode contains a reference to the previous
+node in the cache and a reference to the next one. When a new node is
+created (for example, as a result of invocation of
+*netfs_attempt_lookup*), it is registered in the cache and its number
+of references is increased. It means that, by putting the node in the
+cache, the translators gets hold of an extra reference to the
+node. When in subsequent lookups the same nodes will be requested, the
+translator can just reuse an already existing node.
+
+Of course, the cache is limited in size. When the cache gets
+overgrown, the nodes located at the tail of the list are removed from
+the cache and the references to them are dropped. This triggers their
+destruction (undertaken by *libnetfs*).
+
+##What Files Are Usually Created
+
+If you take into a look at the sources *ftpfs* or *unionfs* you will
+notice files with names similar to the following:
+
+* cache.{c,h} -- here the node implementation of the node cache
+ resides.
+
+* lib.{c,h}, dir.{c,h}, fs.{c,h} -- these contain the implementation
+ of some internals. For example, the function *dir_entriesget*
+ mentioned in the description of the process of listing directory
+ entries, will most probably reside in one of these files.
+
+* options.{c,h} -- here the option parsing mechanism is usually
+ placed. Argp parsers are implemented here.
+
+* &lt;*translator_name*&gt;.{c,h}, netfs.c -- the implementation of *netfs_\**
+ callbacks will most probably lie in these files.
+
+##What Netnodes and Light Nodes Usually Contain
+
+A **netnode** usually contains a reference to a light node, some flags
+describing the state of the associated generic *libnetfs* node, and
+the references to the previous and the next elements in the node
+cache.
+
+A **light node** usually contains the name of the file associated with
+this light node, the length of this name, some flags describing the
+state of this light node. To make a light node fully usable in a
+multithreaded program, a lock and a reference counter are almost
+always incorporated in it. Since light nodes are organized in a
+hierarchical way, they contain a reference to their parent, a
+reference to their first child, and references to their siblings
+(usually not very descriptively called *next* and *prevp*).
+
+##The End
+
+I very much hope this piece of text was at least a little
+helpful. Here I tried to explain the things which I understood least
+when I started learning *libnetfs* and which confused me most. Feel
+free to complete this introduction :-)
diff --git a/hurd/libpager.mdwn b/hurd/libpager.mdwn
new file mode 100644
index 00000000..c9a1c0b6
--- /dev/null
+++ b/hurd/libpager.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Mach's [[microkernel/mach/external_pager_mechanism]].
+
+Mach [[microkernel/mach/IPC]]'s [[microkernel/mach/ipc/sequence_numbering]].
+
+[GNU Hurd Reference Manual: 4.2 Pager
+Library](http://www.gnu.org/software/hurd/doc/hurd_5.html#SEC32).
diff --git a/hurd/libports.mdwn b/hurd/libports.mdwn
new file mode 100644
index 00000000..28274338
--- /dev/null
+++ b/hurd/libports.mdwn
@@ -0,0 +1,20 @@
+[[!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]].
+
+*libports* does not itself depend on *[[libthreads]]*, but the appropriate
+threading hooks are used if present, that is if *[[libthreads]]* is used by
+another component.
diff --git a/hurd/libstore.mdwn b/hurd/libstore.mdwn
new file mode 100644
index 00000000..8eac39fe
--- /dev/null
+++ b/hurd/libstore.mdwn
@@ -0,0 +1,36 @@
+[[!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]]."]]"""]]
+
+`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/`...
+
+
+# Available Stores
+
+[[!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
new file mode 100644
index 00000000..467e6ba8
--- /dev/null
+++ b/hurd/logo.mdwn
@@ -0,0 +1,11 @@
+[[!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 redir=/logo]]
diff --git a/hurd/neighborhurd.mdwn b/hurd/neighborhurd.mdwn
new file mode 100644
index 00000000..5a66f992
--- /dev/null
+++ b/hurd/neighborhurd.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+It is possible to run multiple instances of the Hurd
+in parallel, on a single instance of Mach. Other than
+performance [[crosstalk]], they are essentially isolated.
+Practically, as many devices do not allow multiple
+non-[[cooperating|cooperation]] users, e.g., hard drive and network
+this is not currently possible. It can be overcome,
+however, by [[virtualizing|virtualization]] these problematic devices.
+
+When extra hardware is not available, it is possible to use a
+[[sub-Hurd|subhurd]].
+
+
+# Etymology
+
+*Neighborhurd* is a pun on *neighborhood*, and a stance against hierarchies.
diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn
new file mode 100644
index 00000000..ff16eb25
--- /dev/null
+++ b/hurd/networking.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 2000, 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]]."]]"""]]
+
+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
+[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX`) and
+[[`PF_INET`|translator/pfinet]] (together with
+[[`PF_INET6`|translator/pfinet/ipv6]]) are supported.
+
+User programs open those files, and use the `socket_create` [[RPC]] to make a
+new socket. With that socket, they can use the other `socket_*` RPCs and also
+the `io_*` RPCs. The `socket_*` RPCs are essentially clones of the [[Unix]]
+syscalls in question.
+
+The only exception is `sockaddrs`, which are implemented as [[ports|libports]]
+instead of the opaque data arrays they are in the syscalls. You manipulate
+`sockaddr` ports with the `socket_create_address`, `socket_fabricate_address`,
+and `socket_whatis_address` calls. The `sockaddr` port is then used in socket
+calls like `socket_connect` and `socket_accept`.
+
+`PF_INET` `sockaddr` ports are manipulated with `socket_create_address` from
+the usual `struct sockaddr_in`. `PF_LOCAL` `sockaddr` ports are stored by
+`S_IFSOCK` filesystem nodes; you find the address associated with a node with
+`ifsock_getsockaddr`. The [[file_system_server|translator]] will get a
+`sockaddr` to return with `socket_fabricate_address`.
diff --git a/hurd/ng.mdwn b/hurd/ng.mdwn
new file mode 100644
index 00000000..fb4d742f
--- /dev/null
+++ b/hurd/ng.mdwn
@@ -0,0 +1,93 @@
+Hurd-ng is an effort to build a new operating system that preserves
+the main design goals of the Hurd while fixing some of the Hurd's
+shortcomings. There is not yet an official roadmap or a concrete
+specification; indeed, much of the work is research oriented.
+
+These pages try to summarize the major discussions and ideas.
+
+
+# Why ngHurd
+
+This section explains the motivations behind the new design:
+
+ * [[Issues_with_Mach]]
+ * [[Issues_with_L4_Pistachio]]
+ * [[Limitations_of_the_original_Hurd_design]]
+
+ * History of the [[history/port_to_L4]]
+
+
+# Work already done
+
+A [[position_paper]] by Marcus Brinkmann and Neal H. Walfield can be found.
+
+A draft specification of the Hurd-NG interfaces has been, but is no longer,
+available.
+
+A [[critique]] of the original Hurd is available.
+
+# Subjects
+
+## Design processus
+
+* [[DesignGoals]]
+* [[RequirementsForUser]]
+* [[DesignPrinciples]]
+* [[Philosophy]]
+
+
+## Concepts
+
+* [[security]]
+* [[CapabilityBasedMicrokernel]]
+* [[FirstClassReceiveBuffer]]
+* [[PowerBox]]
+* [[WhatIsACapability]]
+* [[WhatIsAConstructor]]
+* [[WhatIsASpacebank]]
+* [[TrivialConfinementVsConstructorVsFork]]
+* [[CopyVsRevocableCopyVsMap]]
+* [[SetuidVsConstructor]]
+* [[HurdishApplicationsForPersistence]]
+* [[WhatsInAGroup]]
+* [[ThePolycastInterface]]
+* [[PermissionBits]]
+* [[CancellationForwarding]]
+
+
+## Problems to solve
+
+* [[HowMuchConfinementDoWeWant]]
+* [[SharedLibraries]]
+* [[PathMax]]
+
+
+## Implementation
+
+* [[ChoiceOfMicrokernel]]
+* [[HurdInterafaces]]
+* [[PosixLayer]]
+* [[SystemStructure]]
+
+
+## Use Cases
+
+_please move me somewhere better! [[SamMason]]_
+
+* [[UseCaseUserFileSystem]]
+* [[UseCasePrivateKeys]]
+
+
+## Organization
+
+Summaries should obey the following structure:
+
+* if there is a consensus, it is clearly described
+* if controversial points remain, there are also described after the consenus
+* if no choice has been clearly made, all valid positions are descrbied
+* withdrawed and invalid positions (prooved wrong, unrealistic, contradictory
+ to some design principle, etc.) should be described only very briefly, and
+ developed in a separate article
+
+Each time a point seems to be overly long with respect to the rest of the
+article, it should be summarized in place and developed in a separate article.
diff --git a/hurd/ng/cancellationforwarding.mdwn b/hurd/ng/cancellationforwarding.mdwn
new file mode 100644
index 00000000..6b2977c7
--- /dev/null
+++ b/hurd/ng/cancellationforwarding.mdwn
@@ -0,0 +1,56 @@
+# <a name="Cancellation_forwarding"> Cancellation forwarding </a>
+
+## <a name="Rationale"> Rationale </a>
+
+When a request to a chain of one or more servers is needed from a server to process a request from its client, and the client cancels its request, there will be at least temporary resource leakage in the chain of servers.
+
+If the last server in the chain completes processing and gives a response to its client, there will be unnecessary CPU and memory usage from all the servers. And if one of the servers never completes, there will be permanent memory leakage.
+
+Timeouts are a way to avoid the permament memory leakage, at the cost of rendering the whole communication impossible above some system load, hence opening a denial of service possibility. They also only bring the duration of the memory leakage from an infinite to an arbitrary finite time that may have no relation with the operations of the servers.
+
+Cancellation forwarding is a mechanism that can be used to propagate, without additional overt communication, the information that initial request has been cancelled. It also bring the duration of the memory leakage to a finite time, but each server in the chain is able to use the protocol at key points of its operations (like before a costly operation), and because the protocol will not produce false positive results, it can be used at an arbitrary high frequency. The only tradeoff is between leakage time and checking overhead.
+
+## <a name="Protocol"> Protocol </a>
+
+* Each client that want to forward cancellation to its server increment the protected payload of the FCRB for which a sender's capability has been given to the server, thus invalidating the capability.
+* Each server that wants to notice cancellation forwarding will either set up a watchdog, and ask the kernel to send heartbeats, or decide for deterministic check points in its operations. At each heartbeat or check point, the server checks that the reply capability to the FCRB of the client is not invalid, with a Discrim capability.
+
+## <a name="Example"> Example </a>
+
+Communication is described between 3 processes, client C and servers S and T.
+
+Notation:
+
+* FCRB-&gt;A means a FCRB whose receiver process is A
+
+### <a name="Successful_operation_"> Successful operation: </a>
+
+* C invokes a capability to S, giving S a capability c1 to a FCRB-&gt;C
+* S sets up a watchdog that check that discrim.classify(c1) != clVoid
+* S invokes a cap to T, giving T a cap c2 to a FCRB-&gt;S
+* T sets up a watchdog that check that discrim.classify(c2) != clVoid
+
+( T successfully treat the request, now goes completion )
+
+* T invokes c2
+* S reads the answer, and increments the PP of the FCRB-&gt;S
+* S invokes c1
+* C reads the answer, and increments the PP of the FCRB-&gt;C
+
+### <a name="Uncomplete_operation_"> Uncomplete operation: </a>
+
+* C invokes a cap to S, giving S a cap c1 to a FCRB-&gt;C
+* S sets up a watchdog that checks that discrim.classify(c1) != clVoid
+* S invokes a cap to T, giving T a cap c2 to a FCRB-&gt;S
+* T sets up a watchdog that checks that discrim.classify(c2) != clVoid
+
+( for any reason, C decides to stop, now goes cancellation )
+
+* C increments the PP of the FCRB-&gt;C
+* S watchdog notifies S of cancellation
+* S increments the PP of the FCRB-&gt;S
+* T watchdog notifies T of cancellation
+
+----
+
+-- [[Main/NowhereMan]] — originally designed in April 2006
diff --git a/hurd/ng/choiceofmicrokernel.mdwn b/hurd/ng/choiceofmicrokernel.mdwn
new file mode 100644
index 00000000..20ee6f05
--- /dev/null
+++ b/hurd/ng/choiceofmicrokernel.mdwn
@@ -0,0 +1,4 @@
+TBD
+
+* [[MicrokernelL4]]
+* [[MicrokernelCoyotos]]
diff --git a/hurd/ng/copyvsrevocablecopyvsmap.mdwn b/hurd/ng/copyvsrevocablecopyvsmap.mdwn
new file mode 100644
index 00000000..0cda7e24
--- /dev/null
+++ b/hurd/ng/copyvsrevocablecopyvsmap.mdwn
@@ -0,0 +1,6 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00274.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00023.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/designgoals.mdwn b/hurd/ng/designgoals.mdwn
new file mode 100644
index 00000000..d04007c2
--- /dev/null
+++ b/hurd/ng/designgoals.mdwn
@@ -0,0 +1,53 @@
+# <a name="Design_Goals"> Design Goals </a>
+
+## <a name="The_Position_Paper"> The Position Paper </a>
+
+The [[position_paper]] tries to capture technical objectives. As has been
+stated by Neal in [2], these are a number of scenarios we are interested in
+addressing:
+
+* security: programs are not users; they should be constrained according to the user's intents
+* resource management
+ * efficiency: facilitate use of local knowledge
+ * soft real-time: expose virtualized resources with useful access case characteristics
+* integration: safe extension of the system
+
+## <a name="The_original_list"> The original list </a>
+
+These goals have been initially proposed by Bas Wijnen [1]. The list here is a slightly modified form, I tried to incorporate the content of the mailing list discussion. It has to be noted that there is no consensus about this list. There have been objections about both the number of goals stated and specific goals themselves.
+
+## <a name="Essential_Goals"> Essential Goals </a>
+
+* stability
+* robustness
+* resource accountability
+* confinement
+* support for most legacy applications
+* extensibility
+* no ACLs
+
+### <a name="On_Extensibility"> On Extensibility </a>
+
+Extensibility has often been a strong argument to support the multiserver approach. Therefore, I think, it has been rated to be an essential goal in our (preliminary) list, too. However, it has been [suggested](http://citeseer.ist.psu.edu/druschel97extensible.html) that this argument is of few or no interest for a general purpose OSes: it is argued that the benefits of extensible kernels can be migrated to conventional ones by defining exactly what the extension requires. "Conventional kernel" is here probably to be interpreted as "monolithic kernel". From the above, I think the first (naive) conclusion that could be drawn would be to abandon the multiserver approach and extensibility goal.
+
+However, I do believe there are benefits in multiserver environments you cannot get in a monolithic one, namely enhanced security and stability through protection boundaries. Also, whilst wanting to become adopted as general purpose OS, ngHurd still strives to allow for research also, so even according to the above-referenced paper extensibility is to be one of its goals.
+
+Therefore, I'd want to propose to weaken the impact of extensibility on the design, by lowering it to the category "Regular Goals". -- [[TomBachmann]] - 13 Dec 2006
+
+## <a name="Regular_Goals"> Regular Goals </a>
+
+* confinement with endogenous verification
+* soft real time
+* setting diverse resource distribution policies
+* persistent sessions for users
+
+## <a name="Optional_Goals"> Optional Goals </a>
+
+* small memory footprint
+* support for all POSIX applications
+* persistence
+
+----
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00037.html>
+* [2] <http://lists.gnu.org/archive/html/l4-hurd/2007-01/msg00122.html>
diff --git a/hurd/ng/designprinciples.mdwn b/hurd/ng/designprinciples.mdwn
new file mode 100644
index 00000000..42faa52f
--- /dev/null
+++ b/hurd/ng/designprinciples.mdwn
@@ -0,0 +1,39 @@
+# <a name="Design_Principles"> Design Principles </a>
+
+A design principle is a test that lets us **reject** things. Hopefully, when combined with other design principles, it forms a basis for making coherent and consistent decisions about design goals and system features. [1]
+
+## <a name="Stated_design_principles"> Stated design principles </a>
+
+None defined yet, but there seems to be consensus that ngHurd should be a principle-driven design.
+
+## <a name="Potential_design_principles"> Potential design principles </a>
+
+Here is an incomplete list of potential design principles for the ngHurd. It is taken from [2]. I left out some principles I think do not apply or are not in question. Feel free to add more.
+
+### <a name="Principles_from_the_Multics_Proj"> Principles from the Multics Project </a>
+
+* _Economy of mechanism_: Keep the design as simple as possible.
+* _Fail-safe defaults_: Base access decisions on permission rather than exclusion.
+* _Least priviledge_: Components should have no more authority than they require.
+* _Least common mechanism_: Minimize the amount of shared instances in the system.
+
+### <a name="Commonly_accepted_principles"> Commonly accepted principles </a>
+
+* _Separation of policy and mechanism_
+* _Least astonishment (also known as principle of least surprise):_ The system�s behavior should match what is naively expected.
+* _Complete accountability_: All real resources held by an application must come from some accounted pool.
+* _Safe restart_: On restart, the system must either already have, or be able to rapidly establish, a consistent and secure execution state.
+* _Reproducibility_: Correct operations should produce identical results regardless of workload.
+
+### <a name="Principles_specific_to_EROS"> </a> Principles specific to EROS
+
+* _Credible policy_: If a security policy cannot be implemented by correct application of the system�s protection mechanisms, do not claim to enforce it.
+* _Explicit authority designation_: Every operation that uses authority should explicitely designate the source of the authority it is using.
+* _Relinquishable authority_: If an application holds some authority, it should be able to voluntarily reduce this authority.
+
+----
+
+See also:
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00120.html>
+* [2] EROS: A Principle-Driven Operating System from the Ground Up
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/firstclassreceivebuffer.mdwn b/hurd/ng/firstclassreceivebuffer.mdwn
new file mode 100644
index 00000000..30087bf2
--- /dev/null
+++ b/hurd/ng/firstclassreceivebuffer.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g. <http://coyotos.org/docs/ukernel/spec.html> and <http://www.coyotos.org/pipermail/coyotos-dev/2006-January/000391.html>
+
+-- [[TomBachmann]] - 31 Aug 2006
diff --git a/hurd/ng/howmuchconfinementdowewant.mdwn b/hurd/ng/howmuchconfinementdowewant.mdwn
new file mode 100644
index 00000000..1963ae73
--- /dev/null
+++ b/hurd/ng/howmuchconfinementdowewant.mdwn
@@ -0,0 +1,93 @@
+# <a name="How_Much_Confinement_Do_We_Want_"> How Much Confinement Do We Want? </a>
+
+**_NOTE:_** **I am absolutely sure this is incredibely incomplete and/or wrong.** **_This is not up to date!_**
+
+## <a name="Introduction"> Introduction </a>
+
+There has been a lot of traffic on the l4-hurd list lately. A good bit of this is related to the question this entry is about: How much confinement do we want? The idea not to implement the full confinement was (accidently?) raised by marcus, who planned to raise it _somewhen_, but not yet.
+
+## <a name="Terminology"> Terminology </a>
+
+In this section I try to sketch some terminology that came up _during_ the discussion.
+
+### <a name="Creator"> Creator </a>
+
+Creator we call the creator of the confined (constructor) object.[2]
+
+### <a name="Instantiator"> Instantiator </a>
+
+Instantiator we call the user of the confined (constructor) object. [2]
+
+### <a name="Encapsulation"> Encapsulation </a>
+
+Encapsulation means that information (including authority) cannot be extracted from a program without its consent. This is a restriction on "read in" behavior. [3]
+
+### <a name="Confinement"> Confinement </a>
+
+Confinement means that a program cannot communicate outward through unauthorized channels. This is a restriction on "write out" behavior. [3]
+
+### <a name="non_trivial_confinement"> non-trivial confinement </a>
+
+Marcus: \`\`[non-trivial confinement] is the confined constructor design pattern.'' [1]
+
+We speak about non-trivial confinement when creator != instantiator. [2]
+
+### <a name="trivial_confinement"> trivial confinement </a>
+
+Marcus: \`\`[trivial confinement] is what the Hurd will do'' [1]
+
+We speak about trivial confinement when creator == instantiator [2]
+
+### <a name="principle_of_user_freedom_autono"> principle of user freedom/autonomity </a>
+
+The principle of user freedom and autonomity means the right to use, inspect, alter and copy all resources attributed to/owned by the user.[4]
+
+### <a name="freedom_of_digital_information"> freedom of digital information </a>
+
+TBD
+
+## <a name="The_Positions"> The Positions </a>
+
+Here I try to sketch the different positions.
+
+### <a name="Use_and_Implement_Only_Trivial_C"> Use and Implement Only Trivial Confinement by Default </a>
+
+#### <a name="Pros"> Pros </a>
+
+* Follows the principle of user freedom
+* **add more here**
+
+#### <a name="Cons"> Cons </a>
+
+* Possibly use cases for non-trivial confinement exist we cannot yet think of.
+* **add more here**
+
+### <a name="Implement_Full_Confinement_and_U"> Implement Full Confinement and Utilize It </a>
+
+#### <a name="Pros"> Pros </a>
+
+* There are many years of experience with confinement.
+* **add more here**
+
+#### <a name="Cons"> Cons </a>
+
+* It does not follow the principle of user freedom.
+* **add more here**
+
+## <a name="Preliminary_Summary_Statements"> Preliminary Summary Statements </a>
+
+* [Jonathan](http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00018.html)
+
+## <a name="A_Try_to_Push_the_Discussion_int"> A Try to Push the Discussion into a Constructive Direction </a>
+
+Marcus started a challenge [5] to find a use case for non-trivial confinement that is interesting for the Hurd and cannot be implemented otherwise. The exact challenge definition can be found in the mail.
+
+----
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00339.html>
+* [2] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00383.html>
+* [3] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00415.html>
+* [4] <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00012.html>
+* [5] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00407.html>
+
+-- [[TomBachmann]] - 01 May 2006
diff --git a/hurd/ng/hurdishapplicationsforpersistence.mdwn b/hurd/ng/hurdishapplicationsforpersistence.mdwn
new file mode 100644
index 00000000..d785694b
--- /dev/null
+++ b/hurd/ng/hurdishapplicationsforpersistence.mdwn
@@ -0,0 +1,5 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00081.html>; summary: passive translators started by the filesystem cannot be done right and persistence makes passive translators unnecessary
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/issues_with_mach.mdwn b/hurd/ng/issues_with_mach.mdwn
new file mode 100644
index 00000000..9fac498f
--- /dev/null
+++ b/hurd/ng/issues_with_mach.mdwn
@@ -0,0 +1,12 @@
+[[!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]]."]]"""]]
+
+ * [[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
new file mode 100644
index 00000000..96d8912b
--- /dev/null
+++ b/hurd/ng/limitations_of_the_original_hurd_design.mdwn
@@ -0,0 +1,11 @@
+[[!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]]."]]"""]]
+
+ * [[Critique]]
diff --git a/hurd/ng/microkernelcoyotos.mdwn b/hurd/ng/microkernelcoyotos.mdwn
new file mode 100644
index 00000000..cdf4e1bf
--- /dev/null
+++ b/hurd/ng/microkernelcoyotos.mdwn
@@ -0,0 +1,9 @@
+# <a name="The_Coyotos_microkernel"> The Coyotos microkernel </a>
+
+[Coyotos](http://www.coyotos.org/index.html) is a microkernel and OS and the successor of EROS, that itself is the successor of KeyKOS. A more complete history can be found [here](http://www.coyotos.org/history.html). Its main objectives are to correcte some shortcomings of EROS, demonstrate that an atomic kernel design scales well, and (eventually) to completely formally verify both the kernel and critical system components by writing them in a new language called [bitc](http://www.bitc-lang.org/). [See [l4.verified](http://nicta.com.au/research/projects/l4.verified) for work on formally verifying an L4 microkernel.]
+
+Coyotos is an orthogonally persistent pure capability system. It uses continuation based unbuffered asynchronous IPC (actually it's synchronous IPC with asynchronous syscalls).
+
+TODO: explain these terms and (more important) their consequences on system design.
+
+The coyotos microkernel specification can be found [here](http://www.coyotos.org/docs/ukernel/spec.html)
diff --git a/hurd/ng/part1ownershipandcontracts.mdwn b/hurd/ng/part1ownershipandcontracts.mdwn
new file mode 100644
index 00000000..7be1ec05
--- /dev/null
+++ b/hurd/ng/part1ownershipandcontracts.mdwn
@@ -0,0 +1,163 @@
+# <a name="Part_1_Ownership_And_Contracts"> Part 1: Ownership And Contracts </a>
+
+This is the first in a series of notes that will serve to formulate my position from ground-up. The way will not be straight-forward. I can not give you one particular, technical argument that addresses all my concerns. Instead, the evaluation involves a step of personal judgement (but only one). In this note, I will explain why I believe that this is necessarily the case, what this step is and what my stance on it is.
+
+This mail took me 5 hours to write, which means 1.5 lines per minute. It contains only a tiny part of my argument. I hope that this removes any doubts about my sincerity to address all issues, but also makes apparent the technical constraints in doing so "immediately", as has been requested from me several times. I have to ask for patience. As everybody else, I am doing this in my spare time.
+
+Let me jump right in at the technical level: I claim that every relationship between two processes falls into one of four categories. These four coarse categories provide a differentiation that is sufficient for my argument:
+
+## <a name="Process_Relationship_Categories"> Process Relationship Categories </a>
+
+* 0 - It is not possible for the processes to communicate via direct IPC.
+
+In all other categories, it is possible for the processes to communicate via direct IPC, because one of the processes, let me call it process A, has a capability to the other process, let me call it B.
+
+* 1 - The collective authority of process B, immediately[1] after the time it was instantiated, is necessarily a strict subset of the collective authority hold by process A at that time.
+
+[1] See my challenge-email to find a definition of the window of time that gives meaning to the word "immediately" in the case where process B is instantiated indirectly or directly because of an action in process A. If process B is instantiated independent of process A, just assume that the collective authority hold by process A is the empty set.
+
+* 2 - The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. Some of the capabilities in this non-empty set provide the ability to write-out.
+
+* 3 - The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. None of the capabilities in this non-empty set provide the ability to write-out.
+
+This categorization does not say anything about encapsulation. However, it is to be understood from the description that in category 0, 2 and 3, process B is encapsulated. If it were not, the collective authority that is hold by A would include the authority of B by transition. In category 1, it is to be understood that process B, in principle, can not be successfully encapsulated (to see this, pay attention to the fact that process A could pre-arrange its authority so that no capability it has provides the possibility for encapsulation).
+
+This categories provide a complete categorization for two important system structures: The EROS/Coyotos model, which relies on categories 0, 2 and 3, while making category 1 possible. And my recursive system structure model, which relies on categories 0, 1, and 2, but rejects 3.
+
+## <a name="Agenda"> Agenda </a>
+
+This provides the basis for a goal-based analysis. The agenda can be:
+
+1) It has to be demonstrated that the goals of the Hurd can be met by relying on the process relationships described by 0, 1 and 2. This of course must include an analysis of the goals of the Hurd.
+
+2) It is useful to reason about the rejection of category 3. What do we lose by omitting it? What goals can not be achieved by the Hurd if it rejects category 3?
+
+This sets the background. I will start with the second item on the list, and then work my way up. It would not be unreasonable to do it the other way around: I could state the goals of the Hurd, then demonstrate that we can achieve them by using the model I described earlier, and then look at the interaction with category 3 relationships. This would be the straighter way. However, a discussion of the goals of the Hurd can be easier followed if the background is set. So, let me finish this note with some general arguments about the properties of category 3, and what the factors can be that determine how you think about it.
+
+## <a name="Encapsulation_and_Confinement"> Encapsulation and Confinement </a>
+
+What is the exact nature of the relationship between process A and process B, where communication can (and does) occur, but process B is both encapsulated and confined? To discuss this, we have to define what we mean by the nature of process relationships. Two concepts come into my mind: Ownership and contracts. What do these words mean?
+
+In the course of the discussion, I will make use of citations from Hegel's Philosophy of Right. I am not relying on his argumentation, it is just a convenient source for some definitions, from which I want to work.
+
+## <a name="Ownership"> Ownership </a>
+
+Ownership is not a complicated concept. You can look it up in encyclopedias or dictionaries, or you can study philosophy. Hegel defines ownership this way (Paragraph 61):
+
+"Since the substance of the thing which is my property is, if we take the thing by itself, its externality, i.e. its non-substantiality --- in contrast with me it is not an end in itself (see � 42) and since in my use or employment of it this externality is realised, it follows that my full use or employment of a thing is the thing in its entirety, so that if I have the full use of the thing I am its owner. Over and above the entirety of its use, there is nothing left of the thing which could be the property of another."
+
+A shorter definition is that ownership is the exclusive right of a person to possess, use and dispose of a thing. Note that the right must be exclusive. It must also be complete. Also note that ownership refers to human beings, not things. Things can not own other things. Paragraph 42 in Hegel's work defines:
+
+"What is immediately different from free mind is that which, both for mind and in itself, is the external pure and simple, a thing, something not free, not personal, without rights."
+
+## <a name="Contracts"> Contracts </a>
+
+Hegel describes the transition from ownership to contracts in paragraph 71 this way:
+
+"One aspect of property is that it is an existent as an external thing, and in this respect property exists for other external things and is connected with their necessity and contingency. But it is also an existent as an embodiment of the will, and from this point of view the 'other' for which it exists can only be the will of another person. This relation of will to will is the true and proper ground in which freedom is existent. --- The sphere of contract is made up of this mediation whereby I hold property not merely by means of a thing and my subjective will, but by means of another person's will as well and so hold it in virtue of my participation in a common will."
+
+A contract is thus an agreement among agents to hold a property by means of a common will.
+
+## <a name="Mediating_Actors"> Mediating Actors </a>
+
+In the case of confinement and encapsulation, there are not just two agents engaging in a contract, there are three (at least). There must be three, because encapsulation and confinement means that neither the party that is encapsulated, nor the party that is confined comes to hold the other parties property. So, there must be a third agent which does hold both parties property, and which implements the common will of the participants.
+
+To find this agent, we just have to look for somebody who comes to hold the other parties property. In computer systems without "trusted computing" components, this is the owner of the machine (and/or the system administrator). In computer systems with "trusted computing" components, the mediating agent are the people or companies designing and building the "trusted computing" hardware.
+
+In either case, the mediating agent uses tools to implement the common will. In either case, the mediating agent has, not exclusive, but still quite complete ownership over the property that is part of the contract (possession, use and disposal). In either case, implementation of the common will depends on the well-behaviour of the mediating agent.
+
+## <a name="Contract_Requires_Consent"> Contract Requires Consent </a>
+
+If the mediating agent is supposed to implement the common will of the participants in a contract, it needs to know what the common will is. If a participant wants to engage in a contract, it needs to know what the contract means before the participant can make a proper judgement about participation.
+
+In the process of entering a contract, you are giving up, at least temporarily, possession of a thing you own. This is why entering a contract requires careful consideration and explicit consent.
+
+## <a name="Contracts_Are_Not_Private"> Contracts Are Not Private </a>
+
+I can not make the transition here from the rights of individuals to the structure and legitimation of civil societies. This is the subject matter of state philosophy. However, it suffices to say that the universal rights of individuals find (often, not always) expression in the laws of the civil society, and that it is civil society which is bestowed to resolve conflicts between the perceived particular rights of individuals.
+
+Because civil societies exist, and we live in them, and contracts are fundamental to the function of a society, every society has extensive and complex laws about how contracts are made, and what they can entail, and what their limitations are. The German Civil Code contains 2385 articles on 433 pages, and this is only one of the many laws that has something to say about the matter. There are other laws specific to contractual labor, anti-trust, publicly traded companies, publications, etc etc.
+
+## <a name="A_Matter_Of_Judgement"> A Matter Of Judgement </a>
+
+It is now appropriate to look again at the proposed system structures in their extremes (there are shades of gray, but they have not been seriously discussed so far).
+
+In my model, the computer remains the property of its owner. This property right is strongly protected. The system will not allow, by default, operations that let the owner unintentionally enter into a contract between two parties. Any such contract requires explicit consent. It also requires, every time that a contract is made, to explicitly choose the mediator and scope of the contract. In other words, the owner must be explicit about his particular will that should be part of the common will of the contract.
+
+In the EROS/Coyotos model employing "trusted computing", only part of the computer is the property of the owner. Another part of the computer is owned by the manufacturer of the "trusted computing" component. The system will, by design, perpetually give away possession of parts of the computer to other agents, by engaging constantly in contracts with them. The nature of these contracts is built firmly into the system structure: The mediator is always the agent that designed and implemented the "trusted computing" component. The default "common will" is to alienate all rights to the property, except the right to destroy it.
+
+These seem to me the only serious proposals. I recognize that my model makes it harder for people to engage into contracts when they want to. In my opinion, this is justified: Negotiating and implementing a contract is a fundamental process that can not be overly simplified. In fact, in any serious business, developing the contracts between collaborating agents is a very serious and essential part of the process. Business holders are acutely aware of the risks involved in engaging into a contract, and spent significant personnel and financial resources to limit their risks.
+
+There may be, in principle, a system that makes it convenient for users to engage in standard contracts selectively, explicitely and safely. For this, however, the mechanisms involved must allow for a broad range of expressions that reflects the structure of the existing society, and the user must be able to decide if the contract actually reflects the common will of the involved agents. This is far beyond what we can technically achieve, at least today, maybe forever.
+
+## <a name="On_The_Non_Technicality_Of_The_C"> On The Non-Technicality Of The Choice </a>
+
+Currently, we only know about the two possible extreme positions described above. There is an outstanding description of the properties of my model, and how they can be achieved. However, my claim is that the choice between these two options can not be made on technical grounds. Each system is self-consistent and provides an adequate solution to the task that it tries to solve.
+
+The choice therefore comes down to a personal preference, which may either be based on personal needs, or on a speculation on the future.
+
+However, let me raise some cautions that illustrate why I have made my choice the way I did. These cautions do not constitute an exhaustive list of my arguments. It is not necessary for me to give an exhaustive list. In the end, what system one would prefer to use is a personal decision that everybody has to make on their own grounds.
+
+## <a name="On_The_Effect_Of_Perpetual_Alien"> On The Effect Of Perpetual Alienation </a>
+
+Hegel remarks on the effect of perpetual alienation (my terminology) (paragraph 67):
+
+"Single products of my particular physical and mental skill and of my power to act I can alienate to someone else and I can give him the use of my abilities for a restricted period, because, on the strength of this restriction, my abilities acquire an external relation to the totality and universality of my being. By alienating the whole of my time, as crystallised in my work, and everything I produced, I would be making into another's property the substance of my being, my universal activity and actuality, my personality."
+
+He then continues to add a comparison to the nature of being a slave:
+
+"The distinction here explained is that between a slave and a modern domestic servant or day-labourer. The Athenian slave perhaps had an easier occupation and more intellectual work than is usually the case with our servants, but he was still a slave, because he bad alienated to his master the whole range of his activity."
+
+It is undisputed (I hope) that computers occupy more and more of our personal life. By doing so, they start to embody significant parts of our personality. We, as domain experts, are miles ahead of the general public in this regard, and it is our obligation to foresee such developments. By losing control over our computers, we risk losing the ability to act universally. This finds correspondence in the risk of losing general-purpose computers to [[TiVo]]-ized locked down embedded systems.
+
+## <a name="Passive_Defense_Is_Not_Sufficien"> Passive Defense Is Not Sufficient </a>
+
+The passive defense against this risk is not sufficient. You may hold the opinion that the "trusted computing" component is optional. The machine owner can switch it off, and ignore it. This is true, but it is true in the same way that people are free not to click on email attachments if they do not want to risk getting a virus. Security threats, and the risk of losing the substance of one's being is probably the biggest security threat of them all, requires active defense at all levels of the computer system.
+
+There have already been proposals for US law to require all computers to support "trusted computing", and to enforce its use when connecting to the internet. There are other methods of coercion as well. One method is to introduce a less harmful variant of control, and then change the conditions after it is widely established. Another method is the exploitation of a monopoly, or conspirations among large companies to ensure that there is no feasible alternative. Yet another method is to spread false information on how the technique will be used. All of these techniques and more have already been used, so these are not speculations, they are facts.
+
+Once you accept the loss of the substance of one's being as a security threat (I am not saying you need to accept that, but if you do, you will be able to follow my argument), all the same techniques and considerations apply to this security threat as to other security threats. And it is universally recognized (I hope) that passive defense is not sufficient in the context of active security threats.
+
+## <a name="Radical_Paradigm_Shifts"> Radical Paradigm Shifts </a>
+
+The "trusted computing" model embodies radical paradigm shifts in how some people think about ownership and contracts. Richard Stallman remarks (<http://www.gnu.org/philosophy/can-you-trust.html>):
+
+"A previous statement by the palladium developers stated the basic premise that whoever developed or collected information should have total control of how you use it. This would represent a revolutionary overturn of past ideas of ethics and of the legal system, and create an unprecedented system of control. The specific problems of these systems are no accident; they result from the basic goal. It is the goal we must reject."
+
+The idea that the agent who developed or collected information should be the sole arbitrator of how the information is used by other agents is in direct conflict with several social contracts on fair use, temporal boundaries on copyright protection, obligation to preserve information (for example audits, or evidence of a crime), and more.
+
+In short, the mediating agent (the implementors of the "trusted computing" component) is overreaching, in direct conflict to established laws. At the same time, for most people, organizations, businesses and in fact, quite a number of governments as well, the mediating agent will be unaccountable, because not only it will be represented by large companies that have assets at their disposal comparable to some of the smaller nations on the globe, but also, because the way the technology is implemented, it will be able to convincingly deny its own involvement (also, nominally, it is the only party which could have been involved in the matter at all).
+
+## <a name="On_The_Imbalance_Of_Defaults"> On The Imbalance Of Defaults </a>
+
+In the encapsulated, confined example, the confined party risks, by default, nothing, and the encapsulated party risks, by default, all the resources that is giving up temporarily, for the whole time of the contract, without any guarantee for a result.
+
+This is an imbalance of defaults from which a balanced, negotiated contract is difficult to achieve. I see no reason why it should be easier or harder to achieve a balanced, negotiated contract in either system. They start from two extremes, and the right solution is somewhere in the middle. However, my system does not contain a comparable mechanism which is imbalanced by default. Instead, every agent is in the same situation. Practically, I think that a balanced contract is more likely to be the result of equal starting conditions than from unequal starting positions.
+
+## <a name="Conservative_Choices"> Conservative Choices </a>
+
+In the above sense, my model is really ultra-conservative. The only assumption is that it is the owner of the computer who should be in control over it. This is in fact, a logical tautology. I do not make any further assumptions about what should be imposed.
+
+## <a name="The_Choice_Of_A_GNU_Generation"> </a> The Choice Of A GNU Generation
+
+If you read carefully the text by RMS on <http://www.gnu.org/philosophy/can-you-trust.html> you will find out that, although the text focusses on DRM, it really anticipates a much broader class of problems. The free software movement depends on the free software philosophy, it is its heart and soul. Even if you do not subscribe to the free software philosophy, you should be able to agree with the following statement:
+
+Every person on earth should be able to write useful computer programs and share them with their friends without fees.
+
+For this, several things are required: We must have access to hardware that obeys our command. If it doesn't, or even if it only makes it very hard, we can not write programs for it. We must have access to information about how to write useful programs. For this, we must learn, and one way to learn is to observe how the programs that our friends wrote work. Also, to write programs that are useful in the real world, we must be able to reverse-engineer other proprietary programs. We must be able to publish our own, original work unencumbered by legal problems like patents.
+
+All of these things must be easy, or otherwise our ability to do our work is in danger. In the context of this discussion, my model supports these operations easily. The "trusted computing" model puts them at such a high risk that it threatens the mere survival of free software.
+
+This is something that is very important to understand. It is highly unlikely that the GNU project would accept a technology that threatens its own survival. So, if you want to propose a use case for this technology for a GNU project, you have to demonstrate more than just that there are people who want to do this. You would have to demonstrate that the benefits compensate the risk. Because the risk is very serious and very great, the compensating benefit would have to be equally big. Because this is a GNU mailing list spawned off a GNU project with the intent to write an operating system for the GNU project, I think it is appropriate to point this out.
+
+This does not mean that I am not, personally, interested in hearing your ideas. Furthermore, and this is also important to understand, I do not believe anymore that there is a conflict between the free software philosophy and the goal of writing a secure and useful operating system. The possibility that there might be such a conflict has been a great concern of mine in the last half year. However, once I had resolved two important use cases (suid programs and cut&amp;paste), I was able to see what parts of the security infrastructure were actually important to me, and which parts I think are a separable concern. From there, it was not difficult to generalize to the above analysis of ownership and contracts.
+
+## <a name="Outlook"> Outlook </a>
+
+This then, is my motivation for closely examining how (1) my model can be technically described, and (2) what its properties are, and (3) what its justifying design principles are. This sets the agenda for upcoming mails, so let me insert a breaking point here.
+
+Thanks, Marcus
+
+----
+
+Note: this document has an [[Part1OwnershipAndContractsAddendum]].
diff --git a/hurd/ng/part1ownershipandcontractsaddendum.mdwn b/hurd/ng/part1ownershipandcontractsaddendum.mdwn
new file mode 100644
index 00000000..d64d9179
--- /dev/null
+++ b/hurd/ng/part1ownershipandcontractsaddendum.mdwn
@@ -0,0 +1,31 @@
+this is an addendum to my first note. It provides one more concern about the "trusted computing" model, an important clarification of the nature of my objection, and a retraction on the need for a new design principle.
+
+## <a name="Monoculture_Of_Service"> Monoculture Of Service </a>
+
+In the "trusted computing" model, it is suggested that all contracts, by default, use the same mediating agent. This introduces a single point of failure into the system architecture. It also concentrates social and political power into the hands of the mediating agent, which can (and will) be abused.
+
+In my model, all contracts have to be established explicitely, and there is no default mechanism. This will naturally cause people to choose a variety of contracts. For example, many contracts do not require a mediating agent at all, but the common will can be implemented by either of the involved parties. Often, there already is a suitable, local mediating agent available.
+
+## <a name="Quantitative_Differences_Cause_Q"> Quantitative Differences Cause Qualitative Differences </a>
+
+My main objection is thus that the pervasive use of the confined+encapsulated design pattern in the system architecture leads to a new qualitative difference between the systems. Every single contract in isolation may appear innocent. Their sum creates emerging behaviour that I consider a threat.
+
+It is an open question to me if the individual contracts indeed are innocent. In every civil society, there are some contracts that are invalid, even if you sign on to them. Some rights are well-recognized as inalienable. If such an inalienable right is contained in the confined+encapsulated design pattern or not is a difficult question that requires a much more careful analysis than I have attempted so far.
+
+However, even if every such individual contract is innocent, my objection still stands, because it is grounded not in the nature of the individual contract, but in the cummulative effect if it is used pervasively in the system architecture.
+
+In fact, it is not hard to see that if we take an individual contract of the confined+encapsulated sort, it can be straightforwardly implemented in my model with only one requirement beyond what I have already planned for: The user would need to be able to create a space bank that provides encapsulation. (Some more features are required to make it possible to create such services automatically without human inspection, but that is a minor point). However, the presence of this feature is a local property of the system architecture, not a global property.
+
+It is thus difficult for me to understand why it has been argued that not using this form of contract in the system architecture constitutes a de-facto ban of the ability to engage in such a contract. Quite the opposite, I think that engaging in such a contract is very well possible with only local, non-intrusive changes to the operating system to support some very specific functions. Maybe (I have not analyzed this) it does not make sense to engage in only one such contract with limited scope, maybe the very nature of the contract requires its pervasive use in the system architecture. If this is true (again, I do not know if this is true or not), this could be a first indication that this particular form of contract is not as innocent as it appears.
+
+## <a name="A_New_Design_Principle_"> A New Design Principle? </a>
+
+I have suggested before that I have formed a new design principle that provides a taxometer for the use of the confined+encapsulated design pattern. However, after having written my note I do not think that a new design principle is necessary.
+
+The only decision that has to be made is if the risk of losing the "substance of ones being", as it applies to the realm of one's computers, is a security threat or not. The rest follows quite logically from standard principles on how to design secure operating systems.
+
+The substance of my argument can thus be summarized in four simple words:
+
+**Ownership must be secured**.
+
+Thanks, Marcus
diff --git a/hurd/ng/part2systemstructure.mdwn b/hurd/ng/part2systemstructure.mdwn
new file mode 100644
index 00000000..0f94ff2a
--- /dev/null
+++ b/hurd/ng/part2systemstructure.mdwn
@@ -0,0 +1,122 @@
+This is part 2 in a small series of notes explaining my opinion on what is a good system structure for the Hurd. While the ideas in part 1 motivate the system structure presented here, the feasibility of this system structure in turn justifies my opinion as presented in part 1. However, either part can also be taken individually. There will probably not be a third part.
+
+# <a name="Part_2_System_Structure"> Part 2: System Structure </a>
+
+I will start with presenting the process hierarchy, explain some abstract design patterns, and then show some specific applications.
+
+Note that within this document, I will limit myself to certain types of operations and features. This does not mean that the system itself, by design, contains any measures to forbid or ban other types of operations.
+
+## <a name="Process_Hierachy"> Process Hierachy </a>
+
+A process is a protection domain. The initial configuration of the machine contains one or more processes with specific, but unspecified, relationships. These processes are called the "root processes". From the initial configuration, processes can be created and destroyed.
+
+## <a name="Resource_Management"> Resource Management </a>
+
+I do not make a disctinction between data and capability pages. Both are, for the course of this discussion, memory pages.
+
+Processes require at the very least some memory resources to keep the process state. Memory is allocated from containers, which therefore provide an abstraction for memory reserves. It is required that one of the root processes is a server implementing container objects.
+
+A container provides an interface that allows to allocate and return memory frames, and to create new containers with a new reserve limit (thus, containers form a hierarchy). Any successful allocation and deallocation from such a derived container will also be accounted for in all containers from which it is derived. A container can be destroyed, which will return all memory frames allocated from it, and thus recursively destroy all containers derived from it as well.
+
+## <a name="Process_Creation_And_Destruction"> Process Creation And Destruction </a>
+
+Any process which has access to a container from which a sufficient amount of memory can be allocated, can convert this memory into a process. The process is destroyed by deallocating the memory from which it was created.
+
+## <a name="Filling_In_the_Gaps"> Filling In the Gaps </a>
+
+The above description is actually mostly complete. What is missing is the description of a somewhat unrelated feature which allows process identification, a description of what the default mechanisms are in the system to support common design patterns, and an illustration that these design patterns are sufficient.
+
+## <a name="Canonical_Invariances"> Canonical Invariances </a>
+
+By default, every process is associated with one memory container, the primary container of the process. This is the container from which the process is allocated, and from which the process does all allocations for its own needs. Primary containers are by default not shared.
+
+## <a name="Canonical_Process_Creation"> Canonical Process Creation </a>
+
+To create a new process, by default, a process, the parent, creates a new container from its primary container, allocates some memory from it and converts it into a new process, the child. It then prepares the process to get it into a runnable state. This includes the following steps: First, a special executable image (allocated from the primary container of the child) is installed into the child's address space, which runs a cooperative protocol with the parent. Then, the parent provides the primary container of the child, and any other initial state that the child should receive, to the startup code. The startup code finally installs this initial state and starts to execute it.
+
+It is clear from this description that the child's existance is completely determined by the parent.
+
+## <a name="Canonical_Process_Destruction"> Canonical Process Destruction </a>
+
+Process destruction can be done either cooperatively, or forcibly. The
+difference corresponds approximately to the difference between SIGTERM and
+SIGKILL in [[Unix]]. To destroy a process cooperatively, a request message is
+sent to a special capability implemented by the child process. The child can
+then begin to tear down the program, and at some time send a request back to
+the parent process to ask for forced process destruction.
+
+Forced process destruction can be done by the parent process without any cooperation by the child process. The parent process simply destroys the primary container of the child (this means that the parent process should retain the primary container capability).
+
+Because container destruction works recursively, forced process destruction works recursively as well.
+
+## <a name="Process_Hierarchy"> Process Hierarchy </a>
+
+From the above description it should be clear that containers and processes are organized in the same hierarchical tree structure, where every node corresponds to a process and its primary container, and every edge corresponds to a parent-child relationship.
+
+## <a name="Isolation"> Isolation </a>
+
+The ability to subdivide the container's resource reserves provides the ability to completely isolate sibling processes in the process hierarchy. By default, two processes, where neither is an ancestor of the other process, are completely isolated. Also, an ancestor is partially isolated from its child. To overcome this isolation, the two processes need the cooperation of at least all their respective ancestors up to the first common ancestor in the tree. An example should illustrate that:
+
+ A
+ / \
+ B C
+ / \
+ D E
+
+In this picture, A is the direct parent of B and C, and C is the direct parent of D and E. A is a common ancestor of B, C, D and E. C is a comon ancestor of D and E. The isolation is by default complete between (B C), (B D), (B E), and (D E). There is partial isolation between (A B), (A C), (A D), (A E), (C D) and (C E). The isolation properties of A are, if it is a root node, defined by the initial configuration.
+
+If, for example, B and D should be able to communicate, the explicit or implicit permission needs to be provided by both A and C.
+
+## <a name="Confinement"> Confinement </a>
+
+Because of the recursive nature of the process hierarchy, and because the existance of a child is completely determined by its direct parent (which existance is completely determined by _its_ direct parent, etc), processes can be confined, and the confinement extends to all their child processes as well.
+
+In the above example, A confines B, C, D and E. C confined D and E. Thus, B and C are only confined by A, whereas D and E are confined by A and C.
+
+## <a name="Meaning_Of_Words_Such_As_Secure_"> Meaning Of Words Such As Secure, Want, External, etc </a>
+
+Because the existance of a child process is completely defined by its parent, its understanding of what is secure, what its needs are, what is "external" to itself and what is internal, etc, is completely defined by the parent as well. It therefore does not make sense to object to the above model by claiming that the child can not do what it wants to do, because what the child wants to do is completely defined by the parent, as are its abilities to do it. It also does not make sense to object that the child can not determine if a capability it got from the parent is safe to use, because it is the parent which defines for the child if a capability is safe to use or not.
+
+Any such objection has, at its root, some assumption that is different from the assumptions made in this model, and thus needs to be analysed and reasoned about outside of the model.
+
+## <a name="Identify_Operation"> Identify Operation </a>
+
+An branding operation exists which, at the micro-level, allows a server process to check if a certain capability is implemented by itself. The server can then provide an identify operation to its clients, which allow the clients to check with the server if a certain capability is implemented by it. The client can then refuse to use the capability if it is not authentic.
+
+## <a name="Applications"> Applications </a>
+
+I will now describe some common applications that need to be supported, and how they can be supported in the above system structure. To make this brief, I only include applications that have any significance in the confined+isolated discussion. There are other applications (pipes, daemonization, process management), which are important to discuss, but can be solved in identical ways in both types of system structures, so I am excluding them here.
+
+## <a name="System_Services"> System Services </a>
+
+[[Unix]]-style suid applications have been proposed as one application for
+alternative process construction mechanisms. However, suid applications in
+Unix are, from the perspective of the parent, not confined, only isolated.
+Thus, they are readily replaced by a system service that is created by the
+system software, and that runs as a sibling to any user process. Only the
+ability to invoke the system service needs to be given to the user, not the
+ability to instantiate it.
+
+In fact, no gain can derived from letting the user instantiate system services. In Unix, system services run on durable resources, which the user can not revoke. Thus, the system service needs to acquire its resources from a container that is not derived from the user's primary container.
+
+## <a name="Cut_amp_Paste"> Cut &amp; Paste </a>
+
+In "[Design of the EROS Trusted Window System](http://www.eros-os.org/papers/usenix-sec2004.ps)", Shap et al describe a uni-directional communication mechanism that can be used for a cut&amp;paste operation in a window manager, that is guaranteed to not allow backflow of information. The main challenge to do this is format conversion, which traditionally requires negotiation between the two parties. In the mechanism proposed, confined constructors are used to allow the sending party to provide format converters that can be used by the receiving party to convert into a format it understands.
+
+I think that in the context of a free software operating system, and considering the threat caused by proprietary document formats, it is fully sufficient and in fact appropriate for our needs to replace this mechanism with one in which the format converters are not provided as isolated programs, but where instead at least the binary image of the format converter is provided in read-only fasion to the receiver.
+
+Accepting this means, in practice, that in the proposed protocol, the format converter constructor capability can be replaced by the vector of capabilities, which must be transitive read-only, which is put into the constructor by the sending party before sealing. The sending party then can instantiate these programs itself.
+
+This alternative mechanism breaks with the principle of least authority, because it values other principles with a higher priority.
+
+## <a name="Suspicious_Collaboration"> Suspicious Collaboration </a>
+
+Two agents in the system can collaborate suspiciously by means of a third agent. In the process, they rely on the third agent to implement the common will. This third agent can even be a constructor-like service. The validity of the service can either be established by the abovely described "Identify" operation, or, in principle, if the underlying operating system exposes the functionality of a "trusted computing" component, the two agents can even get all the guarantees and restrictions imposed by such a component. There is nothing in the system structure above that can prevent this[1]. The changes needed in the underlying operating system are purely local changes with no effect on the overall system structure.
+
+[1] I should add here that my analysis is limited to technical constraints. There may be further legal constraints imposed by software licenses such as the upcoming GPL v3, which draft has an anti-DRM provision.
+
+I said earlier that this makes it hard for me to understand why it has been said that the above system structure constitutes a "ban" on this mechanism. I believe, without having inquired further, that the reason must be that the suspicious collaboration in the above sense is a contract with limited scope. Any information that is passed from the mediating agent to either of the two parties will subsequently not be controlled further. This is in fact always true. The only difference is what the scope of the mediating agent is.
+
+In "locked down" computer systems, the mediating agent has a scope that extends to all of the operating system. For example, the window manager would be part of the mediating agent, and conspire with other components to not allow some information displayed to be read out or modified. Or it could reduce the quality of the information if such a read out occurs (as is required by HDCP licenses, for example). In the danger of repeating myself here, the differences that surfaced in the discussion are probably rooted in the issue of scope. The scope problem is not visible under a microsope, but is only revealed as emergent behaviour by a macroscopic analysis of the resulting system.
+
+Thanks, Marcus
diff --git a/hurd/ng/pathmax.mdwn b/hurd/ng/pathmax.mdwn
new file mode 100644
index 00000000..1ea337e9
--- /dev/null
+++ b/hurd/ng/pathmax.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00038.html> and [Vulnerabilities in Synchronous IPC Designs](http://citeseer.ist.psu.edu/shapiro03vulnerabilities.html)
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/permissionbits.mdwn b/hurd/ng/permissionbits.mdwn
new file mode 100644
index 00000000..eac00057
--- /dev/null
+++ b/hurd/ng/permissionbits.mdwn
@@ -0,0 +1,3 @@
+TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00231.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/philosophy.mdwn b/hurd/ng/philosophy.mdwn
new file mode 100644
index 00000000..1f952017
--- /dev/null
+++ b/hurd/ng/philosophy.mdwn
@@ -0,0 +1,8 @@
+Markus Brinkmann made the effort to sketch precisely the principles that motivate his choices about the design of the new Hurd, and particularily those affecting user freedom.
+
+This effort has led to a text in two parts:
+
+* [[Part1OwnershipAndContracts]] ([[Part1OwnershipAndContractsAddendum]])
+* [[Part2SystemStructure]]
+
+See also further commentary made on the l4-hurd list: <http://lists.gnu.org/archive/html/l4-hurd/2006-08/msg00123.html>
diff --git a/hurd/ng/position_paper.mdwn b/hurd/ng/position_paper.mdwn
new file mode 100644
index 00000000..abc781da
--- /dev/null
+++ b/hurd/ng/position_paper.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Neal Walfield and Marcus Brinkmann wrote a paper titled [*Improving Usability
+via Access Decomposition and Policy
+Refinement*](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf)
+where they give an overview about how a future, subsequent system may be
+architected. This is sometimes referred to as *the position paper*.
diff --git a/hurd/ng/powerbox.mdwn b/hurd/ng/powerbox.mdwn
new file mode 100644
index 00000000..412d16d3
--- /dev/null
+++ b/hurd/ng/powerbox.mdwn
@@ -0,0 +1,19 @@
+# <a name="The_Powerbox"> The Powerbox </a>
+
+## <a name="Rationale"> Rationale </a>
+
+In a [[CapabilityBasedMicrokernel]], an application might be used with the very minimal set of capabilities that is needed to execute it, that is read-only access to it's libraries and files, plus maybe access to a specific IP connection or configuration directory.
+
+Thus when the user asks to open or save a file, the dialog used to choose the file could also serve the purpose of granting the appropriate capabilities to the application.
+
+This dialog is named the powerbox.
+
+## <a name="Links"> Links </a>
+
+* [Plash powerbox](http://plash.beasts.org/powerbox.html)
+* [E and Cap Desk](http://www.combex.com/tech/edesk.html)
+* [Polaris: Toward Virus Safe Computing for Windows XP](http://www.hpl.hp.com/personal/Alan_Karp/polaris.pdf)
+* [The E Language in a Walnut](http://www.skyhunter.com/marcs/ewalnut.html#SEC45) - search for "Powerbox Capability Manager"
+* [The Darpa Browser](http://www.combex.com/papers/darpa-report/html/index.html) - see Appendix 5
+
+-- [[Main/NowhereMan]] - 28 Apr 2006
diff --git a/hurd/ng/requirementsforuser.mdwn b/hurd/ng/requirementsforuser.mdwn
new file mode 100644
index 00000000..d23221c3
--- /dev/null
+++ b/hurd/ng/requirementsforuser.mdwn
@@ -0,0 +1,59 @@
+Requirements for the user tell what a computer system should look like from a user's perspective. Here are three of such requirements:
+
+* Awareness
+* Security
+* Flexibility
+
+# <a name="Requirements"> Requirements </a>
+
+<a name="AwarenessRequirement"></a>
+
+## <a name="Awareness"> Awareness </a>
+
+The user must know what the operations are he can perform in the operating system. He must also know about their consequences and relevant side effects, and what the possible results are. At any point where the system can not make the right decision automatically, the user must have the ability to influence the path chosen.
+
+----
+
+**Awareness means that the user knows what happens.**
+
+----
+
+<a name="SecurityRequirement"></a>
+
+## <a name="Security"> Security </a>
+
+The user must be sure that his actions have predictable consequences, even in the presence of actively hostile influence. If there is a component in the system that the user can not control, the user must be able to contain its impact, either by simply ignoring it (shielding), or by imposing restrictions (confinement).
+
+----
+
+**Security means that the user controls what can happen _to_ his resources.**
+
+----
+
+<a name="FlexibilityRequirement"></a>
+
+## <a name="Flexibility"> Flexibility </a>
+
+The user must have a range of options available that support him to achieve an arbitrary but well-defined goal that can be stated within the legitimate resources the user controls.
+
+----
+
+**Flexibility means that the user controls what can happen _with_ his resources.**
+
+----
+
+# <a name="Relationships"> Relationships </a>
+
+For me, Awareness is a requirement for both, security and flexibility. The options that are presented to the user must be meaningful and clear to him. Otherwise, how is he in a position to make a decision where the system can't? This does not mean that the user must be aware of every detail that goes on, but he must be aware of the higher-level consequences of all actions (and non-actions) that he performs.
+
+I don't know about you, but everytime some dialog box in an application I use for the first time asks me if I want to babble-gabble the froob through the bibskadenga, I just click on the biggest of the buttons presented, or the one with the nicest color, and hope for the best. So, "Awareness" is just a basic usability requirement.
+
+Security ensures that the action the user can undertake never have so dramatic consequences that the user loses control over his session and associated resources, at least not without explicitely and consciously requesting it (note that Awareness is required here).
+
+A flexible system will not achieve these goals simply by restricting the users ability to perform his tasks. It will offer the broadest range of alternatives possible, without compromising the other goals.
+
+----
+
+Adapted from:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html>
diff --git a/hurd/ng/setuidvsconstructor.mdwn b/hurd/ng/setuidvsconstructor.mdwn
new file mode 100644
index 00000000..87cce8df
--- /dev/null
+++ b/hurd/ng/setuidvsconstructor.mdwn
@@ -0,0 +1,6 @@
+TBD, see e.g.:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00167.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00203.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/sharedlibraries.mdwn b/hurd/ng/sharedlibraries.mdwn
new file mode 100644
index 00000000..d4969420
--- /dev/null
+++ b/hurd/ng/sharedlibraries.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-12/msg00034.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/systemstructure.mdwn b/hurd/ng/systemstructure.mdwn
new file mode 100644
index 00000000..ef069edd
--- /dev/null
+++ b/hurd/ng/systemstructure.mdwn
@@ -0,0 +1,3 @@
+TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00324.html>
+(thread). Also, note that this is derived from [[Philosophy]]. See the
+interface spec and the [[position_paper]] as well.
diff --git a/hurd/ng/thepolycastinterface.mdwn b/hurd/ng/thepolycastinterface.mdwn
new file mode 100644
index 00000000..702364cf
--- /dev/null
+++ b/hurd/ng/thepolycastinterface.mdwn
@@ -0,0 +1,52 @@
+# <a name="The_Polycast_Interface"> The Polycast Interface </a>
+
+## <a name="Introduction"> Introduction </a>
+
+In the current Hurd, all fs objects implement both directory and file methods. This means every program that accesses a file object has to decide whether to treat it as a file or a directory. This is no problem for programs that only know about files or directories, but there is a wide range of programs that understand both files and directories simultaneously (e.g. rm -R), and they are confused when they see objects that are files as well as directories. This causes erratic behaviour. For example, "grep \*" will search through the binary content of directories (because it treats them as files).
+
+Sometimes, the file and directory interface are refered to as \`\`facets'' of the object.
+
+## <a name="The_Problem"> The Problem </a>
+
+The problem is **much** worse than it might look like. Consider the case where one translator might reasonably implement two or more file interfaces, like a translator that simultaneously presents a .tar.bz2 file view, a .tar.gz file view and a directory view. Then you have a fundamental semantic issue:
+
+_A method call in isolation has no meaning. It can only be interpreted in the context of a particular interface._
+
+## <a name="A_Solution"> A Solution </a>
+
+The solution is simple: whenever a method is invoked, the interface has to be known. This implies two things: a) we do not use multiple inheritance and b) support for some sort of \`\`casting'' is needed. For illustration, look at the inheritence graph for an object that provides both directory and file methods:
+
+ file dir
+ \ /
+ dir_file
+
+This graph can be converted into one using only single inheritence:
+
+ poly_type
+ \ /
+ file dir
+
+Where **poly\_type provides the methods get\_supported\_types() and get\_facet(type) for casting: get\_supported\_types returns a list of types which this object can be viewed as. get\_facet returns a new object with a new type, but the object is, at the server side, intimately related to the original object with the original type**.
+
+To give another example: the translator that provides .tar.bz2, .tar.gz and dir views would use the following inheritance graph:
+
+ poly_type
+ / \
+ file dir
+ / \
+ tbz_file tgz_file
+
+tbz\_file and tgz\_file do not provide new methods, they exist only to distinct interfaces.
+
+## <a name="Usability_Considerations"> Usability Considerations </a>
+
+In order for the polycast interface to be useful, it has to work together with legacy applications (that are unaware of it). As either the [[PowerBox]] or the shell grant authority to applications, there can be some private agreement between the user and these components on how to express different interfaces of objects. For example foo:as\_dir could designate the directory facet of objecte foo. Also, different interfaces could be bound to different different names (either automatically or explicitely)
+
+----
+
+see also:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00002.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00003.html>
+
+-- [[TomBachmann]] - 30 Apr 2006
diff --git a/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn b/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn
new file mode 100644
index 00000000..4eeef6ee
--- /dev/null
+++ b/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn
@@ -0,0 +1,78 @@
+# <a name="About_this_page"> About this page </a>
+
+This page compares trivial confinement, the constructor mechanism, and POSIX fork(). First there is a short description of the process, then there is a discussion about the differences.
+
+This comparison is about a simple situation: there is a parent process P, which wants to spawn a child process C. We assume that P holds capabilities A and B. The end result should be that C holds a copy of A, but not of B.
+
+# <a name="Trivial_Confinement"> Trivial Confinement </a>
+
+For trivial confinement, there is a system call to create a process from some memory pages. P performs the following steps:
+
+* Allocate some memory and put the code image of the child into that memory. This can be done by P, or for example by the file system which then gives the resulting memory (space bank) to P.
+* Perform the system call on that memory. The result is a capability to C.
+* Send A to C using the returned capability.
+
+Note that it is up to the implementation of the system what happens with P's access to the memory which holds the child. For example, it is probably a good idea if it is at least unmapped, so it cannot accidentily write things in it. It could even be revoked, so that it can't write things in it, even if it wants to.
+
+# <a name="Constructor"> Constructor </a>
+
+With the constructor mechanism, there are programs running on the system for the purpose of starting new programs. This means that the process is split in two steps. They need not be performed by the same party, in fact they often aren't. So there are two parents, P1 and P2. The first step:
+
+* P1 sends a message to the meta-constructor M (a constructor to create new constructors) sending it the code image for the child (and due to the limitation of this discussion, no initial capabilities).
+* In respose, M creates a C-constructor and passes a capability to it to P1.
+
+The second step:
+
+* P2 somehow receives a copy of the capability to the C-constructor.
+* P2 uses the capability to tell the C-constructor it should build a new process. It provides memory and processor time for the purpose.
+* The C-constructor uses a method similar to Trivial Confinement to actually create C. It passes the capability C back to P2 as a reply to the capability invocation.
+* P2 passes A throught the returned capability to C.
+
+This mechanism is targeted at a specific use pattern, namely that a process is created once, and then spawned many times.
+
+# <a name="POSIX_Fork"> </a> POSIX Fork
+
+POSIX fork, or rather fork+exec, is how things are done on many current systems. It may be insightful to see it included in the comparison, especially for people who are new to the subject. There are two system calls, fork and exec. Fork will create a clone of the current process, including all the capabilities (that is, file descriptors) of the parent (except the ones which have explicitly been excluded). Exec is a system call which really goes to the filesystem, not the kernel (although on systems which use it, the filesystem usually resides in the kernel), and asks it to spawn a new process from the contents of a certain path in place of the caller. This passes all capabilities to the new process. The procedure is:
+
+* P calls fork(), creating P'.
+* P' drops B.
+* P' calls exec(), turning P' into C.
+
+# <a name="Fork_vs_the_others"> Fork vs the others </a>
+
+Fork is bad. The following text should convince the reader that we do not want to use fork. If it fails to do so, please write your reply to <l4-hurd@gnuNOSPAM.org>. We can then improve this text, either by using better arguments, or by saying that fork is acceptable after all. :-)
+
+First of all, it must be clear that we are using a capability-based system. This offers a lot of security that POSIX doesn't have. The actual solution presented below doesn really work on POSIX, because C can simply reopen all the files. After all, it is running as the same user, with all the same rights, as P. This is not the case in a capability based system. Every process needs a capability to do things. The closest to the POSIX concept of a "user" is a bunch of capabilities to all objects that the user is allowed to handle. However, even if P has all those capabilities, that doesn't mean C does as well. So for example, if P doesn't give a capability to the user's home directory (and it probably will not do that indeed, but it'll give a private part instead which C can use for files), then C cannot get access to the files in there. And so in particular, if P has a capability to ~/.ssh/id\_dsa, and it doesn't give it to C, then C cannot simply call open and get the capability from there, because the file isn't in its file system.
+
+The big difference between fork and the other options is capability B. B is a private capability of P. P does not want it to be passed anywhere. In all cases this is achieved. However, fork needs to be explicit about this. If P (or actually P') forgets to drop B, everything will still work (C didn't use B anyway). However, if C contains a security bug and is taken over by a cracker, then that cracker has access to B. This means that due to a simple mistake, the concequences of a compromised C are bigger than they need to be. This problem is of course even bigger if C is untrusted code in the first place, because it doesn't even need to be "taken over" then, it may simply be malicious.
+
+In contrast, the other two options don't pass anything by default. If there is a similar mistake there, they would forget to pass A to C. That will soon be noticed, because C actually needs A (otherwise it shouldn't receive it). So C will fail to work. This will quickly be fixed, resulting in a better program.
+
+## <a name="Solving_the_problem"> Solving the problem </a>
+
+The problem of fork+exec can be solved. It is if the default would be to not pass capabilities to the new process, but specify a list of capabilities that it should keep, or (like in the other cases) pass them over a new channel which is implicitly created during the fork. However, in that case the only difference with trivial confinement is that P' dies in the process (and thus must be created to prevent P from dying). Almost any use of exec is in practice preceded by a fork for this purpose. It would be easier to make trivial confinement the default operation and let P die directly after it in the rare case that it should.
+
+The only reason for continuing to use fork+exec would be that it is what existing programs do. However, they break anyway if they need to specify which file descriptors to pass. So they need to be adapted. Therefore, it's better to make the usual spawning method the primitive one, and emulate the other.
+
+# <a name="Trivial_Confinement_vs_Construct"> Trivial Confinement vs Constructor </a>
+
+Note: the following has not been extensively discussed on the mailing list, and no consensus has been reached AFAIK. This is the personal opinion of Bas Wijnen.
+
+The difference between trivial confinement and the constructor is one of control. With trivial confinement, P is in full control of the process (and since P is under full control of its own parent, that parent also fully controls C, and the parent's parent as well, etc. Note that the chain of parents is usually short). For example, if P is a debugger, it could choose to put some breakpoints into C before starting it. With the constructor, this control lies with P1. However, P2 is likely the one who will want to use the debugger. The constructor is explicitly designed to allow this type of control by the programmer (or system administrator) over the user.
+
+In the Hurd we want to enable the user to do these sort of things. We specifically don't want the administrator to use such control. So we do not need to provide the means for it in our system. (Note that not using a constructor doesn't actually guarantee that this kind of control is impossible.)
+
+Except for the control, there is really only one other difference, and that's address space separation. The constructor puts the code for process spawning into its own address space. This means that it cannot be corrupted by broken programs. Extending this principle would mean that every library call should be turned into a server which performs the operation for you. This is however also what trivial confinement does to a large extent anyway.
+
+What it doesn't do is protect the code image against bugs in P. In the constructor the trusted and well-tested constructor code is handling the image, for trivial confinement the (very possibly) buggy program P. In particular, when starting a program from a file system, with trivial confinement the operation is:
+
+* Ask the file system for the code, receive a capability to a space bank with a copy (on write) of it.
+* Make the system call to turn it into a program.
+
+Now this isn't much more complicated than the constructor which does:
+
+* Ask the filesystem (which the constructor is part of) to spawn a new process.
+
+Therefore I am not so convinced that we want a constructor. It gets in the way of debugging, for example, and it doesn't really give any gain.
+
+-- [[BasWijnen]] - 13 Jun 2006
diff --git a/hurd/ng/usecaseprivatekeys.mdwn b/hurd/ng/usecaseprivatekeys.mdwn
new file mode 100644
index 00000000..3cb65af2
--- /dev/null
+++ b/hurd/ng/usecaseprivatekeys.mdwn
@@ -0,0 +1,17 @@
+_Private Keys_ as used by SSH servers, clients and generally by any cryptographic software need to be stored and manipulated securely. These may get replaced with smartcards soon, but in the mean time it appears to be an interesting use case.
+
+All [[Unix]] systems that I am aware of do not allow secrets to be protected in
+a manner that I would feel is appropiate. A users compromised web browser
+could either read your private key file or talk to the very popular ssh-agent
+program and get your secrets out (not sure how popular distributions are
+configured, but it can be done).
+
+The requirements so far are:
+
+* The secrets should not be available to general programs
+* The ability to use secrets for their intended purpose (signing/encryption/decryption/ssl streams)
+* Programs using decrypted data should be, by default, confined so that the data can't escape
+* Must be able to backupand restore secrets securely
+* Upgrading the agent software must be possible! using the backup/restore mechanism?
+
+-- [[Main/SamMason]] - 11 Jan 2007
diff --git a/hurd/ng/usecaseuserfilesystem.mdwn b/hurd/ng/usecaseuserfilesystem.mdwn
new file mode 100644
index 00000000..4e4fdf35
--- /dev/null
+++ b/hurd/ng/usecaseuserfilesystem.mdwn
@@ -0,0 +1,14 @@
+### <a name="User_Loadable_Filesystems"> User Loadable Filesystems </a>
+
+These appear as _translators_ in the current Hurd and something similar needs to appear in the next hurd.
+
+* The user should be able to dynamically add and remove translators
+* For some reason it seems appropiate to have seperate namespaces (VFS's) for each user (this is quite a departure from [[Unix]]. [[SamMason]])
+* translators can be used to expose the structure of an archive file
+* translators can be provide access to remote file systems
+
+Anything else?
+
+Probably not something we want to worry about now; but I'm guessing that the semantics of the new kernel will be sufficently different from Mach that some rewriting of the existing translators will be needed. From a pragmatic point of view it would be _nice_ if there wasn't too much change.
+
+-- [[Main/SamMason]] - 11 Jan 2007
diff --git a/hurd/ng/whatisacapability.mdwn b/hurd/ng/whatisacapability.mdwn
new file mode 100644
index 00000000..f3a42dd8
--- /dev/null
+++ b/hurd/ng/whatisacapability.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g.: <http://www.eros-os.org/essays/capintro.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
diff --git a/hurd/ng/whatisaconstructor.mdwn b/hurd/ng/whatisaconstructor.mdwn
new file mode 100644
index 00000000..583babe9
--- /dev/null
+++ b/hurd/ng/whatisaconstructor.mdwn
@@ -0,0 +1,6 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00157.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00056.html>
+
+-- [[TomBachmann]] - 16 May 2006
diff --git a/hurd/ng/whatisaspacebank.mdwn b/hurd/ng/whatisaspacebank.mdwn
new file mode 100644
index 00000000..607501db
--- /dev/null
+++ b/hurd/ng/whatisaspacebank.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g. <http://eros-os.org/design-notes/SpaceBank.html> or <http://eros-os.org/papers/shap-thesis.ps>
+
+-- [[TomBachmann]] - 31 Aug 2006
diff --git a/hurd/ng/whatsinagroup.mdwn b/hurd/ng/whatsinagroup.mdwn
new file mode 100644
index 00000000..219f4ed0
--- /dev/null
+++ b/hurd/ng/whatsinagroup.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2006-03/msg00001.html>
+
+-- [[TomBachmann]] - 20 Jun 2006
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..2fac456e
--- /dev/null
+++ b/hurd/porting/system_api_limitations.mdwn
@@ -0,0 +1,31 @@
+[[!meta copyright="Copyright © 2003, 2004, 2005, 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]]."]]"""]]
+
+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
+
+**_[[nice() doesn't work|open_issues/nice_vs_mach_thread_priorities]]_**.
+
+**_[\#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
new file mode 100644
index 00000000..9337b784
--- /dev/null
+++ b/hurd/reference_manual.mdwn
@@ -0,0 +1,18 @@
+[[!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
+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 GNU Hurd Reference Manual* documents the architecture, the usage and the
+programming of the GNU Hurd. At the moment, the manual is quite incomplete.
+
+ * [HTML version](http://www.gnu.org/software/hurd/doc/hurd_toc.html) for
+ browsing online,
+ * [PostScript version](http://www.gnu.org/software/hurd/doc/hurd.ps)
+ [1020KiB, 91 pages].
diff --git a/hurd/running.mdwn b/hurd/running.mdwn
new file mode 100644
index 00000000..f0058625
--- /dev/null
+++ b/hurd/running.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+There are several different ways to run a GNU/Hurd system:
+
+* [[Distrib]] - Distributions based on the Hurd
+* [[microkernel/mach/gnumach/ports/Xen]] - In Xen
+* [[Live_CD]]
+* [[QEMU]] - In QEMU
+* [[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..9786d144
--- /dev/null
+++ b/hurd/running/arch_hurd.mdwn
@@ -0,0 +1,21 @@
+[[!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"]]
+
+Arch Hurd is a port of Arch Linux to the GNU Hurd, founded on 2010-01-04 by Michael Walker (Barrucadu) and, with input from a variety of people including Alan McRae (allan), Matthias Lanzinger (melpo), and Alexander Preisinger (giselher), the project has made excellent process. There is a livecd available on the Arch Hurd website, with which you can try or install Arch Hurd.
+
+### Links
+
+* Official Website: <http://www.archhurd.org>
+* Installation Guide: <http://wiki.archhurd.org/wiki/Installation_Guide>
+* Mailing Lists: <http://lists.archhurd.org>
+* Forum: <http://bbs.archhurd.org>
+* IRC: #archhurd on irc.freenode.net
diff --git a/hurd/running/bee.mdwn b/hurd/running/bee.mdwn
new file mode 100644
index 00000000..f5eb132c
--- /dev/null
+++ b/hurd/running/bee.mdwn
@@ -0,0 +1,6 @@
+[Bee GNU/Hurd](http://bee.es.gnu.org/)
+
+Castellano distribution, pkgsrc package based. [[BochsEmulator]] image
+available too. They have their own
+[wiki](http://es.gnu.org/cgi-bin/beewiki.pl?Wiki_Bee_GNU) and a [mailing
+list](http://bee.es.gnu.org/?p=mail&amp;l=en) (no archive).
diff --git a/hurd/running/debian.mdwn b/hurd/running/debian.mdwn
new file mode 100644
index 00000000..97d35bd7
--- /dev/null
+++ b/hurd/running/debian.mdwn
@@ -0,0 +1,28 @@
+[[!meta title="Debian GNU/Hurd"]]
+
+### 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)
+- [[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/CDNotesHome.mdwn b/hurd/running/debian/CDNotesHome.mdwn
new file mode 100644
index 00000000..a154415b
--- /dev/null
+++ b/hurd/running/debian/CDNotesHome.mdwn
@@ -0,0 +1,7 @@
+Charles, here's a place for you! As usual, you can find [more information here](http://www.debian.org/ports/hurd/hurd-cd). Past notes may be of help as well.
+
+----
+
+It seems the building of the CDs is being passed to the University of Calicut. [Re: latest ISO images](http://lists.debian.org/debian-hurd/2007/07/msg00095.html) K 14 is the latest stable, L1 is the development version.
+
+-- [[Main/GrantBow]] - 24 Jul 2007
diff --git a/hurd/running/debian/CrossInstall.mdwn b/hurd/running/debian/CrossInstall.mdwn
new file mode 100644
index 00000000..1cde150c
--- /dev/null
+++ b/hurd/running/debian/CrossInstall.mdwn
@@ -0,0 +1,76 @@
+## <a name="Easy_install_with_CrossHurd"> Easy install with CrossHurd </a>
+
+Qurious about the Hurd? Have a 1-5 GiB partition free? Let's install GNU/Hurd on it!
+
+### <a name="Preparing_the_partition"> Preparing the partition </a>
+
+We'll assume you have a partition ready, for the sake of argument we use an example here: /dev/hda3 is the Hurd partition (type: Linux) and /dev/hda4 is the Linux swap that we'll reuse.
+
+First we create the Ext2 filesystem, notice the `hurd` option.
+
+ # mke2fs -o hurd /dev/DEVICE
+
+Next we create a useful mountpoint and mount the partition.
+
+ # mkdir /gnu
+ # mount /dev/hda3 /gnu
+
+### <a name="Retrieving_CrossHurd"> Retrieving CrossHurd </a>
+
+Unless you don't run Debian GNU/Linux download it from <http://packages.debian.org/crosshurd>, or simply apt-get the package from Testing or Unstable.
+
+ # apt-get install crosshurd
+
+### <a name="Cross_installing"> Cross installing </a>
+
+The crosshurd package only operates in the given target directory, which is the first question asked when running the program.
+
+ # cd /gnu
+ # crosshurd
+
+Answer the questions you get: $ What is the target directory?: `/gnu` $ Target Debian system?: gnu $ Target CPU?: i386
+
+Now the program starts retrieving all the necessary base packages.
+
+### <a name="Preparing_to_reboot"> Preparing to reboot </a>
+
+When all packages have been extracted we must prepare [[GRUB]] for the Hurd when we reboot. Add the below entry to your `/boot/grub/menu.lst` file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install.
+
+ title GNU (kernel GNUmach 1.3)
+ root (hd0,2)
+ kernel /boot/gnumach.gz root=device:hd0s3 -s
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+**_Nota Bene:_** In your menu file there should be no extra white space after the back slashes.
+
+### <a name="Native_install"> Native install </a>
+
+Ah, reboot and select "GNU (kernel GNUmach 1.3)" from the Grub menu. At the prompt, setup TERM and run the native-install script.
+
+ # export TERM=mach
+ # ./native-install
+
+When done the native install requests that you reboot once again and rerun native-install. This time you will be asked a lot of questions, see the [[Hurd/InstallNotes]] for details.
+
+ # reboot
+ ...
+ # export TERM=mach
+ # ./native-install
+
+Done, continue setting up your system, see the [[Hurd/InstallNotes]] for more help.
+
+-- [[Main/JoachimNilsson]] - 22 Mar 2005
+
+----
+
+Jeff Bailey has set up a system where you can install a Hurd system without having to use CDs. It's another type of cross-installation method which uses Debian package management tools to get the packages required as opposed to the one single big tarball.
+
+As of 2005-03-22, the latest version of crosshurd is 1.7.11. It can be found at <http://packages.debian.org/crosshurd>.
+
+-- [[Main/PeterMelville]] - 12 Jun 2004
diff --git a/hurd/running/debian/DebianAptOffline.mdwn b/hurd/running/debian/DebianAptOffline.mdwn
new file mode 100644
index 00000000..9596040d
--- /dev/null
+++ b/hurd/running/debian/DebianAptOffline.mdwn
@@ -0,0 +1,62 @@
+[[!meta copyright="Copyright © 2005, 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]]."]]"""]]
+
+# How to Installing Packages without a Network Connection from your Hurd Installation
+
+This procedure is based on that found in
+`/usr/share/doc/apt-doc/offline.text.gz` (Debian package `apt-doc`).
+
+This requires having apt installed on the Host operating system.
+
+Put a copy of [apt.conf.offline](DebianAptOffline/apt.conf.offline)
+into your Debian GNU/Hurd installations /etc/apt/ directory.
+
+## If you _can_ mount your Debian GNU/Hurd partition from another OS, which can connect to the Internet
+
+As root on the internet connected OS:
+
+ # mount /dev/DEBIAN_GNU_HURD_PARTITON /mnt
+ # cd /mnt
+ # apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.}
+
+Then, reboot into your Debian GNU/Hurd installation and as root, run:
+
+ # apt-get {update, upgrade, install foo, etc.}
+
+## If you _cannot_ mount your Debian GNU/Hurd partition under another OS.
+
+From your Debian GNU/Hurd installation run, as the root user:
+
+ # tar cf myhurdsconf.tar /etc/apt/{apt.conf.offline,sources.list} /var/lib/dpkg/status
+
+Copy _myhurdsconf.tar_ to the remote system.
+
+This copies your apt configuration and the status of your system
+(what packages are installed, which versions, etc.)
+
+From the remote sytem, as any user, run:
+
+ $ mkdir myhurd
+ $ cd myhurd
+ $ tar -xf myhurdsconf.tar
+ $ mkdir -p var/lib/apt/lists/partial var/cache/apt/archives/partial tmp
+ $ apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.}
+ $ tar cf myhurdsconf.tar etc/apt/{apt.conf.offline,sources.list} var/
+
+Copy _myhurdsconf.tar_ back to your Debian GNU/Hurd system.
+
+Finally, from your Debian GNU/Hurd installation as the root user:
+
+ # mkdir tmp
+ # cd tmp
+ # tar -xf myhurdsconf.tar
+ # mv var/cache/apt/archives/*.deb /var/cache/apt/archives/
+ # mv var/lib/apt/lists/*_* /var/lib/apt/lists/
+ # apt-get {update, upgrade, install foo, etc.}
diff --git a/hurd/running/debian/DebianAptOffline/apt.conf.offline b/hurd/running/debian/DebianAptOffline/apt.conf.offline
new file mode 100644
index 00000000..59aed564
--- /dev/null
+++ b/hurd/running/debian/DebianAptOffline/apt.conf.offline
@@ -0,0 +1,23 @@
+ APT
+ {
+ /* This is not necessary if the two machines are the same arch, it tells
+ the remote APT what architecture the Debian machine is */
+ Architecture "hurd-i386";
+
+ Get::Download-Only "true";
+ };
+
+ Dir
+ {
+ /* Use the disc for state information and redirect the status file from
+ the /var/lib/dpkg default */
+ State "./var/lib/apt";
+ State::status "./var/lib/dpkg/status";
+
+ // Binary caches will be stored locally
+ Cache::archives "./var/cache/apt/archives/";
+ Cache "./tmp/";
+
+ // Location of the source list.
+ Etc "./etc/apt/";
+ };
diff --git a/hurd/running/debian/DebianDpkgArchitecture.mdwn b/hurd/running/debian/DebianDpkgArchitecture.mdwn
new file mode 100644
index 00000000..c768ff4e
--- /dev/null
+++ b/hurd/running/debian/DebianDpkgArchitecture.mdwn
@@ -0,0 +1,27 @@
+The output of dpkg-archicture on Debian's hurd-i386 port:
+
+DEB\_BUILD\_ARCH=hurd-i386
+
+DEB\_BUILD\_ARCH\_OS=hurd
+
+DEB\_BUILD\_ARCH\_CPU=i386
+
+DEB\_BUILD\_GNU\_CPU=i486
+
+DEB\_BUILD\_GNU\_SYSTEM=gnu
+
+DEB\_BUILD\_GNU\_TYPE=i486-gnu
+
+DEB\_HOST\_ARCH=hurd-i386
+
+DEB\_HOST\_ARCH\_OS=hurd
+
+DEB\_HOST\_ARCH\_CPU=i386
+
+DEB\_HOST\_GNU\_CPU=i486
+
+DEB\_HOST\_GNU\_SYSTEM=gnu
+
+DEB\_HOST\_GNU\_TYPE=i486-gnu
+
+-- [[Main/MichaelBanck]] - 14 Jan 2006
diff --git a/hurd/running/debian/DebianIntegrationDeveloper.mdwn b/hurd/running/debian/DebianIntegrationDeveloper.mdwn
new file mode 100644
index 00000000..8b34cb7b
--- /dev/null
+++ b/hurd/running/debian/DebianIntegrationDeveloper.mdwn
@@ -0,0 +1,15 @@
+Currently, the [Debian](http://www.debian.org) Project consists of two distinct classes of people - Users and Developers. There is a [Quality Assurance](http://qa.debian.org) group that exists to try to help bridge this gap, however it is not as strong as some people would like it to be. In many ways, a DID is another name for what Debian currently classifies as QA.
+
+A Debian Integration Developer (DID) is a middle-person, someone to assist users and developers. From a [user](http://www.debian.org/support) perspective they answer, categorize and enhance bug reports with patches or Policy suggestions and generally help with user-level integration of multiple Debian software packages as installed. From a [developer](http://www.debian.org/devel/) perspective they update Debian specific package defaults and configuration systems. Upon reflection, this is also a group of folks that can be described as containing both Developer status (maintaining one package) and those who do not feel comfortable classifying themselves as developers. These groups share common goals.
+
+Besides these two perspectives, there is also a range of tasks that fall into the domain of "[Quality Assurance](http://qa.debian.org)." Tasks necessary to perform on a range of individual packages such as Policy compliance checking, debconf use, /etc/alternatives and similar debian configuration mechanisms that integrate. The Work Needed and Prospective Packages system is an important function. Questions are sometimes raised regarding the diligence or MIA status of developers, in a way, ensuring the overall quality of the debian operational infrastructure. Gathering feedback from users and developers regarding enhancements and changes to these systems. Helping to Integrate the various infrastructure groups when responding to the environment in which Debian resides in is raising the quality of the organization. Many of the tasks that exist in this grey area can be accomplished by non-packaging maintaining users if they understand how Debian and package maintenance works.
+
+The more I write and think about this area, the more clearly the concept of idealistic leadership is brought to mind. Yet keys to the success of Debian can be directly attributed to the lack of a centralized organizational structure and a strong set of negotiated policies.
+
+Software dependencies can be very complex. There is often a need for a semi-knowledgable developer (DID or QA) to understand how things work best in a coordinated manner, how best to Integrate. This is also a natural path from which to recruit new package maintainers if assistance is provided along the way. Another separate group that subscribe to a [mail list](http://lists.debian.org) and perform this extremely valuable service is [Debian-Mentors](http://lists.debian.org/debian-mentors/).
+
+Recognition for the significance of contribution is one reason to give this group of helpful people more courage and identity in helping the Debian project in a clearly defined and less daunting a way. The [devel](http://www.debian.org/devel) page has relevant links. There is a page describing [how you can help](http://www.debian.org/devel/join/), but (indicating the mentality) it's simply a link to the same page as the first step in the [new maintainer process](http://www.debian.org/devel/join/). Behind this first page is the real [new maintainer page](http://www.debian.org/devel/join/newmaint). There's also a [TODO list](http://www.debian.org/devel/todo/) but it's very very broad.
+
+Perhaps a little bit of this resides in all members of the Debian community and is an important ingredient to the project's overall success. This may be because the developers are in fact, also the users. This can be extremely demanding for new users of Debian. It does take time to come up to speed with what Debian is about, [who participates](http://www.debian.org/intro/organization) to keep it running as it does and what processes exist. The Bug Tracking System's [pseudo-package list](http://www.debian.org/Bugs/pseudo-packages) may give great insight into some processes.
+
+-- [[Main/GrantBow]] - 25 Feb 2004
diff --git a/hurd/running/debian/DebianPackages.mdwn b/hurd/running/debian/DebianPackages.mdwn
new file mode 100644
index 00000000..7e09dce0
--- /dev/null
+++ b/hurd/running/debian/DebianPackages.mdwn
@@ -0,0 +1,43 @@
+There are many different systems related to Debian that are related to the efforts. Some of these target information to/from upstream developers, some to end users. Here are some useful links.
+
+<dl>
+ <dt><a href="http://qa.debian.org/developer.php" target="_top">Developer Packages Overview</a></dt>
+ <dd> new system! </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://bugs.debian.org" target="_top">Bug Tracking System</a></dt>
+ <dd> also see [[Distrib/BtsFiling]], use a URL like <nop>http://bugs.debian.org/<em>bug-number</em> or <nop>DebianBug:<em>number</em> in a topic using the [[TWiki/InterWikis]] format. </nop></nop></dd>
+</dl>
+
+<dl>
+ <dt><a href="http://packages.debian.org" target="_top">Package lookup</a></dt>
+ <dd> also use a URL like <nop>http://packages.debian.org/<em>package-name</em> or <nop>DebianPackage:<em>name</em> in a topic. </nop></nop></dd>
+</dl>
+
+<dl>
+ <dt><a href="http://packages.qa.debian.org" target="_top">Package Tracking System</a></dt>
+ <dd><nop>PTS:<em>name</em> in a topic. Email based tracking system to get notices of all package activity - used for packages that highly interest you. This is a new system for Debian and was recently <a href="http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html" target="_top">announced</a>. </nop></dd>
+</dl>
+
+<dl>
+ <dt><a href="http://www.debian.gr.jp/~kitame/maint.cgi" target="_top">Package &amp;amp; Maintainer lookup</a></dt>
+ <dd> from Takuo Kitame </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://buildd.debian.org/" target="_top">Buildd System</a></dt>
+ <dd> system to compile and upload binary packages from source automatically. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://db.debian.org/" target="_top">Maintainer LDAP</a></dt>
+ <dd> LDAP directory with the information of Debian developers. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://ftp-master.debian.org/testing/update_excuses.html" target="_top">testing "update excuses"</a></dt>
+ <dd> not needed for Hurd yet. </dd>
+</dl>
+
+-- [[Main/GrantBow]] - 15 Jan 2003
diff --git a/hurd/running/debian/DebianTranslatorPolicy.mdwn b/hurd/running/debian/DebianTranslatorPolicy.mdwn
new file mode 100644
index 00000000..7092a761
--- /dev/null
+++ b/hurd/running/debian/DebianTranslatorPolicy.mdwn
@@ -0,0 +1,40 @@
+**_This page describes the Debian packaging policy for translators._**
+
+## <a name="Package_Naming_Scheme"> Package Naming Scheme </a>
+
+Candidates for package naming schemes (_foofs_ is a filesystem based translator, e.g. _tarfs_, _bar_ is a node based translator, e.g. _random_):
+
+* _foofs-translator_, _bar-translator_ [current favourite]
+
+* _foofs_, _bar_ [this will make searching somewhat more of a hassle and may easily conflict with already used package names]
+
+* _foofs-trans_, _bar-trans_
+
+* _hurd-translator-foofs_, _hurd-translator-bar_
+
+Do we need to destinguish between file system and node based translators?
+
+Source packages should be called whatever the tarball/cvs module says.
+
+## <a name="Where_to_Put_Files"> Where to Put Files </a>
+
+The translators should go into _/hurd_.
+
+## <a name="What_about_setting_passive_trans"> What about setting passive translators in _/servers_ or _/dev_? </a>
+
+The idea is that the package should set passive translators in its _postinst_ instructions.
+
+There may, however, be difficulties with that: it's perfectly valid to have two different _random_ translator packages installed (they won't conflict with each other as long as their file names don't clash), but which one should sit on _/dev/random_ and _/dev/urandom_? Debian's _alternatives system_ doesn't help here, because the translators may need different command line arguments.
+
+One idea is to have the _postinst_ instructions set the passive translator if there isn't already one set on the relevant node(s).
+
+## <a name="Short_Long_Description_Guideline"> Short/Long Description Guidelines </a>
+
+ [packagename]: Foo translator for [doing bar].
+ Foo is a GNU/Hurd translator which does [bar].
+
+## <a name="Miscellaneous"> Miscellaneous </a>
+
+There could / should be a meta package (or even more than one) that just depends e.g. on all installable translators, so that they'll conveniently find their way into the system by just installing that meta package.
+
+-- [[Main/MichaelBanck]] - 10 Mar 2006
diff --git a/hurd/running/debian/GNUDebianBuildProcess.mdwn b/hurd/running/debian/GNUDebianBuildProcess.mdwn
new file mode 100644
index 00000000..55a9c6aa
--- /dev/null
+++ b/hurd/running/debian/GNUDebianBuildProcess.mdwn
@@ -0,0 +1,133 @@
+components, required and somewhat related - BEFORE you have .debs
+
+### <a name="Software_States"> Software States </a>
+
+see [Debian Policy Manual](http://www.debian.org/doc/debian-policy/).
+
+* Upstream source
+* Debian Source Package
+ * Build-depends
+* Debian Binary Package
+ * Essential - boolean, default is no/unset, see Policy [ref](http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Essential)
+ * Architecture - policy [ref](http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Architecture)
+ * Section (main, contrib, non-free, non-US/main, non-US/contrib, non-US/non-free)
+ * updates, security
+ * Subsection (admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-US, non-free, oldlibs, otherosfs, perl, python science, shells, sound, tex, text, utils, web, x11)
+ * Priority (required, important, standard, optional, extra) policy [ref](http://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities)
+ * a particular set of packages is called the [Base System](http://www.debian.org/doc/debian-policy/ch-binary.html#s3.7)
+* Source and binary package upload example from [new maintainers guide](http://www.debian.org/doc/maint-guide/ch-build.en.html)
+ * gentoo\_0.9.12.orig.tar.gz
+ * gentoo\_0.9.12-1.dsc
+ * gentoo\_0.9.12-1.diff.gz
+ * gentoo\_0.9.12-1\_i386.deb
+ * gentoo\_0.9.12-1\_i386.changes
+
+### <a name="Groups"> Groups </a>
+
+* software author(s)
+* Debian Package Maintainers, Co-Maintainers &amp; uploaders
+* ftp-masters
+* buildd admins - It seems the two primary buildd admins are Ryan Murray and James Troup.
+* QA
+* bug-filers
+* porters for supported platforms (i386, m69k, sparc, alpha, powerpc, arm, mips, mipsel, hppa, ia64, s390)
+* porters for unreleased platforms (amd64, sh)
+* porters of non-linux platforms (hurd-i386, netbsd-i386, netbsd-alpha, freebsd-i386)
+* International translation providers
+* system administrators
+* users
+
+### <a name="Build_Debian_Archive_amp_Debian_"> Build, Debian Archive &amp; Debian Systems Software </a>
+
+* wanna-build available in the buildd [CVS](http://m68k.debian.org/buildd/getting.html)
+* buildd [CVS](http://m68k.debian.org/buildd/getting.html), [statistics](http://buildd.debian.org/stats/)
+* [quinn-diff](http://buildd.debian.org/quinn-diff/) with anon-CVS
+ * July 2002 (samosa.sh ?) hurd output [http://buildd.debian.org/quinn-diff/output/unstable/by\_priority-hurd-i386.txt](http://buildd.debian.org/quinn-diff/output/unstable/by_priority-hurd-i386.txt)
+ * email [reference](http://lists.debian.org/debian-hurd/2000/debian-hurd-200012/msg00168.html)
+* [katie](http://ftp-master.debian.org) (was dinstall), ftp-master
+ * update-excuses [output](http://ftp-master.debian.org/testing/update_excuses.html)
+* andrea, see wanna-build for source (no longer at <http://buildd.debian.org/andrea/> )
+* [madison](http://www.debian.org/doc/developers-reference/ch-resources.en.html#s-madison) from developer's reference
+* [fakeroot](http://packages.qa.debian.org/fakeroot)
+* [sbuild](http://packages.qa.debian.org/sbuild)
+* [pbuilder](http://packages.qa.debian.org/pbuilder)
+* turtle [reference](http://lists.debian.org/debian-hurd/2001/debian-hurd-200103/msg00328.html)
+* [Package Tracking System](http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html) (PTS)
+* [Bug Tracking System](http://bugs.debian.org) (BTS)
+ * Release Critical mailing to <debian-devel-announce@lists.debianNOSPAM.org>
+* [Work Needed and Prospective Packages](http://www.debian.org/devel/wnpp/) (WNPP)
+* [Lintian](http://lintian.debian.org/)
+* [apt-proxy](http://packages.qa.debian.org/apt-proxy) or [apt-cacher](http://packages.qa.debian.org/apt-cacher)
+* [reportbug](http://packages.qa.debian.org/reportbug)
+* [dpkg](http://packages.qa.debian.org/dpkg)
+* [apt](http://packages.qa.debian.org/apt)
+* grep-dctrl
+* dpkg-awk
+
+also see appendix A [Overview of Debian Maintainer Tools](http://www.debian.org/doc/developers-reference/ap-tools.en.html) in the Developer's Reference.
+
+### <a name="Input_amp_Output_Files_Formats"> Input &amp; Output Files/Formats </a>
+
+* sources file from an archive
+* packages file from an archive
+* log from build process
+* lintian report
+* debcheck report
+* upstream related files (tar.gz, dsc [[SampleDscFile]])
+* source deb
+* binary deb
+* /etc/apt/sources.list file
+* bug reports
+* web pages
+* location to upload files for incoming: ftp-master.debian.org:/org/ftp.debian.org/incoming/ or via ftp to /pub/UploadQueue/
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Inputs</strong></th>
+ <th bgcolor="#99CCCC"><strong>1</strong></th>
+ <th bgcolor="#99CCCC"><strong>2</strong></th>
+ <th bgcolor="#99CCCC"><strong>3</strong></th>
+ <th bgcolor="#99CCCC"><strong>4</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>1</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>2</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>3</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <th bgcolor="#99CCCC"><strong>4</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td colspan="4">   </td>
+ <th align="right" bgcolor="#99CCCC"><strong>Outputs</strong></th>
+ </tr>
+</table>
+
+also see [[GNUDebianPackages]] for information on what you can do AFTER you have .debs.
+
+-- [[Main/GrantBow]] - 03 March 2004
diff --git a/hurd/running/debian/GNUDebianPackages.mdwn b/hurd/running/debian/GNUDebianPackages.mdwn
new file mode 100644
index 00000000..de1798ad
--- /dev/null
+++ b/hurd/running/debian/GNUDebianPackages.mdwn
@@ -0,0 +1,103 @@
+tools for AFTER you have .debs
+
+### <a name="Software_States"> Software States </a>
+
+* Debian Source Package
+* Debian Binary Package
+ * Component (main, contrib, non-free, non-US, updates, security)
+ * Priority
+ * Section
+ * installed state - installed, half-installed, not-installed, unpacked, half-configured, config-files
+
+### <a name="Groups"> Groups </a>
+
+* bug-filers
+* users
+
+* Debian Package Maintainers, Co-Maintainers &amp; uploaders
+* ftp-masters
+* QA
+* porters for supported platforms (i386, m69k, sparc, alpha, powerpc, arm, mips, mipsel, hppa, ia64, s390)
+* porters for unreleased platforms (amd64, sh)
+* porters of non-linux platforms (hurd-i386, netbsd-i386, netbsd-alpha, freebsd-i386)
+* International translation providers
+* system administrators
+
+### <a name="Software_amp_Systems"> Software &amp; Systems </a>
+
+* dselect
+* wajig
+* grep-dctrl
+* dpkg-awk
+* [reportbug](http://packages.qa.debian.org/reportbug)
+* [dpkg](http://packages.qa.debian.org/dpkg)
+* [apt](http://packages.qa.debian.org/apt)
+
+* [apt-proxy](http://packages.qa.debian.org/apt-proxy) or [apt-cacher](http://packages.qa.debian.org/apt-cacher)
+* [Package Tracking System](http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html) (PTS)
+* [Bug Tracking System](http://bugs.debian.org) (BTS)
+ * Release Critical mailing to <debian-devel-announce@lists.debianNOSPAM.org>
+* [Work Needed and Prospective Packages](http://www.debian.org/devel/wnpp/) (WNPP)
+* [katie](http://ftp-master.debian.org) (was dinstall), ftp-master
+ * update-excuses [output](http://ftp-master.debian.org/testing/update_excuses.html)
+
+### <a name="Input_amp_Output_Files_Formats"> Input &amp; Output Files/Formats </a>
+
+* sources file from an archive
+* packages file from an archive
+* source deb
+* binary deb
+* /etc/apt/sources.list file
+* bug reports
+* web pages
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Inputs</strong></th>
+ <th bgcolor="#99CCCC"><strong>1</strong></th>
+ <th bgcolor="#99CCCC"><strong>2</strong></th>
+ <th bgcolor="#99CCCC"><strong>3</strong></th>
+ <th bgcolor="#99CCCC"><strong>4</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>1</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>2</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <td>   </td>
+ <th bgcolor="#99CCCC"><strong>3</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td>   </td>
+ <td> X </td>
+ <th bgcolor="#99CCCC"><strong>4</strong></th>
+ </tr>
+ <tr>
+ <td>   </td>
+ <td colspan="4">   </td>
+ <th align="right" bgcolor="#99CCCC"><strong>Outputs</strong></th>
+ </tr>
+</table>
+
+also see [[GNUDebianBuildProcess]] for tools BEFORE you have .debs
+
+-- [[Main/GrantBow]] - 03 March 2004
diff --git a/hurd/running/debian/GnuDebianRelationship.mdwn b/hurd/running/debian/GnuDebianRelationship.mdwn
new file mode 100644
index 00000000..94fd6265
--- /dev/null
+++ b/hurd/running/debian/GnuDebianRelationship.mdwn
@@ -0,0 +1,32 @@
+I have hesitated in starting this page due to the sensitive nature of this relationship and the (May 2002) flame war on debian-devel and other mail lists. I believe that rather than guessing about relevant points of the discussion, the facts should be presented in a clear manner. I hope the facts presented here are accurate and precise enough to be helpful in the ongoing discussion. I have not read all messages in all relevant threads.
+
+This is a work in progress. Please email me directly if you have comments or suggestions.
+
+* 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 [porting/guidelines]] Efforts
+ * Perceived zealous GNU and FSF promotion.
+
+* Hurd Port Advantages of Debian
+ * Glibc use.
+ * Gcc use.
+ * Debian reputation
+ * Debian mirror infrastructure - ftp, both official and private. Includes bandwidth, hardware, maintenance efforts.
+ * Debian www infrastructure - many languages supported, mirrors.
+ * [Debian developer machine](http://db.debian.org/machines.cgi) infrastructure, many architectures, compile farm, buildd software.
+ * Many Debian Developers maintaining software packages, bug reports, porting efforts.
+ * Bug tracking system - BTS infrastructure
+ * Package infrastructure architecture capabilities are improving. dpkg update in progress.
+
+* Hurd Port Disadvantages of Debian
+ * Possible DFSG vs. Free Software compatibility issues.
+ * BTS Severity practices/use for unreleased ports issues.
+ * Debian non-parallel development issues.
+ * [Architecture handling](http://master.debian.org/~brinkmd/arch-handling.txt) issues.
+ * Linux base history with assumed Linux assumptions.
+ * Possible incompatibility of third party standards compliance issues. i.e. LSB, FHS, GNU Coding Standards
+ * Perceived zealous Debian promotion.
+
+-- [[Main/GrantBow]] - 22 May 2002
diff --git a/hurd/running/debian/MediaPressKitDiscuss.mdwn b/hurd/running/debian/MediaPressKitDiscuss.mdwn
new file mode 100644
index 00000000..2bd97290
--- /dev/null
+++ b/hurd/running/debian/MediaPressKitDiscuss.mdwn
@@ -0,0 +1,76 @@
+# <a name="Media_Press_Kit"> Media / Press Kit </a>
+
+## <a name="Problem"> Problem </a>
+
+Debian awareness not as high as other Linux distributions. Some people don't take Debian seriously because of it's organizational structure. Target audience lacks education. Most current Debian users are rather skilled and sometimes PERCIEVED as arrogant. "Non-technical" participation is not fully recognized.
+
+## <a name="Target_Audience"> Target Audience </a>
+
+* non-users without any experience of Debian.
+ * Technically-minded people will often be convinced already of why they should use Debian
+* casual users who might be interested in Debian
+* ammunition for those who are campaigning to have Debian used
+ * With our backgrounds, we could emphasize that we can provide material in the langauge that decision-makers can understand.
+
+## <a name="Debian_Resources"> Debian Resources </a>
+
+It's important to identify and work with the existing infrastructures for this type of thing. More research about who is out there that is interested in press relations needs to be done before showing the work completed to others.
+
+* [Contacts](http://www.debian.org/contact) page includes <press@debianNOSPAM.org> but I don't know who's behind that alias. I'll send an email right now to find out.
+* [Events team](http://www.debian.org/events/)
+ * Mail list [debian-events-na](http://lists.debian.org/debian-events-na)
+ * Mail list [debian-events-eu](http://lists.debian.org/debian-events-eu)
+* Debian Weekly News [DWN](http://www.debian.org/News/weekly/) and their mail list [debian-news](http://lists.debian.org/debian-news)
+* [debian-announce](http://lists.debian.org/debian-announce) and their [News page](http://www.debian.org/News/)
+* [DebianPlanet.org](http://www.debianplanet.org)
+* Others?
+
+## <a name="Solution_Goal"> Solution / Goal </a>
+
+* persuade people to use Debian
+* give target audience realistic expectations of running GNU/Linux
+ * skills expected
+ * differences from what they already know
+* educate target audience about benefits and advantages of Debian.
+* give target audience realistic expectations of running Debian
+ * skills expected
+ * differences from what they already know
+* background materials, "marketing collateral"
+
+You have proposed two documents that sound on target to me.
+
+<dl>
+ <dt>[[WhyDebian]]</dt>
+ <dd> A bullet list meant to give a quick answer. </dd>
+ <dt>[[DebianProductSheet]]</dt>
+ <dd> includes interesting facts </dd>
+</dl>
+
+The third is a collection of success stories which is more of a process than a clearly defined deliverable in itself. That sounds wonderful.
+
+I think another active process for tracking recent news (if it doesn't already exist) should also be useful for similar purposes.
+
+## <a name="Result"> Result </a>
+
+* two documents: Why Debian? &amp; Debian Product Sheet
+ * these will be documents of a Debian media/press kit
+ * processes to keep these documents updated over time. For example, every release.
+ * beginning of a central repository for info about Debian
+* a web repsitory for success stories
+ * some kind of link or integration with current website.
+* increased appreciation by official Debian organization for non-technical participation.
+* increased non-technical Debian user involvement
+* increased adoption of Debian GNU/Linux by users.
+* consideration for using SPI funds for hiring part-time PR resources
+
+-- [[Main/GrantBow]] - 13 Jan 2003
+
+[This article](http://www.theage.com.au/articles/2003/01/08/1041989994382.html) was in the [most recent](http://www.debian.org/News/weekly/2003/02/) version of the [Debian Weekly News](http://www.debian.org/News/weekly/).
+
+-- [[Main/GrantBow]] - 15 Jan 2003
+
+Here are some interesting urls from [this issue](http://www.debian.org/News/weekly/2003/03/) of the Debian Weekly news:
+
+**Debian Presentations.** Wolfgang Borgert was [looking](http://lists.debian.org/debian-devel-0301/msg00991.html) for a set of slides on dpkg, apt-get and debconf. Javier Fern�ndez-Sanguino Pe�a [intends](http://lists.debian.org/debian-devel-0301/msg01022.html) to provide a 'presentations' section in the [Debian Documentation Project](http://cvs.debian.org/ddp/?cvsroot=debian-doc) (DDP) and has already created an [archive](http://dat.etsit.upm.es/~jfs/debian/www/ddp/slides/) of slides. Whilst the Debian web site does link to [talks](http://www.debian.org/events/talks) given by developers and some [sample slides](http://www.debian.org/events/materials/slides/), it is difficult to gather this information and publish it in a homogeneous way. Talks should be reported to <events@debianNOSPAM.org> and forwarded to him.
+
+-- [[Main/GrantBow]] - 22 Jan 2003
diff --git a/hurd/running/debian/SampleDscFile.mdwn b/hurd/running/debian/SampleDscFile.mdwn
new file mode 100644
index 00000000..d3b7b9f8
--- /dev/null
+++ b/hurd/running/debian/SampleDscFile.mdwn
@@ -0,0 +1,24 @@
+ -----BEGIN PGP SIGNED MESSAGE-----
+ Hash: SHA1
+
+ Format: 1.0
+ Source: glibc
+ Version: 2.3.2.ds1-11
+ Binary: libc6, libc6-s390x, locales, libc0.3-prof, libc6.1-dev, libc6-i686, libc1-pic, libc6.1-dbg, glibc-doc, libc6-dev-sparc64, libc0.3-dbg, libc6.1-pic, libc6-dbg, libc0.3, libc0.3-pic, libc6.1-prof, libc6.1, libc6-dev-s390x, libc1, libc0.3-dev, libc6-sparcv9, nscd, libc1-dev, libc6-pic, libc6-prof, libc1-prof, libc-udeb, libc6-sparc64, libc6-dev, libc1-dbg
+ Maintainer: GNU Libc Maintainers
+ Architecture: any
+ Standards-Version: 3.6.1.0
+ Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.4.1.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.5.999-test7-bk-9) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-3.3, autoconf, binutils (>= 2.14.90.0.5) [!s390], binutils (>= 2.13.90.0.4-1) [s390], sed (>= 4.0.5-4), gawk, debhelper (>= 4.0.0)
+ Build-Depends-Indep: perl, po-debconf
+ Uploaders: Ben Collins , GOTO Masanori , Philip Blundell , Jeff Bailey , Daniel Jacobowitz
+ Files:
+ b982bf6ad7ebc8622d3b81d51c44b78a 13246448 glibc_2.3.2.ds1.orig.tar.gz
+ 2951fde13e9ba21d70d8c7e580849730 1997696 glibc_2.3.2.ds1-11.diff.gz
+
+ -----BEGIN PGP SIGNATURE-----
+ Version: GnuPG v1.2.3 (GNU/Linux)
+
+ iD8DBQFADZsWbgOPXuCjg3cRAg9LAJ9r3ioJNdzloaM4qQu3FJj2R3y7pQCeNPD+
+ i03WJeMdyAhKjHGM2sRqWVk=
+ =37je
+ -----END PGP SIGNATURE-----
diff --git a/hurd/running/debian/SoftwareLicensing.mdwn b/hurd/running/debian/SoftwareLicensing.mdwn
new file mode 100644
index 00000000..e236fea1
--- /dev/null
+++ b/hurd/running/debian/SoftwareLicensing.mdwn
@@ -0,0 +1,116 @@
+There are differences betwen the [Debian Free Software Guidelines](http://www.debian.org/social_contract#guidelines) (DFSG) and [Free Software](http://www.fsf.org/philosophy/free-sw.html) as defined by the Free Software Foundation. The FSF's GNU project is the sponsor of the GNU/Hurd project. Debian GNU/Hurd is a "port" or distribution of this software. I have not yet performed a comparison between the list of acceptable DFSG licenses (if a list exists) and the acceptable Free Software [license list](http://www.gnu.org/licenses/license-list.html). (Perhaps not directly related but for reference, here's the Open Source [license list](http://www.opensource.org/licenses/index.html))
+
+What will this consist of? In the end the result will need to be simply a list of packages with their license marked next to them. This will be relatively simple for those packages that use a standard license. Software that has it's own custom license will need to be categorized.
+
+I am thinking of ways to automatically check the licenses and to get lists of the various "Priority:" packages. I thought this list of package names would be easy to obtain. The first step is getting the list of packages. This is possible by parsing /var/lib/dpkg/available, using dpkg or using apt-cache.
+
+The next step is checking the licenses of the packages. There is no dpkg package field available for license. A script that checks licenses will involve using "apt-get source" to check the COPYING and/or similar files in each package.
+
+-- [[Main/GrantBow]] - 5 Oct 2002
+
+I used the following command on an old Hurd machine to get the 22 packages with Essential in their description. I've listed them and put them in a table at the end of this topic.
+
+ sed -e '/./{H;$!d;}' -e 'x;/Essential\:\ yes/!d' /var/lib/dpkg/status | egrep ^Package | sort
+
+base-files base-passwd bash bsdutils debianutils diff dpkg e2fsprogs fileutils findutils grep gzip hostname hurd ncurses-base ncurses-bin perl-base sed shellutils tar textutils util-linux
+
+Using `base` instead of `Essential\:\ yes` above I find 64 additional packages.
+
+adduser alsa-base apt autoconf2.13 bug cpp-3.0 cvs debconf debconf-utils debhelper debiandoc-sgml debian-policy developers-reference exim fetchmail-common g++-3.0 gcc-3.0 gcc-3.0-base gettext gettext-base gnumach groff groff-base inetutils libc0.3 libc0.3-dev libdb2 libdb2++ libdb2-dev libdb2++-dev libdb2-util libdb3 libgdbmg1 libncurses5 libnet-perl libpam0g libpam-runtime libperl5.6 libpopt0 libpopt-dev libreadline4 libstdc++3 libstdc++3-dev libwrap0 libxaw7 man-db mawk mutt netbase passwd perl python python2.1 screen sgmltools-lite slang1 ssh tcpd texinfo xfree86-common xlibs xserver-common xterm xutils
+
+-- [[Main/GrantBow]] - 11 Jan 2003
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <td> Name </td>
+ <td> Compatible License? </td>
+ </tr>
+ <tr>
+ <td> base-files </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> base-passwd </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> bash </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> bsdutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> debianutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> diff </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> dpkg </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> e2fsprogs </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> fileutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> findutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> grep </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> gzip </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> hostname </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> hurd </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> ncurses-base </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> ncurses-bin </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> perl-base </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> sed </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> shellutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> tar </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> textutils </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> util-linux </td>
+ <td>   </td>
+ </tr>
+</table>
diff --git a/hurd/running/debian/after_install.mdwn b/hurd/running/debian/after_install.mdwn
new file mode 100644
index 00000000..15ca9c83
--- /dev/null
+++ b/hurd/running/debian/after_install.mdwn
@@ -0,0 +1,111 @@
+First steps after installation.
+
+So you have managed to get past the first `native-install` runs in single-user
+mode?
+
+Time to get to work.
+
+[[!toc]]
+
+
+### Get Networking Running
+
+[[Network]].
+
+Check if your NIC was detected by GNU Mach:
+
+ # devprobe eth0
+
+`devprobe` (run as user *root*) will print `eth0` on successful detection. If
+it doesn't, your NIC was not detected correctly. You can then try to do the
+following (also as user *root*) for getting details:
+
+ # cat /dev/klog > ~/klog
+ [Wait a second, then press `Ctrl-C'.]
+
+Now examine the `~/klog` file.
+
+If the NIC was detected:
+
+ # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
+
+In order to use DHCP, you need to install the `dhcp-client` package and run `dhclient eth0` etc.
+
+# Setup GRUB
+
+You surely want grub to have a nice menu entry able to boot GNU, instead of
+typing a boring arcane. There are Debian-specific scripts that may help
+you. See [[GRUB]]'s page for this.
+
+
+# Setup `apt-get`
+
+Sometimes getting `apt-get` to work is not straightforward. Good mirrors to
+put in `/etc/apt/sources.list` are (as of Jan 2007):
+
+ deb http://mirrors.kernel.org/debian unstable main contrib
+ deb-src http://mirrors.kernel.org/debian unstable main contrib
+ deb http://ftp.debian-ports.org/debian unreleased main
+ deb-src http://ftp.debian-ports.org/debian unreleased main
+
+`apt-get` update a couple of times if some file fails to download.
+
+If when doing your first `apt-get`, `dpkg` complains of missing programs, get root in a login shell (`su -`).
+
+Installing packages without having a network connection is described
+[[Distrib/DebianAptOffline]].
+
+# [[translator/Random]]
+
+You often need `scp` and `ssh`. There is now a `random-egd` package available which uses
+a random translator by Ryan Hunter and the entropy gathering daemon as entropy source.
+
+See [[Translator/random]] for more information.
+
+# [[Console]]
+
+The latest Hurd package in Debian, plus the `native-install` script, creates
+all necessary device nodes and other magic. You just need to edit
+`/etc/default/hurd-console` to tune the parameters and tell it to start at
+bootup.
+
+You can also call the Hurd console manually with the proper arguments:
+
+ console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \
+ -d generic_speaker -c /dev/vcs
+
+ cd /dev
+ ln -s cons/kbd .
+ ln -s cons/mouse .
+
+
+# [[Hurd/DebianXorg]]
+
+You first must have setup the virtual console. See above.
+
+Assuming you've installed WindowMaker and have tried running `startx` already:
+
+ [/etc/xorg.conf]
+
+ Section "Module"
+ # Load "dri"
+ # Load "speedo"
+ .
+ .
+ .
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+Make sure not to have the `Emulate3Buttons` and `ZAxisMapping` settings set, as
+they lead to problems with e.g. dragging windows around.
+
+# What about package XYZ?
+
+See if you can find a useful tip in [[package_troubleshooting]].
diff --git a/hurd/running/debian/creating_image_tarball.mdwn b/hurd/running/debian/creating_image_tarball.mdwn
new file mode 100644
index 00000000..ac91dab4
--- /dev/null
+++ b/hurd/running/debian/creating_image_tarball.mdwn
@@ -0,0 +1,21 @@
+[[!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 following [[anonftpsync-ports]] is used to create a local Debian GNU/Hurd
+repo. You will need atleast 12G of disk space. Change the
+"TO=/home/foo/rsync-debian-ports" to your desired target directory.
+
+Run it using:
+
+ sudo sh anonftpsync-ports
+
+In /home/foo/rsync-debian-ports, you will find the following directories:
+
+ base dists indices pool pool-hurd-i386 project
diff --git a/hurd/running/debian/creating_image_tarball/anonftpsync-ports b/hurd/running/debian/creating_image_tarball/anonftpsync-ports
new file mode 100644
index 00000000..0988dbde
--- /dev/null
+++ b/hurd/running/debian/creating_image_tarball/anonftpsync-ports
@@ -0,0 +1,180 @@
+#! /bin/sh
+set -e
+
+# This script originates from http://www.debian.org/mirror/anonftpsync
+# modified by Martin Zobel-Helas <zobel@debian.org>, 2005-01-16
+# these modifications are published under the terms of the GNU GPL
+# Modifications:
+# + some more documentation about variables
+# + added ARCH_EXCLUDE
+# + mirror in a safe way, first /pool, then /dists and the rest
+# modified by Aurelien Jarno <aurel32@debian.org>, 2007-12-02
+# these modifications are published under the terms of the GNU GPL
+# + modifications to mirror debia,-ports.org
+# Version: $Id: anonftpsync,v 1.18 2005/10/28 15:25:54 aba Exp $
+
+
+# Note: You MUST have rsync 2.0.16-1 or newer, which is available in slink
+# and all newer Debian releases, or at http://rsync.samba.org/
+
+# Set the variables below to fit your site. You can then use cron to have
+# this script run daily to automatically update your copy of the archive.
+
+# Don't forget:
+# chmod 744 anonftpsync
+
+# TO is the destination for the base of the Debian mirror directory
+# (the dir that holds dists/ and ls-lR).
+# (mandatory)
+
+TO=/home/foo/rsync-debian-ports
+
+# RSYNC_HOST is the site you have chosen from the mirrors file.
+# (http://www.debian-ports.org/mirrors)
+# (mandatory)
+
+RSYNC_HOST=rsync.debian-ports.org
+
+# RSYNC_DIR is the directory given in the "Packages over rsync:" line of
+# the mirrors file for the site you have chosen to mirror.
+# (mandatory)
+
+RSYNC_DIR=debian/
+
+# LOGDIR is the directory where the logs will be written to
+# (mandatory)
+
+LOGDIR=/var/log/rsync-debian-ports
+
+# ARCH_EXCLUDE can be used to exclude a complete architecture from
+# mirrorring. Please use as space seperated list.
+# Possible values are:
+# armel hurd-i386 kfreebsd-amd64 kfreebsd-i386
+#
+# There is one special value: source
+# This is not an architecture but will exclude all source code in /pool
+#
+# eg.
+# ARCH_EXCLUDE="hurd-i386"
+#
+# With a blank ARCH_EXCLUDE you will mirror all availible architectures
+# (optional)
+
+ARCH_EXCLUDE="armel kfreebsd-amd64 kfreebsd-i386 m68k"
+
+# EXCLUDE is a list of parameters listing patterns that rsync will exclude.
+# The following example would exclude mostly everything:
+#EXCLUDE="\
+# --exclude binary-hurd-i386/ --exclude binary-kfreebsd-i386/
+# --exclude *_hurd-i386.deb --exclude *_knetbsd-i386.deb \
+# --exclude stable/ --exclude testing/ --exclude unstable/ \
+# --exclude source/ \
+# --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \
+# --exclude /base/ --exclude /bochs/ --exclude /obsolete/ \
+# "
+
+# With a blank EXCLUDE you will mirror the entire archive.
+# (optional)
+
+EXCLUDE="--exclude binary-kfreebsd-i386/ --exclude *_knetbsd-i386.deb \
+ --exclude source/ --exclude *.orig.tar.gz --exclude *.diff.gz \
+ --exclude /bochs/ --exclude /obsolete/ \
+ --exclude *kfreebsd* --exclude *m68* --exclude *sh* \
+ "
+
+# MAILTO is the address to send logfiles to;
+# if it is not defined, no mail will be sent
+# (optional)
+
+MAILTO=
+
+# There should be no need to edit anything below this point, unless there
+# are problems.
+
+#-----------------------------------------------------------------------------#
+
+# Check for some environment variables
+if [ -z $TO ] || [ -z $RSYNC_HOST ] || [ -z $RSYNC_DIR ] || [ -z $LOGDIR ]; then
+ echo "One of the following variables seems to be empty:"
+ echo "TO, RSYNC_HOST, RSYNC_DIR or LOGDIR"
+ exit 2
+fi
+
+if ! [ -d ${TO}/project/trace/ ]; then
+ # we are running mirror script for the first time
+ mkdir -p ${TO}/project/trace
+fi
+
+# Note: on some non-Debian systems, hostname doesn't accept -f option.
+# If that's the case on your system, make sure hostname prints the full
+# hostname, and remove the -f option. If there's no hostname command,
+# explicitly replace `hostname -f` with the hostname.
+HOSTNAME=`hostname -f`
+
+LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}"
+
+# Exclude architectures defined in $ARCH_EXCLUDE
+for ARCH in $ARCH_EXCLUDE; do
+ EXCLUDE=$EXCLUDE"\
+ --exclude binary-$ARCH/ \
+ --exclude disks-$ARCH/ \
+ --exclude installer-$ARCH/ \
+ --exclude Contents-$ARCH \
+ --exclude Contents-$ARCH.gz \
+ --exclude *_$ARCH.deb \
+ --exclude *_$ARCH.udeb \
+ --exclude pool-$ARCH/"
+ if [ "$ARCH" == "source" ]; then
+ SOURCE_EXCLUDE="\
+ --exclude *.tar.gz \
+ --exclude *.diff.gz \
+ --exclude *.dsc "
+ fi
+done
+
+# Logfile
+LOGFILE=$LOGDIR/debian-mirror-ports.log
+
+# Get in the right directory and set the umask to be group writable
+#
+cd $HOME
+umask 002
+
+# Check to see if another sync is in progress
+if lockfile -! -l 10800 -r 0 "$LOCK"; then
+ echo ${HOSTNAME} is unable to start rsync, lock file exists
+ exit 1
+fi
+# Note: on some non-Debian systems, trap doesn't accept "exit" as signal
+# specification. If that's the case on your system, try using "0".
+trap "rm -f $LOCK > /dev/null 2>&1" exit
+
+set +e
+
+# First sync /pool-*
+rsync --recursive --links --hard-links --times --verbose \
+ $EXCLUDE $SOURCE_EXCLUDE \
+ $RSYNC_HOST::$RSYNC_DIR/pool-* $TO >> $LOGFILE 2>&1
+result=$?
+
+if [ 0 = $result ]; then
+ # Now sync the remaining stuff
+ rsync --recursive --links --hard-links --times --verbose --delete-after \
+ --exclude "Archive-Update-in-Progress-${HOSTNAME}" \
+ --exclude "project/trace/" \
+ --exclude "/pool-*/" \
+ $EXCLUDE \
+ $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1
+
+ date -u > "${TO}/project/trace/${HOSTNAME}"
+else
+ echo "ERROR: Help, something weird happened" | tee -a $LOGFILE
+ echo "mirroring /pool-* exited with exitcode" $result | tee -a $LOGFILE
+fi
+
+
+if ! [ -z $MAILTO ]; then
+ mail -s "debian ports archive synced" $MAILTO < $LOGFILE
+fi
+
+savelog $LOGFILE
diff --git a/hurd/running/debian/faq.mdwn b/hurd/running/debian/faq.mdwn
new file mode 100644
index 00000000..8aaadf9c
--- /dev/null
+++ b/hurd/running/debian/faq.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2007, 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]]."]]"""]]
+
+[[!meta title="Debian GNU/Hurd FAQ"]]
+
+See also [[after_install]] instructions, and other [[/FAQ]].
+
+[[!inline
+pages="hurd/running/debian/faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="hurd/running/debian/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/faq/2_gib_partition_limit.mdwn b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
new file mode 100644
index 00000000..195191cb
--- /dev/null
+++ b/hurd/running/debian/faq/2_gib_partition_limit.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!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
new file mode 100644
index 00000000..f89a5c01
--- /dev/null
+++ b/hurd/running/debian/faq/512_mib_ram_limit.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="512 MiB RAM Limit"]]
+
+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
new file mode 100644
index 00000000..db0dbfd1
--- /dev/null
+++ b/hurd/running/debian/faq/apt_umount.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="apt: unmount cdroms"]]
+
+You can add a shell script umount so that apt can automatically unmount cdroms.
+
+ #!/bin/sh
+ # Filename: /usr/bin/umount
+
+ settrans -fg "$@"
+
+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
+trailing `/`.
diff --git a/hurd/running/debian/faq/bad_hypermeta_data.mdwn b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
new file mode 100644
index 00000000..bc960e30
--- /dev/null
+++ b/hurd/running/debian/faq/bad_hypermeta_data.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
+unmounted cleanly (maybe GNU/Linux got suspended to disk) and the Hurd cannot
+mount it as ext2 without checking. Either boot back into GNU/Linux and unmount
+it or you can try to run `fsck.ext3` from GNU/Hurd directly.
diff --git a/hurd/running/debian/faq/debugging_inside_glibc.mdwn b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
new file mode 100644
index 00000000..91b71d64
--- /dev/null
+++ b/hurd/running/debian/faq/debugging_inside_glibc.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+To get [[debugging]] information for glibc, you need to install the
+`libc0.3-dbg` package. At the place [[debugging/GDB]] looks for debugging
+symbols by default (`/usr/lib/debug/lib/`), Debian's `libc0.3-dbg` stores only
+the frame unwind information used for backtracing. If you want to step into
+glibc while debugging, you need to add `LD_LIBRARY_PATH=/usr/lib/debug` to
+debugged program's environment (`set env VAR value` from the GDB command line).
+If that still does not work, try `LD_PRELOAD=/usr/lib/debug/libc.so.0.3`
+instead.
diff --git a/hurd/running/debian/faq/debugging_translators.mdwn b/hurd/running/debian/faq/debugging_translators.mdwn
new file mode 100644
index 00000000..b55484e1
--- /dev/null
+++ b/hurd/running/debian/faq/debugging_translators.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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. 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.
diff --git a/hurd/running/debian/faq/dev_random.mdwn b/hurd/running/debian/faq/dev_random.mdwn
new file mode 100644
index 00000000..3b5fdffe
--- /dev/null
+++ b/hurd/running/debian/faq/dev_random.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!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
+like `/bin/bash` to `/dev/random` and `/dev/urandom`. A slightly more secure
+alternative is installing the `random-egd` from the `debian-ports` repository.
+
diff --git a/hurd/running/debian/faq/df.mdwn b/hurd/running/debian/faq/df.mdwn
new file mode 100644
index 00000000..4de232da
--- /dev/null
+++ b/hurd/running/debian/faq/df.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
+system.
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
new file mode 100644
index 00000000..c1c0a83c
--- /dev/null
+++ b/hurd/running/debian/faq/free_memory.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
new file mode 100644
index 00000000..c4a619a1
--- /dev/null
+++ b/hurd/running/debian/faq/hurd_console.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
new file mode 100644
index 00000000..ff14ce5f
--- /dev/null
+++ b/hurd/running/debian/faq/kernel_logs.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 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 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
+once and do not do this in single-user mode (where `ctrl+c` does not work).
diff --git a/hurd/running/debian/faq/other_repositories.mdwn b/hurd/running/debian/faq/other_repositories.mdwn
new file mode 100644
index 00000000..88781d46
--- /dev/null
+++ b/hurd/running/debian/faq/other_repositories.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+If you want to use the `apt-get source` facility, make sure that
+`/etc/apt/sources.list` contains a line like
+
+ deb-src http://ftp.de.debian.org/debian unstable main
+
+... replacing _de_ with your homeland's code.
diff --git a/hurd/running/debian/faq/ps_hangs.mdwn b/hurd/running/debian/faq/ps_hangs.mdwn
new file mode 100644
index 00000000..febfeb59
--- /dev/null
+++ b/hurd/running/debian/faq/ps_hangs.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
new file mode 100644
index 00000000..40781ab0
--- /dev/null
+++ b/hurd/running/debian/faq/reporting_bugs.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Please try to reproduce bugs which are not obviously Hurd-specific on Debian
+GNU/Linux and then file them there.
+
+If you find a genuine issue in Debian GNU/Hurd, please file it in our Alioth
+bug tracker at
+<http://alioth.debian.org/tracker/?atid=411594&group_id=30628&func=browse>
+If you find a bug in the Hurd or GNU Mach themselves, either file a bug against
+the respective Debian packages, or directly at
+<http://savannah.gnu.org/bugs/?group=hurd>
diff --git a/hurd/running/debian/faq/sata_disk_drives.mdwn b/hurd/running/debian/faq/sata_disk_drives.mdwn
new file mode 100644
index 00000000..dad10cb9
--- /dev/null
+++ b/hurd/running/debian/faq/sata_disk_drives.mdwn
@@ -0,0 +1,11 @@
+[[!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 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
new file mode 100644
index 00000000..517d59dc
--- /dev/null
+++ b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Privilege seperation does not work with Hurd currently. You need to explicitely
+set `PrivilegeSeparation` to `no` in `/etc/ssh/sshd_options`, just commenting out
+the entry will not work as it is on by default. Also make sure you have
+`/dev/random`, see below.
diff --git a/hurd/running/debian/faq/xserver-common.mdwn b/hurd/running/debian/faq/xserver-common.mdwn
new file mode 100644
index 00000000..09fbc902
--- /dev/null
+++ b/hurd/running/debian/faq/xserver-common.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
new file mode 100644
index 00000000..43ecbc77
--- /dev/null
+++ b/hurd/running/debian/package_troubleshooting.mdwn
@@ -0,0 +1,48 @@
+This page reports known Hurd-specific bugs, quirks and corresponding solutions and workarounds with Debian GNU/Hurd package installation and working.
+
+## <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:
+
+ #!/bin/bash
+ ln -s /sbin/ldconfig /bin/ldconfig
+ ln -s /bin/true /bin/update-rc.d
+ ln -s /bin/true /bin/start-stop-daemon
+ ln -s /bin/true /bin/install-info
+ ln -s /bin/true /bin/update-alternatives
+
+## <a name="SSH_not_working"> </a> SSH not working
+
+You must set up the [[translator/random]] device first.
+
+## <a name="An_X_package_hangs_at_startup_wi"> An X package hangs at startup without error messages </a>
+
+Observed with GTK programs like xchat, synaptic, inkscape. It is an issue with libpthread that (as of 04 Feb 2007) is still unresolved. Sorry.
+
+## <a name="Borked_fonts_on_GTK_app"> </a> Borked fonts on GTK app
+
+This is related to issues in Pango.
+
+* Install pango-dev package
+* Run as root:
+
+ pango-querymodules > /etc/pango/pango.modules
+
+## <a name="Installing_a_package_seems_to_ha"> Installing a package seems to hang forever </a>
+
+There are various reasons for this.
+
+* If interrupting the process with ctrl-c gives a line like that:
+
+ File "/usr/lib/python2.4/os.py", line 723, in urandom
+ bytes += read(_urandomfd, n - len(bytes))
+ KeyboardInterrupt
+
+it is the random device fault. Follow the [[translator/random]] guide. If you already did, try _anyway_ to detach and reattach the translators.
+
+## <a name="Cannot_compile_even_trivial_C_pr"> Cannot compile even trivial C programs </a>
+
+Check to have installed the following:
+
+ apt-get install build-essential
+ apt-get install libc-dev
diff --git a/hurd/running/debian/patch_submission.mdwn b/hurd/running/debian/patch_submission.mdwn
new file mode 100644
index 00000000..66348dd9
--- /dev/null
+++ b/hurd/running/debian/patch_submission.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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.
+
+If it is not a Debian-specific patch, you should strongly consider submitting
+the patch upstream for inclusion. This applies even more so if it is a GNU
+package, or otherwise frequently used package, or you know upstream anyway.
+
+If you had to change the code considerably and are not 100% sure you did not
+introduce a regression, or are not very experienced with these kinds of code
+changes, you should first submit your patch for review to the [Debian alioth
+patch
+tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse).
+
+If the patch is trivial, or one of the Debian porters approved your patch for
+submission, submit the patch to the Debian BTS (bug tracking system). You can
+either use the reportbug tool, or just simple mail. In any case, you should
+follow these guidelines:
+
+ * The submission address is <submit@bugs.debian.org>.
+ * The mail's subject (which will become the bug's title) should be
+ `SOURCE-PACKAGE: FTBFS on hurd-i386: REASON`.
+ * The first lines of the mail's body (the so-called *pseudo-header*):
+ * `Severity: important` -- not *serious*.
+ * `Version: VERSION` -- the version of the source package in unstable.
+ * `Tags: patch` -- as/if you include a ready-to-be-applied patch.
+ * `User: debian-hurd@lists.debian.org`
+ * `Usertags: hurd`
+
+In the bug description, mention that the package fails to build on hurd-i386
+and (if possible) quote the failure. If possible, point to the failing build
+log from <http://buildd.debian-ports.org/build.php> or elsewhere.
+
+Then, explain the failure (Debian maintainers usually do not know much about
+Hurd-specific failures), and attach the patch.
+
+The patch should be in unidiff form.
+
+If the package uses a patch system, it is preferable to submit the patch in a
+ready-to-use form (e.g. as a *dpatch*), but this is not required. Also, try to
+keep the patch small, e.g., do not submit a 100 KiB autotools diff for a
+one-line change in `configure.in` or a `Makefile.am`, but in this case mention
+that autotools need to be rerun and let the maintainer choose (you can suggest
+you would file a complete diff if the maintainer prefers).
+
+Last but not least, try to be courteous.
diff --git a/hurd/running/debian/porting.mdwn b/hurd/running/debian/porting.mdwn
new file mode 100644
index 00000000..0eb15465
--- /dev/null
+++ b/hurd/running/debian/porting.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Debian packages that need porting"]]
+
+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 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.
+
+When you have a patch to submit, please adhere to the [[patch_submission]]
+guidelines.
+
+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="open_issues" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/status.mdwn b/hurd/running/debian/status.mdwn
new file mode 100644
index 00000000..95e48edc
--- /dev/null
+++ b/hurd/running/debian/status.mdwn
@@ -0,0 +1,4 @@
+Debian GNU/Hurd is currently an official, non-releasing Debian port. I.e., there is no testing or stable distribution.
+
+ - [Build daemon/archive status](http://unstable.buildd.net/buildd/hurd-i386_stats)
+ - [Number of registered users](http://buildd.net/cgi/archvote.phtml)
diff --git a/hurd/running/distrib.mdwn b/hurd/running/distrib.mdwn
new file mode 100644
index 00000000..c197ad0e
--- /dev/null
+++ b/hurd/running/distrib.mdwn
@@ -0,0 +1,148 @@
+Working distributions of GNU/Hurd:
+
+* [[Debian]]
+
+GNU/Hurd distributions in early stages of development:
+
+* [[Arch|arch_hurd]] (features a LiveCD)
+* [[Gentoo]]
+* [[GNU]]
+
+<!-- Bee GNU/Hurd doesn't seem to exist anymore.
+* [[Bee]]
+-->
+
+# Issues
+
+<dt>[[SoftwareLicensing]]</dt>
+<dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has it's DFSG guidelines. Other distributions will need to address these same issues. </dd>
+
+[[GnuDebianRelationship]]
+
+
+## <a name="Installation"> Installation </a>
+
+<dl>
+ <dt> Install Instructions</dt>
+ <dd> Currently, <a href="http://www.debian.org/ports/hurd/hurd-install" target="_top">Debian's installation instructions</a> are the most up-to-date. [[Hurd/InstallNotes]] is an errata companion document with more helpful hints that have not yet been incorporated. </dd>
+</dl>
+
+<dl>
+ <dt>[[CrossInstall]]</dt>
+ <dd> Another way to install a system. </dd>
+</dl>
+
+<dl>
+ <dt> Release Information</dt>
+ <dd> About the latest CD release. Includes errata, known bugs and fixes. See [[CDNotesHome]] and [[TarballNotesHome]] for summaries </dd>
+</dl>
+
+<dl>
+ <dt>[[GRUB]]</dt>
+ <dd> A quick reference and explanation. </dd>
+</dl>
+
+<dl>
+ <dt>[[InstallTips]]</dt>
+ <dd> Info on how to install without a cd drive or linux installed as well as a few tips. </dd>
+</dl>
+
+Another installation method is using an emulated environment. The [[BochsEmulator]] was originally the recommended virtual machine solution, however most have switched over to QEMU, as it runs faster.
+
+* [[hurd/running/QEMU]] - A guide on how to use QEMU to run the hurd.
+* [[BochsFAQ]] - Common questions you should read.
+* [[VmWare]] - Why using it is discouraged.
+
+<dl>
+ <dt> Debian Installer</dt>
+ <dd> Work has been started by James Morrison and Glenn <nop>McGrath to [[PortDebootstrap]]. There is also a [[NewDebianInstaller]]. Why should Hurd folks care? It's important because this is the next generation installer that is intended to be used by all ports when Sarge is released. </nop></dd>
+</dl>
+
+
+# Using
+
+Debian [[debian/after_install]] instructions are a must-read to prepare an
+usable system.
+
+[[debian/Package_troubleshooting]] reports known bugs, quirks and workarounds
+about getting applications to work (if possible).
+
+
+# For Developers
+
+<dl>
+ <dt>[[SavannahProjects]]</dt>
+ <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>[[porting/guidelines]] FAQ</dt>
+ <dd> What does it take to move a piece of Debian packaged software to the GNU/Hurd port? </dd>
+</dl>
+
+<dl>
+ <dt>[[BuildingTheHurd]]</dt>
+ <dd> A summary by the Gentoo folks, thanks <a href="http://cvs.gentoo.org/~avenj/" target="_top">Jon Portnoy</a> - <a href="mailto:avenj@gentooNOSPAM.org">avenj@gentooNOSPAM.org</a></dd>
+</dl>
+
+<dl>
+ <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>
+ <dt><a href="http://hurd.she.kicks-ass.org:8084/uninstallable/" target="_top">Uninstallable packages</a></dt>
+ <dd> Many packages depend on these uninstallable packages. So building one of them will allow other to be build too. </dd>
+</dl>
+
+<dl>
+ <dt> Technical References</dt>
+ <dd> There are many standards and documents that might be applicable for those interested in developing software. </dd>
+</dl>
+
+* GNU [Coding Standards](http://www.gnu.org/prep/standards.html)
+* [[TestSuites]] - Posix, Perl, results feedback, etc.
+* [[Documentation]]
+* [[System_API_Limitations]]
+* [[CodeAnnouncements]] - Recent coding projects related to the Hurd
+
+<dl>
+ <dt> Debian <a href="http://www.debian.org/devel/" target="_top">Developer's Corner</a></dt>
+ <dd> The following references are provided as a starting point for those interested in helping to package software for Debian GNU/Hurd and Debian GNU/Linux. </dd>
+</dl>
+
+* [Policy Manual](http://www.debian.org/doc/debian-policy/)
+* Developer's [Reference](http://www.debian.org/doc/developers-reference/)
+* New Maintainers [Guide](http://www.debian.org/doc/maint-guide/)
+* There are many Debian email lists
+
+<dl>
+ <dt> Debian Todo</dt>
+ <dd> Packages needing attention. A possible use of this site could be to help track similar needs via [[HurdWnpp]]. This is not yet implemented. </dd>
+</dl>
+
+<dl>
+ <dt>[[GnuDistributionRumors]]</dt>
+ <dd> There are some discussions and several rumors circulating about creating a completely new distribution, not using a Debian architecture. </dd>
+</dl>
+
+# Misc.
+
+<dl>
+ <dt> Why a separate section of the website for this?</dt>
+ <dd> There are fundamentally different issues about distributions compared with coding. Distributions are concerned with final default configurations of packaged software and system integration as they use many software packages and help give users a sense of using an OS "product." </dd>
+</dl>
+
+<dl>
+ <dt>[[WhyDebian]]</dt>
+ <dd> A one page document focused on Debian aimed at users to answer their question "Why Debian?" </dd>
+</dl>
+
+<dl>
+ <dt>[[DebianProductSheet]]</dt>
+ <dd> Technical description of Debian aimed at those interested in Debian. </dd>
+</dl>
+
+* [Misc. Docs @Etherhogz](http://www.etherhogz.org/doc/) (broken)
+* [Ognyan Kulev Collection](http://debian.fmi.uni-sofia.bg/~ogi/hurd/links/index.html) of links (unsupported)
+* [2000 Jim Franklin Collection](http://angg.twu.net/the_hurd_links.html) of links
diff --git a/hurd/running/faq.mdwn b/hurd/running/faq.mdwn
new file mode 100644
index 00000000..2746a20a
--- /dev/null
+++ b/hurd/running/faq.mdwn
@@ -0,0 +1,20 @@
+[[!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]]."]]"""]]
+
+[[!meta title="General FAQ About Running GNU/Hurd"]]
+
+See also other [[/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
new file mode 100644
index 00000000..ef72bfad
--- /dev/null
+++ b/hurd/running/gentoo.mdwn
@@ -0,0 +1,34 @@
+* [Archived try at a Gentoo GNU/Hurd](http://www.mundurat.net/ggh/)
+
+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 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
new file mode 100644
index 00000000..94012ef5
--- /dev/null
+++ b/hurd/running/gnu.mdwn
@@ -0,0 +1,82 @@
+# <a name="The_GNU_Operating_System"> </a> The GNU Operating System
+
+The GNU Operating System, or GNU System as it is more commonly known, will be a
+complete [[Unix]]-like operating system composed entirely of [free
+software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU
+System is one of the goals of the [GNU Project](http://www.gnu.org/), which was
+[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by
+[Richard Stallman](http://www.stallman.org/).
+
+
+
+[[gnu/GNU]].
+
+It is our wish and goal to establish a new direction for the GNU system distribution. To that end, this page will begin setting some direction. This was spawned by several discussions over a few days on the Hurd mailing lists and IRC.
+
+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.
+
+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. Benefiting from the Hurd design and using a microkernel.
+4. Freedom.
+
+## <a name="Community"> Community </a>
+
+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.
+ * 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
+ * Let's have fun. It's GNU and it's important but let's enjoy ourselves.
+
+## Download
+
+ * Official GNU snapshot <http://www.update.uu.se/~ams/GNU>
+ * Extended GNU distribution <http://i-hug.sarovar.org/downloads/GNU/extended/>
+
+## <a name="Tools"> Tools </a>
+
+1. Developer Needs
+ * RPC Trace
+2. Installer
+ * Native installer would be preferred but we can bootstrap GNU/Linux for now if necessary
+3. Package Management
+ * There is a proposal to use stowfs. Let's get this going and test it out. Can it be made to work? How long will it take?
+ * Repository for packages
+ * Probably we can host it on the GNU servers
+ * Bug / Issue tracking
+ * Probably we should set up a Savannah project
+ * How to handle experimental patches to the core packages (Hurd, Mach, libc etc.) that are not in official CVS yet?
+
+## Resources
+
+ * [[Universal_package_manager]]
+ * How to [[set_up_GNU|setup]] and archiver for GNU
+ * [[Create_an_image]]
+
+## <a name="Todo"> Todo </a>
+
+1. AMS had made a GNU release. We can try it and test it to good use. We can fix broken things in it, and enhance it.
+ * The snapshot is very old. Probably better to build something from current stuff, even if it means more work
+ * ams said that he would like to get a new snapshot out that would be on a Live CD and using stowfs. I think what we need to do is start using/fixing GNU System Creator (GSC) to build packages for this effort.
+2. GNU is all about freedom AND ease of use. So, given installers are by nature quite complex, how should we install GNU on users's computers? I think ams's GSC comes into play here, maybe ams or sdschulze could (re-)write specifications of GSC.
+3. Until we have an installer ready, we could go the Gentoo-like route, and have every part manually installed. A good installation documentation may help. Our next milestone may be just this (in case ams hasn't already done it):
+ * have a good installation document out, with all the required packages hosted at gnu.org or savannah.org
+ * get stowfs working
+4. Maybe try to use hacked Debian packages until we get native ones?
+5. Move on, start coding, documenting, packaging.
+
+I tried refactoring this page, but didn't get far. -- [[Main/AaronHawley]] - 18 Feb 2006
diff --git a/hurd/running/gnu/create_an_image.mdwn b/hurd/running/gnu/create_an_image.mdwn
new file mode 100644
index 00000000..c7a97a4e
--- /dev/null
+++ b/hurd/running/gnu/create_an_image.mdwn
@@ -0,0 +1,97 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Creating a bootable qemu image from a root filesystem and bootloader
+
+1. Create a hard disk image
+
+ qemu-img create -f qcow <imagename.img> <size>G
+
+2. Use a live CD (better to have a lighter OS like system rescue CD to make the
+ process faster) and the image created to boot.
+
+ qemu -cdrom /dev/cdrom -hda <imagename.img> -boot d
+
+3. Once system is booted use a partition editing tool (like fdisk, cfdisk,
+ parted, gparted, qtparted ...) to partition the image.
+
+ cfdisk
+
+ create the necessary partitions (root and swap partitions boot, home ... if
+ required)
+
+4. Create a file system for the root partition
+
+ mke2fs /dev/hda1
+
+5. Mount the partition
+
+ mkdir disk
+ mount /dev/hda1 disk
+
+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 snapshot from ams' site
+ <http://www.update.uu.se/~ams/home/slask/GNU/>
+
+ scp <user>@<host>:<path to the compressed file system> disk
+
+7. Uncompress the files
+
+ cd disk
+ tar -jxvf <compressed filesystem>
+
+8. Unmount the mounted partition
+
+ cd ..
+ umount disk
+
+9. power off the guest OS.
+
+ poweroff
+
+10. To make the file system bootable download a grub floppy image
+
+ <http://hurd.in/pub/Hurd/HurdOnVMware/grub.img>
+
+11. Run qemu to boot into your brand new system
+
+ qemu -hda <hard disk image.img> -fda grub.img -boot a
+
+Happy Hacking !!
+
+
+Make your new system boot from the hard disk
+
+1. Mount your grub image
+
+ mkdir floppy
+ mount -t ext2 -o loop grub.img floppy
+
+2. Use previous steps 2 and 5 to boot from a liveCD and mount the partition
+
+ cd disk/boot
+ scp -r <user>@<host>:<path to mounted floppy image directory>/boot/grub
+
+3. Poweroff the guest
+
+ poweroff
+
+4. Boot new system using floppy image previous step 11
+
+ use install to hard disk option if you used the above grub image
+
+ or go to grub command line and type
+
+ root (hd0,0)
+ setup (hd0)
+
+ Now you have a bootable system image. Enjoy Maadi !!
diff --git a/hurd/running/gnu/discussion.mdwn b/hurd/running/gnu/discussion.mdwn
new file mode 100644
index 00000000..7a96803b
--- /dev/null
+++ b/hurd/running/gnu/discussion.mdwn
@@ -0,0 +1,19 @@
+## <a name="GNU_Web_Meta_Discussion"> </a> GNU Web Meta Discussion
+
+Where did you get that logo? Maybe it's the color but it looks very elegant compared to <http://www.gnu.org>
+
+-- [[Main/GrantBow]] - 23 Oct 2002
+
+I did it myself. Somewhat inspired by another GNU artwork, but completely hand made in the Gimp.
+
+I'm working on a cool Mach logo as well. Inspiration is the old Atari arcade game M.A.C.H. 3. :-)
+
+-- [[Main/JoachimNilsson]] - 29 Oct 2002
+
+What do you feel about the new copyright notice at the bottom of this web?
+
+I'm afraid that I will have to add another page to the edit process to actually enforce this stuff. Perhaps I can combine the old Preview with this copyright assignment, what do you think?
+
+Oh, btw. It seems RMS is right. At least according to Swedish law (as far as I've checked) transfer/assignment of copyright can be made the way he describes. The user has to select a checkbox or press a button to accept the copyright assignment each time. But as long as that is done we don't have to have any other form of "legal contract" between the users and the FSF.
+
+-- [[Main/JoachimNilsson]] - 29 Oct 2002
diff --git a/hurd/running/gnu/gnu.mdwn b/hurd/running/gnu/gnu.mdwn
new file mode 100644
index 00000000..3ee5f657
--- /dev/null
+++ b/hurd/running/gnu/gnu.mdwn
@@ -0,0 +1,27 @@
+## <a name="GNU_FSF_amp_RMS"> </a> GNU, FSF &amp; RMS
+
+GNU stands for GNU's Not [[Unix]]. It is a project announced in 1983 by
+[[RichardStallman]] (RMS). The Free Software Foundation
+([FSF](http://www.fsf.org/fsf/fsf.html)) was founded in 1985 to act as a parent
+organization for GNU and many other projects. GNU and some non-GNU projects
+are now hosted on the [Savannah](http://savannah.gnu.org) platform similar to
+SourceForge.net.
+
+<dl>
+<dt>[[History]]</dt>
+<dd> Background information about the GNU Project. </dd>
+<dt>[[Names]]</dt>
+<dd> A page describing the name GNU itself and it's usage. </dd>
+<dt>[[Manifesto]]</dt>
+<dd> A founding document that still influences the system's technical design and moral philosophy. </dd>
+<dt> FAQ Link</dt>
+<dd> What is the relation between <a href="http://www.gnu.org/software/hurd/faq.en.html#q1-2" target="_top">GNU and Hurd</a>? </dd>
+<dt> Assisting</dt>
+<dd> If you would like to help the GNU movement visit the official site at <a href="http://www.gnu.org" target="_top">http://www.gnu.org</a>. </dd>
+<dt>[[SoftwareProjects]]</dt>
+<dd> Information about other GNU projects. </dd>
+<dt><a href="http://lists.gnu.org/mailman/listinfo/gnu-system-discuss" target="_top">gnu-system-discuss</a></dt>
+<dd> Mailing list for discussion about the GNU system. </dd>
+</dl>
+
+[[TODO]].
diff --git a/hurd/running/gnu/history.mdwn b/hurd/running/gnu/history.mdwn
new file mode 100644
index 00000000..f321c961
--- /dev/null
+++ b/hurd/running/gnu/history.mdwn
@@ -0,0 +1,7 @@
+The GNU project has a long history. For software projects, it is exceptionally long. For social movements it is quite short. Although, its history is incomplete, and is being made now (to which you could contribute).
+
+* [Announcement](http://www.gnu.org/gnu/initial-announcement.html): The original announcement made in 1983 by [[RichardStallman]].
+* [The GNU Project](http://www.gnu.org/gnu/gnu-history.html): A summary by [[RichardStallman]].
+* [History of the GNU Project](http://www.gnu.org/gnu/thegnuproject.html): About the GNU Project, by [[RichardStallman]].
+
+Page started from links at [[GNU]]. -- [[Main/AaronHawley]] - 17 Feb 2006
diff --git a/hurd/running/gnu/manifesto.mdwn b/hurd/running/gnu/manifesto.mdwn
new file mode 100644
index 00000000..c2a3294f
--- /dev/null
+++ b/hurd/running/gnu/manifesto.mdwn
@@ -0,0 +1,5 @@
+Written early in the life of the GNU project, the GNU manifesto still influences the design of the GNU system.
+
+* [The GNU Manifesto](http://www.gnu.org/gnu/manifesto.html)
+
+Started page. -- [[Main/AaronHawley]] - 17 Feb 2006
diff --git a/hurd/running/gnu/names.mdwn b/hurd/running/gnu/names.mdwn
new file mode 100644
index 00000000..fcab6a11
--- /dev/null
+++ b/hurd/running/gnu/names.mdwn
@@ -0,0 +1,8 @@
+The GNU stands for GNU's Not [[Unix]]. It is a project as described in [[GNU]].
+
+What can be confusing is the usage. GNU can stand for:
+
+* an entire system as envisioned in 1983. GNU/Hurd is a synonym.
+* GNU components when used with the Linux kernel: GNU/Linux This term has been adopted by the [Debian project](http://www.debian.org) but is not recognized as widely as the FSF would like.
+
+-- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/hurd/running/gnu/richardstallman.mdwn b/hurd/running/gnu/richardstallman.mdwn
new file mode 100644
index 00000000..d6688850
--- /dev/null
+++ b/hurd/running/gnu/richardstallman.mdwn
@@ -0,0 +1,6 @@
+Richard Stallman (or ''RMS'') is the found of the GNU project, the Free Software Foundation and author of numerous GNU software packages. More useful information about Richard is available from his Wikipedia entry or his personal Web site.
+
+* [Wikipedia: Richard Stallman](http://en.wikipedia.org/wiki/Richard_Stallman/): Entry at Wikipedia
+* [Stallman dot org](http://www.stallman.org/): Personal Web site.
+
+Page started. This seems like the appropriate Wiki to have the page. -- [[Main/AaronHawley]] - 17 Feb 2006
diff --git a/hurd/running/gnu/setup.mdwn b/hurd/running/gnu/setup.mdwn
new file mode 100644
index 00000000..2fb30c7b
--- /dev/null
+++ b/hurd/running/gnu/setup.mdwn
@@ -0,0 +1,84 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
+
+create a partition with minimum of 800 MB (if you want to install programs later you might need to allocate more space)
+
+It comes with GNU Emacs 21.4, gcc 4.0, gdb 6.3, parted, wget and many more
+
+Note: 2GB limit for partitions is no more there, it is fixed
+
+## Step 2: Create GNU Hurd filesystem on the partition
+
+ # mke2fs -o hurd /dev/hdd6
+
+## Step 3: Grab a snapshot of the GNU
+
+from <http://www.update.uu.se/~ams/home/slask/GNU/> or Extended GNU from <http://i-hug.sarovar.org/downloads/GNU/extended/>
+
+## Step 4: Extract the snapshot to the newly created partition
+
+ # mount /dev/hdd6 /mnt
+ # cd /mnt
+ # tar -jxvf <path to downloaded location>/GNU--2006-01-08.tar.bz2
+
+Wait for the extraction to complete, depending on the system configuration the time varies. The compressed image is 178MB and it uncompresses to about 750MB
+
+## Step 5: Configure grub to boot GNU
+
+This can be tricky since the partition naming is different for linux, grub and hurd
+
+My configuration look like this ...
+
+ title GNU (also known as GNU/Hurd)(Single user)
+ root (hd0,5)
+ kernel /boot/gnumach.gz root=device:hd3s6 -s
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ title GNU (also known as GNU/Hurd)(Multi-user)
+ root (hd0,5)
+ kernel /boot/gnumach.gz root=device:hd3s6
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ grub linux hurd
+ hd0,5 hdd6 hd3s6
+
+If you have only one harddisk it will be hd0 for grub wherever you connect it.
+But linux and hurd names depend on whether you connect it as primary master
+(hda or hd0), primary slave (hdb or hd1) [this is my cdrom drive], secondary
+ master (hdc or hd2) or secondary slave (hdd or hd3) [this is my precious
+Maxtor 2GB hard disk].
+
+The partition naming of hurd is similar to BSD slices. hda1 is hd0s1, hda2 is
+ hd0s2 ...
+
+In my case the root device is hd0s6 (hdd6)
+
+## Step 6: Now boot into your brand new GNU System.
+
+It will do some initial setup and you will get a prompt.
+Now reboot into your configured GNU System.
+
+ # reboot
+
+## Step 7: Start using your GNU system
+
+Here is the GNU/Hurd users guide. It starts from the basics. <http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html>
+
+*Warning! : It is not yet ready for normal use, it is a developer's release.*
+
+So when you encounter bugs report it to bug-hurd@gnu.org
+
+Join us on gnu-system-discuss <http://lists.gnu.org/mailman/listinfo/gnu-system-discuss> to help finish the GNU System.
diff --git a/hurd/running/gnu/softwareprojects.mdwn b/hurd/running/gnu/softwareprojects.mdwn
new file mode 100644
index 00000000..4790c5c9
--- /dev/null
+++ b/hurd/running/gnu/softwareprojects.mdwn
@@ -0,0 +1,8 @@
+Some of the GNU software effects the Hurd development directly or indirectly. Here's a place for notes about these changes. The official sources are the GNU software [Directory](http://www.gnu.org/directory/) (sponsored by the UN!), [Projects](http://www.gnu.org/projects/), [Packaging](http://www.gnu.org/software/packaging/) and [savannah](http://savannah.gnu.org/) pages, but this page is for Hurd related notes about them.
+
+<dl>
+ <dt> GCC</dt>
+ <dd> deb packages of gcc-{3.2,3.3} are available for testing from <a href="http://people.debian.org/~mbanck/hurd-gcc-4.0/" target="_top">http://people.debian.org/~mbanck/hurd-gcc-4.0/</a> ./ </dd>
+</dl>
+
+* [[Universal_package_manager]] and archiver for GNU
diff --git a/hurd/running/gnu/todo.mdwn b/hurd/running/gnu/todo.mdwn
new file mode 100644
index 00000000..e2dc2e89
--- /dev/null
+++ b/hurd/running/gnu/todo.mdwn
@@ -0,0 +1,6 @@
+There are varying things to be done for the operating system requiring a variety of effort, and skills. The following are todo lists with a focus on meeting needs for releasing the GNU system.
+
+* [Alfred Szmidt's todo list](http://lists.gnu.org/archive/html/gnu-system-discuss/2006-06/msg00056.html) - Post to gnu-system-discuss on 21 Jun 2006.
+* [Hurd Task list](http://savannah.gnu.org/task/?group=hurd) - Maintained on the GNU Savannah list.
+
+Page started. -- [[Main/AaronHawley]] - 29 Jun 2006
diff --git a/hurd/running/gnu/universal_package_manager.mdwn b/hurd/running/gnu/universal_package_manager.mdwn
new file mode 100644
index 00000000..e58a2058
--- /dev/null
+++ b/hurd/running/gnu/universal_package_manager.mdwn
@@ -0,0 +1,156 @@
+[[!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]]."]]"""]]
+
+## Mission
+
+"To enable the GNU System to install packages of any format like rpm, deb,
+ebuild... so that GNU System will be able to use softwares packaged by projects like Debian and Gentoo"
+
+## Features
+
+Basically all package management schemes follow similar approach, it will have a single binary archive containing the actual software and some metadata like packages it requires, what all it provides ... So when we install an rpm package this tool will help rpm tool to recognise the packages installed by stow and it will be stowed instead of the normal rpm way of installing in /usr.
+
+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 ...
+
+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?
+
+ * The GNU Hurd provides a lot of advanced features and functionalities. We aim to exploit those features.
+ * Combining translators with UnionFS gives a very exciting package manager.
+ * We could use the good features of existing packaging systems like deb, rpm, ebuilds, ports ... plus unionfs and hurd translator is a compelling combination.
+
+With the increased flexibility in implementing filesystems as per the requirements, we can implement the functionality similar to apt-get, emerge or yum... (dependency tracking, versions tracking...) in the filesystem itself.
+
+## What?
+
+ * Have a basic filesystem based package manager
+ * Write translators to convert between GNU's packaging format and the existing one's like rpm, deb ...
+
+## How?
+
+ * 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
+
+Just a sample script.
+
+ $ cd /packages/meta/vim/current/depends
+ $ for i in `ls *`
+ $ do
+ $ if [ -f /packages/binary/$i ]
+ $ then
+ $ echo "$i is installed"
+ $ else
+ $ install $i
+ $ fi
+ $ done
+
+The same can be achieved using any of the languages or front ends or even manual copying.
+
+If all the dependencies are there
+
+ $ cp -r /ftp/ftp.gnu.org/packages/binary/vim/7.0 /packages/binary/vim/7.0
+
+## Implementation Details
+
+Lets take the example of rpm, it is simply a cpio archive with software and
+meta data as its contents. Just extract it to stow directory with a name
+package-version. When apt-get or yum asks for information about already
+installed packages read the stow tree and return back the requested data.
+
+Same case for ebuild. We can provide these details to any packaging system
+in the way it wants using a translator. So support for a new format is
+just writing the new translator.
+
+## Initial idea
+
+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 example vim 6.4 version can be installed from source like
+
+ # cd vim64
+ # ./configure --prefix=/packages/binary/vim/6.4
+ # make
+ # make install
+
+Now if you have another vim version, say 7.0 then just follow the steps
+
+ # cd /packages/source/vim
+ # CP /<pathtovimtarball>/vim-7.0.tar.bz2
+ # tar -jxvf vim-7.0.tar.bz2
+ # mv vim70 7.0
+ # ./configure --prefix=/packages/binary/vim/7.0
+ # make
+ # make install
+
+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
+
+## Metadata: /packages/meta
+
+Dependency information is stored as a symbolic link to the required packages in a subdirectory called depends.
+
+## Requirement
+
+We will require unionfs support if we chose to go through path 2 (which is what I like because we can really show off with translators.)
+
+ * Developing status - planning
+ * Near term goal - implement stow backend for dpkg
+ * High priority task - make unionfs work on boot. Mail from AMS to gnu-system-discuss on problem statement <http://www.mail-archive.com/gnu-system-discuss@gnu.org/msg00198.html>
+
+## Developer Guidelines.
+
+ * GNU coding standards <http://www.gnu.org/prep/standards/>
+
+
+## FAQ - Frequently asked questions
+
+ 1. How can I join this project?
+
+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|hurd-paper]]
+
+iii. Read about translators <http://www.debian.org/ports/hurd/hurd-doc-translator>
+
+iv. Try out these cool [[translator_examples|translator/examples]]
+
+v. Add your name below and give a shout in the list.
+
+
+## Comments??
+
+Add your comments here
+
+## Interested?
+
+To join the project just list your name below.
+
+ 1. PraveenA
+ 2. IsaacPraveen
+ 3. VikramVincent
+ 4. MaheshM
+ 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
new file mode 100644
index 00000000..42d85c5b
--- /dev/null
+++ b/hurd/running/live_cd.mdwn
@@ -0,0 +1,25 @@
+You can download a gzipped iso of a Hurd Live CD at
+<http://www.superunprivileged.org/hurd/live-cd/>.
+
+The Superunpriveleged crew also offers a tiny Hurd Live CD that is under 10
+MiB: <http://www.superunprivileged.org/hurd/tiny-cd/>
+
+Use it like this:
+
+ $ qemu -cdrom hurd-tiny-cd-20060722.iso
+
+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
new file mode 100644
index 00000000..6989cf72
--- /dev/null
+++ b/hurd/running/qemu.mdwn
@@ -0,0 +1,201 @@
+This page discusses things for [[Unix]] systems, there is a separate page for
+[[Microsoft_Windows]] systems.
+
+
+# Readily Available Images
+
+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.
+
+<!--* [Disk image](http://www.numenor.art.pl/balrog/hurd/) with an installation of
+ [[Debian_GNU/Hurd|running/debian]].-->
+
+* [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. 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. //-->
+
+
+# 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 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.
+
+
+# Installing Debian/Hurd with QEMU
+
+First off you will need to create a disk image using `qemu-img`. I have set mine to 2 gigabytes, although you should be able to get away with less(Currently, the maximum disk image size one can create with QEMU is 4.5G).
+
+ $ qemu-img create hd0.img 2G
+
+Next you will want to start up QEMU and begin the installation process. The first time you run it you will want to use the `-boot d` option to boot off the cdrom.
+
+ $ qemu -hda hd0.img -cdrom debian-K16-hurd-i386-CD1.iso -fda floppy.img -boot d
+
+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.
+
+Also see another text about how to [[gnu/create_an_image]] for the
+[[GNU_system|gnu]].
+
+
+# Transferring Files
+
+## Mounting Disk Image on Host
+
+You may wish to mount your disk image on your host system to transfer files. To do this you will first need to find the offset of the partition you wish to mount.
+
+ # fdisk -ul hd0.img
+ ...
+ 128 heads, 63 sectors/track, 0 cylinders, total 0 sectors
+ Units = sectors of 1 * 512 = 512 bytes
+
+ Device Boot Start End Blocks Id System
+ hd0.img1 * 63 3515903 1757920+ 83 Linux
+ hd0.img2 3515904 4193279 338688 82 Linux swap / Solaris
+
+Now take the number of sectors for the beginning of the partition and multiply it by the sector size. My partition starts at sector 63 and I have a sector size of 512 therefor my offset is 32256.
+
+ # mount -o loop,offset=32256 hd0.img /mnt/diskimage
+
+## Having QEMU create *virtual FAT disk images*
+
+[Manual](http://www.nongnu.org/qemu/qemu-doc.html#SEC25).
+
+QEMU has a facility to create FAT file systems on-the-fly:
+
+ qemu [...] -hdc fat:[somewhere]
+
+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
+
+Some further notes about [[networking]] and home hints about
+[[networking/sharing_files]].
+
+## Internet Access
+
+If you just want to access the internet from within QEMU, you can setup pfinet for QEMU's user-networking:
+
+ # 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://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.
+
+
+## Bridged Networking
+
+### What is Needed
+
+1. Your Linux kernel will need 802.1d Ethernet Bridging support and TUN/TAP device driver support.
+2. You will need to install [bridge-utils](http://bridge.sourceforge.net).
+
+
+### Setting Up the Host Bridge
+
+You need to setup a bridge on the host first. This assumes `eth0` is down. I have modified my hosts network startup scripts to automatically setup a bridge, you may want to do this also.
+
+ # brctl addbr br0
+ # ifconfig eth0 0.0.0.0 promisc up
+ # brctl addif br0 eth0
+
+At this point you will need to setup `br0` as you would normally `eth0` (`dhcpcd br0` for example).
+
+### The qemu-ifup Script
+
+This script gets called when QEMU starts and will attach the tun device to the bridge. QEMU will look for this file at `/etc/qemu-ifup` and that is where I keep mine.
+
+ #!/bin/sh
+ sudo ifconfig $1 0.0.0.0 promisc up
+ sudo brctl addif br0 $1
+
+
+### Setting up the Network in the Hurd
+
+Now it is time to start-up your QEMU Hurd system and get networking going in there.
+
+**Important:** Remember you may need to use the `-M isapc` or `-isa` flag if using an older version of the gnumach package.
+
+ $ qemu -hda hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap
+
+Once you have logged in as `root` run the `pfinet` translator with values that apply to your network. Think of your QEMU client as another computer in your network.
+
+ # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a xxx.xxx.xxx.xxx -g xxx.xxx.xxx.xxx -m xxx.xxx.xxx.xxx
+
+That should do it! Do not forget to edit/update `/etc/resolv.conf` to get DNS working.
+
+
+# Related Links
+
+These are links that users may find helpful.
+
+Debian [[debian/after_install]] -- good source of information pertaining to your
+system after installation.
+
+[[Image_for_L4]] -- a QEMU image for the Hurd/L4 project.
+
+<http://eyeside.net/hurd/Hurd-on-QEMU.html>
+
+
+# TODO
+
+[[IRC]], #hurd, 2007-07-04.
+
+ <azeem-uni> so, is there a way to use a Debian GNU/Hurd partition (/dev/hda6) with qemu directly?
+ <tschwinge> Don't dare to do that, please.
+ <tschwinge> It will lead to inconsistencies.
+ <tschwinge> Because the Linux kernel thinks that it has complete control over the disk, or something.
+ <tschwinge> In theory you could run something like ``-hda /dev/hda'', having GRUB installed on there to offer you to boot your Hurd system from hda6 and that will even work, but then don't get the idea to stop qemu, mount that partition on your Linux system and restart qemu. That's where I got lots of inconsistencies then, afterwards.
+ <azeem-uni> it's probably the same problem as having that partition mounted, suspending to disk, booting into it in the Hurd, and resume Linux
+ <neal> right
+ <tschwinge> That's a different problem.
+ <tschwinge> Then the partitoon is still mounted.
+ <neal> no, I think it is basically the same problem
+ <tschwinge> The file system stuff is cached in the kernel.
+ <neal> you have data that has not been written to disk yet
+ <tschwinge> Right.
+ <neal> and neither is prepared for the resource to be shared
+ <tschwinge> In the azeem-uni scenarion the data is on the file system layer and in my scenarion it's some disk block caching inside the Linux kernel, I guess.
+ <azeem-uni> anyway, do you guys think if I use -hda /dev/hda and tell Grub to boot off /dev/hda6, that the rest of hda should be fine, right?
+ <azeem-uni> maybe adding -snapshot makes it totally safe
+ <neal> azeem: Should be fine.
+ <tschwinge> Yes.
+
+The problem is actually that the linux block cache doesn't make any consistency between /dev/hda and /dev/hda6, so if you give /dev/hda to qemu, qemu writings won't be consistent with mounting /dev/hda6 in linux. You can give /dev/hda6 directly to qemu and it will be fine.
+
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/image_for_l4.mdwn b/hurd/running/qemu/image_for_l4.mdwn
new file mode 100644
index 00000000..515f51bc
--- /dev/null
+++ b/hurd/running/qemu/image_for_l4.mdwn
@@ -0,0 +1,376 @@
+This page is initially taken from <http://perso.ens-lyon.fr/alexandre.buisse/hurd.html> with the following signature:
+
+> 04-02-2005 Alexandre Buisse
+>
+> Send any comments or ameliorations to <Nattfodd@gmailNOSPAM.com>
+
+----
+
+This is a howto on how to get a working image of Hurd/L4 with qemu, on ia32 arch.
+
+# <a name="1_Floppy_image"> 1. Floppy image </a>
+
+You will need the following :
+
+* automake 1.7 (or greater)
+* autoconf 2.53 (or greater)
+* grub
+* the CVS version of hurd-l4, which you can retrieve from the savannah server: `cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4`
+* two flavours of Pistachio, the L4 kernel, which can be found at <http://www.l4ka.org/projects/pistachio/download.php>. Take the demodisk for ia32 (`pistachio-ia32-0.4-demodisk.bin.bz2`), we'll checkout the CVS later (the 0.4 tarball isn't recent enough).
+
+We will begin with the hurd itself (these steps are taken from the `README`).
+
+ $ cd hurd-l4
+ $ autoreconf -f -i -s
+
+You shouldn't have any warnings with this autoreconf. If that is not the case, it probably hasn't used the good version of automake or autoconf. For instance, on Gentoo Linux, you must set WANT\_AUTOCONF to 2.5 and WANT\_AUTOMAKE to 1.7.
+
+ $ ./configure --enable-maintainer-mode --prefix=/l4
+ $ make
+ $ make install
+ $ mkdir /l4/boot
+ $ install -s laden/laden /l4/boot
+ $ install -s wortel/wortel /l4/boot
+ $ install -s physmem/physmem /l4/boot
+ $ install -s task/task /l4/boot
+ $ install -s deva/deva /l4/boot
+ $ install -s ruth/ruth /l4/boot
+
+Now we'll prepare the Pistachio kernel :
+
+ $ cd ..
+ $ cvs -d:pserver:guest:guest@cvs.l4ka.org:/public-cvs login
+ $ cvs -z3 -d:pserver:guest@cvs.l4ka.org:/public-cvs co pistachio
+ $ cd pistachio
+
+We must apply some patchs for it to work properly with The Hurd. They are located in `hurd-l4/README`:
+
+ $ patch -p1 < ../hurd-l4/README
+
+We will first compile sigma0 (and some other tools) :
+
+ $ cd user
+ $ autoreconf -f -i -s
+ $ mkdir BUILDDIR
+ $ cd BUILDDIR
+
+We need to change the linkbase of sigma0 :
+
+ $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4
+ $ make
+ $ make install
+
+And now the kernel itself :
+
+ $ cd ../../kernel
+
+You can use any builddir as long as the directory doesn't yet exist.
+
+ $ make BUILDDIR=/tmp/pistachio-build
+ $ cd /tmp/pistachio-build
+ $ vi Makeconf.local
+
+You should modify the first three lines to :
+
+ ARCH=ia32
+ CPU=i586
+ PLATFORM=pc99
+
+now run:
+
+ $ make menuconfig
+
+Set the options as they fit you but for qemu to work, you must have the following hardware :
+
+ IA32 Basic Architecture
+ Pentium1 Processor Type
+
+You can now:
+
+ $ make
+
+You should obtain a file named ia32-kernel into your build directory.
+
+ $ cp ia32-kernel /l4/boot
+ $ cp /l4/libexec/l4/sigma0 /l4/boot
+
+We now have to modify a little bit the demodisk to use the kernel and servers we just obtained :
+
+ $ mkdir qemu
+ $ mkdir qemu/image
+ $ cd qemu
+ $ cp ~/pistachio-ia32-0.4-demodisk.bin.bz2 .
+ $ bunzip2 pistachio-ia32-0.4-demodisk.bin.bz2
+ $ mount -o loop pistachio-ia32-0.4-demodisk.bin image
+ $ cd image/boot
+ $ cp /l4/boot/* .
+ $ cd grub
+ $ vi menu.lst
+
+Your should edit `menu.lst` to make it look like :
+
+ title GNU Hurd on L4
+ kernel /boot/laden -D -o serial,uart1,speed=9600
+ module /boot/ia32-kernel
+ module /boot/sigma0
+ module /boot/wortel -D -o serial,uart1,speed=9600
+ module /boot/physmem
+ module /boot/task
+ module /boot/deva
+ module /boot/task
+ module /boot/ruth
+
+The two -D are intended for debug, you can delete them if you want. It is possible that filenames are limited to 8 characters, check your image/boot directory for ia32-kernel. If it has been renamed into ia32-ker, modify the according line in menu.lst
+
+When you start qemu, you will have two windows : the shell from which you launched it and a VGA window. You can interact with L4 in both windows (switching with the `config/console` command in the debugger). You can choose to have wortel and laden output to the serial device (the shell), which is default behaviour, or to VGA (change `-o serial,urt1,speed=9600` by `-o vga` in your menu.lst).
+
+The image is now ready :
+
+ $ cd ../../../
+ $ umount image
+
+We can launch qemu:
+
+ $ qemu -dummy-net -serial stdio -fda pistachio-ia32-0.4-demodisk.bin -boot a
+
+Congratulations, you just booted Hurd/L4 ! To start the Kernel Debugger, press `ESC`. To switch the KDB mode from character (I find it unusable) to command line, type
+
+ > c
+ /conf> m
+
+# <a name="2_Disk_Image"> 2. Disk Image </a>
+
+Everything went fine, and Hurd/L4 should have shown you a nice boot on our floppy image. Our next step will be to make banner run and show us its nice ASCII Art on this brand new OS.
+
+However, there is one problem : banner linked with the libc weights about 6MB, and we only have a 1.44MB floppy. We will then begin with making an image of a whole hard disk instead of a simple floppy.
+
+We still will work with qemu, of course, but we'll also use Bochs to install Grub on the image (I have not yet tried with qemu).
+
+To begin with, some mathematics. We'll make a 30MB image but you can adapt this value to your need. A disk is made of heads, cylinders and sectors (we won't go in detail about what these really mean). A sector has a constant size of 512 bytes and there are at most 255 heads and 63 sectors. The total size of a disk is C \* H \* S \* 512. We'll use the maximum capacity for S and 16 sectors and that will give us how much cylinders we need : C = E(30,000,000 / (16 \* 63 \* 512)) = 58. The exact size of our image will then be : 58 \* 16 \* 63 \* 512 = 29,933,568 bytes and we will have 58 \* 16 \* 63 = 58464 pieces of 512 bytes.
+
+Let's create it : we use the magic command `dd` on the special device which contain an infinity of 0.
+
+ $ dd if=/dev/zero of=hurd_l4.img bs=512 count=58464
+ 58464+0 records in
+ 58464+0 records out
+
+We will mount it in loopback :
+
+ $ losetup /dev/loop0 hurd_l4.img
+
+We need now to have it recognized as a hard disk :
+
+ $ fdisk -u -C58 -S63 -H16 /dev/loop0
+ Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
+ Building a new DOS disklabel. Changes will remain in memory only,
+ until you decide to write them. After that, of course, the previous
+ content won't be recoverable.
+
+ Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
+
+ Command (m for help):
+
+We should create a new primary partition (press: `'n'`, `'p'`, `'1'`, default, default) and toggle it bootable (`'a'`, `'1'`). Now, if you press `'p'`, you should see something like :
+
+ Command (m for help): p
+
+ Disk /dev/loop0: 29 MB, 29933568 bytes
+ 16 heads, 63 sectors/track, 58 cylinders, total 58464 sectors
+ Units = sectors of 1 * 512 = 512 bytes
+
+ Device Boot Start End Blocks Id System
+ /dev/loop0p1 * 63 58463 29200+ 83 Linux
+
+If everything is fine (especially check the `Start` and `End` fields), you can press `'w'` to write the table on the disk:
+
+ Command (m for help): w
+ The partition table has been altered!
+
+ Calling ioctl() to re-read partition table.
+
+ WARNING: Re-reading the partition table failed with error 22: Invalid argument.
+ The kernel still uses the old table.
+ The new table will be used at the next reboot.
+ Syncing disks.
+
+You will have noticed that the partition only starts at the 63rd sector. The beginning of the disk contains the MBR which is used for booting. We must then remount the disk making sure that this part is skipped before formating it. We know that a sector uses 512 bytes so we should begin at 63 \* 512 = 32256 :
+
+ $ losetup -d /dev/loop0
+ $ losetup -o32256 /dev/loop0 hurd_l4.img
+
+Now comes time to format it into a decent filesystem :
+
+ $ mke2fs /dev/loop0
+ mke2fs 1.35 (28-Feb-2004)
+ Filesystem label=
+ OS type: Linux
+ Block size=1024 (log=0)
+ Fragment size=1024 (log=0)
+ 7328 inodes, 29200 blocks
+ 1460 blocks (5.00%) reserved for the super user
+ First data block=1
+ 4 block groups
+ 8192 blocks per group, 8192 fragments per group
+ 1832 inodes per group
+ Superblock backups stored on blocks:
+ 8193, 24577
+
+ Writing inode tables: done
+ Writing superblocks and filesystem accounting information: done
+
+ This filesystem will be automatically checked every 22 mounts or
+ 180 days, whichever comes first. Use tune2fs -c or -i to override.
+
+We should now be able to mount it the right way :
+
+ $ mkdir mnt
+ $ losetup -d /dev/loop0
+ $ mount -o loop,offset=32256 hurd_l4.img mnt/
+
+Here comes grub time (I assume you have the grub files in `/boot/grub` and the `menu.lst` we've obtained in the previous section is in `~/`) :
+
+ $ mkdir -p mnt/boot/grub
+ $ cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/e2fs_stage1_5 mnt/boot/grub/
+ $ cp ~/menu.lst mnt/boot/grub
+
+We will make a grub bootimage and boot it with bochs :
+
+ $ cat stage1 stage2 > grubboot.img
+
+Copy the following into `.bochsrc` (replace the parts in caps by the right info) :
+
+ config_interface: textconfig
+ display_library: x
+ romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000
+ megs: 32
+ vgaromimage: /usr/share/bochs/VGABIOS-elpin-2.40
+ floppya: 1_44=PATH_TO_YOUR_GRUBBOOT_IMAGE, status=inserted
+ ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
+ ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15
+ ata0-master: type=disk, path="PATH_TO_YOUR_DISK_IMAGE", cylinders=NUMBER_OF_CYLINDERS, heads=16, spt=63
+ newharddrivesupport: enabled=1
+ boot: a
+
+ log: /dev/stdout
+ panic: action=ask
+ error: action=report
+ info: action=report
+ debug: action=ignore
+ debugger_log: -
+ com1: enabled=1, dev=/dev/ttyS0
+ vga_update_interval: 300000
+ keyboard_serial_delay: 250
+ keyboard_paste_delay: 100000
+ floppy_command_delay: 500
+ ips: 1000000
+ mouse: enabled=0
+ private_colormap: enabled=0
+ fullscreen: enabled=0
+ screenmode: name="sample"
+ keyboard_mapping: enabled=0, map=/usr/share/bochs/keymaps/x11-pc-fr.map
+ i440fxsupport: enabled=0
+
+And start Bochs with this configuration :
+
+ $ bochs -qf .bochsrc
+
+When asked, choose `5. begin simulation`. It is possible that you enter first into a debugger, answer `'c'` to make it continue. You should see a grub commandline. Tell it to install grub on the disk :
+
+ grub> root (hd0,0)
+ Filesystem type is ext2fs, partition type 0x83
+
+ grub> setup (hd0)
+ Checking if "/boot/grub/stage1" exists... yes
+ Checking if "/boot/grub/stage2" exists... yes
+ Checking if "/boot/grub/e2fs_stage1_5" exists... yes
+ Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded
+ Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2/boot/grub/menu.lst"... succeeded.
+ Done.
+
+Quit by pressing `^C q` in the shell from which you launched bochs. Our image is now ready. Copy all the releving files in `mnt/boot` like for the floppy and then umount it and launch qemu :
+
+ $ cp /l4/boot/* mnt/boot/
+ $ umount mnt
+ $ qemu -serial stdio -dummy-net -hda hurd_l4.img -boot c
+
+# <a name="3_Running_Banner"> 3. Running Banner </a>
+
+Still under construction but you should have no problems following `hurd-l4/libc/README` now that the hdd image works.
+
+----
+
+-- [[Main/OgnyanKulev]] - 05 Feb 2005
+
+I didn't bother to licence it as it is so small, but consider it is under some sort of creative commons that allows redistribution and modification. <br /> -- Alexandre Buisse &lt; <nattfodd@gmailNOSPAM.com> &gt;
+
+-- [[Main/JoachimNilsson]] - 05 Feb 2005
+
+Comments from Marcus Brinkmann:
+
+> Thanks a lot for that. Some comments:
+>
+> $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4
+>
+> I'd recommend to explain how to use `--without-com0` here (or whatever it is called, don't remember) to choose VGA output, or how to configure the serial port. If you use vga, no `-o` option to laden and wortel should be used so you get all output on vga (but of course you can also mix it, whatever you want).
+>
+> Serial 1 is currently going to be used for remote debugging of userland apps.
+>
+> QEMU supports up to four serial ports, I use: `-serial stdio` and `-serial pty` and then I get the debugging output and kernel debugger in the terminal I started qemu in, and can use the pty for remote debugging with gdb (the latter doesn't work yet).
+>
+> Next:
+>
+> You should modify the first three lines to :
+> ARCH=ia32
+> CPU=i586
+> PLATFORM=pc99
+>
+> I never did that. I did change the menu item Processor Type to Pentium1 though. Maybe it has the same effect (and then your document would be a bit redundant here).
+>
+> Somebody should at some point document all those menu options, some are quite useful for debugging!
+>
+> Thanks, Marcus
+
+-- [[Main/OgnyanKulev]] - 05 Feb 2005
+
+I've been doing this sort of thing (See also `info grub` for making bootable eltorito grub cd ISOs):
+
+ $ cd /usr/src/controlled/qemu-images
+ $ ls -R l4
+ ls -R l4
+ l4:
+ boot deva ia32-kernel laden physmem sigma0 task wortel
+
+ l4/boot:
+ grub
+
+ l4/boot/grub:
+ menu.lst stage2_eltorito
+
+ $ cd /usr/src/controlled/qemu-images # dir above "l4" dir.
+ $ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
+ -boot-load-size 4 -boot-info-table \
+ -o /usr/src/controlled/qemu-images/l4.iso l4
+
+ $ qemu -boot d -cdrom /usr/src/controlled/qemu-images/l4.iso
+
+-- [[Main/DerekDavies]] - 07 Feb 2005
+
+You don't need a compiler targeting the Hurd. The above works with a compiler targeting Linux which are quite a bit easier to find. By adding "--target=i686-unknown-linux-gnu" to my configure line, I was able to cross compile hurd-l4 from Cygwin.
+
+-- [[Main/MichaelAdams]] - 22 Feb 2005
+
+A bootable CD iso image is now available at <http://gnuppix.org>
+
+-- [[Main/ChristopheDevine]] - 03 Mar 2005
+
+Included the anonymous password in the CVSROOT for L4.
+
+-- [[Main/NowhereMan]] - 19 Mar 2005
+
+I was able to use qemu instead of bochs to install grub on the new disk image. Just use:
+
+ qemu -dummy-net -serial stdio -fda grubboot.img -hda hurd_l4.img -boot a
+
+and then the commands to type in the grub shell are the same.
+
+-- [[Main/MatteoSettenvini]] - 05 May 2005
diff --git a/hurd/running/qemu/microsoft_windows.mdwn b/hurd/running/qemu/microsoft_windows.mdwn
new file mode 100644
index 00000000..832b4bef
--- /dev/null
+++ b/hurd/running/qemu/microsoft_windows.mdwn
@@ -0,0 +1,52 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Welcome, This document is for getting you started in a few minutes.
+
+1. Install Qemu for Windows
+
+ The executable can be downloaded from
+ <http://free.oszoo.org/ftp/qemu/win32/release/> Doble click on the
+ installer and follow the instructions.
+
+2. Obtain Qemu image
+
+ * Debian GNU/Hurd qemu image can be downloaded from
+ <http://www.numenor.art.pl/balrog/hurd/>, but also see the main
+ [[QEMU]] page.
+ * Uncompress the image and rename it to debian-hurd-for-qemu.img (.img is
+ the only thing that matters, you can chose any name) Note: .img is for
+ QEMUMenu.bat, which saves you from remembering the command line options
+ of qemu and helps you change the settings (like chosing different
+ images, allocating RAM for the guest OS ...) interactivly.
+ * Copy this file to the directory where you installed Qemu.
+
+3. Start Qemu
+
+ Double click the QEMUMenu.bat and enter the number to chose between images.
+
+4. Qemu short cuts
+
+ * ctrl alt - to exit grab from qemu, get mouse cursor out from the qemu
+ window
+ * ctrl alt f - full screen
+ * ctrl alt 2 - qemu contrl console, use this to change devices
+ (eg. changing cdrom), send keys to the guest (for example if you want
+ to send ctrl alt del to the guest type "sendkey ctrl-alt-del" ... type
+ "help" for a listing of all the options.
+ * ctrl alt 1 - Hurd login console
+
+## QEmu Image Hangs on Boot
+The Debian GNU/Hurd K16 QEmu image hangs during the boot process. You may have better luck by converting the image to qcow format
+
+ ..\qemu-0.9.0-x86\qemu-img.exe convert debian-hurd-k16-qemu.img -O
+ qcow debian-hurd-k16-qemu.qcow
+ ..\qemu-0.9.0-x86\qemu.exe -L ..\qemu-0.9.0-x86 -m 512 -hda
+ debian-hurd-k16-qemu.qcow -localtime -M pc
diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn
new file mode 100644
index 00000000..71daa576
--- /dev/null
+++ b/hurd/running/qemu/networking.mdwn
@@ -0,0 +1,43 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## User mode network
+
+This is the default networking option for qemu. This does not require root
+previleges. If you have DHCP running it will take the ip as 10.0.2.15
+
+You can setup an ip 10.0.2.*
+Gateway is 10.0.2.2
+Name server is 10.0.2.3
+Netmask is 255.255.255.0
+
+You can setup the pfinet translator with the command
+
+ $ settrans -fgap /servers/socket/2 /hurd/pfinet -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0
+
+Configure nameserver in /etc/resolve.conf
+
+ nameserver 10.0.2.3
+
+Setup a proxy with the command
+
+ $ export http_proxy="http://<proxy.com>:<port>"
+
+Note: you can add this to your /etc/profile file so that every time you don't
+have to setup this.
+
+If you are using a direct connection to internet install a proxy server on the
+host os and use this. (I was not able to use it without proxy)
+
+You might be able to do it using iptables, some clues
+<http://sujith-h.livejournal.com/9520.html>
+
+Use scp,ftp... to transfer files (also see
+[[hurd/running/debian/faq#index2h1]]), read about [[sharing_files]].
diff --git a/hurd/running/qemu/networking/sharing_files.mdwn b/hurd/running/qemu/networking/sharing_files.mdwn
new file mode 100644
index 00000000..5bdec5f1
--- /dev/null
+++ b/hurd/running/qemu/networking/sharing_files.mdwn
@@ -0,0 +1,38 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# SCP
+
+Setup OpenSSH server on host system.
+
+* Copying files from Guest to Host
+
+ $ scp <file> <user>@<host>:
+
+* Copying files from Host to Guest.
+
+ $ scp <user>@<host>:<file>
+
+Use scp -r for copying directories.
+
+
+# FTP
+
+Setup ftp server (like proftpd) on the host.
+
+* Use ftp client from GNU inetutils
+
+ $ ftp <host>
+
+ Use mget to copy files from host and mput to copy files to the host.
+
+* The GNU way - setup an ftp translator
+
+ $ settrans -ac ftp/<host> /hurd/ftpfs <username>:<password>@<host>:<path>
diff --git a/hurd/running/vmware.mdwn b/hurd/running/vmware.mdwn
new file mode 100644
index 00000000..1f99e247
--- /dev/null
+++ b/hurd/running/vmware.mdwn
@@ -0,0 +1,56 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Installation
+
+Use <http://www.easyvmx.com/> web based tool to create vmx configuration files
+which can be used with VMware player (which is a freeware). If you have a
+VMware workstation or server you don't have to do this step.
+
+Note: I have tried it with K10 version of Debian GNU/Hurd on VMware running on
+a Debian GNU/Linux machine.
+
+You can get more information about obtaining Debain GNU/Hurd CDROMS from
+<http://www.us.debian.org/ports/hurd/hurd-cd>.
+
+Insert the first cdrom and proceed with the installation as per the
+installation guide <http://www.us.debian.org/ports/hurd/hurd-install>.
+
+## VMware specific notes:
+
+You will need a grub floppy image to boot GNU/Hurd. I have attached a copy of
+it with this document. You can also download it from here
+<http://www.update.uu.se/~ams/home/slask/GNU/grub.img>.
+
+When you reboot the machine after the base tar ball is extracted (first reboot)
+press 'Esc' key while VMware start up and set removable devices as the fisrt
+boot device.
+
+Select "GNU (Also known as GNU/Hurd)" ie, the first option and press 'e' to
+edit the grub menu and go to second line and press 'e' again to change
+/boot/gnumach to /boot/gnumach.gz.
+
+Add a link to /boot/gnumach from /boot/gnumach.gz so that you don't have to
+edit grub every time you boot.
+
+ # ln -s /boot/gnumach.gz /boot/gnumach
+
+Or mount the floppy image and change it.
+
+ # mkdir /media/floppy
+ # mount -o loop <path-to-grub.img> /media/floppy
+
+Edit /media/floppy/boot/grub/menu.lst with your favorite text editor and change
+/boot/gnumach to /boot/gnumach.gz.
+
+## After install tweaks
+
+Start using GNU, here is
+<http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html>.
diff --git a/hurd/running/vmware/discussion.mdwn b/hurd/running/vmware/discussion.mdwn
new file mode 100644
index 00000000..2db08654
--- /dev/null
+++ b/hurd/running/vmware/discussion.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
+installed Hurd boots up but fails to display a login prompt. This is the case
+for both K10 and K14 using VMware Workstation 5.0.0 under Windows XP. Maybe
+I'm doing something wrong but it is hard to see what. I'd be interested to
+know more precisely what other people find does work.
+
+--IanMiller - 01 Apr 2007
diff --git a/hurd/settrans.mdwn b/hurd/settrans.mdwn
new file mode 100644
index 00000000..5b381090
--- /dev/null
+++ b/hurd/settrans.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2002, 2004, 2005, 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 `settrans` command is used to attach a [[translator]] (server) to a given
+[[file_system_node|virtual_file_system]].
+
+`settrans` is commonly used like this:
+
+ $ settrans -fgap *NODE* *TRANSLATOR SETTING*
+
+ * `fg`, **f**orce any existing translator to **g**o away from that node.
+ * `ap`, start an ***a**ctive translator*, and also establish a ***p**assive
+ translator* setting.
+
+*Active translator* means that the operating system starts the translator
+immediately and *passive translator* in turn means that the settings are
+instead saved in the file system node, and then, when programs access the node
+by, for example, sending an [[RPC]], the Hurd will transparently start the
+server to handle the request.
+
+
+Help on settrans can be obtained by passing it the `--help` option.
+
+Likewise, help on a specific translator can be gotten by invoking it from the
+command line with the same argument, e.g.:
+
+ $ /hurd/pfinet --help
+
+As there can be a lot of output, consider piping this through a pager.
diff --git a/hurd/status.mdwn b/hurd/status.mdwn
new file mode 100644
index 00000000..721cdeda
--- /dev/null
+++ b/hurd/status.mdwn
@@ -0,0 +1,108 @@
+[[!meta copyright="Copyright © 2001, 2002, 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]]."]]"""]]
+
+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
+rather complete and usable operating system today. It may not be ready
+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.
+
+[[!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
+memory or semaphores are still under development.
+
+All this applies to the current development version, and not to the
+last release (0.2). We encourage everybody who is interested to try
+out the latest development version, and send feedback to the Hurd
+developers.
+
+
+The Hurd team doesn't create Hurd-only releases, but instead relies
+on a distribution done by folks from *Debian*.
+
+That Debian version closely tracks the progress of the Hurd
+(and often includes many new features),
+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
+65% of the Debian software archive.
+
+The most recent version of the Debian port at the time of writing
+is *Debian GNU/Hurd L1*.
+
+
+That said, the last official release of the Hurd
+without the Debian parts was 0.2 done in 1997.
+
+New official releases will be done, as soon as
+the Hurd is sufficently stable and feature
+complete. If an official release of the Hurd were made
+now, people would try the Hurd and be disappointed. People
+already expect delays; to disappoint them in this way as
+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
new file mode 100644
index 00000000..5b132604
--- /dev/null
+++ b/hurd/subhurd.mdwn
@@ -0,0 +1,121 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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
+console.
+
+Sub-hurds are extremely useful for debugging core servers as it is possible to
+attach to them with gdb from the parent
+([[debugging_via_subhurds|debugging/subhurd]]). This avoids deadlock, e.g.,
+when the instance of gdb stops the server but requires its use. (Note: it is
+possible to use [[debugging/gdb/noninvasive_debugging]], but this is less
+flexible.)
+
+
+# Howto
+
+## Preparing
+
+To run a subhurd, you need an additional partition with an installed Hurd
+system. In principle, you can also use your main partition in read-only mode;
+but this obviously will create severe limitations. Usually, you will want a
+complete independant system.
+
+The system for the subhurd is a normal Hurd installation, which could just as
+well run standalone. You can use any of the various possible installation
+methods, or reuse an existing installation if you already have several. If
+using [[Debian_GNU/Hurd|running/debian]], the easiest is probably to use
+[[running/debian/crosshurd]], which you can run directly from your main Hurd to
+set up another Hurd on a different partition, without ever rebooting. (You can
+run the `native-install` step from a chroot or already in a subhurd.)
+
+
+## Booting
+
+To boot the subhurd, you need a boot script. For historical reasons, usually
+`/boot/servers.boot` is used. (Originally, this was also used to boot the main
+Hurd, using "serverboot". Nowadays, this isn't used for the main boot anymore,
+as GRUB can directly load all the necessary modules.)
+
+However, the canonical `/boot/servers.boot` file is no longer distributed with
+[[Debian_GNU/Hurd|running/debian]]. Here is a slightly adopted version:
+
+ # Boot script file for booting GNU Hurd. Each line specifies a file to be
+ # loaded by the boot loader (the first word), and actions to be done with it.
+
+ # First, the bootstrap filesystem. It needs several ports as arguments,
+ # as well as the user flags from the boot loader.
+ /hurd/ext2fs.static --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tdevice ${root-device} $(task-create) $(task-resume)
+
+ # Now the exec server; to load the dynamically-linked exec server program,
+ # we have the boot loader in fact load and run ld.so, which in turn
+ # loads and runs /hurd/exec. This task is created, and its task port saved
+ # in ${exec-task} to be passed to the fs above, but it is left suspended;
+ # the fs will resume the exec task once it is ready.
+ /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ ## default pager
+ #/dev/sd0b $(add-paging-file)
+
+/!\ It's very important not to introduce spurious line breaks, so be very
+careful when copying! All the options following `ext2fs.static` have to be on
+a single line.
+
+Now actually booting the subhurd is a simple matter of issuing (as root):
+
+ boot servers.boot /dev/hd0s6
+
+(Replace `hd0s6` by the name of your partition for the subhurd.)
+
+/!\ The partition must be unmounted (or mounted read-only) before you boot from
+it!
+
+(In theory it shouldn't be neccessary to run the subhurd as user `root`, but in
+practice [that doesn't work at the
+moment](http://savannah.gnu.org/bugs/?17341).)
+
+Now the subhurd should boot just like a normal Hurd started directly from GRUB,
+finally presenting a login prompt. The `boot` program serves as proxy for the
+subhurd, so you can control it from the terminal where you issued the boot
+command.
+
+To exit the subhurd, issue `halt` or `reboot`. This should exit it cleanly,
+but for some reason it doesn't always work; sometimes it will output various
+errors and then hang. If that happens, you need to kill the subhurd processes
+manually from a different terminal.
+
+
+## Using
+
+In the subhurd, you can do basically all the same things as in the main Hurd.
+
+You can even set up networking: Just invoke `settrans` on the
+`/servers/socket/2` as usual inside the subhurd, only using a different local
+IP than in the main Hurd. This way, the subhurd will be able to communicate to
+the outside world with its own IP -- allowing for example to do `apt-get`
+inside the subhurd, or to `ssh` directly into the subhurd.
+
+If you want to access the subhurd processes from the outside, e.g. for
+[[debugging_purposes|debugging/subhurd]] (or to get rid of a subhurd that
+didn't exit cleanly...), you need to find out how main Hurd PIDs correspond to
+subhurd processes: the subhurd processes appear in the main Hurd (e.g. if doing
+`ps -e`) as unknown processes, and vice versa, but the PIDs are different! To
+find out which process is which, you can simply compare the order -- while the
+numbers are different, the order should usually match. Often it also helps to
+look at the number of threads (e.g. using `ps -l`), as many servers have very
+characteristic thread counts.
+
+
+# Further Info
+
+Read about using a subhurd for [[debugging_purposes|debugging/subhurd]].
+
+Roland's tutorial about [[running_a_subhurd]].
diff --git a/hurd/subhurd/running_a_subhurd.mdwn b/hurd/subhurd/running_a_subhurd.mdwn
new file mode 100644
index 00000000..f337108e
--- /dev/null
+++ b/hurd/subhurd/running_a_subhurd.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 1998, 1999, 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]]."]]"""]]
+
+[[!meta title="Running a Subhurd"]]
+
+By Roland McGrath.
+
+The most useful thing you can do when trying to troubleshoot the boot
+sequence of the Hurd is try to run your the system in a
+sub-hurd, while watching it using ps and gdb from the working hurd. Since
+the sub-hurd is never going to make it all the way up, you don't even
+really need to make a separate filesystem for it; you can just boot the
+sub-hurd read-only on your main root filesystem if you like.
+
+The way to boot the sub-hurd is with `boot`. I would suggest something
+like this:
+
+ boot -d -I -Tdevice /boot/servers.boot hd0s6
+
+The -d says to pause before the start-up of each server and wait for you to
+hit return, which gives you time to go attach gdb to the task before it
+starts running. The -I says to leave the terminal signals normal, so
+hitting C-z will suspend boot rather than sending a C-z to the virtual
+console device of the sub-hurd. (Note that suspending boot does not
+suspend the sub-hurd, just boot itself; boot acts as the server for device
+access from the sub-hurd, so the sub-hurd's attempts to write to its
+console or open devices block while boot is suspended.)
+
+When you do `ps -A` on the main hurd, the sub-hurd tasks will appear as
+unknown processes. You can figure out which is which just by looking at
+the order of unknown processes that appear with higher PIDs than the boot
+process. They appear in the order you see in the "bootstrap: ..."
+messages, i.e. the first unknown after boot will be ext2fs.static, the
+second exec, then init, then proc.
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
new file mode 100644
index 00000000..8b852089
--- /dev/null
+++ b/hurd/toolchain.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+* [[binutils]]
+* [[GCC]]
+* [[glibc]]
+
+Before beginning to work on the inner parts of the GNU/Hurd toolchain, it's
+always profitable to also know how things are done on other systems. Compare,
+for example, how things are done differently for GNU/Hurd than they are done
+for GNU/Linux.
diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn
new file mode 100644
index 00000000..dd5c5b4d
--- /dev/null
+++ b/hurd/translator.mdwn
@@ -0,0 +1,143 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A translator is simply a normal program acting as
+an object server and participating in the Hurd's
+distributed [[virtual_file_system]]. It is so-called
+because it typically exports a file system
+(although need not: cf. [[auth]], [[proc]]
+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.
+
+Translators do not require any special privilege
+to run. The privilege they require is simply
+that to access the indiviudal resources they use.
+This is primarily the [[backing_store]] and the node
+they attach to. Typically, a translator can
+only be attached to a node by the node's owner.
+On [[Unix]] this is not possible because file systems
+and the virtual file system are implemented in the
+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.
+
+Also there is an [[writing/example]] about how to write a simple translator.
+
+See some [[examples]] about how to use translators.
+
+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]]
+* [[storeio]]
+* [[ext2fs]]
+* [[fatfs]]
+* [[magic]]
+* [[unionfs]]
+* [[nfs]]
+* ...
+
+
+# Translators Being Under Development
+
+* [[random]]
+* [[emailfs]] -- email as a filesystem
+* [[cvsfs]]
+* [[tmpfs]]
+* [[procfs]]
+* [[nsmux]]
+* [[netio]]
+* [[tarfs]]
+* [[gopherfs]]
+* ...
+
+# 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)
+* [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)
+* [xmlfs](http://www.nongnu.org/hurdextras/#xmlfs)
+* [mboxfs](http://www.nongnu.org/hurdextras/#mboxfs)
+
+
+# Translator Wishlists
+
+ * [[wishlist_1]]
+ * [[wishlist_2]]
+
+
+# Internally
+
+## `*_demuxer` Functions
+
+ * IRC, unknown channel, unknown date
+
+ <jim-crow> what is a main idea of _demuxer functions in translators?
+ <neal> jim-crow: Think of a web server.
+ <neal> jim-crow: A typical web server must process many different requests.
+ <neal> jim-crow: There are different types of requests.
+ <neal> jim-crow: For instance, static pages and dynamically gnereated content.
+ <neal> the static pages are processed by one function
+ <neal> and the dynamic pages by another
+ <neal> the thing that makes the decision which of these functions to pass the request to is the demuxer.
+ <jim-crow> neal: ok, I see
+ <jim-crow> but what is actually it doing in trivfs_demuxer?
+ <neal> it looks at the message id and calls the right server stub
+ <jim-crow> for example it calls trivfs_io_server function, but I can't find its implementation
+ <jim-crow> that's my main question :-)
+ <neal> look at the files mig generates
+ <jim-crow> neal: ok, thanks
+ <jim-crow> neal: is this functions where actually stubs are called?
+ <neal> I think so.
diff --git a/hurd/translator/auth.mdwn b/hurd/translator/auth.mdwn
new file mode 100644
index 00000000..d9e70ec2
--- /dev/null
+++ b/hurd/translator/auth.mdwn
@@ -0,0 +1,13 @@
+[[!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_Authentication_Server*|documentation/auth]], the transcript of a talk
+about the details of the authentication mechanisms in the Hurd by Wolfgang
+Jährling.
diff --git a/hurd/translator/cvsfs.mdwn b/hurd/translator/cvsfs.mdwn
new file mode 100644
index 00000000..f5f1a9e0
--- /dev/null
+++ b/hurd/translator/cvsfs.mdwn
@@ -0,0 +1,52 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Setting up cvsfs on GNU/Hurd - A step by step process
+
+### Description of cvsfs
+
+cvsfs is a virtual ([[libnetfs]] based) filesystem allowing you to mount
+remotely located CVS modules into your local filesystem. The version
+controlled files will appear to you just like regular ones. If you just want
+to view one file (or a small bunch) you furthermore save a lot of network
+bandwidth since only these files will be downloaded. The usual way to do so
+would be to check out the whole tree and deleting it after using.
+
+## Step by Step process in installing cvsfs
+
+Download and prepare the source files from the CVS repositiory and build them.
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras co cvsfs
+ $ cd cvsfs/
+ $ autoreconf -i
+ $ ./configure
+ $ make
+ $ make install
+
+Set up the translator and start grazing.
+
+ $ mkdir -p cvsfs_test
+ $ settrans -a cvsfs_test /hurd/cvsfs cvs.sourceforge.net /cvsroot/projectname modulename
+
+Example to mount the cvsfs module on hurdextras to a local directory.
+
+ $ mkdir cvs.d
+ $ settrans -ac cvs.d/cvsfs /hurd/cvsfs cvs.savannah.nongnu.org sources/hurdextras cvsfs
+
+Now change to that directory and start using ls, emacs, and whatever you feel
+like. :-)
+
+Happy Hacking.
+
+
+## References
+
+ * <http://www.nongnu.org/hurdextras/>
+ * <http://cvs.sv.nongnu.org/viewcvs/*checkout*/cvsfs/README?root=hurdextras>
diff --git a/hurd/translator/devfs.mdwn b/hurd/translator/devfs.mdwn
new file mode 100644
index 00000000..27df23aa
--- /dev/null
+++ b/hurd/translator/devfs.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]]."]]"""]]
+
+`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
+settings as they're used now.
+
+`devfs` has not yet been written.
+
+---
+
+If applicable, it has to be taken care that all code concerning the page-in
+path is resident at all times.
diff --git a/hurd/translator/emailfs.mdwn b/hurd/translator/emailfs.mdwn
new file mode 100644
index 00000000..80e2b150
--- /dev/null
+++ b/hurd/translator/emailfs.mdwn
@@ -0,0 +1,287 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# How cool it would be if the email becomes similar to snail mail?
+
+## Let see how the snail mail works
+
+* You write the letter with a pen and paper
+* You write the "To" address
+* Post it -> Put it in a Post Box
+
+## How Email works
+
+* You have your email client (and there comes the limitation, you can't use
+ your favourite editor)
+* Fill in destination email address
+* Send it (May be a send button or a keyboard shortcut)
+
+## What are the problems
+
+If you want to use a wordprocessor for sending email, it should implement a
+feature like mail merge, suppose it doesn't have such a feature then? You copy
+and paste it to your email client and if it doesn't support HTML? Well you have
+work arounds for all these, but how cool it would be if you have something like
+this:
+
+* You create a file, use any wordprocessor or text editor.
+* Right click and see the properties
+* Set the "To" field
+* Drag it to the Post Box icon on your panel next to Trash
+
+## How can we implement it?
+
+An SMTP translator which uses extended atributes
+
+## Comments
+
+IRC Logs about the discussion on #hurd
+
+<!-- That smileys are rendered the wrong way below is a ikiwiki bug. -->
+
+>>>>>>> 5384ccd0a47e900fbdae993143110538248517a2:emailfs.mdwn
+
+ <manuel>j4v4m4n: isn't the HHG a good enough libtrivfs tutorial?
+ <manuel> the problem I have with mail, blog, ..., translators is that you want to save mails before sending them, so you can't edit directly into the translator
+ <j4v4m4n> manuel, may be we want a simpler one, all of us are beginners except AB
+ <manuel> they're not stream-based so unless you save it into memory and wait for "sync" to send mails, it doesn't seem well suited
+ <manuel> who's AB?
+ <j4v4m4n> manuel, create any file with your favourite editor and copy it to the directory where SMTP translator is sitting
+ <j4v4m4n> manuel, Anand Babu
+ <manuel> sure, but how is that better than sending it via the "mail" command then?
+ <manuel> except it's less hype, of course.
+ <j4v4m4n> manuel, http://savannah.gnu.org/users/ab
+ <j4v4m4n> manuel, it would be cool :-)
+ <manuel> still not convinced :)
+ * schlesix (n=thomas@xdsl-81-173-230-219.netcologne.de) has joined #hurd
+ <j4v4m4n> manuel, set up SMTP translator on the desktop and may be add it next to the Trash :-)
+ <j4v4m4n> manuel, have a nice postbox icon
+ <j4v4m4n> manuel, drag your files to it
+ <j4v4m4n> manuel, it would be closer to the real world and snail mail
+ <bvk> j4v4m4n: To whom do they go?
+ <manuel> bvk: the file must be preformatted, probably
+ <j4v4m4n> bvk, in snail mail you will write to address on top of the envelop, right?
+ <manuel> j4v4m4n: yeah well, it could make sense in a desktop envronment
+ <j4v4m4n> bvk, here we can have it as the first line of the file
+ <manuel> not sure
+ <bvk> j4v4m4n: i never used snail :(
+ <j4v4m4n> manuel, that is what I have in mind
+ * j4v4m4n like snail mail that email
+ <manuel> bvk: you never sent a mail via snail mail?! :)
+ * j4v4m4n like snail mail more than email
+ <bvk> manuel: nope :( whats that btw?
+ <j4v4m4n> manuel, or why not have it as the file property itself??
+ <bvk> manuel: you know its first time i hear it *snail mail* :((
+ <j4v4m4n> bvk, the normal mails which a postman delivers :-)
+ <j4v4m4n> manuel, you create a file text, open document or whatver format
+ <manuel> j4v4m4n: I'm quite sure it'd make things more complicated in the end, using file properties, dragging files etc.
+ <j4v4m4n> manuel, righ click and see properties and set the to field
+ <bvk> Oh, these english words... :X
+ <j4v4m4n> manuel, we can use the xtended atributes
+ <j4v4m4n> manuel, which really showcase the power of hurd
+ <j4v4m4n> manuel, it becomes closer to the real world
+ <bvk> actually, is X working on hurd?
+ <j4v4m4n> bvk, well it used to work and the new Xorg release has som
+ <j4v4m4n> bvk, well it used to work and the new Xorg release has some broken packages
+ <j4v4m4n> bvk, if you use an old snapshot repository it will work (xorg 6.9)
+ * marco_g (n=marco@gnu/the-hurd/marco) has joined #hurd
+ <marco_g> hi
+ <j4v4m4n> marco_g, hi
+ * bvk watching MIT lecture video on 'structure and interpretation of computer programs'
+ <manuel> bvk: yeah, X was ported on GNU/Hurd five-six years ago or so
+ <j4v4m4n> manuel, see http://hurd.in/bin/view/Main/EmailFS
+ <j4v4m4n> manuel, add your comments, if you like
+ <manuel> j4v4m4n: how would you convert the .odt to a mail?
+ <j4v4m4n> manuel, attachment
+ <manuel> with an empty mail?
+ <manuel> that won't get through *most* spam filters :)
+ <j4v4m4n> manuel, or may be convert it to HTML
+ <manuel> well converting it to text or HTML would require a set of rules to convert from any format to text/HTML, like a2ps has (some sort of mailcap file)
+ <j4v4m4n> manuel, it can be flexible, a parameter to the translator as to what should be done with each formats
+ <manuel> and there's no convenient way to convert ODT to text AFAIK, you need to use ooffice with a batch program, which you need to provide too
+ <manuel> well that's really complex
+ <j4v4m4n> manuel, well how will you send me a CD by post?
+ <j4v4m4n> manuel, or say a bed?
+ <j4v4m4n> manuel, courier or parcel, right? so attachment is fine
+ <manuel> sure but you'll add a note saying "this is a bed from Praveen"
+ <ness> why not add a note to such a mail
+ <ness> you could even move multiple files simultaneously to the mail translator
+ <manuel> hm
+ <manuel> so how is the translator supposed to know that all the files I move are to be sent in a single mail and not on separate mails?
+ <manuel> and how'll you be able to add a note to such a mail? I mean, of course you can set it on the xattr but that's quite strange (the attachment is supposed to be an attr of the mail, not the other way) and not convenient at all
+ <manuel> I'm quite sure using a MUA is still easier
+ <ness> you could move a complete directory to the mail trans
+ <ness> (and the desktop icon can do this transparently)
+ <manuel> hmm so you have to create a directory, write a text file on it (with a special filename, I guess, since you could also have text files as attachments) and add the attachments to the directory
+ <manuel> and then drag & drop it
+ * manuel thinks things are getting more and more complicated :)
+ <ness> the special file name or attribute thing is right
+ <ness> but you not necisirily need to create a dir
+ <ness> s/necisirily/necessarily/
+ <ness> you just drag 'n' drop multiple files to the icon
+ <manuel> and how is the translator supposed to know they are dragged at the same time and not one after the other?
+ <ness> I do not know if it is viable
+ * antrik (n=olaf@port-212-202-210-130.dynamic.qsc.de) has joined #hurd
+ <manuel> AFACS, dragging multiple files just make the desktop issue multiple rename()
+ <moritz> manuel: however the desktop handles that - it would be a rather easy thing to fix, i guess.
+ * schlesix has quit (Remote closed the connection)
+ <manuel> moritz: how is the desktop supposed to handle that?
+ <moritz> if this mail translator approach, is primarily to be used in desktop environments, one could implement the whole thing on the desktop environment layer, not with Hurd translators.
+ <moritz> manuel: i think it would be rather easy for the desktop to distinguish between actions like "ONE file is dragged" and "MULTIPLE files are dragged".
+ * schlesix (n=schlesix@xdsl-81-173-230-219.netcologne.de) has joined #hurd
+ <manuel> oh yeah, but then you loose the transparency, and there's no point in making it a translator. I think we agree on that :)
+ <moritz> i see rather little point in making it a translator anyway, since only god knows wether we have similar concept to translators in hurd-ng.
+ <manuel> yeah sure, but praveen wasn't planning it for HurdNG AIUI
+ <moritz> in that case it would probably be toy project. fine.
+ <moritz> i need to do some maths. see you.
+ <manuel> hmm well, you can't write anything else than toy projects, then
+ <ness> moritz: you shouldn't be too sure about success of ngHurg
+ <ness> it is an experiment
+ <antrik> sdschulze: ping
+ * antrik has quit (Remote closed the connection)
+ * antrik (n=olaf@port-212-202-210-130.dynamic.qsc.de) has joined #hurd
+ * bddebian (n=bdefrees@71.224.172.103) has joined #hurd
+ <j4v4m4n> manuel, This is a lot of input, let me sink these all first :-)
+ <bddebian> Heya folks
+ <schlesix> heya bddebian!
+ <j4v4m4n> it is ofcoures a "nice to have" feature.
+ <j4v4m4n> These are quite intersting inputs as well
+ <bddebian> Hi schlesix
+ <j4v4m4n> manual in the real wprld how will you send multiple things, say you want to send a CD and a bed
+ <j4v4m4n> manuel, you will package it (files) and then one parcel containing all these things (folder)
+ <manuel> j4v4m4n: well you want to make sending emails easier than sending real mails :-)
+ <j4v4m4n> manuel, it won't substitute MUAs
+ <j4v4m4n> manuel, we need it as the backend
+ <diocles> geekoe: You asked about GFS yesterday; well, glibc compiled. :) I've not done much more after that.
+ <antrik> regarding mail translator: take a look at Plan9, they have been doing it for years
+ <j4v4m4n> manuel, sorry not MUA I meant MTA
+ * syamajala (n=syamajal@c-24-147-61-120.hsd1.ma.comcast.net) has joined #hurd
+ <manuel> ah yes sure, but MUA will still be easier to use afaics
+ <j4v4m4n> manuel, people who are used to Windows say GNU/Linux is tough to use
+ <j4v4m4n> manuel, but when they start with GNOME or KDE they don't have any issues
+ <j4v4m4n> antrik, that is a great info I will look into it
+ <j4v4m4n> manuel, sorry not MUA I meant MTA
+ * syamajala (n=syamajal@c-24-147-61-120.hsd1.ma.comcast.net) has joined #hurd
+ <manuel> ah yes sure, but MUA will still be easier to use afaics
+ <j4v4m4n> manuel, people who are used to Windows say GNU/Linux is tough to use
+ <j4v4m4n> manuel, but when they start with GNOME or KDE they don't have any issues
+ <j4v4m4n> antrik, that is a great info I will look into it
+ <ness> j4v4m4n: they do it quite differently
+ <manuel> this doesn't answer to the basic question: how is it better than what we have now
+ <j4v4m4n> manuel, it is different, better is always debatable
+ <j4v4m4n> manuel, GNOME might work for but some doesn't use X at all
+ <j4v4m4n> manuel, whether it is good will be depending on the implemetation
+ <Jeroen> people who used to GNU/Linux say Windows is tough to use
+ <Jeroen> +are
+ <unlink> GNU/Linux is at least tougher to say
+ <Jeroen> no, people have less experience with GNU/Linux
+ <manuel> "to say", Jeroen
+ <j4v4m4n> manuel, better and easier are always relative
+ <j4v4m4n> manuel, there a lot of people still using mutt when you have thunderbird
+ <manuel> well because they have reasons to say mutt is easier than thunderbird
+ <Jeroen> the only thing is that you've to learn a few shortcuts when you want to use mutt, you can't just click around
+ <j4v4m4n> manuel, exactly
+ <j4v4m4n> manuel, consider this, you want to send a document across to someone
+ * Blackmore has quit (Read error: 104 (Connection reset by peer))
+ * koollman has quit (Remote closed the connection)
+ <j4v4m4n> manuel, now you open a MUA add the attachment send it
+ * koollman (n=samson_t@gsv95-1-82-233-13-27.fbx.proxad.net) has joined #hurd
+ <j4v4m4n> manuel, if you just have to drag it to an icon, would that be easier?
+ * Casanova (n=prash@unaffiliated/casanova) has joined #hurd
+ <j4v4m4n> manuel, chmod +to:manuel@somehost doc.pdf ; cp doc.pdf postbox/
+ <Jeroen> yeah
+ <Jeroen> chmod is for setting permissions...
+ <j4v4m4n> manuel, I am not sure how to set xattr
+ <manuel> well, setfattr
+ <Jeroen> well
+ <j4v4m4n> manuel, ok
+ <Jeroen> how do you type your subject?
+ <Jeroen> and there message itself?
+ <Jeroen> s/there/the/
+ <Jeroen> how do you encrypt+sign it with pgp?
+ <manuel> j4v4m4n: well the problem is still the same you know. OK for to/subject : they'd be extended attributes. but how do you type the message itself?
+ <antrik> I don't think using xattr for such stuff is a good idea
+ <antrik> after all, it's not a property of the document
+ <j4v4m4n> antrik, we can use it only on a particular directory on which our translator sit
+ <j4v4m4n> manuel, create a folder
+ <manuel> that'd mean mkdir message; ln -s doc.pdf message/; cat >message/message <<EOF; setfattr -n to -v mmenal@hurdfr.org; setfattr -n subject -v document; mv message postbox
+ <antrik> the reason why having translators for such stuff is that this way you have a generic service for sending mail, whether you use it through a special UI (MUA), directly with file commands, from a script, or from some other program that just sends mails as a side functionality
+ * mheath has quit (Connection reset by peer)
+ <j4v4m4n> manuel, that looks scary :-(
+ <manuel> not sure it's easier than "mutt; m; mmenal@hurdfr.org; document; >typing the message<; a; doc.pdf; y"
+ <antrik> manuel: it is easier in some situations
+ <antrik> (and again, I would not use xattr for such stuff)
+ <j4v4m4n> manuel, now how do you use mutt on GNOME?
+ <antrik> in fact, Plan9 explicitely does *not* have any xattr and stuff
+ <manuel> antrik: well xattr on the directory that represents the message is not illogical
+ * mheath (n=mheath@c-67-182-231-23.hsd1.co.comcast.net) has joined #hurd
+ <j4v4m4n> antrik, may be we can think of some other way if you don't wanna xattr
+ <manuel> j4v4m4n: well I just used the CLI because it's easier to describe, but try to explain the steps in a GUI and you'll see it's the same problem
+ <j4v4m4n> manuel, right click on desktop -> create folder -> drag the files to the folder -> set attributes to the folder-> drag it to postbox
+ <j4v4m4n> manuel, it is quite logical step
+ <manuel> sure, but how is it easier than click on the MUA icon -> create mail -> drag the files to the mail window ; type the attrbutes + contents ; click on send mail
+ <manuel> looks quite similar to me :-)
+ <j4v4m4n> manuel, or if you already have the folder just drag it
+ <kilobug> a POP or IMAP translator would be more useful IMHO (but well, I didn't read all the backlog, so I may be off topic)
+ <j4v4m4n> manuel, you don't have a MUA here :-) just files and folders
+ <kilobug> to read mails, I mean
+ <j4v4m4n> kilobug, that is even easier IMAP->mabox and then mboxfs
+ <manuel> j4v4m4n: well you have a MUA : that's the translator
+ <j4v4m4n> kilobug, mboxfs is already available
+ <j4v4m4n> kilobug, I think someone already wrote IMAP to mbox as well but couldn't find it
+ <kilobug> j4v4m4n: well, imapfs could work both way, writing changes on the imap server too ;)
+ <antrik> manuel: the difference is not how it is used; the difference is how it is implemented
+ <antrik> manuel: if you have a generic mail translator, you have most functionality already there with the file manager; all you need to add is some scripts for better comfort
+ <antrik> j4v4m4n: the way I would do it (and I guess Plan9 does, though I haven't checked) is either having a file in the mail directory with the headers, or a subdirectory with a single file for each header (probably the latter)
+ <j4v4m4n> antrik, that would make it too complicated IMHO, it would be close to how it is for snail mail
+ <antrik> j4v4m4n: I don't see how this would be more complicated than xattr
+ <j4v4m4n> manuel, you can write your own scripts to automate it for whatver way you want
+ * azor (n=azor@62-43-135-201.user.ono.com) has joined #hurd
+ <manuel> antrik: having the functionality in the filesystem is useful because programs can use this functionality without patching; the protocol to use the mail translator is so specific that you either need to be a real user (but then a MUA is a lot more useful) or have a patched program (but then you could use a lib)
+ <j4v4m4n> antrik, right clicking a file and setting u p to and subject seems easier that creating more files
+ <antrik> j4v4m4n: I don't think so. maybe it is in gnome, but than I'd consider it a shortcoming of gnome
+ <antrik> j4v4m4n: in shell "cat foo@example.invalid headers/to" is about as simple as you can get
+ <manuel> >
+ <antrik> erm... I mean echo
+ <antrik> and >, yes
+ <antrik> sorry
+ * yoj (n=jao@200.163.8.72) has joined #hurd
+ <manuel> "echo foo@example.invalid > headers/to" is not easier than "setfattr -n to -v foo@example.invalid" AFAICS.
+ <antrik> echo foo@example.invalid >headers/to
+ * yoj (n=jao@200.163.8.72) has left #hurd
+ * yoj (n=jao@200.163.8.72) has joined #hurd
+ <kilobug> manuel: it is a tiny bit if your "foo@example.invalid" is the output of a command, mycomplexcommand > headers/to is a bit easier than setfattr -n to -v `mycomplexcommand`
+ <kilobug> manuel: but it's the same for a value you type directly
+ <antrik> manuel: objectively it is not simpler, but it uses a generic mechanism users now well, instead of obscure xattr stuff
+ <antrik> know well
+ <j4v4m4n> antrik, ok we can think of that, but how about a desktop user?
+ abeaumont andar antrik arnau azeem azor
+ <j4v4m4n> antrik, he has to use more clicks and more head aches
+ <j4v4m4n> antrik, just right click and add to address and subject just you write on the envelop
+ <kilobug> j4v4m4n: that's good ! it makes him buy more medicine, drug corporations will sponsor you then !
+ * kilobug runs away
+ * j4v4m4n chases kilobug
+ <j4v4m4n> kilobug, better way would be making outlook run on GNU :-)
+ <marco_g> Or GNU on outlook \o/
+ * yoj (n=jao@200.163.8.72) has left #hurd
+ <kilobug> this channel is becoming insnae :p
+ <j4v4m4n> kilobug, or is it the members ?? :-)
+ <marco_g> I agree with kilobug, we should stop those weirdos here :-/
+ * whr` (i=whr@acy238.neoplus.adsl.tpnet.pl) has joined #hurd
+ <antrik> hm... anyone have the marcus quote at hand?
+ <j4v4m4n> i got to go as well
+ <j4v4m4n> bye
+ <kilobug> bye j4v4m4n
+
+## Interesting??
+
+Join the project -- Add yourself to the list below
+
+* [[Praveen A]]
diff --git a/hurd/translator/examples.mdwn b/hurd/translator/examples.mdwn
new file mode 100644
index 00000000..ee766fbf
--- /dev/null
+++ b/hurd/translator/examples.mdwn
@@ -0,0 +1,93 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Setting up translators - HowTo
+
+Translators can be got from hurd-extras <http://www.nongnu.org/hurdextras/>
+
+ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras co <modulename>
+
+* httpfs translator
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -a tmp/ /hurd/httpfs www.hurd-project.com/
+
+or
+
+ $ settrans -a tmp/ /hurd/httpfs www.hurd-project.com/ --proxy=<proxy> --port=<port>
+ $ cd tmp/
+ $ ls -l
+
+* ftpfs translator
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -cgap ftp /hurd/hostmux /hurd/ftpfs /
+ $ cd ftp
+ ftp$ ls
+ ftp$ cd ftp.fr.debian.org
+ ftp/ftp.fr.debian.org $ ls
+
+* tarfs translator (needs uatime fix, 2010-08-25 → [git repo](http://github.com/giselher/tarfs))
+
+You can use tarfs to mount (almost) any tar file (currently broken, 2010-08-25):
+
+ $ settrans -ca a /hurd/tarfs -z myfile.tar.gz
+ $ settrans -ca b /hurd/tarfs -y myfile.tar.bz2
+ $ settrans -ca c /hurd/tarfs myfile.tar
+
+You can even use it to create new tar files:
+
+ $ settrans -ca new /hurd/tarfs -cz newfile.tar.gz
+ $ cp -r all my files new/
+ $ syncfs new
+
+This is not as fast as `tar czvf newfile.tar.gz all my files`, but at least it's more original. ;)
+
+* cvsfs translator
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -ac cvsfs_testing /hurd/cvsfs cvs.savannah.nongnu.org /sources/hurdextras
+ $ cd cvsfs_testing
+
+* pfinet translator -- configuring your network interface
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -fgca /servers/socket/2 /hurd/pfinet -i <interface> -a <ip address> -m <subnet mask> -g <gateway ip>
+
+* Console translator -- setting up virtual consoles
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ console -d vga -d pc_mouse -d pc_kbd -d generic_speaker /dev/vcs
+
+* iso9660fs translator -- 'mounting' your cdrom
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -ac /cdrom /hurd/iso9660fs /dev/<cdrom device file>
+
+* ext2fs translator -- 'mounting' an ext2fs partition
+
+<!-- Prevent ikiwiki / Markdown rendering bug. -->
+
+ $ settrans -ac /linux /hurd/ext2fs /dev/<partition device file>
+
+* unionfs translator
+
+To join "foo/" "bar/" and "baz/" in the directory "quux/", just do:
+
+ $ settrans -capfg quux/ /hurd/unionfs foo/ bar/ baz/
+
+If you want to join even quux/ contents in the union itself, add -u as a translator argument.
+You can add filesystems at run-time with the fsysopts command.
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
new file mode 100644
index 00000000..305576b8
--- /dev/null
+++ b/hurd/translator/ext2fs.mdwn
@@ -0,0 +1,37 @@
+[[!meta copyright="Copyright © 2007, 2008, 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]]."]]"""]]
+
+# Large Stores
+
+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]]
+
+## Ognyan's Work
+
+ * Ognyan Kulev, [[*Supporting Large ext2 File Systems in the
+ Hurd*|ogi-fosdem2005.mgp]], 2005, at FOSDEM
+
+ * Ognyan Kulev, [[large_stores]]
+
+ * <http://kerneltrap.org/node/4429>
+
+Ognyan's patch lifts 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/ext2fs_20040219.txt b/hurd/translator/ext2fs/large_stores.txt
index e17a02a5..e17a02a5 100644
--- a/ext2fs_20040219.txt
+++ b/hurd/translator/ext2fs/large_stores.txt
diff --git a/ext2fs-fosdem2005.mgp b/hurd/translator/ext2fs/ogi-fosdem2005.mgp
index 27b5077c..27b5077c 100644
--- a/ext2fs-fosdem2005.mgp
+++ b/hurd/translator/ext2fs/ogi-fosdem2005.mgp
diff --git a/hurd/translator/fatfs.mdwn b/hurd/translator/fatfs.mdwn
new file mode 100644
index 00000000..006fac0b
--- /dev/null
+++ b/hurd/translator/fatfs.mdwn
@@ -0,0 +1,13 @@
+[[!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]]."]]"""]]
+
+The current `fatfs` translator is read-only, and it has a severe bug:
+[[!GNU_Savannah_bug 25961]].
diff --git a/hurd/translator/gopherfs.mdwn b/hurd/translator/gopherfs.mdwn
new file mode 100644
index 00000000..6c32430f
--- /dev/null
+++ b/hurd/translator/gopherfs.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]]."]]"""]]
+
+`gopherfs` is a virtual filesystem allowing you to access Gopher sites.
+
+
+# Source
+
+incubator, gopherfs/master
diff --git a/hurd/translator/hostmux.mdwn b/hurd/translator/hostmux.mdwn
new file mode 100644
index 00000000..5fab2dc5
--- /dev/null
+++ b/hurd/translator/hostmux.mdwn
@@ -0,0 +1,31 @@
+Multiplexes arbitrary host names, making access to many differnt host fast and easy.
+
+For each host accessed via a directory an new translator is started with the hostname as option. Say, /hostmuxdemo should let you access your favourite host with your translator mytranslatorfs.
+
+<code>**ls /hostmuxdemo/mybox/**</code> would give the result of mytranslatorfs applied to host mybox.
+
+## <a name="Usage"> Usage </a>
+
+Hostmux takes translator options as argument and (in the easiest case ) starts the translator with the given arguments and the hostname as the last argument.
+
+### <a name="ftpfs"> ftpfs </a>
+
+ftpfs is a good example, that is even very usefull. With hostmux and ftpfs you can access anonymous ftp via the filesystem, sparing out complicate use of a ftp client.
+
+We assume you want to access the ftp root at all servers. The example host is ftp.yourbox.com.
+
+Usermux is called via <code>**settrans -fgap /ftp /hurd/hostmux /hurd/ftpfs /**</code> .
+
+* <code>**-fg**</code> makes settrans try hard to remove an existing old translator from <code>**/ftp**</code>
+* <code>**ap**</code> sets an active translator (starts the translator) and a passive translator (stores translator information in the filesystem with which an active translator can be started on access of this node)
+* <code>**/ftp**</code> is where we want to set the translator
+* <code>**/hurd/hostmux**</code> is obviously our hostmux translator that will be started at <code>**/ftp**</code> and handle filesystem operations on <code>**/ftp**</code> and everything below (like <code>**/ftp/ftp.yourbox.com/pub/**</code>)
+* <code>**/hurd/ftpfs /**</code> is the argument to hostmux.
+
+When <code>**/ftp**</code> is accessed, the first directory is interpreted as hostname and a new translator is set up with the <code>**hostmux**</code> arguments:
+
+<code>**ls /ftp/ftp.yourhost.com/pub/**</code> lets hostmux start a new traslator <code>**/hurd/ftpfs / ftp.yourhost.com**</code> and serve it via <code>**/ftp/ftp.yourhos t.com/**</code> as directory. Subsequent the directory <code>**pub/**</code> on <code>**/ftp.yourhost.com/**</code> can be accessed via the new created translator.
+
+You can see the new created translator in the process list: <code>**ps ax | grep ftpsfs**</code> . You shoud see <code>**/hurd/ftpfs / ftp.yourhost.com**</code> .
+
+-- [[Main/PatrickStrasser]] - 13 Jul 2004
diff --git a/hurd/translator/magic.mdwn b/hurd/translator/magic.mdwn
new file mode 100644
index 00000000..06ee798b
--- /dev/null
+++ b/hurd/translator/magic.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 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 magic translator provides `/dev/fd`.
+
+ $ showtrans /dev/fd
+ /hurd/magic --directory fd
+
+The `/dev/fd` directory holds the open file descriptors for your current
+process. You can't see them with `ls -l /dev/fd/` but you can see them
+individually like this:
+
+ $ ls -l /dev/fd/0
+ crw--w---- 1 bing tty 0, 0 Nov 19 18:00 /dev/fd/0
diff --git a/hurd/translator/mboxfs.mdwn b/hurd/translator/mboxfs.mdwn
new file mode 100644
index 00000000..e357294f
--- /dev/null
+++ b/hurd/translator/mboxfs.mdwn
@@ -0,0 +1,11 @@
+[[!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://www.nongnu.org/hurdextras/#mboxfs>
diff --git a/hurd/translator/netio.mdwn b/hurd/translator/netio.mdwn
new file mode 100644
index 00000000..aca9cd69
--- /dev/null
+++ b/hurd/translator/netio.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+`netio` is a translator designed for creating socket ports through the
+filesystem.
+
+
+# Source
+
+incubator, netio/master
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
new file mode 100644
index 00000000..cbe50b48
--- /dev/null
+++ b/hurd/translator/pfinet.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 2002, 2004, 2005, 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]]."]]"""]]
+
+To configure Internet connectivity, the `pfinet` (*Protocol Family Internet*)
+[[translator]] must be configured. This is done using the
+[[`settrans`|settrans]] command, for example like this:
+
+ # settrans -fgap /servers/socket/2 /hurd/pfinet ↩
+ -i eth0 -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0
+
+The argument `/server/socket/2` is the node that the translator is to be
+attached to. This is followed by the translator program to run and any
+arguments to give it.
+
+There, `-i`, `-a`, `-g` and `-m` are, quite obviously, the (Mach) device to
+use, the IP address, the gateway and netmask.
+
+---
+
+To make DNS lookups work, you'll also have to properly configure the
+`/etc/resolv.conf` file, for example by copying it over from your GNU/Linux
+installation.
+
+---
+
+ * [[Implementation]].
+ * [[IPv6]].
diff --git a/hurd/translator/pfinet/implementation.mdwn b/hurd/translator/pfinet/implementation.mdwn
new file mode 100644
index 00000000..50b5dfc2
--- /dev/null
+++ b/hurd/translator/pfinet/implementation.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2000, 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 `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
+implementation.
diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn
new file mode 100644
index 00000000..5afee0c6
--- /dev/null
+++ b/hurd/translator/pfinet/ipv6.mdwn
@@ -0,0 +1,57 @@
+[[!meta copyright="Copyright © 2007, 2008, 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]]."]]"""]]
+
+[[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]].
+This was [Savannah task #5470](http://savannah.gnu.org/task/?5470).
+
+
+# Implementation
+
+Because the IPv4 and IPv6 protocols are
+quite related to each other (think of mapped IPv4 addresses, etc.), there is no
+separate [[server|translator]] for IPv6 but support for the latter has been
+incorporated into the common pfinet. Unfortunately it's a little bit clumsy
+now to set the [[translator]] up, since it has to be bound to
+*/servers/socket/2* (like before) as well as */servers/socket/26* (for IPv6).
+
+To achieve this, you can tell pfinet to install [[active_translators|active]]
+on specified nodes, using **-4** and **-6** options. This is, you have to
+install a [[passive_translator|passive]] on */servers/socket/2* that also binds
+the IPv6 port and vice versa.
+
+
+# Examples
+
+Normal IPv4 network setup, address 192.168.7.23/24 and gateway 192.168.7.1.
+IPv6 address shall be assigned using IPv6 auto-configuration.
+
+ settrans -fgp /servers/socket/2 ↩
+ /hurd/pfinet -6 /servers/socket/26 ↩
+ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1
+ settrans -fgp /servers/socket/26 ↩
+ /hurd/pfinet -4 /servers/socket/2 ↩
+ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1
+
+Quite the same, but with static IPv6 address assignment:
+
+ settrans -fgp /servers/socket/2 ↩
+ /hurd/pfinet -6 /servers/socket/26 ↩
+ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩
+ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1
+ settrans -fgp /servers/socket/26 ↩
+ /hurd/pfinet -4 /servers/socket/2 ↩
+ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩
+ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1
+
+
+# Missing Functionality
+
+Amongst other things, support for [[IOCTL]]s is missing.
diff --git a/hurd/translator/pflocal.mdwn b/hurd/translator/pflocal.mdwn
new file mode 100644
index 00000000..dc2434dc
--- /dev/null
+++ b/hurd/translator/pflocal.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2000, 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 implementation of the `pflocal` server is in the `pflocal` directory, and
+uses [[`libpipe`|libpipe]] (shared code with the [[named_pipe|fifo]]
+implementation).
diff --git a/hurd/translator/procfs.mdwn b/hurd/translator/procfs.mdwn
new file mode 100644
index 00000000..404a6764
--- /dev/null
+++ b/hurd/translator/procfs.mdwn
@@ -0,0 +1,19 @@
+[[!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://www.nongnu.org/hurdextras/#procfs>
+
+ * [[`ps`|procps]]
+ * [[`top`|top]]
+ * [[`htop`|htop]]
+ * `gtop`
+ * [[`killall`|killall]]
+ * `pkill`
+ * ...
diff --git a/hurd/translator/procfs/htop.mdwn b/hurd/translator/procfs/htop.mdwn
new file mode 100644
index 00000000..ce38b92c
--- /dev/null
+++ b/hurd/translator/procfs/htop.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+ open("/proc/stat", O_RDONLY) = 3
+ open("/proc/meminfo", O_RDONLY) = 3
+ open("/proc/stat", O_RDONLY) = 3
+ open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 3
+ open("/proc/1/task", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 4
+ open("/proc/1/status", O_RDONLY) = 4
+ open("/proc/1/statm", O_RDONLY) = 4
+ open("/proc/1/stat", O_RDONLY) = 4
+ open("/proc/1/cmdline", O_RDONLY) = 4
+ open("/proc/2/task", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 4
+ open("/proc/2/status", O_RDONLY) = 4
+ open("/proc/2/statm", O_RDONLY) = 4
+ open("/proc/2/stat", O_RDONLY) = 4
+ open("/proc/2/cmdline", O_RDONLY) = 4
+ [...]
diff --git a/hurd/translator/procfs/killall.mdwn b/hurd/translator/procfs/killall.mdwn
new file mode 100644
index 00000000..3d31b51a
--- /dev/null
+++ b/hurd/translator/procfs/killall.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+ open("/proc/stat", O_RDONLY) = 3
+ open("/proc/self/stat", O_RDONLY) = 3
+ open("/proc/uptime", O_RDONLY) = 3
+ open("/proc/sys/kernel/pid_max", O_RDONLY) = 4
+ open("/proc/meminfo", O_RDONLY) = 4
+ open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
+ open("/proc/1/stat", O_RDONLY) = 6
+ open("/proc/1/status", O_RDONLY) = 6
+ open("/proc/1/cmdline", O_RDONLY) = 6
+ open("/proc/2/stat", O_RDONLY) = 6
+ open("/proc/2/status", O_RDONLY) = 6
+ open("/proc/2/cmdline", O_RDONLY) = 6
+ [...]
diff --git a/hurd/translator/procfs/procps.mdwn b/hurd/translator/procfs/procps.mdwn
new file mode 100644
index 00000000..3d31b51a
--- /dev/null
+++ b/hurd/translator/procfs/procps.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+ open("/proc/stat", O_RDONLY) = 3
+ open("/proc/self/stat", O_RDONLY) = 3
+ open("/proc/uptime", O_RDONLY) = 3
+ open("/proc/sys/kernel/pid_max", O_RDONLY) = 4
+ open("/proc/meminfo", O_RDONLY) = 4
+ open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
+ open("/proc/1/stat", O_RDONLY) = 6
+ open("/proc/1/status", O_RDONLY) = 6
+ open("/proc/1/cmdline", O_RDONLY) = 6
+ open("/proc/2/stat", O_RDONLY) = 6
+ open("/proc/2/status", O_RDONLY) = 6
+ open("/proc/2/cmdline", O_RDONLY) = 6
+ [...]
diff --git a/hurd/translator/procfs/top.mdwn b/hurd/translator/procfs/top.mdwn
new file mode 100644
index 00000000..2cba78ad
--- /dev/null
+++ b/hurd/translator/procfs/top.mdwn
@@ -0,0 +1,18 @@
+[[!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]]."]]"""]]
+
+ open("/proc/stat", O_RDONLY) = 3
+ open("/proc/sys/kernel/pid_max", O_RDONLY) = 3
+ open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 3
+ open("/proc/1/stat", O_RDONLY) = 4
+ open("/proc/1/statm", O_RDONLY) = 4
+ open("/proc/2/stat", O_RDONLY) = 4
+ open("/proc/2/statm", O_RDONLY) = 4
+ [...]
diff --git a/hurd/translator/random.mdwn b/hurd/translator/random.mdwn
new file mode 100644
index 00000000..afb76953
--- /dev/null
+++ b/hurd/translator/random.mdwn
@@ -0,0 +1,70 @@
+[Savannah task #5130: random translator](http://savannah.gnu.org/task/?5130)
+
+See the attached [[mbox.bz2]] containing all the emails concerning this topic
+which I was able to gather from public archives. (!) This is not up-to-date
+anymore, as [[MichaelCasadevall]] is currently working on this.
+
+# Description
+
+Sources of entropy are for example disk access latencies or keystroke patterns
+or behavior on networks. This suggests that for implementing a random
+translator a kernel part is needed as well, to gather that entropy. That
+kernel part would then export the gathered entropy via a kernel device, named
+perhaps `entropy`.
+
+# Setup Pseudo Random Devices
+
+Stuck getting SSH to work? You need a pseudo random generator (PRG).
+
+There are several solutions to the lack of `/dev/random` and `/dev/urandom`,
+but they are not yet in the default installation.
+
+* Marcus' work can be downloaded at
+ [random.tar.gz](ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/random.tar.gz).
+ (Identical to <http://kilobug.free.fr/hurd/random-64.tar.gz>?)
+ * [A patch](http://mail.gnu.org/pipermail/bug-hurd/2002-August/010248.html)
+ that was probably already incorporated from August 14, 2002.
+ * Clemmitt Sigler [reported
+ success](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00076.html)
+ October 11, 2002 and Marcus [described
+ some](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00081.html) of
+ the internals.
+
+* [Entropy Gathering Daemon](http://egd.sourceforge.net/).
+ * [request for packaging](http://bugs.debian.org/145498).
+
+* [OSKit Entropy
+ Patch](http://lists.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) from
+ Derek Davies - Jan 2003.
+ * See also [this page](http://www.ddavies.net/oskit-entropy/).
+ * Note that this patch can (and should) be used with this [OSKit NIC
+ patch](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01570.html).
+
+* [Sune Kirkeby's incomplete port of the Linux /dev/\{,u\}random device
+ driver](http://ibofobi.dk/stuff/hurd-entropy/)
+ * [The files](http://download.ibofobi.dk/hurd-entropy/), including a [patch
+ for GNU
+ Mach](http://download.ibofobi.dk/hurd-entropy/gnumach-entropy.diff.bz2).
+
+* Quick and dirty way:
+
+ sudo cp /bin/bash /dev/random
+ sudo ln -s random /dev/urandom
+
+---
+
+# Setup Tips
+
+Here are some tips on how to actually setup the two random devices using
+Kilobugs' [random-64 server](http://kilobug.free.fr/hurd/random-64.tar.gz).
+His tarball is a complete Hurd server including a pre-built binary - so you
+don't need GCC or magic fingers for this! :)
+
+After untaring the package you copy the random binary to the `/hurd`
+directory. Then you setup the translators for random and urandom.
+
+ # settrans -c /dev/random /hurd/random \
+ --seed-file /var/run/random-seed --secure
+ # settrans -c /dev/urandom /hurd/random \
+ --seed-file /var/run/urandom-seed --fast
+ # chmod 0644 /dev/random /dev/urandom
diff --git a/hurd/translator/random/mbox.bz2 b/hurd/translator/random/mbox.bz2
new file mode 100644
index 00000000..a9a4d4a6
--- /dev/null
+++ b/hurd/translator/random/mbox.bz2
Binary files differ
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
new file mode 100644
index 00000000..8e26a959
--- /dev/null
+++ b/hurd/translator/storeio.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+`storeio` is a *translator for devices and other stores*.
+
+It relies heavily on [[libstore]].
+
+
+# Examples
+
+You can make a file's content available as some block device (where `foo` is
+the name of the file to map):
+
+ settrans -ca node /hurd/storeio -T file foo
+
+You can even `ungzip` files on the fly (`bunzip2` is available as well):
+
+ settrans -ca node /hurd/storeio -T gunzip foo.gz
+
+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 typed gunzip:file:foo.gz
diff --git a/hurd/translator/stowfs.mdwn b/hurd/translator/stowfs.mdwn
new file mode 100644
index 00000000..9c88f1a3
--- /dev/null
+++ b/hurd/translator/stowfs.mdwn
@@ -0,0 +1,11 @@
+[[!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 redir=unionfs#stowfs]]
diff --git a/hurd/translator/tarfs.mdwn b/hurd/translator/tarfs.mdwn
new file mode 100644
index 00000000..e25e3255
--- /dev/null
+++ b/hurd/translator/tarfs.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+`tarfs` is a translator aimed at providing access to tar files through the
+filesystem. This way you don't have to extract files from the archive to
+access them. It supports compressed archives (bzip2 and gzip) through
+[[libstore]].
+
+
+# Status
+
+Works fine on most cases, occasional corruptions when writing using bzip2/gzip
+stores.
+
+
+# Source
+
+incubator, tarfs/master
diff --git a/hurd/translator/tmpfs.mdwn b/hurd/translator/tmpfs.mdwn
new file mode 100644
index 00000000..0179ad6c
--- /dev/null
+++ b/hurd/translator/tmpfs.mdwn
@@ -0,0 +1,29 @@
+[[!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]]."]]"""]]
+
+`tmpfs` is a file system server for temporary data storage without using a real
+(permanent) [[backing_store]].
+
+It is based on [[libdiskfs]].
+
+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.
+
+However, `tmpfs` is not working correctly at the moment:
+
+[[!inline
+pages="hurd/translator/tmpfs/*"
+show=0
+feeds=no
+actions=yes]]
diff --git a/hurd/translator/tmpfs/notes_bing.mdwn b/hurd/translator/tmpfs/notes_bing.mdwn
new file mode 100644
index 00000000..fa3eeac2
--- /dev/null
+++ b/hurd/translator/tmpfs/notes_bing.mdwn
@@ -0,0 +1,101 @@
+[[!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]]."]]"""]]
+
+[[!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.
+
+ $ sudo chmod ugo+x /servers/default-pager
+
+ Then I get this error:
+
+ tmpfs: /build/mbanck/hurd-20060825/build-tree/hurd/tmpfs/dir.c:62: diskfs_get_directs: Assertion `__builtin_offsetof (struct tmpfs_dirent, name) >= __builtin_offsetof (struct dirent, d_name)' failed.
+
+2. i rearranged the struct tempfs_dirent in tmpfs.h to line up with the struct
+ dirent. now the assert passes at line 62 of dir.c passes.
+
+ struct tmpfs_dirent
+ {
+ struct tmpfs_dirent *next;
+ struct disknode *dn;
+ + char padding[3];
+ uint8_t namelen;
+ char name[0];
+ };
+
+ now ls works on an empty directory.
+ you can touch files, and run `ls' on them.
+ mkdir, rmdir works too.
+ fsysopts works
+ df works
+
+3. creating a symlink fails.
+
+ old patch to get symlinks working:
+
+ http://www.mail-archive.com/bug-hurd@gnu.org/msg11844.html
+ --- node.c.orig 2005-07-24 09:56:39.000000000 -0400
+ +++ node.c 2005-07-24 09:55:46.000000000 -0400
+ @@ -330,6 +330,7 @@
+ create_symlink_hook (struct node *np, const char *target)
+ {
+ assert (np->dn->u.lnk == 0);
+ + np->dn_stat.st_size = strlen (target);
+ if (np->dn_stat.st_size > 0)
+ {
+ const size_t size = np->dn_stat.st_size + 1;
+ @@ -337,6 +338,7 @@
+ if (np->dn->u.lnk == 0)
+ return ENOSPC;
+ memcpy (np->dn->u.lnk, target, size);
+ + np->dn->type = DT_LNK;
+ adjust_used (size);
+ recompute_blocks (np);
+ }
+ @@ -380,8 +382,6 @@
+ error_t
+ diskfs_truncate (struct node *np, off_t size)
+ {
+ - if (np->allocsize <= size)
+ - return 0;
+
+ if (np->dn->type == DT_LNK)
+ {
+ @@ -392,6 +392,9 @@
+ return 0;
+ }
+
+ + if (np->allocsize <= size)
+ + return 0;
+ +
+ assert (np->dn->type == DT_REG);
+
+ if (default_pager == MACH_PORT_NULL)
+
+ now symlinks work.
+
+4. can't write data to a file
+
+
+---
+
+miscellaneous notes:
+
+`diskfs_disk_name` could be `NULL`, but it is `"swap"`
+
+using `default_pager_object_set_size (np->dn->u.reg.memobj, size);` to truncate and grow.
+
+why are our blocks 512? shouldn't it something else? or at least settable?
+or does [[libdiskfs]] demand this?
+
+`diskfs_get_filemap_pager_struct (struct node *np)` returns null.
+shouldn't it return `default_pager`?
diff --git a/hurd/translator/tmpfs/notes_various.mdwn b/hurd/translator/tmpfs/notes_various.mdwn
new file mode 100644
index 00000000..5e4e991c
--- /dev/null
+++ b/hurd/translator/tmpfs/notes_various.mdwn
@@ -0,0 +1,218 @@
+[[!meta copyright="Copyright © 2005, 2006, 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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+ <antrik> hde: what's the status on tmpfs?
+ <hde> Broke
+ <hde> k0ro traced the errors like the assert show above to a pager problem.
+ See the pager cannot handle request from multiple ports and tmpfs sends
+ request using two differ ports, so to fix it the pager needs to be hacked
+ to support multiple requests.
+ <hde> You can enable debugging in the pager by changing a line from dprintf
+ to ddprintf I can tell you how if you want.
+ <antrik> and changing tmpfs to use a single port isn't possible?...
+ <hde> antrik, I am not sure.
+ <hde> IIRC k0ro was saying it cannot be changed and I cannot recall his
+ reasons why.
+ <sdschulze> antrik: Doing it the quick&dirty way, I'd just use an N-ary
+ tree for representing the directory structure and mmap one new page (or
+ more) for each file.
+ <hde> sdschulze, What are you talking about?
+ <sdschulze> hde: about how I would implement tmpfs
+ <hde> O
+ <azeem> sdschulze: you don't need to reimplement it, just fix it :)
+ <sdschulze> azeem: Well, it seems a bit more difficult than I considered.
+ <sdschulze> I had assumed it was implemented the way I described.
+ <hde> O and the assert above gets triggered if you don't have a
+ default-pager setup on /servers/default-pager
+ <hde> the dir.c:62 assert that is.
+ <azeem> hde: you sure? I think I have one
+ <hde> I am almost sure.
+ <azeem> mbanck@beethoven:~$ showtrans /servers/default-pager
+ <azeem> /hurd/proxy-defpager
+ <azeem> isn't that enough?
+ <hde> It is suppose to be.
+ <hde> Try it as root
+ <hde> I was experiecing alot of bugs as a normal user, but according to
+ marcus it is suppose to work as root, but I was getting alot of hangs.
+ <azeem> hde: same issue, sudo doesn't work
+ <hde> sucky, well then there are alot of bugs. =)
+ <azeem> eh, no
+ <azeem> I still get the dir.c assert
+ <sdschulze> me too
+ <sdschulze> Without it, I already get an error message trying to set tmpfs
+ as an active translator.
+
+---
+
+ <hde> I think I found the colprit.
+ <hde> default_pager_object_set_size --> This is were tmpfs is hanging.
+ <hde> mmm Hangs on the message to the default-pager.
+
+---
+
+ <hde> Well it looks like tmpfs is sending a message to the default-pager,
+ the default-pager then receives the message and, checks the seqno. I
+ checked the mig gen code and noticed that the seqno is the reply port, it
+ this does not check out then the default pager is put into a what it
+ seems infinte condition_wait hoping to get the correct seqno.
+ <hde> Now I am figuring out how to fix it, and debugging some more.
+
+---
+
+ <marco_g> hde: Still working on tmpfs?
+ <hde> Yea
+ <marco_g> Did you fix a lot already?
+ <hde> No, just trying to narrow down the reason why we cannot write file
+ greater then 4.5K.
+ <marco_g> ahh
+ <marco_g> What did you figure out so far?
+ <hde> I used the quick marcus fix for the reading assert.
+ <marco_g> reading assert?
+ <hde> Yea you know ls asserted.
+ <marco_g> oh? :)
+ <hde> Because, the offsets changed in sturct dirent in libc.
+ <hde> They added 64 bit checks.
+ <hde> So marcus suggested a while ago on bug-hurd to just add some padding
+ arrays to the struct tmpfs_dirent.
+ <hde> And low and behold it works.
+ <marco_g> Oh, that fix.
+ <hde> Yup
+ <hde> marco_g, I have figured out that tmpfs sends a message to the
+ default-pager, the default-pager does receive the message, but then
+ checks the seqno(The reply port) and if it is not the same as the
+ default-pagers structure->seqno then she waits hoping to get the correct
+ one. Unfortantly it puts the pager into a infinite lock and never come
+ out of it.
+ <marco_g> hde: That sucks...
+ <marco_g> But at least you know what the problem is.
+ <hde> marco_g, Yea, now I am figuring out how to fix it.
+ <hde> Which requires more debugging lol.
+ <hde> There is also another bug, default_pager_object_set_size in
+ <hde> mach-defpager does never return when called and makes tmpfs hang. I
+ <hde> will have a closer look at this later this week.
+
+---
+
+ <hde> Cool, now that I have two pagers running, hopefully I will have less
+ system crashes.
+ <marcus> running more than one pager sounds like trouble to me, but maybe
+ hde means something different than I think
+ <hde> Well the other pager is only for tmpfs to use.
+ <hde> So I can debug the pager without messing with the entire system.
+ <hde> marcus, I am trying ti figure out why diskfs_object_set_size waits
+ forever. This way when the pager becomes locked forever I can turn it
+ off and restart it. When I was doing this with only one mach-defpager
+ running the system would crash.
+ <marcus> hde: how were you able to start two default pagers??
+ <hde> Well you most likely will not think my way of doing it was correct,
+ and I am also not sure if it is lol. I made my hacked version not stop
+ working if one is alreay started.
+
+---
+
+ <hde> See, the default-pager has a function called
+ default_pager_object_set_size this sets the size for a memory object,
+ well it checks the seqno for each object if it is wrong it goes into a
+ condition_wait, and waits for another thread to give it a correct seqno,
+ well this never happens.
+ <hde> Thus, you get a hung tmpfs and default-pager.
+ <hde> pager_memcpy (pager=0x0, memobj=33, offset=4096, other=0x20740,
+ size=0x129df54, prot=3) at pager-memcpy.c:43
+ <hde> bddebian, See the problem?
+ <bddebian> pager=0x0?
+ <hde> Yup
+ <hde> Now wtf is the deal, I must debug.
+ <hde> -- Function: struct pager * diskfs_get_filemap_pager_struct
+ <hde> (struct node *NP)
+ <hde> Return a `struct pager *' that refers to the pager returned by
+ <hde> diskfs_get_filemap for locked node NP, suitable for use as an
+ <hde> argument to `pager_memcpy'.
+ <hde> That is failing.
+ <hde> If it is not one thing it is another.
+ <bddebian> All of Mach fails ;-)
+ <hde> It is alot of work to make a test program that uses libdiskfs.
+
+---
+
+ <bing> 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.
+ <bing> $ sudo chmod ugo+x /servers/default-pager
+ <bing> you can see the O_EXEC in tmpfs.c
+ <bing> maybe this is just a debian packaging problem
+ <bing> it's probably a fix to native-install i'd guess
+
+---
+
+ <bing> tmpfs is failing on default_pager_object_create with -308, which
+ means server died
+ <bing> i'm running it as a regular user, so it gets it's pager from
+ /servers/default-pager
+ <bing> and showtrans /servers/default-pager shows /hurd/proxy-defpager
+ <bing> so i'm guessing that's the server that died
+
+---
+
+ <bing> this is about /hurd/tmpfs
+ <bing> a filesystem in memory
+ <bing> such that each file is it's own memory object
+ <andar> what does that mean exactly? it differs from a "ramdisk"?
+ <bing> instead of the whole fs being a memory object
+ <andar> it only allocates memory as needed?
+ <bing> each file is it's own
+ <bing> andar: yeah
+ <bing> it's not ext2 or anything
+ <andar> yea
+ <bing> it's tmpfs :-)
+ <bing> first off, echo "this" > that
+ <bing> fails
+ <bing> with a hang
+ <bing> on default_pager_object_create
+ <andar> so writing to the memory object fails
+ <bing> well, it's on the create
+ <andar> ah
+ <bing> and it returns -308
+ <bing> which is server died
+ <bing> in mig-speak
+ <bing> but if i run it as root
+ <bing> things behave differently
+ <bing> it gets passed the create
+ <bing> but then i don't know what
+ <bing> i want to make it work for the regular user
+ <bing> it doesn't work as root either, it hangs elsewhere
+ <andar> but it at least creates the memory object
+ <bing> that's the braindump
+ <bing> but it's great for symlinks!
+ <andar> do you know if it creates it?
+ <bing> i could do stowfs in it
+
+---
+
+ <antrik> bing: k0ro (I think) analized the tmpfs problem some two years ago
+ or so, remember?...
+ <antrik> it turns out that it broke due to some change in other stuff
+ (glibc I think)
+ <antrik> problem was something like getting RPCs to same port from two
+ different sources or so
+ <antrik> and the fix to that is non-trivial
+ <antrik> I don't remember in what situations it broke exactly, maybe when
+ writing larger files?
+ <bing> antrik: yeah i never understood the explanation
+ <bing> antrik: right now it doesn't write any files
+ <bing> the change in glibc was to struct dirent
+ <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
new file mode 100644
index 00000000..d1e3868b
--- /dev/null
+++ b/hurd/translator/unionfs.mdwn
@@ -0,0 +1,155 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# `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
new file mode 100644
index 00000000..36290883
--- /dev/null
+++ b/hurd/translator/wishlist_1.mdwn
@@ -0,0 +1,129 @@
+[[!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]]."]]"""]]
+
+* [[devfs]]
+
+* FUSE(fuse.sourceforge.net/) compatilbility library. : just modify FUSE apps a and compile little to work as translator :-)
+
+* File Finder. (uses find, grep, a combination or a custom command (htdig, mp3 info)
+ * Files found will be available under one directory and then can be used like a normal directory
+ * usefull to generate Albums, Share only resulting files over the et, etc..
+ * The filefinder can be scheduled or can be connected over some ipc like dbus to the VFS system if any to keep a watch for new files.
+
+* GNOKII, BitPim and openobex as translators
+ * grep through your SMSs!
+ * share your addressbook!
+ * "Attach" that funny SMS/MMS to your email.
+ * "svn commit" your joke collection :-D
+
+* Real Language Translator [[br]]
+ * cat /usr/translator/de-en/usr/share/doc/something.txt should take /usr/share/doc/something.txt , submit it to google's website and bring back results.
+
+* Mozilla Bookmarks = del.ici.ous
+ * Need more explanation ? ;-)
+
+* <http://hnb.sf.net>
+ * having a directory structure for a file can allow to "svn commit" the hnb document in a more "node-safe" manner, thus allowing multiple people to work on the same hnb document.
+ * This must be fairly easy as HNB can already export to XML and XMLfs already exists.
+
+* DavFS
+ * Just setup a 'WebDav share' as a directory. The implimentation of the protocol is already available in nautilus and konqueror.
+
+* Compiled form of your project
+ * you have your project in /somedir/project with source in /somedir/project/src .. /somedir/project/bin should always have the compiled version.. is it possible?
+ * The source has to have a MakeFile.
+ * creating /somedir/project/bin-somearch should aotomatically crosscompile
+ * Seems feasible for a small project.
+
+* Report generation FrameWork - an idea to be hugged by app developers..not kernel developers.
+ * You have financial data in some Spreadsheet like format in /yourFinance directory
+ * You add report templates to /yourFinance/repTemplates
+ * Once you save data in /yourFinance the next cat /yourFinance/reports/areportname will give you an uptodate report.
+ * This will be usefull for any purpose including serving by static page web servers, sharing over samba/nfs/ftp etc.!
+ * The advantage is any save to the spreadsheet will update the report.. not just from one software.
+
+* SVN (Subversion suite)
+ * like [[cvsfs]]. /svndir/version/version-no should automatically have subversion
+ * I think it is nice to write a generalised version control system framework library which will help in writing version control translators and other tools easily.
+
+* Flexi-acls
+ * First of all - Can this be done? : A translator bound to a directory must be able to access the contents of the directory which would have been accessible in the absence of the translator..
+ * This will enable to wirte translators that can implement custom "Access Control Lists". Just imagine having advanced ACLs even if underlying FileSystem is dumb! Imagine changing the type of ACLs implemented with Just two commands - one to unattach previous translator and the next to attach a different ACL translator! The ACLs themselves may be stored in a different directory
+
+* The translator manager!
+ * Some translators will need to be inserted automatically - like for eg: hardware drivers ..
+ * Each hardware translator will pubish its capabilities.
+ * The "top" translator will query the capabilities of different hardware and match capabilities with the "slave" translators. That is it's only Job.
+ * The control is then handed over to the slave translator.
+ * The ranking not only looks who can handle the "most" capabilites of the hardware. If it finds that multiple translators can handle the same hardware, It will use other parameters to choose between them.. like may be the size in memory? The revision date? Stability (inferred from version number)? And to go to the extreme, the profiling data of the driver ;-P
+ * Advantage : The best driver wins!
+
+* An eg. Skip it if you understood the above :-):
+ * You have a driver that can handle VGA + SVGA + Super3d acceleration + Particle graphics + Works for nvidea card.
+ * You have a driver that can handle SVGA + VGA .
+ * You have a driver that can handle VGA.
+ * Case 1: Your card: A VGA card with some extra fonts..
+ * First the VGA driver will be quireied .. ok can handle essential capability.
+ * Next SVGA driver: can handle but has extra module.. unnecassary weight .
+ * The Nvidia driver: can handle , but again unnecassary weight : ruled out.
+ * Winner : VGA driver:
+ * Case 2: Your card An SVGA card:
+ * First the VGA driver will be quireied .. ok can handle one essential capability.
+ * Next SVGA driver: can handle essential and one extra capability no extra weight..
+ * The Nvidia driver: can handle , but unnecassary weight : ruled out.
+ * Winner : SVGA driver..
+ * Case 3 : You have an VGA .. but no VGA driver .. then the SVGA driver would win.
+
+* Sound Server
+ * /ahsa - stands for Advanced HURD sound architecture :-) Just a temporary name .. for fun.
+ * /ahsa/out - directory wich will hold "plug"s where apllications come and join the server .. see below.
+ * /ahsa/out/mixer - main mixer
+ * /ahsa/out/nextfree - the file when "cat"ed gives the number of the next free plug
+ * /ahsa/plugins/ - info about available plugins
+ * /ahsa/out/[1..n]/ - dynamically generated directories for applications to plug on..
+ * /ahsa/out/[1..n]/data this is where you should do a "cat somerawsoundfile>/ahsa/out/`cat /ahsa/nextfree`/data"
+ * /ahsa/out/[1..n]/plugins - the plugin stack .. volume is also a plugin..
+ * /ahsa/out/[1..n]/plugins/[1..m]/ - echo "plugin param1 param2 param3" > /ahsa/out/[1..n]/plugins/`cat /ahsa/out/[1..n]/plugins/nextfree`/add
+ * /ahsa/out/[1..n]/plugins/[1..m]/params/{param1.. paramn}
+ * /ahsa/out/[1..n]/data.out - can be catted to get data processed through the server
+ * /ahsa/in - similar to /ahsa/out .. with except for an extra file to choose input devices.
+ * /ahsa/devs/{1..n} - devices detected .. can be dynamic .. there are usb soundcards and and midi devices.
+ * /ahsa/out/[1..n]/plugins/[1..m]/0/params/dev
+ * Dont get tempted for :/ahsa/out/[1..n]/params/{rate, channels, and other stuff}
+ * that goes into /ahsa/out/[1..n]/plugins/0/params if /ahsa/out/[1..n]/plugins/0/detected == "headerless audio"
+ * There are a lot more things I can continue about the "sound server" .. The Ideas simply dont seem to exhaust..
+ * Some features/advantages
+ * set output's translator plugin as ordinary text -- have text to speech conversion done by sound server!
+ * Create and apply plugin presets by simply copying directories!
+ * Me getting dizzy thinking of the zillion more advantages.
+ * If you are really doing some ordinary output , all you need to do is "cat" data into next free "plug" and everything will be autodetected including the format of the data and sent to the final sound "merge"r
+ * Dizzy ...
+
+* /usr/share/menu !!!! extension for package management idea ..
+ * cat mymenuitem.menu >> /usr/share/menu/menu
+ * cat /usr/share/menu/debian/kde ... :-)
+
+* Spam/Malware Control
+ * /usr/antimalware/ - put your mail here.. it will automatically be scanned. when finished it will vanish from here ..
+ * /usr/antimalware/clean - ... and pop out from here
+ * /usr/antimalware/malware - or here.
+
+* NetDevice
+ * !JustImagine(tm)... settrans -ac /netdevices /hurd/netdevfs - [ host | net ]
+ * One can access device files remotely
+ * This could be acheived by allowing translators talk to one another over a network
+ * This will need translators to catch and handle ioctls (if there is such a thing in HURD).
+ * The device server which will listen to requests from the translators can be run even on a Linux machine!!!
+ * !JustImagine(tm)... accessing the crwriter/webcam on that GNU/Linux machine on the network using cdrecord of your local hurd machine!
+ * !JustImagine(tm)... running GNU/HURD on a minimalistic GNU/Linux(but with all the drivers) through a specially modified and optimised Qemu. The device server runs on the host machine, and the client translators access over the virtual network created by Qemu. You got most of the drivers for free!
+
+* Emacs File VFS
+ * I came to know from my Emacs loving friend that there are lots of VFS handlers in Emacs.. I was wondering if there can be translator which can tap into these Emacs VFS handlers.
diff --git a/hurd/translator/wishlist_2.mdwn b/hurd/translator/wishlist_2.mdwn
new file mode 100644
index 00000000..a927db55
--- /dev/null
+++ b/hurd/translator/wishlist_2.mdwn
@@ -0,0 +1,191 @@
+## <a name="Introduction"> Introduction </a>
+
+The idea behind file system translators is a powerful concept which hasn't recieved much attention in the mainstream computing world. So here is a list of interesting translators I've been able to dream up. I'm sure there are many more ideas floating around out there, so add them to the list!
+
+The [ferris project](http://witme.sourceforge.net/libferris.web/features.html) has some great ideas and code in the area of userspace dynamic filesystems, as has the [FUSE project](http://fuse.sourceforge.net/).
+
+## <a name="Audio_cdfs"> Audio\_cdfs </a>
+
+A translator which produces a directory of \*.wav files when you have an audio CD in the drive.
+
+## <a name="Ogg"> Ogg </a>
+
+This translator could be a sub-directory of the Audio\_cdfs translator and it would translate the \*.wav files into Ogg Vorbis/MP3 format.
+
+## <a name="CDDB"> </a> CDDB
+
+Of course it would be a lot nicer if the above two translators didn't name their files something worthless like track001.ogg. So we would want a translator which would hook up with a database on the web and produce meaningful file names.
+
+## <a name="Crypto"> Crypto </a>
+
+A cryptographic/steganographic seem like a nice match with the concept of user-land file systems. I like the idea of something like `settrans -a /secure stegfs --mpeg file001.mpg`
+
+## <a name="Revision_control"> Revision control </a>
+
+All of the empty space on your drive is now being wasted. Why not have a revision control translator which tracks changes to your documents? See also [this guy](http://www.linuxjournal.com/article.php?sid=5976). And then you'd do something like `cd /time-machine/2003/sept/14/` to see what your system looked like on the 14th of septempber 2003.
+
+## <a name="CVSFS"> </a> CVSFS
+
+See [cvsFS for Linux](http://cvsfs.sourceforge.net/). This provides a package which presents the CVS contents as mountable file system. It allows to view the versioned files as like they were ordinary files on a disk. There is also a possibility to check in/out some files for editing. A read-only version has been written by Stefan Siegl and is available at [Berlios](http://cvs.berlios.de/cgi-bin/viewcvs.cgi/cvsfs4hurd/cvsfs/).
+
+## <a name="tar_and_gzip"> tar and gzip </a>
+
+Rumor has it that they are on the way. Actually, a tar + gzip/bzip2 translator does exist (although it hasn't been used much...) : see [the Hurdextras project](http://savannah.nongnu.org/projects/hurdextras/) on Savannah.
+
+## <a name="ROM"> </a> ROM
+
+How about a translator which makes it look like you can write to read only media (like CDs), or change files which I don't have permission to change. This translator would make it seem like you could copy files to places where you normally couldn't. Think about combining this translator with the ftp translator and the tar and gzip translators. (cd /ftp/gnu.org/gnome.tar.gz/writes\_allowed; make install). It could be that unionfs does this very thing.
+
+## <a name="Super_FIFO"> Super\_FIFO </a>
+
+It's like a named pipe which is smart enough to start a process everytime something new tries to read from it. For example, let's say I have a script that reads in a JPEG image and spits out a smaller thumbnail \*.jpg to STDOUT. With a standard fifo (`mknod -p fifo`) this would almost works (`script big.jpg > fifo`). But what if there are two processes trying to read the fifo at once? Ick. And of course the standard way only works once without rerunning the command. I'm not quite sure what the syntax should look like, but I'm sure someone out there has a great idea waiting to happen.
+
+## <a name="Perl"> Perl </a>
+
+Perl is a wonderful language for hacking together something useful in a short amount of time. No concept is complete without being able to use it in a perl one-liner. And that goes for Hurd translators too. Right?
+
+ #!/usr/bin/perl
+ use Hurd::translator;
+
+ #file named "two" can produce an endless supply of twos, etc. (a la /dev/zero)
+ my $i=0;
+ for $filename ([zero one two three four])
+ {
+ $libtrivfsread_codehash{$filename}=
+ sub{ $num_bytes=shift; my $data=$i; return chr($data) x $num_bytes; };
+ #that's a hash of references to closures
+ $i++;
+ }
+ translator_startup();
+
+A Perl translator has been started by [John Edwin Tobey](http://john-edwin-tobey.org/Hurd/) (pith).
+
+## <a name="Source_code"> Source code </a>
+
+Here's a crazy thought. How about a translator for source code. You have a C source file like `hello.c` which is your normal everyday file. But there's a translator sitting underneath, so when you `cd hello.c` you get a directory with files like `main()` which represent the subroutines in `hello.c`. And of course you should be able to edit/remove those and have it modify the original source.
+
+## <a name="Libraries"> Libraries </a>
+
+Here's an [idea](http://www.circlemud.org/~jelson/software/fusd/docs/node13.html) from the people making [userspace drivers in Linux](http://www.circlemud.org/~jelson/software/fusd/):
+
+* "One particularly interesting application of FUSD that we've found very useful is as a way to let regular user-space libraries export device file APIs. For example, imagine you had a library which factored large composite numbers. Typically, it might have a C interface--say, a function called `int *factorize(int bignum)`. With FUSD, it's possible to create a device file interface--say, a device called `/dev/factorize` to which clients can `write(2)` a big number, then `read(2)` back its factors.
+
+* This may sound strange, but device file APIs have at least three advantages over a typical library API. First, it becomes much more language independent--any language that can make system calls can access the factorization library. Second, the factorization code is running in a different address space; if it crashes, it won't crash or corrupt the caller. Third, and most interestingly, it is possible to use `select(2)` to wait for the factorization to complete. `select(2)` would make it easy for a client to factor a large number while remaining responsive to other events that might happen in the meantime. In other words, FUSD allows normal user-space libraries to integrate seamlessly with UNIX's existing, POSIX-standard event notification interface: `select(2)`."
+
+## <a name="Mail"> Mail </a>
+
+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).
+
+## <a name="Computation"> Computation </a>
+
+This is from the revenge of the command-line department. Make a directory translator whose contents are a result of the computation specified in the directory name. Here's an example...
+
+ $ settrans -a /comp /hurd/computationfs
+ $ cd "/comp/3+4"
+ $ ls -l
+ total 0
+ -rw-r--r-- 1 nobody users 0 Oct 16 11:41 7
+ $
+ $ cd "/comp/sqrt(2)"
+ $ ls -l
+ total 0
+ -rw-r--r-- 1 nobody users 0 Oct 16 11:42 1.4142135623731
+ $
+
+...etc. Now think about your favorite GUI HTML editor and using File-&gt;Open on the following directory name, ``"/comp/for i in $( find / -name *.html ); do ln -s $i `basename $i`;done"`` Which would produce a directory listing with soft links to all of the \*.html files on your system. You could have all of the comforts of the shell from within that little File-&gt;Open dialog box.
+
+## <a name="Other"> Other </a>
+
+Just found Wolfgang J�hrling's translator [wishlist](http://www.8ung.at/shell/trans.html).
+
+## <a name="Bochs"> Bochs </a>
+
+A translator which works with [Bochs](http://bochs.sourceforge.net/) disk images would be nice.
+
+## <a name="Rollover"> Rollover </a>
+
+A translator that uses a circular buffer to store log files. The translated node only contains the last N (mega,kilo)bytes.
+
+## <a name="Birthday"> Birthday </a>
+
+A translator that provides an interface into the birthday program.
+
+You can cat your calendar, eg. bd/calendar/today bd/calendar/this-week or bd/calendar/this-month.
+
+And you could write new events into files located in bd/events/DATE/event-name.
+
+DATE is of the format the birthday expects DD/MM/YYYY.
+
+The contents of the file are any or none of the following birthday options: ann (An anniversary), bd (A birthday), ev (Some other event), wN (Warn N days in advance of date), toDATE (Event lasts until this DATE), forDAYS (Event runs for DAYS).
+
+You can optionally just edit the bd/birthdays file if you want to edit the configuration file by hand. It might make sense to write changes from bd/birthdays into ~/.birthdays.
+
+ $ settrans -c bd /hurd/birthday -f ~/.birthdays
+ $ ls bd/
+ birthdays calendar events
+ $ find bd -print
+ bd
+ bd/calendar
+ bd/calendar/daily
+ bd/calendar/this-week
+ bd/calendar/this-month
+ bd/events
+ bd/birthdays
+ $
+
+## <a name="LVM"> </a> LVM
+
+A translator to access block devices from Linux's [Logical Volume Management](http://www.tldp.org/HOWTO/LVM-HOWTO/) would be an useful addition.
+
+ # settrans -cap /dev/VolumeGroup0 /hurd/lvm /dev/PhysicalVolume0 /dev/PhysicalVolume1 ...
+ # ls /dev/VolumeGroup0/
+ home
+ var
+ # settrans -cap /home /hurd/ext2fs /dev/VolumeGroup0/home
+ # settrans -cap /var /hurd/ext2fs /dev/VolumeGroup0/var
+
+Probably both [LVM2](http://sourceware.org/lvm2/) and the [Device-mapper](http://sourceware.org/dm/) need to be ported.
+
+## <a name="bridging_translator"> bridging translator </a>
+
+A [bridging](http://bridge.sourceforge.net/faq.html) translator could improve the Hurd's networking facilities.
+
+ # settrans -cap /dev/br0 /hurd/bridge -i eth0 -i eth1 ...
+ # settrans -cap /servers/socket/2 /hurd/pfinet -i /dev/br0 -a ... -g ... -m ...
+
+Perhaps Linux's bridging code and [utilities](http://bridge.sourceforge.net/) can be ported (or glued in) or code from one of the BSDs.
+
+## <a name="SSH_translator"> </a> SSH translator
+
+Presenting remote file systems through SSH similar to what gnome-vfs does.
+
+## <a name="SMB_translator"> </a> SMB translator
+
+Presenting remote file systems through Samba similar to what gnome-vfs does. Guiseppe Scrivano has worked on this and smbfs is available at [hurdextras](http://savannah.nongnu.org/cgi-bin/viewcvs/hurdextras/smbfs/).
+
+## <a name="Crontab_translator"> Crontab translator </a>
+
+Presenting a user's crontab in a filesystem where cron entries are files.
+
+## <a name="globlink"> globlink </a>
+
+Firmlink to a file according to a filename matching pattern. When a file goes away, the next file that is matched is automatically linked to.
+
+ $ settrans -ac libfoo.so /hurd/globlink '/lib/libfoo*'
+
+## <a name="alphabetfs"> alphabetfs </a>
+
+Organize a large group of files by their first letter. Present one subdirectory for each letter in the alphabet.
+
+## <a name="fsysoptsctl"> fsysoptsctl </a>
+
+Send an fsysopts command to a set of translators. When you have a directory full of translators and you want to send each of them the same runtime option, this translator can do it for you.
+
+ $ settrans -ac all /hurd/fsysoptsctl '/tmp/mystuff/*'
+ $ fsysopts all --update
diff --git a/hurd/translator/writing/example.mdwn b/hurd/translator/writing/example.mdwn
new file mode 100644
index 00000000..0a3be4df
--- /dev/null
+++ b/hurd/translator/writing/example.mdwn
@@ -0,0 +1,303 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Data User-Server Translator Example
+
+The code examples were written by Anand Babu.
+
+We have a data.h header file, a data.defs file, a data-user.c, data-server.c
+sources files and a Makefile.
+
+data.h:
+-------
+
+ #ifndef _data_user_
+ #define _data_user_
+
+ /* Module data */
+
+ #include <mach/kern_return.h>
+ #include <mach/port.h>
+ #include <mach/message.h>
+
+ #include <mach/std_types.h>
+ #include <mach/mach_types.h>
+ #include <device/device_types.h>
+ #include <device/net_status.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ #include <sys/resource.h>
+ #include <sys/utsname.h>
+ #include <hurd/hurd_types.h>
+
+ /* Routine data_set_value */
+ #ifdef mig_external
+ mig_external
+ #else
+ extern
+ #endif
+ kern_return_t S_data_set_value
+ #if defined(LINTLIBRARY)
+ (data_port, value)
+ mach_port_t data_port;
+ int value;
+ { return S_data_set_value(data_port, value); }
+ #else
+ (
+ mach_port_t data_port,
+ int value
+ );
+ #endif
+
+ /* Routine data_get_value */
+ #ifdef mig_external
+ mig_external
+ #else
+ extern
+ #endif
+ kern_return_t S_data_get_value
+ #if defined(LINTLIBRARY)
+ (data_port, value)
+ mach_port_t data_port;
+ int *value;
+ { return S_data_get_value(data_port, value); }
+ #else
+ (
+ mach_port_t data_port,
+ int *value
+ );
+ #endif
+
+ #endif /* not defined(_data_user_) */
+
+data.defs:
+----------
+
+ /* Definitions for data interface
+
+ This file is part of the GNU Hurd.
+
+ The GNU Hurd 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.
+
+ The GNU Hurd 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 the GNU Hurd; see the file COPYING. If not, write to
+ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ subsystem data 45000;
+
+ #include <hurd/hurd_types.defs>
+
+ #ifdef STACK_IMPORTS
+ STACK_IMPORTS
+ #endif
+
+ /* intr-rpc.defs defines the INTR_INTERFACE macro to make the generated RPC
+ stubs send-interruptible, and to prefix them with `hurd_intr_rpc_'. */
+ INTR_INTERFACE
+
+ /* set integer value to data */
+ routine data_set_value (
+ data_port: mach_port_t;
+ value: int);
+
+ /* get integer value from data */
+ routine data_get_value (
+ data_port: mach_port_t;
+ out value: int);
+
+data-user.c:
+------------
+
+ #include <stdio.h>
+ #include <hurd.h>
+ #include <hurd/hurd_types.h>
+ #include "data.h"
+
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+ #endif
+
+ int
+ main(int argc, char *argv[])
+ {
+ int value=0;
+ mach_port_t data_server_port;
+
+ data_server_port = file_name_lookup ("/tmp/trans", 0, 0);
+ printf ("data_server_port [%u]\n", data_server_port);
+ S_data_set_value (data_server_port, 99);
+ S_data_get_value (data_server_port, &value);
+ printf ("data->get_value: [%d]\n", value);
+
+ return 0;
+ }
+
+data-server.c:
+--------------
+
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+ #endif
+
+ #include <stdio.h>
+ #include <getopt.h>
+ #include <errno.h>
+ #include <sys/stat.h>
+ #include <error.h>
+
+ #include <hurd/ports.h>
+ #include <hurd/hurd_types.h>
+ #include <hurd/trivfs.h>
+
+ #include "data.h"
+
+ extern boolean_t S_data_server
+ (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
+
+ int trivfs_fstype = FSTYPE_MISC;
+ int trivfs_fsid = 0;
+ int trivfs_support_read = 0;
+ int trivfs_support_write = 0;
+ int trivfs_support_exec = 0;
+ int trivfs_allow_open = 0x00;
+ int trivfs_protid_nportclasses = 0;
+ int trivfs_cntl_nportclasses = 0;
+
+ int data_value;
+
+ int demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp)
+ {
+ return (S_data_server(inp,outp)||trivfs_demuxer(inp,outp));
+ }
+
+ void trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *st)
+ {
+ }
+ error_t trivfs_goaway (struct trivfs_control *fsys, int flags)
+ {
+ exit (0);
+ }
+
+ kern_return_t S_data_set_value (mach_port_t data_port, int value)
+ {
+ data_value = value;
+ return 0;
+ }
+
+ kern_return_t S_data_get_value (mach_port_t data_port, int *value)
+ {
+ *value = data_value;
+ return 0;
+ }
+
+ int
+ main(int argc, char *argv[])
+ {
+ int err;
+ mach_port_t bootstrap;
+ struct trivfs_control *fsys;
+
+ if (argc > 1)
+ {
+ fprintf(stderr, "Usage: settrans [opts] node %s\n", program_invocation_name);
+ exit (1);
+ }
+
+ task_get_bootstrap_port (mach_task_self (), &bootstrap);
+ if (bootstrap == MACH_PORT_NULL)
+ error(2, 0, "Must be started as a translator");
+
+ /* Reply to our parent */
+ err = trivfs_startup (bootstrap, 0, 0, 0, 0, 0,&fsys);
+ mach_port_deallocate (mach_task_self (), bootstrap);
+ if (err) {
+ return (0);
+ }
+
+ ports_manage_port_operations_one_thread (fsys->pi.bucket, demuxer, 0);
+
+ return 0;
+ }
+
+Makefile:
+---------
+
+ CC = gcc
+ MIG = mig
+ CFLAGS = -Wall -g -D_GNU_SOURCE
+ LDFLAGS = -lthreads -lports -ltrivfs -lfshelp -lshouldbeinlibc
+ INCLUDES = -I.
+ LCHDRS =
+ MIGCOMSFLAGS = -prefix S_
+ OBJS = $(SRCS:.c=.o)
+ TAGS = etags.emacs21
+
+ all: data-server data-user
+ tags:
+ $(TAGS) $(SRCS) $(LCHDRS)
+
+ stubs: data.defs
+ $(MIG) $(MIGCOMSFLAGS) -server dataServer.c -user dataUser.c $^
+ data-server: data-server.c dataServer.c
+ $(CC) $^ $(CFLAGS) $(INCLUDES) $(LDFLAGS) -o $@
+ data-user: data-user.c dataUser.c
+ $(CC) $^ $(CFLAGS) $(INCLUDES) -o $@
+ clean:
+ rm -f *.o data-server data-user
+
+ start: data-server data-user
+ settrans -ac /tmp/trans data-server
+ ps -x | grep data-server
+ end:
+ settrans -fg /tmp/trans
+
+Building
+--------
+
+Do
+
+ make stubs
+
+to create the dataUser.c and dataServer.c files generated by mig. Create the
+executables using:
+
+ make all
+
+Testing
+-------
+
+Start the data-server translator using:
+
+ settrans -ac /tmp/trans data-server
+
+You can check if it is running using
+
+ ps -x | grep data-server
+
+Run the data-user executable to get the resultant output.
+
+You can remove the translator using:
+
+ settrans -fg /tmp/trans
+
+To remove the built files use:
+
+ make clean
+
+Happy Hacking!
diff --git a/hurd/translator/xmlfs.mdwn b/hurd/translator/xmlfs.mdwn
new file mode 100644
index 00000000..769c43ce
--- /dev/null
+++ b/hurd/translator/xmlfs.mdwn
@@ -0,0 +1,11 @@
+[[!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://www.nongnu.org/hurdextras/#xmlfs>
diff --git a/hurd/virtual_file_system.mdwn b/hurd/virtual_file_system.mdwn
new file mode 100644
index 00000000..b62a5e4c
--- /dev/null
+++ b/hurd/virtual_file_system.mdwn
@@ -0,0 +1,27 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+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 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
+and when it encounters a translator, it replies to the client
+indicating how much it resolved and where to continue its
+lookup. This continues until the name is fully resolved
+or an error occurs. The same happens for relative path
+names but a different capability is used.
+
+For a more detailed explanation of the protocol, look at the section
+2.2 of the [[critique]].
diff --git a/hurd/virtualization.mdwn b/hurd/virtualization.mdwn
new file mode 100644
index 00000000..42f83f77
--- /dev/null
+++ b/hurd/virtualization.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Olaf Buddenhagen has written a text about how [[/virtualization]] is applicable
+within Hurd systems:
+<http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html>
diff --git a/hurd/what_is_the_gnu_hurd.mdwn b/hurd/what_is_the_gnu_hurd.mdwn
new file mode 100644
index 00000000..0b8f7ef6
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd.mdwn
@@ -0,0 +1,42 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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]]."]]"""]]
+
+[[!meta title="What Is the GNU Hurd?"]]
+
+The Hurd is the GNU project's replacement for the [[Unix]] kernel.
+
+The Hurd is firstly a collection of protocols formalizing how different
+components may interact. The protocols are designed to reduce the mutual
+[[trust]] requirements of the actors thereby permitting a more
+[[extensible|extensibility]] system. These include interface definitions to
+manipulate files and directories and to resolve path names. This allows any
+process to implement a file system. The only requirement is that it have
+access to its backing store and that the [[principal]] that started it own the
+file system node to which it connects.
+
+The Hurd is also a set of servers that implement these protocols.
+They include file systems, network protocols and authentication.
+The servers run on top of the [[microkernel/Mach]] [[microkernel]] and use
+Mach's [[microkernel/mach/IPC]] mechanism to transfer information.
+
+The Hurd supplies the last major software component needed for a complete
+[[GNU_operating_system|running/gnu]] as originally conceived by Richard
+M. Stallman (RMS) in 1983. The GNU vision directly drove the creation and has
+guided the evolution of the [Free Software Foundation](http://fsf.org/), the
+organization that is the home of the [GNU project](http://gnu.org/gnu/).
+
+The Hurd development effort is a somewhat separate project from the
+[[Debian_GNU/Hurd|hurd/running/debian]] port.
+
+
+Read about what the GNU Hurd is [[gramatically_speaking]].
+
+Read about the [[origin_of_the_name]].
diff --git a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
new file mode 100644
index 00000000..5905a19b
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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="Grammatically speaking..."]]
+
+> [[It's_time_to_explain|origin_of_the_name]] the meaning of *Hurd*.
+>
+> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*.
+> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*.
+
+The Hurd has its share of linguistic debate. The subject of proper usage comes
+up quite often.
+
+Although [[Thomas_Bushnell_states|origin_of_the_name]] that the word *Hurd* is
+an acronym; we do not treat it as such, but rather as a concrete noun. We
+treat *Hurd* as a title rather than as a proper name: it requires an article,
+as in *the Hurd*. For instance: *The ext2 filesystem is provided by the Hurd,
+not by Mach.* Note that all of the following are incorrect: *Hurd*, *HURD*,
+*H.U.R.D.*, *The HURD*, and *the hurd*.
+
+Since the Hurd is part of the GNU Project, we also refer to it as *GNU Hurd*
+which is treated as a proper noun. We write *the GNU Hurd* instead of *the
+Hurd* when we want to emphasize that the Hurd is a GNU package. Once this has
+been made clear, we usually use the shorter form, without *GNU*.
+
+The whole operating system includes not only the kernel and the system servers,
+but also many more programs. This system is called *GNU*, or *the GNU
+operating system*. The GNU programs can also run on other operating system
+kernels. We say *GNU/Hurd* when we want to put emphasis on the fact that this
+is the GNU system running on top of the Hurd, and to contrast it with the
+GNU/Linux system which is GNU using Linux as the kernel.
+
+Finally, there is *Debian GNU/Hurd*. This refers to the distribution of the GNU
+system as created by the Debian developers. For example: *What do you run on
+your laptop? Debian GNU/Hurd, of course.*
+
+The French generally write *le Hurd*--that is, they treat the name as masculine
+singular, capitalized as in English.
+
+When we are referring to the microkernel, we say *Mach* and use it as a proper
+noun. For example: *Mach uses the device drivers found in version 2.0.x of
+Linux.* We sometimes say *the Mach microkernel* instead of just *Mach*.
+
+
+To pronounce the word *Hurd*, you should say the English word *herd*. This is
+pronounced as *hɚd* using the International Phonetic Alphabet.
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
new file mode 100644
index 00000000..51857e21
--- /dev/null
+++ b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn
@@ -0,0 +1,50 @@
+[[!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
+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="Origin of the Name"]]
+
+[According to Thomas
+Bushnell](http://web.cecs.pdx.edu/~trent/gnu/hurd/hurd-name), the primary
+architect of the Hurd:
+
+> It's time to explain the meaning of *Hurd*.
+>
+> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*.
+> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*.
+>
+> We have here, to my knowledge, the first software to be named by a
+> pair of mutually recursive acronyms.
+
+[Quoting](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html)
+him further:
+
+> The name *Hurd* was invented by me, as an alternate spelling for the English
+> word *herd*. *Hird* is just another alternate spelling for the same word.
+> By the [[normal_rules_of_English_orthography|gramatically_speaking]], they
+> all have the same pronunciations.
+
+
+---
+
+<!-- TODO. Source? Or remove? -->
+
+In other contexts:
+
+One contributor from Norway described two other uses of Hird.
+
+ * "the kings men", a name given to the men accompanying the Norwegian kings at about
+ year 1000 and on.
+
+ This was later coined by V. Quisling when he formed a party with
+ nationalistic traits to denote a set of helpers promoting his agenda of
+ national and Nordic ideas.
+
+ * a symbol of collaboration with the (German) enemy used in World War II.
diff --git a/ibac.mdwn b/ibac.mdwn
new file mode 100644
index 00000000..c1d46ba8
--- /dev/null
+++ b/ibac.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+IBAC stands for identity-based access control.
+In this access control scheme, access to a resource
+is based on identity of the caller. This is often
+problematic as when a program acts on behalf of
+another, access is authorized based on its own
+identity rather than that of the caller.
+
+See also [[ABAC]].
diff --git a/idl.mdwn b/idl.mdwn
new file mode 100644
index 00000000..db58f789
--- /dev/null
+++ b/idl.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+An IDL is an interface definition language. The most well-known is
+CORBA. An IDL compiler takes a specification and generates stubs
+that hide the transport details. In the case of [[microkernel/mach/MIG]], this
+hides the marshalling and unmarshalling of parameters according
+to [[microkernel/Mach]]'s semantics.
diff --git a/ikiwiki.setup b/ikiwiki.setup
new file mode 100644
index 00000000..89130e2b
--- /dev/null
+++ b/ikiwiki.setup
@@ -0,0 +1,358 @@
+#!/usr/bin/perl
+#
+# Setup file for ikiwiki.
+#
+# Passing this to ikiwiki --setup will make ikiwiki generate
+# wrappers and build the wiki.
+#
+# Remember to re-run ikiwiki --setup any time you edit this file.
+
+require IkiWiki::Setup::Standard;
+
+my $root = $ENV{ROOT};
+
+my $srcdir;
+my $destdir;
+my $cgi_wrapper = '';
+my $git_wrapper = '';
+my $gitorigin_branch = '';
+
+if (defined $ENV{WEB_SERVER})
+{
+ $srcdir = $root.'/hurd-web';
+ $destdir = $root.'/public_html';
+ $cgi_wrapper = $root.'/hurd-web.cgi';
+ $git_wrapper = $root.'/hurd-web.update';
+ $gitorigin_branch = 'origin';
+}
+else
+{
+ $srcdir = $root;
+ $destdir = $ENV{DESTDIR} || $srcdir.'.rendered';
+}
+
+IkiWiki::Setup::Standard->import({
+ # name of the wiki
+ wikiname => 'GNU Hurd',
+ # contact email for wiki
+ adminemail => 'tschwinge@gnu.org',
+ # users who are wiki admins
+ adminuser => [qw{tschwinge}],
+ # users who are banned from the wiki
+ banned_users => [qw{AlbertF bernhart ColetCris flamberian jasclaine
+ http://calvinyoung.myopenid.com/
+ http://hilarybunton.myopenid.com/}],
+ # where the source of the wiki is located
+ srcdir => $srcdir,
+ # where to build the wiki
+ destdir => $destdir,
+ # base url to the wiki
+ url => 'http://www.bddebian.com:8888/~hurd-web',
+ # url to the ikiwiki.cgi
+ cgiurl => 'http://www.bddebian.com:8888/cgi-bin/hurd-web-ikiwiki.cgi',
+ # filename of cgi wrapper to generate
+ cgi_wrapper => $cgi_wrapper,
+ # mode for cgi_wrapper (can safely be made suid)
+ cgi_wrappermode => '06755',
+ # rcs backend to use
+ rcs => 'git',
+ # plugins to add to the default configuration
+ add_plugins => [qw{goodstuff cutpaste editdiff edittemplate favicon html sidebar table txt copyright license texinfo}],
+ # plugins to disable
+ disable_plugins => [],
+ # additional directory to search for template files
+ templatedir => $srcdir.'/.templates',
+ # base wiki source location
+ #underlaydir => '/usr/share/ikiwiki/basewiki',
+ # display verbose messages?
+ verbose => 1,
+ # log to syslog?
+ syslog => 0,
+ # create output files named page/index.html?
+ usedirs => 1,
+ # use '!'-prefixed preprocessor directives?
+ prefix_directives => 1,
+ # use page/index.mdwn source files
+ indexpages => 0,
+ # enable Discussion pages?
+ discussion => 1,
+ # name of Discussion pages
+ discussionpage => 'Discussion',
+ # generate HTML5? (experimental)
+ html5 => 0,
+ # only send cookies over SSL connections?
+ sslcookie => 0,
+ # extension to use for new pages
+ default_pageext => 'mdwn',
+ # extension to use for html files
+ htmlext => 'html',
+ # strftime format string to display date
+ timeformat => '%F %T %Z',
+ # UTF-8 locale to use
+ locale => 'C',
+ # put user pages below specified page
+ userdir => 'user',
+ # how many backlinks to show before hiding excess (0 to show all)
+ numbacklinks => 10,
+ # attempt to hardlink source files? (optimisation for large files)
+ hardlink => 1,
+ # force ikiwiki to use a particular umask
+ #umask => 022,
+ # group for wrappers to run in
+ #wrappergroup => 'ikiwiki',
+ # extra library and plugin directory
+ libdir => $srcdir.'/.library',
+ # environment variables
+ ENV => {},
+ # regexp of normally excluded files to include
+ #include => '^\\.htaccess$',
+ # regexp of files that should be skipped
+ #exclude => '^(*\\.private|Makefile)$',
+ # specifies the characters that are allowed in source filenames
+ wiki_file_chars => '-[:alnum:]+/.:_',
+ # allow symlinks in the path leading to the srcdir (potentially insecure)
+ #allow_symlinks_before_srcdir => 0,
+
+ ######################################################################
+ # core plugins
+ # (editpage, git, htmlscrubber, inline, link, meta)
+ ######################################################################
+
+ # git plugin
+ # git hook to generate
+ git_wrapper => $git_wrapper,
+ # mode for git_wrapper (can safely be made suid)
+ git_wrappermode => '0700',
+ # git pre-receive hook to generate
+ #git_test_receive_wrapper => '/git/wiki.git/hooks/pre-receive',
+ # unix users whose commits should be checked by the pre-receive hook
+ #untrusted_committers => [],
+ # gitweb url to show file history ([[file]] substituted)
+ historyurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=history;f=[[file]]',
+ # gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted)
+ diffurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]',
+ # where to pull and push changes (set to empty string to disable)
+ gitorigin_branch => $gitorigin_branch,
+ # branch that the wiki is stored in
+ gitmaster_branch => 'master',
+
+ # htmlscrubber plugin
+ # PageSpec specifying pages not to scrub
+ #htmlscrubber_skip => '!*/Discussion',
+
+ # inline plugin
+ # enable rss feeds by default?
+ rss => 1,
+ # enable atom feeds by default?
+ atom => 1,
+ # allow rss feeds to be used?
+ #allowrss => 0,
+ # allow atom feeds to be used?
+ #allowatom => 0,
+ # urls to ping (using XML-RPC) on feed update
+ pingurl => [],
+
+ ######################################################################
+ # auth plugins
+ # (anonok, blogspam, httpauth, lockedit, moderatedcomments,
+ # opendiscussion, openid, passwordauth, signinedit)
+ ######################################################################
+
+ # anonok plugin
+ # PageSpec to limit which pages anonymous users can edit
+ #anonok_pagespec => '*/discussion',
+
+ # blogspam plugin
+ # PageSpec of pages to check for spam
+ #blogspam_pagespec => 'postcomment(*)',
+ # options to send to blogspam server
+ #blogspam_options => 'blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10',
+ # blogspam server XML-RPC url
+ #blogspam_server => '',
+
+ # httpauth plugin
+ # url to redirect to when authentication is needed
+ #cgiauthurl => 'http://example.com/wiki/auth/ikiwiki.cgi',
+ # PageSpec of pages where only httpauth will be used for authentication
+ #httpauth_pagespec => '!*/Discussion',
+
+ # lockedit plugin
+ # PageSpec controlling which pages are locked
+ #locked_pages => '!*/Discussion',
+
+ # moderatedcomments plugin
+ # PageSpec matching users or comment locations to moderate
+ #moderate_pagespec => '*',
+
+ # passwordauth plugin
+ # a password that must be entered when signing up for an account
+ #account_creation_password => 's3cr1t',
+ # cost of generating a password using Authen::Passphrase::BlowfishCrypt
+ #password_cost => 8,
+
+ ######################################################################
+ # format plugins
+ # (creole, highlight, hnb, html, mdwn, otl, po, rawhtml, textile,
+ # txt)
+ ######################################################################
+
+ # highlight plugin
+ # types of source files to syntax highlight
+ #tohighlight => '.c .h .cpp .pl .py Makefile:make',
+
+ # mdwn plugin
+ # enable multimarkdown features?
+ #multimarkdown => 0,
+
+ # po plugin
+ # master language (non-PO files)
+ #po_master_language => {
+ # code => 'en',
+ # name => 'English'
+ #},
+ # slave languages (PO files)
+ #po_slave_languages => {
+ # de => 'Deutsch',
+ # es => 'Español',
+ # fr => 'Français'
+ #},
+ # PageSpec controlling which pages are translatable
+ #po_translatable_pages => '* and !*/Discussion',
+ # internal linking behavior (default/current/negotiated)
+ #po_link_to => 'current',
+
+ ######################################################################
+ # web plugins
+ # (attachment, comments, editdiff, edittemplate, getsource,
+ # google, mirrorlist, remove, rename, repolist, search,
+ # websetup, wmd)
+ ######################################################################
+
+ # attachment plugin
+ # enhanced PageSpec specifying what attachments are allowed
+ #allowed_attachments => 'virusfree() and mimetype(image/*) and maxsize(50kb)',
+ # virus checker program (reads STDIN, returns nonzero if virus found)
+ #virus_checker => 'clamdscan -',
+
+ # comments plugin
+ # PageSpec of pages where comments are allowed
+ #comments_pagespec => 'blog/* and !*/Discussion',
+ # PageSpec of pages where posting new comments is not allowed
+ #comments_closed_pagespec => 'blog/controversial or blog/flamewar',
+ # Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
+ #comments_pagename => '',
+ # Interpret directives in comments?
+ #comments_allowdirectives => 0,
+ # Allow anonymous commenters to set an author name?
+ #comments_allowauthor => 0,
+ # commit comments to the VCS
+ #comments_commit => 1,
+
+ # getsource plugin
+ # Mime type for returned source.
+ #getsource_mimetype => 'text/plain; charset=utf-8',
+
+ # mirrorlist plugin
+ # list of mirrors
+ #mirrorlist => {},
+
+ # repolist plugin
+ # URIs of repositories containing the wiki's source
+ #repositories => [qw{svn://svn.example.org/wiki/trunk}],
+
+ # search plugin
+ # path to the omega cgi program
+ #omega_cgi => '/usr/lib/cgi-bin/omega/omega',
+
+ # websetup plugin
+ # list of plugins that cannot be enabled/disabled via the web interface
+ #websetup_force_plugins => [],
+ # list of additional setup field keys to treat as unsafe
+ #websetup_unsafe => [],
+ # show unsafe settings, read-only, in web interface?
+ #websetup_show_unsafe => 1,
+
+ ######################################################################
+ # widget plugins
+ # (calendar, color, conditional, cutpaste, date, format, fortune,
+ # graphviz, haiku, img, linkmap, listdirectives, map, more,
+ # orphans, pagecount, pagestats, poll, polygen, postsparkline,
+ # progress, shortcut, sparkline, table, template, teximg, toc,
+ # toggle, version)
+ ######################################################################
+
+ # calendar plugin
+ # base of the archives hierarchy
+ #archivebase => 'archives',
+ # PageSpec of pages to include in the archives; used by ikiwiki-calendar command
+ #archive_pagespec => 'posts/* and !*/Discussion',
+
+ # listdirectives plugin
+ # directory in srcdir that contains directive descriptions
+ #directive_description_dir => 'ikiwiki/directive',
+
+ # teximg plugin
+ # Should teximg use dvipng to render, or dvips and convert?
+ #teximg_dvipng => '',
+ # LaTeX prefix for teximg plugin
+ #teximg_prefix => '\\documentclass{article}
+ #\\usepackage{amsmath}
+ #\\usepackage{amsfonts}
+ #\\usepackage{amssymb}
+ #\\pagestyle{empty}
+ #\\begin{document}
+ #',
+ # LaTeX postfix for teximg plugin
+ #teximg_postfix => '\\end{document}',
+
+ ######################################################################
+ # other plugins
+ # (aggregate, autoindex, brokenlinks, camelcase, ddate, embed,
+ # favicon, goodstuff, htmlbalance, localstyle, pagetemplate,
+ # pingee, pinger, prettydate, recentchanges, recentchangesdiff,
+ # relativedate, rsync, sidebar, smiley, sortnaturally, tag,
+ # testpagespec, underlay)
+ ######################################################################
+
+ # aggregate plugin
+ # enable aggregation to internal pages?
+ #aggregateinternal => 1,
+ # allow aggregation to be triggered via the web?
+ #aggregate_webtrigger => 0,
+
+ # camelcase plugin
+ # list of words to not turn into links
+ #camelcase_ignore => [],
+
+ # pinger plugin
+ # how many seconds to try pinging before timing out
+ #pinger_timeout => 15,
+
+ # prettydate plugin
+ # format to use to display date
+ #prettydateformat => '%X, %B %o, %Y',
+
+ # recentchanges plugin
+ # name of the recentchanges page
+ recentchangespage => 'recent_changes',
+ # number of changes to track
+ recentchangesnum => 100,
+
+ # rsync plugin
+ # command to run to sync updated pages
+ #rsync_command => 'rsync -qa --delete . user@host:/path/to/docroot/',
+
+ # sidebar plugin
+ # show sidebar page on all pages?
+ #global_sidebars => 1,
+
+ # tag plugin
+ # parent page tags are located under
+ tagbase => 'tag',
+ # autocreate new tag pages?
+ #tag_autocreate => 1,
+
+ # underlay plugin
+ # extra underlay directories to add
+ #add_underlays => '',
+})
diff --git a/index.mdwn b/index.mdwn
new file mode 100644
index 00000000..249b2091
--- /dev/null
+++ b/index.mdwn
@@ -0,0 +1,135 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+<div id="statements">
+<div id="what-is">
+<p class="statement-title">What is the GNU Hurd?</p>
+<p>The GNU Hurd is the GNU project's replacement for the Unix kernel.
+It is a collection of servers that run on the Mach microkernel
+to implement file systems, network protocols, file access control, and
+other features that are implemented by the Unix kernel or similar
+kernels (such as Linux).
+<em>[[More_detailed|hurd/documentation]].</em></p>
+</div>
+<div id="mission">
+<p class="statement-title">What is the mission of the GNU Hurd project?</p>
+<p>Our mission is to create a general-purpose kernel suitable
+for the GNU operating system, which is viable for everyday use,
+and gives users and programs as much control over their
+computing environment as possible.
+<em>[[Our_mission_explained|community/weblogs/antrik/hurd-mission-statement]].</em></p>
+</div>
+</div>
+
+---
+
+[[!toc]]
+
+
+## News
+
+[[!inline
+pages="news/* and !*/discussion"
+feedonly=yes
+feedshow=10
+sort=title
+reverse=yes]]
+[[!inline
+pages="news/* and !*/discussion"
+show=5
+feeds=no
+sort=title
+reverse=yes
+template=newsitem
+actions=yes]]
+
+Older news entries can be found in the [[news archive|news]]. For Hurd
+developers' musings have a look at the [[shared weblog|community/weblogs]].
+The [[recent changes]] page lists the latest changes of this website.
+
+
+## Contributing
+
+To help the Hurd you can for example (from high level stuff to the inner core)
+
+* [[Contribute_to_these_web_pages|contributing/web_pages]],
+* [[Run_a_GNU/Hurd_system|index#run]] and help others get their systems running,
+* [[Port_applications|hurd/running/debian/porting]] to work in Hurd,
+* Write [[translators|hurd/translator]] to extend the Hurd,
+* Work on the [[Hurd_on_Mach|contributing#hurd_on_mach]], or
+* Help to port the Hurd [[to_a_modern_microkernel|contributing#hurd_on_modern_microkernel]].
+
+See our [[source_repositories]] for the source code.
+
+Read about ways to contribute [[in_more_detail|contributing]].
+
+## Getting Help
+
+There are a couple of different [[Hurd_FAQs|hurd/FAQ]].
+There are a number of [[IRC_channels|IRC]] and several
+different [[mailing lists]] with searchable archives.
+
+Before asking a question on a mailing list or on IRC, first, please try to
+answer your own question using a search engine and reading the introductory
+information. If you have done this and you cannot find the answer to your
+question, feel free to ask on a mailing list or on IRC.
+
+<a name="run"> </a>
+## Running the Hurd
+
+The most functional distribution of the Hurd is the one provided by Debian.
+Find more information about it at the
+[Debian GNU/Hurd website](http://www.debian.org/ports/hurd/hurd-install).
+
+Along with it there are [[various_ways|hurd/running]] to run a GNU/Hurd system.
+Three of them are
+
+* installing a [[GNU/Hurd_distribution|hurd/running/distrib]],
+* running it [[in_Xen|microkernel/mach/gnumach/ports/xen]] and
+* starting a [[Hurd_qemu_image|hurd/running/qemu]] or [[Hurd_LiveCD|hurd/running/live_cd/]].
+
+And these web pages are a living proof of the usability of the Hurd, as they
+are rendered on a [[Debian_GNU/Hurd|hurd/running/debian]] system.
+
+
+## Current Status
+
+There has not yet been an official 1.0 release. The Hurd is developed by a few
+volunteers in their spare time. The project welcomes any assistance you can provide.
+Porting and development expertise is still badly needed in many key areas.
+
+Functional systems are installable in a dual-boot configuration. Development
+systems are currently mostly based on the [[Debian_GNU/Hurd|hurd/running/debian]] port
+sponsored by the [Debian project](http://www.debian.org/).
+
+Community resources for related projects focus around these pages,
+<http://hurd.gnu.org/>, the [[mailing lists]] and the [[IRC_channels|IRC]].
+
+If you want to see the current discussions in the Hurd project, please have a look at
+the [bug-hurd mailinglist archives](http://lists.gnu.org/pipermail/bug-hurd/).
+If you want to have a look at the current coding work, you can just head over to our
+[[source_repositories]].
+
+For more details, please read our writeup on the
+[[current_state_of_the_GNU_Hurd|hurd/status]].
+
+
+## How is this site arranged?
+
+The menu on the upper right corner provides a rough structuring about the
+available content. Just follow those topics and explore these pages.
+
+Further information about this site and how it was created can be found in the
+[[colophon]].
+
+----
+
+These pages are powered by [ikiwiki](http://ikiwiki.info/).
diff --git a/index/discussion.mdwn b/index/discussion.mdwn
new file mode 100644
index 00000000..f369ed35
--- /dev/null
+++ b/index/discussion.mdwn
@@ -0,0 +1,69 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# TODO
+
+Please add your comments here about what you think needs to be done on these
+web pages.
+
+
+## What to Add
+
+I would like to see the contributions page modified to include hardware needed, documentation wanted etc Much like the OpenBSD project has done http://www.openbsd.org/want.html --gregory
+
+ <azeem-uni> tschwinge: so, first plan: don't mention www.d.o/ports/hurd on the wiki
+ <azeem-uni> but transfer that information to the wiki, and keep it uptodate there
+ <azeem-uni> and proabably make links to that on w.d.o
+
+
+ <azeem-uni> tschwinge: also a top-level "How can I help Hurd development" paragraph would be nice
+
+
+we have "how to set-up Hurd consoles" and "how to set up Xorg in Hurd" but we do not have any
+general after-installation problems page e.g. networking problem, upgrade problem. later
+with that information we can make a page named: Technical FAQs. --[[arnuld]]
+
+
+I'd like an RSS or Atom feed of the changes to the Wiki. Is there a way that there could be one? -- ThomasThurman
+
+> I'm discussing this with upstream. It is not as trivial as one might think,
+> as it -- I suppose -- means rendering the RecentChanges page to static HTML,
+> but I also don't see why it shouldn't be possible. --[[tschwinge]]
+
+>> This has now been done, see [[recent_changes]]. --[[tschwinge]]
+
+> Upstream, Joey Hess, says that the RecentChanges page *is not static for
+> speed reasons mostly*. What we can do -- which is also what [[ikiwiki]] [is
+> doing](http://ikiwiki.info/download/) -- is that *commits to this git
+> repository are fed into [CIA](http://cia.vc/), and can be browsed, subscribed
+> to etc on its [project page](http://cia.vc/stats/project/ikiwiki)*. I'll try
+> to take care about that. --[[tschwinge]]
+
+
+## How to Rearrange
+
+[[Hurd]] and [[Distrib]] are a messy conglomeration of everything and should be
+cleaned and re-ordered. --[[tschwinge]]
+
+
+The three of [[Xfree86]], [[DebianX]], [[DebianXorg]] should be merged into
+one.
+
+
+ <azeem> tschwinge: maybe we should discuss wiki page naming policies WRT Debian
+ <azeem> I'd rather have something like /Debian, /DebianInstall, /DebianFAQ, /DebianInstallCrosshurd etc.
+ <azeem> than the current distrib
+
+
+What to do with [[GNU]]? --[[tschwinge]]
+
+
+Someone could work on getting us some nice style-sheets; see [[local.css]].
+--[[tschwinge]]
diff --git a/install.mdwn b/install.mdwn
new file mode 100644
index 00000000..1a7416de
--- /dev/null
+++ b/install.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]]."]]"""]]
+
+[[!tag stable_URL]]
+
+[[!meta redir=hurd/running]]
diff --git a/ipc.mdwn b/ipc.mdwn
new file mode 100644
index 00000000..2f9cef2e
--- /dev/null
+++ b/ipc.mdwn
@@ -0,0 +1,34 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+IPC stands for interprocess communication.
+
+On [[Unix]], interprocess communication can be achieved using pipes.
+This is inefficient for large amounts of data as the data must be
+copied. This is generally not a problem as most services are
+provided by the Unix kernel and Unix is not designed to be
+[[extensible|extensibility]].
+
+[[Microkernel]] systems, on the other hand, are generally composed
+of many components. As components are separated by their respective
+[[address_space]] boundaries, unlike the kernel, they cannot arbitrarily
+examine and modify the caller's state. The advantage is that if the
+protocol is carefully designed, the callee cannot cause the caller
+any [[destructive_interference]] thereby removing the need for the
+caller to [[trust]] the callee thus reducing the former's [[tcb]].
+When done systematically, this can increase the system's [[robustness]].
+To this end, microkernels provide richer IPC semantics that include
+the ability to transfer [[capabilities|capability]] and to use [[virtual_memory]]
+[[mechanism]]s to copy data.
+
+
+# See Also
+
+* [[RPC]]
diff --git a/irc.mdwn b/irc.mdwn
new file mode 100644
index 00000000..381495f8
--- /dev/null
+++ b/irc.mdwn
@@ -0,0 +1,85 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2006, 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]]."]]"""]]
+
+[[!meta title="IRC"]]
+
+While all official development takes place on the mailing lists and the Savannah trackers,
+a lot of discussions are had on IRC as well. Everybody is welcome to join and follow these channels, but please
+respect the below guidelines if you want to participate.
+
+# Asking Questions
+
+[[!inline pages=asking_questions raw=yes feeds=no]]
+
+# Staying On-Topic
+
+Please try to stay on topic.
+
+* emacs vs. vi **is not** on topic
+* If it is appropriate for a **slashdot comment**, it's **not appropriate**
+ here
+* why GNU sucks is **off-topic**
+* when the next release of the Hurd will be **is inappropriate**
+* you should not advocate your favorite **GNU/Linux** ditribution
+
+# Pasting Logs
+
+Sometimes providing a log or some other excerpt of text can
+help solve a problem or answer a question. **Do not** paste
+the log in the channel itself. Instead use a
+[paste bin](http://paste.debian.net).
+
+# Rich Text
+
+Don't use it. Don't use colors. Don't use bold. Don't use emphasis.
+
+# Greeting
+
+If you never contribute to the discussion, there is no need
+to always greet the channel when you enter and before leave.
+
+
+<a name="regular_meetings"></a>
+# Regular Meetings
+
+Starting in early 2008, there have been regular IRC meetings held between the
+(now former) [[Google Summer of Code|community/gsoc]] students and their
+mentors. These meetings turned out to considerably help student-mentor
+interactions, and other developers regularely took part, too. For this reason,
+we decided to continue having these meetings, even if it's not currently Google
+Summer of Code time. The meetings take place in the **`#hurd` channel every
+Monday and Thursday at 10:30 UTC** and are open to any interested party. So,
+everyone, take your chance to chat with GNU Hurd developers!
+
+
+# Channels
+
+All Hurd IRC channels are hosted on [Freenode.net](http://freenode.net/).
+
+* #hurd - The official Hurd IRC channel. Some of the Hurd developers and users hang out there, and discussions about GNU Hurd, GNU/Hurd and
+Debian GNU/Hurd are had there.
+
+Local user channels include:
+
+* #hurd-it - Italian
+* #hurd-es - Spanish
+* #hurdfr - French
+* #hurd-de - German
+* #hurd.in - Indian regional languages(but primarily English)
+
+# Channel logs
+
+* [#hurd logs](http://richtlijn.be/~larstiq/hurd/)
+
+
+# Related
+
+ * [[Contact_us]].
diff --git a/isolation.mdwn b/isolation.mdwn
new file mode 100644
index 00000000..638085e6
--- /dev/null
+++ b/isolation.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+When two [[principal]]s cannot affect each other, they are said to
+be isolated from one another. Strictly speaking, if two principals
+are isolated from one another, there is no way for one to know
+whether the other exists: all interactions with the environment
+do not expose proof of the existence or non-existence of the
+other.
+
+Typically, principals are isolated from one another with
+respect to a particular property. Common properties include
+information-flow (security) and performance.
diff --git a/license.mdwn b/license.mdwn
new file mode 100644
index 00000000..0f7bf9bd
--- /dev/null
+++ b/license.mdwn
@@ -0,0 +1,6 @@
+[[!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]]."]]
diff --git a/liedtke.mdwn b/liedtke.mdwn
new file mode 100644
index 00000000..8a204a32
--- /dev/null
+++ b/liedtke.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Liedtke is the father of [[microkernel/L4]].
diff --git a/local.css b/local.css
new file mode 100644
index 00000000..8669e5e3
--- /dev/null
+++ b/local.css
@@ -0,0 +1,287 @@
+/* ikiwiki local style sheet
+
+ Copyright © 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+ 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''. */
+
+/*
+ * Someone else please work on this stuff -- someone who knows to make it
+ * actually look good... Some examples are available at
+ * <http://ikiwiki.info/css_market/>. --tschwinge
+ */
+
+/* TODO. I'm incapable, but have ideas, so...
+
+ (1) On web-edit pages like
+ <http://www.bddebian.com/cgi-bin/wiki-ikiwiki.cgi?page=index&do=edit> I'd
+ like to have the whole page fit into the web browser frame, so that no
+ scrollbars show up in the browser and all of header, text editing box,
+ copyright assignment notice, buttons and footer are visible at once, without
+ having to scroll. This means that the text editing box should be resized in
+ height as needed (within limits, of course). --tschwinge
+*/
+
+
+body
+{
+ font-family: "Bitstream Vera Sans", sans-serif;
+ padding: 0.5em;
+}
+
+p
+{
+ clear: left;
+}
+
+hr
+{
+ height: 1px;
+ border-style: none;
+ background-color: black;
+ margin-left: 0;
+}
+
+pre
+{
+ margin-left: 3em;
+ font-weight: bold;
+ padding: 0.5em;
+}
+
+a
+{
+ text-decoration: none;
+}
+a:hover
+{
+ border-bottom: 1px dotted blue;
+}
+
+/* Put these elements side by side. */
+.pagedate,
+.pagecopyright,
+.pagelicense
+{
+ display: table-cell;
+ padding: 0.15em;
+}
+.pagecopyright p,
+.pagelicense p
+{
+ display: inline;
+}
+/* But add some spacing between them. */
+.pagedate + .pagecopyright,
+.pagedate + .pagelicense,
+.pagecopyright + .pagelicense,
+.pagecopyright + .pagedate,
+.pagelicense + .pagedate
+{
+ padding-left: 1em;
+}
+
+.header
+{
+ padding: 0.5em;
+ background-color: #f0f0f0;
+}
+
+.pageheader .actions
+{
+ background-color: #e7e7e7;
+ padding: 0em 0.5em 0.3em 0.5em;
+ border-top: 1px solid #999999;
+}
+
+.pageheader .actions .global
+{
+ max-width: 50%;
+ float: left;
+ margin-right: 3em;
+}
+
+.pageheader .actions .per_page ul:before
+{
+ font-style: oblique;
+ content: "This page:";
+}
+
+.pageheader .actions ul
+{
+ border: none;
+ padding-top: 0.7em;
+}
+
+.pageheader .actions li
+{
+ padding: 0.7em 0.7em 0.4em 0.7em;
+ border: 1px solid #e7e7e7;
+ border-top: 1px solid #999999;
+}
+.pageheader .actions li:hover
+{
+ background-color: #f0f0f0;
+ border: 1px solid #999999;
+ border-top: 1px solid #f0f0f0;
+ -moz-border-radius-bottomleft: 0.8em;
+ -moz-border-radius-bottomright: 0.8em;
+}
+
+#content
+{
+ padding: 0.5em;
+}
+
+.sidebar
+{
+ background-color: #f0f0f0;
+}
+
+.pagedate,
+.pagecopyright,
+.pagelicense
+{
+ background-color: #f0f0f0;
+ font-size: small;
+}
+
+/* Used in `.templates/editpage.tmpl'. */
+.copyright_assignment_notice
+{
+ background-color: #f0f0f0;
+ font-size: small;
+}
+
+
+/* Placement. */
+.sidebar
+{
+ width: auto;
+ margin-left: 20px;
+}
+
+/* Less indentation for list items. */
+.sidebar ul
+{
+ padding-left: 2ex;
+}
+.sidebar ul ul
+{
+ padding-left: 2.5ex;
+}
+/* Make the logo appear centered */
+.sidebar img {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* News items on the front page. */
+#feedlink,
+.newsitem
+{
+ margin-bottom: 0.2em;
+}
+
+.newsitem
+{
+ border: 1px solid grey;
+ overflow: auto;
+}
+.newsitem .newsitemheader .header
+{
+ max-width: 30%;
+ float: left;
+ margin-right: 1em;
+ border-bottom: 1px solid grey;
+ border-right: 1px solid grey;
+}
+.newsitem .header,
+.newsitem .author
+{
+ font-size: small;
+ font-style: italic;
+}
+.newsitem .actions
+{
+ font-size: small;
+}
+.newsitem .actions ul
+{
+ border-bottom-style: none;
+ padding: 0.5em 0em;
+ line-height: 1;
+}
+.newsitemcontent
+{
+ padding-left: 0.2em;
+ padding-top: 0.1em;
+
+}
+.newsitemcontent p
+{
+ margin: 0.3em;
+}
+
+
+.table_style_1
+{
+ text-align: left;
+ font-size: small;
+
+ border-width: thin;
+ border-style: solid;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+.table_style_1 th
+{
+ vertical-align: top;
+
+ border-width: thin;
+ border-style: solid;
+}
+
+.table_style_1 td
+{
+ vertical-align: top;
+
+ border-width: thin;
+ border-style: dotted;
+}
+
+#statements
+{
+ display: table;
+}
+.statement-title
+{
+ text-align: center;
+ font-weight: bold;
+}
+#what-is
+{
+ display: table-cell;
+ width: 50%;
+ vertical-align: top;
+ text-align: justify;
+ padding-right: 1ex;
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+}
+
+#mission
+{
+ display: table-cell;
+ vertical-align: top;
+ text-align: justify;
+ padding-left: 1em;
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+}
diff --git a/logo.mdwn b/logo.mdwn
new file mode 100644
index 00000000..aae80561
--- /dev/null
+++ b/logo.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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 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]]
diff --git a/logo/boxes-redrawn.png b/logo/boxes-redrawn.png
new file mode 100644
index 00000000..fd26a87e
--- /dev/null
+++ b/logo/boxes-redrawn.png
Binary files differ
diff --git a/logo/boxes-redrawn.svg b/logo/boxes-redrawn.svg
new file mode 100644
index 00000000..c0a7e460
--- /dev/null
+++ b/logo/boxes-redrawn.svg
@@ -0,0 +1,50 @@
+<?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/mailing_lists.mdwn b/mailing_lists.mdwn
new file mode 100644
index 00000000..e4bd1368
--- /dev/null
+++ b/mailing_lists.mdwn
@@ -0,0 +1,119 @@
+[[!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
+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 Posting
+
+[[!inline pages=asking_questions raw=yes feeds=no]]
+
+List etiquette is to cc the sender and anyone **actively** involved in the
+discussion. Some people don't like this and they set their reply-to header
+appropriately. Respect this.
+
+It is rarely appropriate to cc multiple lists. Sometimes it is. In that case,
+do so. If in doubt, don't; just choose the single most appropriate list.
+
+When replying to others, please don't top-post and trim the existing text to
+quote only the sections you're actually replying to. See [[!wikipedia
+Posting_style]] for further reading, especially [[!wikipedia
+Posting_style#Inline_replying]].
+
+Also see these general notes about [[community/communication]].
+
+
+# Main Lists
+
+The lists are [[unmoderated]] and most of them are hosted on
+<http://lists.gnu.org/>. Try to post to the appropriate mailing list.
+
+Some of the Hurd user groups listed on [[community]] also host additional
+mailing lists.
+
+<!-- TODO. Need some real ikiwiki way of adding such anchors. -->
+
+<a name="bug-hurd"></a>
+## bug-hurd
+
+<bug-hurd@gnu.org>
+<http://lists.gnu.org/mailman/listinfo/bug-hurd>
+
+Technical discussion and bug reports; main development list. If you want to **contribute**, please meet us here.
+
+<a name="hurd-devel"></a>
+## hurd-devel
+
+<http://lists.gnu.org/mailman/listinfo/hurd-devel>
+
+Low-traffic developers list. This list is *moderated* and *restricted*.
+Subscribe to [[hurd-devel-readers]] instead.
+
+<a name="hurd-devel-readers"></a>
+### hurd-devel-readers
+
+<http://lists.gnu.org/mailman/listinfo/hurd-devel-readers>
+
+This list is a read-only mirror of [[hurd-devel]]. In contrast to subscribing
+to the latter, everyone is free to subscribe to this read-only list.
+
+<a name="help-hurd"></a>
+## help-hurd
+
+<help-hurd@gnu.org>
+<http://lists.gnu.org/mailman/listinfo/help-hurd>
+
+Hurd-specific questions; for users of the Hurd. If you need help on **using the Hurd** please ask in this list.
+
+<a name="web-hurd"></a>
+## web-hurd
+
+<web-hurd@gnu.org>
+<http://lists.gnu.org/mailman/listinfo/web-hurd>
+
+Discussion of the <http://hurd.gnu.org/> web site.
+
+<a name="l4-hurd"></a>
+## l4-hurd
+
+<l4-hurd@gnu.org>
+<http://lists.gnu.org/mailman/listinfo/l4-hurd>
+
+Discussion regarding a possible [[design_successor|hurd/ng]] to the Hurd.
+
+<a name="debian-hurd"></a>
+## debian-hurd
+
+<debian-hurd@lists.debian.org>
+<http://lists.debian.org/debian-hurd/>
+
+Discussion around and questions regarding the
+[[Debian_GNU/Hurd|hurd/running/debian]] distribution.
+
+<a name="gnu-system-discuss"></a>
+## gnu-system-discuss
+
+<gnu-system-discuss@gnu.org>
+<http://lists.gnu.org/mailman/listinfo/gnu-system-discuss>
+
+Discussion about the [[GNU_system|hurd/running/gnu]].
+
+
+# Spam
+
+GNU mailing lists used to have no spam filtering applied -- everyone was
+allowed to post, the lists were completely unmoderated. This resulted in
+getting the lists spammed very much, as you can see in the web archives. If
+you're interested in getting hold of (mostly) spam-free mboxes, then talk to
+[[Thomas_Schwinge|tschwinge]]. Also [[read_about|unmoderated]] the
+spam-rejection techniques being used today.
+
+
+# Related
+
+ * [[Contact_us]].
diff --git a/mailing_lists/bug-hurd.mdwn b/mailing_lists/bug-hurd.mdwn
new file mode 100644
index 00000000..ee803d7d
--- /dev/null
+++ b/mailing_lists/bug-hurd.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#bug-hurd]]
diff --git a/mailing_lists/debian-hurd.mdwn b/mailing_lists/debian-hurd.mdwn
new file mode 100644
index 00000000..4b8aa5c0
--- /dev/null
+++ b/mailing_lists/debian-hurd.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#debian-hurd]]
diff --git a/mailing_lists/gnu-system-discuss.mdwn b/mailing_lists/gnu-system-discuss.mdwn
new file mode 100644
index 00000000..d966e172
--- /dev/null
+++ b/mailing_lists/gnu-system-discuss.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#gnu-system-discuss]]
diff --git a/mailing_lists/help-hurd.mdwn b/mailing_lists/help-hurd.mdwn
new file mode 100644
index 00000000..7e283561
--- /dev/null
+++ b/mailing_lists/help-hurd.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#help-hurd]]
diff --git a/mailing_lists/hurd-devel-readers.mdwn b/mailing_lists/hurd-devel-readers.mdwn
new file mode 100644
index 00000000..0476c501
--- /dev/null
+++ b/mailing_lists/hurd-devel-readers.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#hurd-devel-readers]]
diff --git a/mailing_lists/hurd-devel.mdwn b/mailing_lists/hurd-devel.mdwn
new file mode 100644
index 00000000..26ca1c33
--- /dev/null
+++ b/mailing_lists/hurd-devel.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#hurd-devel]]
diff --git a/mailing_lists/l4-hurd.mdwn b/mailing_lists/l4-hurd.mdwn
new file mode 100644
index 00000000..493c38b6
--- /dev/null
+++ b/mailing_lists/l4-hurd.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#l4-hurd]]
diff --git a/mailing_lists/unmoderated.mdwn b/mailing_lists/unmoderated.mdwn
new file mode 100644
index 00000000..4bef130e
--- /dev/null
+++ b/mailing_lists/unmoderated.mdwn
@@ -0,0 +1,20 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+In fact the lists *are* moderated for users that post from not-subscribed email
+addresses. However, this moderation should be transparent to the poster, you
+only might notice some additional delay until your message shows up on the
+list, as it has to be handled manually. Note that this is a one-time delay, as
+the address will be added to a white-list, so that further messages from the
+same sending address will get through immediatelly.
+
+So, to initiate a discussion you do not need to subscribe to the mailing list
+in question. And people are very much encouraged to maintain the CC
+recipients, so that you'll also receive replys to your message.
diff --git a/mailing_lists/web-hurd.mdwn b/mailing_lists/web-hurd.mdwn
new file mode 100644
index 00000000..f449205f
--- /dev/null
+++ b/mailing_lists/web-hurd.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=mailing_lists#web-hurd]]
diff --git a/mechanism.mdwn b/mechanism.mdwn
new file mode 100644
index 00000000..dddb234b
--- /dev/null
+++ b/mechanism.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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 Collaborative International Dictionary of English v.0.48
+defines a mechanism as:
+
+> The series of causal relations that operate to produce an
+> effect in any system; as, the mechanism of a chemical
+> reaction.
+
+This is, a mechanism is a function that produces some result.
+As mechanisms determine the type of result, they necessarily
+impose some [[policy]] (rules). Mechanisms that are referred
+to as policy-free are those that minimally impose policy.
+
+A process can be used to encapsulate a program instance. On [[Unix]],
+a process is associated with a UID. This UID, in part, determines
+what the process is authorized to do. On a [[microkernel]],
+the policy that controls what resources a process may access
+are realized separately. This may achieved through the use of
+UIDs, however need not. Thus, the processes mechanism on such
+microkernels impose less policy than on Unix. A process is not
+policy free as it is possible to use other mechanisms to
+encapsulate a program instance, e.g., [[SFI]] and tainting
+ala [[Asbestos]].
diff --git a/media_appearances.mdwn b/media_appearances.mdwn
new file mode 100644
index 00000000..8fe72752
--- /dev/null
+++ b/media_appearances.mdwn
@@ -0,0 +1,48 @@
+[[!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]]."]]"""]]
+
+This is a collection of some Hurd-related media appearances.
+
+A lot of stuff is missing here.
+
+# 2010
+
+## August
+
+ * DebConf10 presentation (including video) by Michael Banck: [*Debian
+ GNU/Hurd -- Past. Present. And
+ Future?*](http://penta.debconf.org/dc10_schedule/events/595.en.html)
+ ([slides](http://people.debian.org/~mbanck/debian-hurd.pdf)).
+
+## July
+
+ * Koen Vervloesem: [*The Hurd: GNU's quest for the perfect
+ kernel*](http://lwn.net/Articles/395150/)
+
+ * Richard Hillesley: [*GNU HURD: Altered visions and lost
+ promise*](http://www.h-online.com/open/features/GNU-HURD-Altered-visions-and-lost-promise-1030942.html)
+ ([German
+ translation](http://www.heise.de/open/artikel/GNU-HURD-Veraenderte-Visionen-und-verworfene-Versprechen-1046753.html))
+
+ Follow-up discussion, some of it valid and constructive criticism, some of
+ it less so:
+
+ * <http://lwn.net/Articles/394295/>
+ * <http://www.reddit.com/r/linux/comments/ckjt2/gnu_hurd_altered_visions_and_lost_promise/>
+ * <http://www.reddit.com/r/programming/comments/ckjud/the_hurd_altered_visions_and_lost_promise/>
+ * <http://www.osnews.com/comments/23511>
+ * <http://news.ycombinator.com/item?id=1474941>
+
+# 2004
+
+ * Marcus Brinkmann, *The GNU Hurd - Lessons and Perspective*, from the
+ [OpenWeekend](http://openweekend.cz/) 2004 conference organized by the
+ Silicon Hill club.
+ <http://video.google.com/videoplay?docid=-7449462856350014702>
diff --git a/microkernel.mdwn b/microkernel.mdwn
new file mode 100644
index 00000000..e2d70c01
--- /dev/null
+++ b/microkernel.mdwn
@@ -0,0 +1,35 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[Liedtke]] explains in [On Microkernel Construction](http://l4ka.org/publications/paper.php?docid=642)
+that a microkernel attempts to minimize the mandatory part of the operating
+system by providing the minimal number of [[mechanism]]s that
+maximize the flexibility of implementation (by imposing minimal
+[[policy]]) while allowing the efficient implementation of the
+remainder of the system.
+
+The idea of a microkernel as explained above was first explored
+by Per Brinch-Hansen in 1970 in
+[The Nucleus of a Multiprogramming System](http://brinch-hansen.net/papers/1970a.pdf).
+
+Other notable microkernels include [[Hydra]], [[KeyKOS]], [[Eros]] and [[L4]].
+
+An [introduction](http://www.cs.cornell.edu/Info/People/ulfar/ukernel/ukernel.html) by
+Úlfar Erlingsson and Athanasios Kyparlis (from 1996) to microkernel concepts.
+
+[[Research]]. [[Viengoos]].
+
+[[Microkernels_for_beginners|for_beginners]].
+
+A 2002 article about [[microkernel_FUD|FUD]] (Fear, Uncertainty, Doubt).
+
+[[FAQ]].
+
+[[Mach]].
diff --git a/microkernel/faq.mdwn b/microkernel/faq.mdwn
new file mode 100644
index 00000000..fe259f05
--- /dev/null
+++ b/microkernel/faq.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Microkernel FAQ"]]
+
+See also other [[/FAQ]].
+
+[[!inline
+pages="microkernel/faq/* and !*/discussion"
+show=0
+feeds=no
+actions=yes
+rootpage="microkernel/faq" postformtext="Add a new item titled:"]]
diff --git a/microkernel/faq/multiserver_microkernel.mdwn b/microkernel/faq/multiserver_microkernel.mdwn
new file mode 100644
index 00000000..ca9b2179
--- /dev/null
+++ b/microkernel/faq/multiserver_microkernel.mdwn
@@ -0,0 +1,26 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 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="What is a Multiserver Microkernel?"]]
+
+A Microkernel has nothing to do with the size of the kernel. Rather, it refers
+to the functionality that the kernel provides. It is generally agreed that
+this is; a set of interfaces to allow processes to communicate and a way to
+talk to the hardware. *Software drivers*, as we like to call them, are then
+implemented in user space as servers. The most obvious examples of these are
+the TCP/IP stack, the ext2 filesystem and NFS. In the case of the Hurd, users
+now have access to functionality that, in a monolithic kernel, they could never
+use, but now, because the server runs in user space as the user that started
+it, they may, for instance, mount an FTP filesystem in their home directory.
+
+For more information about the design of the Hurd, read the paper by Thomas
+Bushnell, BSG:
+[[Towards_a_New_Strategy_of_OS_Design|hurd-paper]].
diff --git a/microkernel/for_beginners.mdwn b/microkernel/for_beginners.mdwn
new file mode 100644
index 00000000..ad50425e
--- /dev/null
+++ b/microkernel/for_beginners.mdwn
@@ -0,0 +1,32 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# Concepts
+
+A [[microkernel]] implements a minimal number of abstractions
+that facilitate the realization of operating system services.
+
+[[Mach's_concepts|mach/concepts]] are documented here.
+
+Read OSF's Kernel Principles. Find it under the
+[[mach/documentation]] link.
+
+# Exercises
+
+Mach's API is documented in OSF's Kernel API book. Find it
+under the [[mach/documentation]] link. Skim it to get an idea
+of how the API looks and then try the following exercises:
+
+Send messages using Mach's IPC mechanism
+([detailed description](http://walfield.org/pub/people/neal/papers/hurd-misc/mach-ipc-without-mig.txt)).
+
+Implement your own pager. Write a server that synthesizes
+content on the fly and have a client map the object into its
+address space and print out the file.
diff --git a/microkernel/for_beginners/discussion.mdwn b/microkernel/for_beginners/discussion.mdwn
new file mode 100644
index 00000000..9831796b
--- /dev/null
+++ b/microkernel/for_beginners/discussion.mdwn
@@ -0,0 +1,20 @@
+[[!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]]."]]"""]]
+
+Good day.
+
+I am a developer, have some c knowledge, and in perspective hope to be able to make a contribution in Hurd kernel. At the moment I consider myself as a beginner.
+
+My question is about the second exercise.
+
+>Implement your own pager. Write a server that synthesizes content on the fly and have a client map the object into its address space and print out the file.
+
+* The second sentence "Write a server that..." is too long and too difficult for me to understand perhaps because English is not my native language. Could you please explain it in a little bit easier phrases?
+* Am I write that in a given context "pager" means just "memory manager"?
diff --git a/microkernel/fud.mdwn b/microkernel/fud.mdwn
new file mode 100644
index 00000000..6353f81d
--- /dev/null
+++ b/microkernel/fud.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2002 Wolfgang Jährling and Jeroen Dekkers"]]
+
+[[!meta license="Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved."]]
+
+# The Microkernel Experiment is Going On
+
+by [Wolfgang Jährling](mailto:wolfgang@pro-linux.de) and [Jeroen Dekkers](mailto:jeroen@dekkers.cx)
+
+This article is a response to an [earlier article](http://www.linuxjournal.com/node/6105/print) by Miles Nordin in Linux Journal, where he expressed his personal feelings about microkernels and monolithic kernels. We will try to present a different point of view. Of course, we are also biased, as we are both young hackers who try to turn [the GNU Hurd](http://www.gnu.org/software/hurd/) into a software useful for everyday-work; for those who don't know it (yes, we're abusing this article as an advertisement): The Hurd is a collection of Daemons, currently running on top of the Mach microkernel and providing a replacement for the Unix kernel together with the GNU C Library.
+
+Miles Nordin claimed that microkernels are dead already. But this is not completely true. The first generation of microkernels, which were in fact no real microkernels, are dead. But there is a new generation, which uses a radically different strategy than the original (so-called) microkernels. Thus, microkernels are still a research topic, and today they look more promising than ever before. By now, this is just something we claim, but read on, and you'll find out why we do so.
+
+Out of our own experience, we can confirm that the first generation microkernel Mach is quite slow, but being microkernel independent is one of the goals of the Hurd and people are already working on porting the Hurd from Mach to the second generation microkernel L4. Those new second generation kernels aren't as slow as Mach and we think that one should not talk about the performance of microkernel based systems without having read at least some of the papers on L4. The L4 people did some interesting benchmarks, which indicate that one can get a lot of performance by making a microkernel really small. How is this supposed to work? Well, the microkernel provides very primitive, highly optimized operations, and applications use them to implement whichever way of interprocess communication is apropriate for them in an efficient way. By deciding this on a per-case basis, you get optimal performance for all applications.
+
+But L4 takes this even further. For example, you can have schedulers in userspace. Therefore you can use a scheduler which is optimized for the specific tasks your system performs. With the Linux kernel, different schedulers are only possible by using a different source tree, thus you cannot switch at run-time and/or have different schedulers for different groups of processes.
+
+Of course, microkernels still have some problems, mainly because we are bound to today's technology, and current processors have not been designed with microkernels in mind. On a processor that is not optimized for systems with monolithic kernels, where the currently still problematic overhead of context switches would vanish, microkernels would get another performance boost. This sounds like an excuse, but it is intended as a reminder about the fact that the problem is not the general concept of microkernels. However, the L4 people have done a lot of good hacks to work around all this and have reached reasonable performance already.
+
+All this could be discussed in arbitrary detail, but we won't do that now, as we have more urgent things to do than reacting on FUD about microkernels. So we will conclude by saying that it is too easy to claim that one design is fast and the other one is slow, but everything depends on how exactly a system is designed and implemented. Maybe microkernels will eventually turn out to be slower in almost any case; we doubt that, but who knows? But even then, a microkernel based system will offer enough other advantages so that people will prefer to use it in some cases. But on the other hand, history has shown that new concepts seldom replace old ones completely, but rather establish themselves in addition to the old ones, therefore we will have the opportunity to argue about which concept is best at least for another couple of years.. or decades?
+
+If you are interested in research about the performance of microkernel based systems, visit <http://www.l4ka.org> and <http://os.inf.tu-dresden.de/L4/>
diff --git a/microkernel/mach.mdwn b/microkernel/mach.mdwn
new file mode 100644
index 00000000..39d0f4d2
--- /dev/null
+++ b/microkernel/mach.mdwn
@@ -0,0 +1,16 @@
+Mach is a so-called first generation [[microkernel]]. It is the
+microkernel currently used by the [[Hurd]].
+
+* [[Documentation]]
+* [[Concepts]]
+* [[History]] ([Torvalds, Tanenbaum Debate](http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html))
+
+# Implementations
+
+* [[GNU_Mach|gnumach]]
+* [[Mach/OskitMach]] - A Once Successor of Mach based on OSKit
+* [Apple's Darwin](http://developer.apple.com/darwin/) ([API](http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/index.html)) (**non-free**)
+
+# Related
+
+* [[Mach_Interface_Generator_(MIG)|mig]]
diff --git a/microkernel/mach/concepts.mdwn b/microkernel/mach/concepts.mdwn
new file mode 100644
index 00000000..04dbb1c6
--- /dev/null
+++ b/microkernel/mach/concepts.mdwn
@@ -0,0 +1,6 @@
+[[Mach]] is a first-generation [[microkernel]]. Mach's basic abstractions
+include [[address_space]]s in the form of [[task]]s, execution contexts in the
+form of [[thread]]s, [[IPC]], [[capabilities|capability]] in the form of [[port]]s, and
+[[memory_object]]s, which enable Mach's [[external_pager_mechanism]].
+
+Mach's [[API]] is well-[[documented|documentation]].
diff --git a/microkernel/mach/discussion.mdwn b/microkernel/mach/discussion.mdwn
new file mode 100644
index 00000000..589e302d
--- /dev/null
+++ b/microkernel/mach/discussion.mdwn
@@ -0,0 +1,23 @@
+## <a name="Maintenance_of_the_Mach_web"> Maintenance of the Mach web </a>
+
+**_Old discussions:_** [[WIKIHOMEURLMachTOPICrev13]]
+
+Interesting, for consistency sake I'll think about making your changes you made on the right hand side to the other web WebHome pages. I guess it's not critical that they are identical, but I was trying to keep them identical if possible. I also wanted it to be "light" enough feature wise that it doesn't overpower the page. You've added back a few of the features, so we obviously differ in how important you and I think these features are. That's OK, I'll think about it some more and we'll see what happens.
+
+Oh, I see you added back [[WebTopicList]] and [[WebPreferences]]. I purposely removed [[WebPreferences]] from the lists on the right because it has nothing to do with navigation. I also didn't think that people actually use topic names to navigate. If they do they could search for them. Keeping the number to four items instead of six and keeping the descriptions concise makes a big difference when I view the page.
+
+(goes off to think more...)
+
+and eat... ;-)
+
+-- [[Main/GrantBow]] - 29 Dec 2002
+
+**_Reasons for my change:_**
+
+1. [[WebTopicList]] is a lot quicker than the [[WebIndex]] - brings down the load times and the load of the server
+2. [[WebPreferences]] - users might be curious to see what can be modified. Changes should of course only be made in their home topics, like in %WIKIUSERNAME%. However, the [[WebPreferences]] can serve as an inspiration. Therefore we should perhaps make sure only the [[Main/TWikiAdminGroup]] members can alter the \*Preferences topics.
+3. If you look closely I've also reordered the links. Shorter names first and long ones last, I tried to keep the descriptions brief and in proportional length as well.
+
+I don't know about you, but keeping the number of items to four rather than six doesn't really matter to me. The text is quite small and if it's the space we're after the [[WebStatistics]] does take up more than the navigation links.
+
+-- [[Main/JoachimNilsson]] - 29 Dec 2002
diff --git a/microkernel/mach/documentation.mdwn b/microkernel/mach/documentation.mdwn
new file mode 100644
index 00000000..fc6e59c2
--- /dev/null
+++ b/microkernel/mach/documentation.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+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]]."]]"""]]
+
+ * [*Meet Mach* by James
+ Scott](http://beefchunk.com/documentation/macosx-programming/Meet_Mach.pdf),
+ a summary of Mach's history and main concepts.
+
+ * *[[The_GNU_Mach_Reference_Manual|gnumach/reference_manual]]*.
+
+ - OSF's [Kernel Interface (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_interface.ps)
+ [Kernel Interface (pdf)](http://shakthimaan.com/downloads/hurd/kernel_interface.pdf)
+
+ - OSF's [Kernel Principles (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_principles.ps)
+ [Kernel Principles (pdf)](http://shakthimaan.com/downloads/hurd/kernel_principles.pdf)
+
+ * [*The Unofficial GNU Mach IPC beginner's
+ guide*](http://hurdextras.nongnu.org/ipc_guide/), an easy introduction to
+ Inter Process Comunication in the Mach microkernel by Manuel Pavón
+ Valderrama.
+
+ * [*Mach IPC without
+ MIG*](http://walfield.org/pub/people/neal/papers/hurd-misc/mach-ipc-without-mig.txt),
+ an exercise by Neal Walfield *to understand Mach IPC at one of its lowest
+ application levels*.
+
+ * [*ipc-hello.c*](http://walfield.org/pub/people/neal/papers/hurd-misc/ipc-hello.c):
+ *Hello world à la mach ipc*.
+
+ - [Porting and Modifying the Mach 3.0 Microkernel](http://shakthimaan.com/downloads/hurd/Porting%20and%20Modifying%20the%20Mach%203.0%20Microkernel.pdf)
+
+ - [An IO System for Mach](http://shakthimaan.com/downloads/hurd/An%20IO%20System%20for%20Mach.pdf)
+
+ - [A Programmers' Guide to Mach System Call](http://shakthimaan.com/downloads/hurd/A.Programmers.Guide.to.the.Mach.System.Calls.pdf)
diff --git a/microkernel/mach/external_pager_mechanism.mdwn b/microkernel/mach/external_pager_mechanism.mdwn
new file mode 100644
index 00000000..b175d1cc
--- /dev/null
+++ b/microkernel/mach/external_pager_mechanism.mdwn
@@ -0,0 +1,182 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Mach provides a so-called external pager [[mechanism]]. This
+mechanism serves to separate *managing memory* from *managing
+content*. Mach does the former while user space tasks do the
+latter.
+
+
+# Introduction
+
+In Mach, a task's [[Mach/AddressSpace]] consists of references
+to [[Mach/MemoryObjects]]. A memory object is designated using
+a [[port]] (a port is just a [[capability]]) and
+implemented by a normal process.
+
+To associate a memory object with a portion of a task's
+address space, vm\_map is invoked a capability designating
+the task and passing a reference to the memory object
+and the offset at which to install it. (The first time
+a task maps an object, Mach sends an initialization message
+to the server including a control capability, which it uses
+to supply pages to the kernel.) This is essentially
+the same as mapping a file into an address space on [[Unix]]
+using mmap.
+
+When a task faults, Mach checks to see if there is a memory
+object associated with the fault address. If not, the task
+is sent an exception, which is normally further propagated
+as a segmentation fault. If there is an associated memory
+object, Mach checks whether the corresponding page is in core.
+If it is, it installs the page and resumes the task. Mach
+then invokes the memory object with the memory\_object\_request
+method and the page to read. The memory manager then fetches
+or creates the content as appropriate and supplies it to
+Mach using the memory\_object\_supply method.
+
+
+# Creating and Mapping a Memory Object
+
+The following illustrates the basic idea:
+
+> ________
+> / \
+> | Mach |
+> \________/
+> /| / |\ \
+> (C) vm_map / / m_o_ready (E)\ \ (D) memory_object_init
+> / |/ (F) return \ \|
+> ________ ________
+> / \ -----> / \
+> | Client | (A) open | Server |
+> \________/ <----- \________/
+> (B) memory_object
+
+(A) The client sends an "open" rpc to the server.
+
+(B) The server creates a memory object (i.e., a port receive right), adds
+it to the port set that it is listening on and returns a capability (a port
+send right) to the client.
+
+(C) The client attempts to map the object into its address space using
+the vm\_map rpc. It passes a reference to the port that the server gave
+it to the vm server (typically Mach).
+
+(D) Since Mach has never seen the object before, it queues a
+memory\_object\_init on the given port along with a send right (the
+memory control port) for the manager to use to send messages to the
+kernel and also as an authentication mechanism for future
+interactions: the port is supplied so that the manager will be able to
+identify from which kernel a given memory\_object\_* IPC is from.
+
+(E) The server dequeues the message, initializes internal data
+structures to manage the mapping and then invokes the
+memory\_object\_ready method on the control object.
+
+(F) The kernel sees that the manager is ready, sets up the appropriate
+mappings in the client and then replies to the vm\_map rpc indicating
+success.
+
+There is nothing stopping others from playing "the kernel." This is
+not a security problem: clients must [[trust]] the server from whom they
+obtain memory objects and also the servers with whom they share
+the object. Multiple memory managers are a reality that should be
+dealt with gracefully: they are useful for network transparent
+mappings etc.
+
+
+# Resolving Page Faults
+
+> (G) Client ________
+> resumed / \
+> | Mach |
+> (A) Fault +----|------+ | \ (B) m_o_request (C) store_read
+> ____|___ \_____|__/ |\ \| ________ _________
+> / +---\-------+ \ / \ / \
+> | Client | (F) | Server |<===>| storeio |
+> \________/ m_o_supply \________/ \_________/
+> (E) return data | ^
+> | | (D) device_read
+> v |
+> ________
+> / Device \
+> | Driver |
+> \________/
+> | ^
+> | |
+> v
+> ____________
+> / Hardware \
+
+(A) The client does a memory access and faults. The kernel catches
+the fault and maps the address to the appropriate memory object. It
+then invokes the memory\_object\_request method on the associated
+capability. (In addition to the page to supply, it also supplies the
+control port so that the server can determine which kernel
+sent the message.)
+
+(B) The manager dequeues the message. On the Hurd, this is translated
+into a store\_read: a function in the libstore library which is used to
+transparently manage block devices. The storeio server starts off as
+a separate process, however, if the server has the appropriate
+permission, the backing object can be contacted directly by the
+server. This layer of indirection is desirable when, for instance, a
+storeio running as root may want to only permit read only access to a
+resource, yet it cannot safely transfer its handle to the client. In
+this case, it would proxy the requests.
+
+(C) The storeio server contacts, for instance, a device driver to do
+the read. This could also be a network block device (the NBD server
+in GNU/Linux), a file, a memory object, etc.
+
+(D) The device driver allocates an anonymous page from the default
+pager and reads the data into it. Once all of the operations are
+complete, the device returns the data to the client unmapping it from
+its own address space at the same time.
+
+(E) The storeio transfers the page to the server. The page is still
+anonymous.
+
+(F) The manager does a memory\_object\_supply transferring the page to
+the kernel. Only now is the page not considered to be anonymous but
+managed.
+
+(G) The kernel caches the page, installs it in the client's virtual
+address space and finally, resumes the client.
+
+
+# Paging Data Out
+
+> Change manager Pager m_o_return store_write
+> \ _________ (B) __(A)__ (C) ________ (D) _______
+> S | / Default \ / \ / \ / \
+> W |<=>| Pager |<=>| Mach |==>| server |<=>| storeio |<=>
+> A | \_________/ \________/ \________/ \_______/
+> P |
+> /
+
+(A) The paging [[policy]] is implemented by Mach: servers just implement
+the [[mechanism]].
+
+(B) Once the kernel has selected a page that it would like to evict, it
+changes the manager from the server to the default pager. This way,
+if the server does not deallocate the page quickly enough, it cannot
+cause a denial of service: the kernel will just later double page it
+to swap (the default pager is part of the [[tcb]]).
+
+(C) Mach then invokes memory\_object\_return method on the control
+object. The server is expected to save the page free it in a timely
+fashion. The server is not required to send a response to the kernel.
+
+(D) The manager then transfers the data to the storeio which
+eventually sends it to disk. The device driver consumes the memory
+doing the equivalent of a vm\_deallocate.
diff --git a/microkernel/mach/gnumach.mdwn b/microkernel/mach/gnumach.mdwn
new file mode 100644
index 00000000..f3d6d5f9
--- /dev/null
+++ b/microkernel/mach/gnumach.mdwn
@@ -0,0 +1,80 @@
+[[!meta copyright="Copyright © 2001, 2002, 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]]."]]"""]]
+
+GNU Mach is the microkernel that the [[GNU_Hurd|hurd]] system is based on.
+
+It is maintained by the Hurd developers for the GNU project and remains
+compatible with [[Mach]] 3.0.
+
+The majority of GNU Mach's [[device_driver]]s are from Linux 2.0. They were
+added using glue code, i.e., a Linux [[emulation]] layer in Mach.
+
+GNU Mach runs on x86 machines. See the
+[[hardware_compatibility_list]] and information about
+[[ports]] to other architectures.
+
+
+# Advantages of GNU Mach
+
+GNU Mach is not the most advanced [[microkernel]] known to the planet, nor is
+it the fastest or smallest, but it has a rich set of [[interface]]s and some
+features which make it useful as the base of the [[Hurd]] system.
+
+ * **it's free software**
+
+ Anybody can use, modify, and redistribute it under the terms of the
+ [[GNU_General_Public_License_(GPL)|gpl]].
+
+ * **it's built to survive**
+
+ As a [[microkernel]], GNU Mach doesn't implement a lot of the features
+ commonly found in an operating system, but only the bare minimum that is
+ required to implement a full operating system on top of it. This means
+ that a lot of the operating system code is maintained outside of GNU Mach,
+ and while this code may go through a complete redesign, the code of the
+ microkernel can remain comparatively stable.
+
+ * **it's scalable**
+
+ Mach is particularly well suited for SMP and network cluster techniques.
+ Thread support is provided at the kernel level, and the kernel itself takes
+ advantage of that. Network transparency at the [[IPC]] level makes
+ resources of the system available across machine boundaries (with NORMA
+ IPC, currently not available in GNU Mach).
+
+ * **it exists**
+
+ The Mach microkernel is real software that works Right Now. It is not a
+ research or a proposal. You don't have to wait at all before you can start
+ using and developing it. Mach has been used in many operating systems in
+ the past, usually as the base for a single UNIX server. In the GNU system,
+ Mach is the base of a functional multi-server operating system, the
+ [[Hurd]].
+
+
+# Booting
+
+To actually use the kernel and boot the GNU operating system, you need a boot
+loader. Not all boot loaders are capable to boot the GNU system, you need one
+that supports the multiboot standard. The bootloader of the GNU system is
+[[GNU_GRUB|grub]], which supports a broad range of operating systems including
+GNU/Hurd.
+
+
+# Development
+
+ * [[Reference_Manual]]
+ * [[Building]]
+ * [[Debugging]]
+ * [[Boot_Trace]]
+ * [[Projects]]
+ * [[Rules]]
+ * [[Open Issues|tag/open_issue_gnumach]]
diff --git a/microkernel/mach/gnumach/boot_trace.mdwn b/microkernel/mach/gnumach/boot_trace.mdwn
new file mode 100644
index 00000000..d33ef25a
--- /dev/null
+++ b/microkernel/mach/gnumach/boot_trace.mdwn
@@ -0,0 +1,222 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+`if NCPUS > 1` stuff is not being considered so far.
+
+
+> i386/i386at/boothdr.S: \_start
+
+> i386/i386at/boothdr.S: boot\_entry
+
+>> i386/i386at/model\_dep.c: c\_boot\_entry
+
+>>> i386/i386at/boothdr.S: discover\_x86\_cpu\_type
+
+>>> i386/i386at/model\_dep.c: i386at\_init
+
+>>>> i386/i386/pic.c: picinit
+
+>>>> i386/i386at/model\_dep.c: mem\_size\_init
+
+>>>> i386/intel/pmap.c: pmap\_bootstrap
+
+>>>> i386/i386/gdt.c: gdt\_init
+
+>>>> i386/i386/idt.c: idt\_init
+
+>>>> i386/i386at/int\_init.c: int\_init
+
+>>>> i386/i386/ldt.c: ldt\_init
+
+>>>> i386/i386/ktss.c: ktss\_init
+
+>>> kern/startup.c: setup\_main
+
+>>>> kern/debug.c: panic\_init
+
+>>>> kern/printf.c: printf\_init
+
+>>>> kern/sched\_prim.c: sched\_init
+
+>>>>> kern/sched\_prim.c: wait\_queue\_init
+
+>>>>> kern/processor.c: pset\_sys\_bootstrap
+
+>>>>> kern/ast.c: ast\_init
+
+>>>> vm/vm\_init.c: vm\_mem\_bootstrap
+
+>>>>> vm/vm\_resident.c: vm\_page\_bootstrap
+
+>>>>>> vm/vm\_resident.c: pmap\_startup
+
+>>>>> kern/zalloc.c: zone\_bootstrap
+
+>>>>> vm/vm\_object.c: vm\_object\_bootstrap
+
+>>>>>> vm/vm\_external.c: vm\_external\_module\_initialize
+
+>>>>> vm/vm\_map.c: vm\_map\_init
+
+>>>>> vm/vm\_kern.c: kmem\_init
+
+>>>>> i386/intel/pmap.c: pmap\_init
+
+>>>>> kern/zalloc.c: zone\_init
+
+>>>>> kern/kalloc.c: kalloc\_init
+
+>>>>> vm/vm\_fault.c: vm\_fault\_init
+
+>>>>> vm/vm\_resident.c: vm\_page\_module\_init
+
+>>>>> vm/memory\_object.c: memory\_manager\_default\_init
+
+>>>> ipc/ipc\_init.c: ipc\_bootstrap
+
+>>>>> ipc/ipc\_table.c: ipc\_table\_init
+
+>>>>> ipc/ipc\_notify.c: ipc\_notify\_init
+
+>>>>> ipc/ipc\_hash.c: ipc\_hash\_init
+
+>>>>> ipc/ipc\_marequest.c: ipc\_marequest\_init
+
+>>>> vm/vm\_init.c: vm\_mem\_init
+
+>>>>> vm/vm\_object.c: vm\_object\_init
+
+>>>> ipc/ipc\_init.c: ipc\_init
+
+>>>>> kern/ipc\_host.c: ipc\_host\_init
+
+>>>>>> kern/ipc\_host.c: ipc\_pset\_init
+
+>>>>>> kern/ipc\_host.c: ipc\_pset\_enable
+
+>>>>>> kern/ipc\_host.c: ipc\_processor\_init
+
+>>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL
+
+>>>> kern/timer.c: init\_timers
+
+>>>> kern/mach\_clock.c: init\_timeout
+
+>>>> kern/xpr.c: xprbootstrap
+
+>>>> kern/time\_stamp.c: timestamp\_init
+
+>>>> kern/mach\_clock.c: mapable\_time\_init
+
+>>>> i386/i386at/model\_dep.c: machine\_init
+
+>>>>> device/cons.c: cninit
+
+>>>>> i386/i386/fpu.c: init\_fpu
+
+>>>>> linux/dev/init/main.c: linux\_init
+
+>>>>>> linux/dev/arch/i386/kernel/irq.c: init\_IRQ
+
+>>>>>>> linux/dev/arch/i386/kernel/irq.c: reserve\_mach\_irqs
+
+>>>>>> linux/dev/kernel/sched.c: linux\_sched\_init
+
+>>>>>> linux/dev/init/main.c: calibrate\_delay
+
+>>>>>> linux/dev/glue/kmem.c: linux\_kmem\_init
+
+>>>>>> linux/src/drivers/pci/pci.c: pci\_init
+
+>>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_init
+
+>>>>>>> linux/src/drivers/pci/pci.c: scan\_bus
+
+>>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_fixup
+
+>>>>>> linux/dev/glue/net.c: linux\_net\_emulation\_init
+
+>>>>>> linux/dev/drivers/block/genhd.c: device\_setup
+
+>>>>>>> linux/dev/glue/block.c: blk\_dev\_init
+
+>>>>>>>> linux/src/drivers/block/ide.c: ide\_init
+
+>>>>>>>> linux/dev/drivers/block/floppy.c: floppy\_init
+
+>>>>>>> linux/src/drivers/scsi/scsi.c: scsi\_dev\_init
+
+>>>>>>> linux/dev/net/core/dev.c: net\_dev\_init
+
+>>>>>> linux/pcmcia-cs/glue/pcmcia.c: pcmcia\_init
+
+>>>>> i386/i386at/autoconf.c: probeio
+
+>>>>> i386/i386at/model\_dep.c: inittodr
+
+>>>>> i386/intel/pmap.c: pmap\_unmap\_page\_zero
+
+>>>> kern/task.c: task\_init
+
+>>>>> kern/syscall\_emulation.c: eml\_init
+
+>>>> kern/thread.c: thread\_init
+
+>>>>> i386/i386/pcb.c: pcb\_module\_init
+
+>>>>>> i386/i386/fpu.c: fpu\_module\_init
+
+>>>>>> i386/i386/iopb.c: iopb\_init
+
+>>>> kern/thread\_swap.c: swapper\_init
+
+>>>> kern/sched\_prim.c: recompute\_priorities
+
+>>>> kern/mach\_factor.c: compute\_mach\_factor
+
+>>>> kern/startup.c: start\_kernel\_threads
+
+[...]
+
+>>>> kern/startup.c: cpu\_launch\_first\_thread
+
+>>>>> i386/i386at/model\_dep.c: startrtclock
+
+>>>>>> i386/i386/pit.c: clkstart
+
+>>>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL
+
+>>>>> i386/i386/pcb.c: load\_context
+
+[...]
+
+> kern/startup.c: start\_kernel\_threads
+
+> Threads get created.
+
+>> kern/sched\_prim.c: idle\_thread
+
+>> One for each CPU.
+
+>> kern/thread.c: reaper\_thread
+
+>> kern/thread\_swap.c: swapin\_thread
+
+>> kern/sched\_prim.c: sched\_thread
+
+>> [...]
+
+>> kern/bootstrap.c: bootstrap\_create
+
+>> [...]
+
+>> vm\_pageout
+
+>> Does not return.
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn
new file mode 100644
index 00000000..9c075600
--- /dev/null
+++ b/microkernel/mach/gnumach/building.mdwn
@@ -0,0 +1,114 @@
+Additional to the following text, a further [[example]] has be posted.
+
+
+# Building [[GNU_Mach|gnumach]] from Source
+
+If you want to build the [[GNU_Mach|gnumach]] kernel yourself instead of just using a
+pre-built binary, follow these instructions.
+
+The unpacked source tree is around 20 MiB, and the build tree (with all drivers
+enabled) is around 50 MiB.
+
+## Getting the Source Code
+
+### Developers's RCS
+
+See <http://savannah.gnu.org/cvs/?group=hurd>.
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r gnumach-1-branch gnumach
+
+(Most probably you want to get hold of the *GNU Mach 1 branch* and not the
+trunk, which is also what we've done above.)
+
+You then have to create the automatically generatable files:
+
+ $ ( cd gnumach && autoreconf --install )
+
+### What Debian is currently using
+
+See [here](http://packages.debian.net/source/unstable/gnumach).
+
+ $ apt-get source gnumach
+
+Please see the Debian [[running/debian/FAQ]] before using `apt-get source`.
+
+## Preparing for the Build
+
+### ... on Debian systems
+
+Building GNU Mach requires the *build-essential* and *fakeroot* packages, their
+dependencies and additional packages that are specified by the source gnumach
+package:
+
+ # apt-get install build-essential fakeroot
+ # apt-get build-dep gnumach
+
+### ... on non-Debian systems
+
+Apart from the case that you only want to install GNU Mach's header files (see
+below), building GNU Mach requires you to have the Mach Interface Generator
+installed. See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come
+back here.
+
+Additionally, building GNU Mach requires a C compiler, a standard C library and
+your favourite flavor of awk (gawk) and GNU make.
+
+## Building and Installing
+
+### ... Debian `.deb` files
+
+Change into the directory with the downloaded / unpacked GNU Mach sources, e.g.
+
+ $ cd gnumach-20050801
+
+Start the build process with
+
+ $ dpkg-buildpackage -us -uc -b -rfakeroot
+
+[[GNU_Mach|gnumach]] is now building. To use the new kernel, you must install the
+resulting `.deb` package which is located one directory above the build
+directory and has a similar name as the build directory, e.g.
+
+ # dpkg -i ../gnumach_20050801-4_hurd-i386.deb
+
+You can now reboot your computer and enjoy the new kernel.
+
+### [TODO]
+
+GNU Mach should be built in a separate directory:
+
+ $ mkdir gnumach-build
+ $ cd gnumach-build
+
+Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure
+it:
+
+ $ [...]/gnumach-1-branch/configure [TODO]
+
+Build the kernel image:
+
+ $ make gnumach.gz
+
+Optionally run the (tiny) test suite:
+
+ $ make check
+
+You can then install and use `gnumach.gz`.
+
+[TODO.]
+
+### Installing only the Header Files
+
+GNU Mach should be built in a separate directory:
+
+ $ mkdir gnumach-build
+ $ cd gnumach-build
+
+Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure
+it:
+
+ $ [...]/gnumach-1-branch/configure --prefix=
+
+Install the header files into e.g. `~/gnu/include/`:
+
+ $ make DESTDIR=~/gnu install-data
diff --git a/microkernel/mach/gnumach/building/example.mdwn b/microkernel/mach/gnumach/building/example.mdwn
new file mode 100644
index 00000000..7db98547
--- /dev/null
+++ b/microkernel/mach/gnumach/building/example.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+## Compiling GNU Mach microkernel
+
+Host development system is IBM T41 running Debian Sarge 3.1r0a GNU/Linux.
+
+* gcc version: 3.3.5
+* GNU sed version: 4.1.2
+* GNU make version: 3.8
+* mig version: 1.3-4
+
+Obtained gnumach-1-branch sources from cvs:
+
+ export CVS_RSH="ssh"
+ cvs -z3 -d:ext:anoncvs@ savannah.gnu.org:/cvsroot/hurd co -r gnumach-1-branch gnumach
+
+Obtained mig_1.3-4_i386.deb from
+http://www.hadrons.org/~guillem/debian/pool/main/mig/. Installed it using dpkg:
+
+ dpkg -i mig_1.3-4_i386.deb
+
+Entered into the gnumach sources and did the following for compilation:
+
+ mkdir build
+ cd build
+ ../configure --host=i386-unknown-gnu0.2 --build=i586-pc-linux-gnu \
+ --enable-kdb --enable-ide
+ make
+
+The kernel file is created in the build directory. Move it to /boot on the
+testing x86 system Hurd partition. Rename it as gnumach1 and compress it:
+
+ mv kernel gnumach1
+ gzip gnumach1
+
+Add a new entry on the testing machine /boot/grub/menu.lst to boot the new
+kernel.
+
+ title GNU Hurd K10 Compiled gnumach
+ kernel (hd0,3)/boot/gnumach1.gz root=device:hd2s4 -s
+ module (hd0,3)/hurd/ext2fs.static--multiboot-command-line=${kernel-command-line} \\
+ --host-priv-port=${host-port} --device-master-port=${device-port} \\
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create)$(task-resume)
+ module (hd0,3)/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+Reboot into the new compiled mygnumach1.gz kernel!
diff --git a/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn
new file mode 100644
index 00000000..3a93c6ad
--- /dev/null
+++ b/microkernel/mach/gnumach/debugging.mdwn
@@ -0,0 +1,69 @@
+[[!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]]."]]"""]]
+
+Mach has a built-in kernel debugger.
+[Manual](http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html).
+
+
+When you're [[running_a_system_in_QEMU|hurd/running/qemu]] you can directly
+[use GDB on the running
+kernel](http://www.nongnu.org/qemu/qemu-doc.html#SEC48).
+
+
+Alternatively you can use an approach like this one: add the following code
+snippet to `device/ds_routines.c`'s `ds_device_open` function, right at the top
+of the function, and modify the code as needed.
+
+ void D (char *s)
+ {
+ switch (s[0] - '0')
+ {
+ case 0:
+ printf ("Hello from %s!\n", __FUNCTION__);
+ break;
+ case 1:
+ printf ("%s: Invoking task_collect_scan.\n", __FUNCTION__);
+ extern void task_collect_scan (void);
+ task_collect_scan ();
+ break;
+ default:
+ printf ("No idea what you want me to do.\n");
+ break;
+ }
+ }
+
+ if (name && name[0] == 'D')
+ D (name + 1);
+
+Then boot your system and do something like this:
+
+ # devprobe D0
+ Hello from D!
+ # devprobe D1
+ D: Invoking task_collect_scan.
+ # devprobe D2
+ No idea what you want me to do.
+
+This is especially useful if you need to manually trigger some stuff inside the
+running kernel, as with the *D1* example.
+
+
+If you're doing real low level debugging, you might want to put variations of
+the following snipped into the code, this code will write a `#` character at
+line `[LINE]`, column `[COLUMN]` on the screen:
+
+ *((char *) 0xb8000 + 2 * ([LINE] * 80 + [COLUMN])) = '#';
+ halt_cpu ();
+
+The call of `halt_cpu` will -- as the name suggests -- halt the system
+afterwards. This might be what you want or it might not, but it is needed at
+some place when running the kernel inside QEMU, as QEMU somehow decides not to
+update its display buffer anymore under certain conditions.
diff --git a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn
new file mode 100644
index 00000000..2152c079
--- /dev/null
+++ b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn
@@ -0,0 +1,111 @@
+[[!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]]."]]"""]]
+
+# CPU Architecture
+
+GNU Mach current only supports the `x86` (alias `ia32` or `i386`) architecture.
+
+`amd64`/`ix64` should work in `32-bit` compatibility mode. However, in practice
+`amd64` systems seem to be troublesome more often than not. This is probably
+related to the same (chipset-related) problems we often see with recent
+machines; but it seems that `amd64` ones use problematic chipsets particularily
+often. So far we haven't heard of similar problems with Intel's eqivalent
+`ix64` (or `EM64T` as it used to be called) -- but maybe that just means fewer
+people tried running the Hurd on such machines :-)
+
+Support for running GNU Mach (and a complete GNU/Hurd system) in a
+[Xen](http://www.cl.cam.ac.uk/research/srg/netos/xen/) `domU` (again on `x86`
+only) is [[being_worked_on|ports/xen]].
+
+Read about further [[ports]].
+
+# Memory
+
+GNU Mach will use a maximum of 1 GiB of RAM. If your system has more,
+the surplus will silently be ignored. (In past times, this would hinder GNU
+Mach from booting at all, but this has been fixed, so you no longer need to
+apply GRUB's `uppermem` directive.)
+
+# Video Cards
+
+Debian distributes a version of [X.org](http://x.org/). If your video card driver
+depends on a special kernel interface such as that provided by
+the `agpgart` kernel module for the Linux kernel, then your video
+card will only be supported by the VESA driver.
+
+Using an internal i815 videocard [won't
+work](http://lists.debian.org/debian-hurd/2007/12/msg00007.html) (at least when
+using the specialized driver), because of [missing AGP GART support in GNU
+Mach](http://lists.debian.org/debian-hurd/2007/12/msg00011.html).
+
+# Sound
+
+No sound cards are supported at this time.
+
+# USB 1.1/2.0
+
+USB is not supported at this time.
+
+However, USB-type keyboards and mice may (and have been reported to) work
+nevertheless, given that the hardware / BIOS is doing emulation to the
+supported legacy interfaces.
+
+# IEEE 1394 (Firewire)
+
+IEEE 1394 is not supported at this time
+
+# Storage
+
+All common IDE drives should work. Some drive geometries do not work,
+e.g. drives with hundreds of GiB of storage space, see [[!GNU_Savannah_bug
+26425]].
+
+[[!toggle id="SATA" text="SATA drives may work in compatibility mode."]]
+<!-- Sure? --[[tschwinge]] -->
+
+[[!toggleable id="SATA" text="""
+This is how booting a [[GNU/Hurd_system|hurd]] will typically fail if GNU Mach
+couldn't connect to the hard disk, e.g., in a SATA system without IDE
+compatibility mode:
+
+ start (hd0,3)/hurd/ext2fs.static: (hd0,3)/hurd/ext2fs.static
+ device:hd0s4: No such device or address
+
+There *may* be an option in the system's BIOS setup to configure enabling such
+a compatibility mode.
+"""]]
+
+# Device Drivers
+
+[GNU Mach Reference Manual,
+Configuration](http://www.gnu.org/software/hurd/gnumach-doc/Configuration.html)
+contains a list of device drivers that are included in GNU Mach and elaborates
+on the hardware devices they support.
+
+# User Success Reports
+
+These boards are known to work. Gnumach/Hurd has been installed and run on these board successfully.
+
+* ASUS P2B motherboard with an Intel PII 450MHz CPU with Intel Pro/100 NIC in PCI slot
+* Intel SE-440BX motherboard
+* VIA EPIA-M Mini-ITX motherboard with VIA Nehemiah C3 1Ghz processor. Onboard NIC (VIA Rhine) works good.
+* Compaq Deskpro ENS, Pentium3 (666 MHz upgraded to 1 GHz), Intel i815 chipset, chipset integrated NIC (detected twice, but works fine with eth0; trying to access eth1 confuses the driver and makes the system unusable), Matrox Mystique 220 (PCI) graphics card. Also works with rtl8029 (NE2000 PCI) NIC when onboard NIC disabled in BIOS setup.
+* Abit BX6 Rev. 2.0 with Celeron 400, after disabling "memory hole at 15MB" option in BIOS setup. (Otherwise, Mach detects only 15MiB of RAM, making Hurd run *extremely* slow and instable.) Should also work with PentiumII or Pentium3.
+
+# User Failure Reports
+
+Some people couldn't get these hardware combinations to work with Hurd.
+
+Note: The Debian GNU/Hurd installer actually runs on Linux, so it (almost) always works. The critical bit is booting after installation.
+
+* ASUS P5A motherboard and AMD K6-2 333MHz CPU - doesn't boot
+* ASUS P2B-LS motherboard with an Intel PII-MMX 400 MHz CPU - this board had a defective onboard NIC (that could not be disable in BIOS) and working 3COM Etherlink III NIC in a PCI bus slot. This combination worked with GNU/Linux. The 3COM NIC is known to work with the Hurd. However, while gnumach/Hurd will boot on this system, it is confused by the defective onboard NIC and unable to use the 3COM NIC. Attempting to start networking generates a continous stream of eth0 and eth1 reset messages on the console that renders the system unusable.
+* ASrock 775Twins-HDTV with a Pentium D 810 (533 MGz FSB/2600GHz core -- information no longer present on intel's site). Doesn't boot.
diff --git a/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn
new file mode 100644
index 00000000..69ca3190
--- /dev/null
+++ b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn
@@ -0,0 +1,4 @@
+Further information may still be found on
+<http://www.nongnu.org/thug/gnumach_hardware.html>
+and could perhaps be incorporated into that page.
+--[[tschwinge]]
diff --git a/microkernel/mach/gnumach/ports.mdwn b/microkernel/mach/gnumach/ports.mdwn
new file mode 100644
index 00000000..afc91d7a
--- /dev/null
+++ b/microkernel/mach/gnumach/ports.mdwn
@@ -0,0 +1,22 @@
+[[!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]]."]]"""]]
+
+ * x86. This is the main port.
+
+ * [[Xen]]
+
+ * [PowerPC](http://www.pjbruin.dds.nl/hurd/). Is not in a usable state.
+
+ * Alpha: [project I](http://savannah.nongnu.org/projects/hurd-alpha), and
+ [project II](http://savannah.nongnu.org/projects/gnumach-alpha). Was once
+ started, but isn't in a usable state either.
+
+ * MIPS. Status completely unknown.
diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn
new file mode 100644
index 00000000..bf26410a
--- /dev/null
+++ b/microkernel/mach/gnumach/ports/xen.mdwn
@@ -0,0 +1,93 @@
+[[!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]]."]]"""]]
+
+[[!toc]]
+
+# Xen dom0, hypervisor
+
+/!\ Now that GNU Mach handles PAE you can use a PAE-enabled hypervisor.
+
+You can either get binaries at <http://youpibouh.thefreecat.org/hurd-xen/> or build them yourself.
+
+- Copy `gnumach-xen-pae` and `hurd-modules` to your dom0 /boot. If you still have a non-PAE hypervisor, use `gnumach-xen-nonpae` instead.
+- Copy `hurd` into `/etc/xen`, edit it for fixing access to your hurd / and swap
+
+# GNU/Hurd system
+
+/!\ You need an already installed [[GNU/Hurd_system|hurd/running]].
+
+If you have a free partition, you can fdisk to type 0x83, create a filesystem using:
+
+ sudo mke2fs -b 4096 -I 128 -o hurd /dev/sda4
+
+Replace /dev/sda4 with your partition. Install and use crosshurd to setup a GNU/Hurd system on this partition.
+
+# /etc/xen/hurd configuration
+
+Here is a sample /etc/xen/hurd configuration
+
+ kernel = "/boot/gnumach-xen-pae"
+ memory = 256
+ disk = ['phy:sda4,hda,w']
+ extra = "root=device:hd0"
+ vif = [ '' ]
+ ramdisk = "/boot/hurd-modules"
+
+Do not give more than 580MB memory (due to bootstrap limitations, it's not easy
+to map more).
+
+Suggestions about [[networking_configuration]] are available.
+
+If you need stable MAC addresses, use a syntax like `vif = [
+'mac=00:16:3e:XX:XX:XX, bridge=br0' ]`.
+
+# Running Hurd with Xen
+
+To run Hurd with Xen, use:
+
+ xm create -c hurd
+
+and gnumach should get started. Proceed with native-install.
+
+ export TERM=mach
+ ./native-install
+
+- If `xm` complains about networking (`vif could not be connected`), it's Xen scripts' fault, see Xen documentation for how to configure the network. The simplest way is network-bridge with fixed IPs (note that you need the bridge-utils package for this). You can also just disable networking by commenting the vif line in the config.
+- If `xm` complains `Error: (2, 'Invalid kernel', 'xc_dom_compat_check: guest type xen-3.0-x86_32 not supported by xen kernel, sorry\n')`, you most probably have a PAE-enabled hypervisor and a non-PAE gnumach. Either install and boot non-PAE hypervisor and kernel, or rebuilt gnumach in PAE mode.
+
+# Building from sources
+
+If you want to generate these images, first get the `gnumach-1-branch-Xen-branch` branch from gnumach CVS.
+Then look for "Ugly" in `kern/bootstrap.c`, how to generate `hurd-modules` is explained there, and you'll have to fix `EXT2FS_SIZE` and `LD_SO_SIZE` by hand.
+Then use
+
+ ./configure --enable-platform=xen
+ make
+
+The current `hurd-modules` was built from the debian packages `hurd 20070606-2` and `libc0.3 2.6.1-1`.
+/!\ This means that when using this image, your GNU/Hurd system also needs to be a glibc version 2.6 or later-based one!
+
+---
+
+# Miscellaneous
+
+[[Internals]].
+
+[[!GNU_Savannah_task 5468]], [[!GNU_Savannah_task 6584]].
+
+---
+
+# `pv-grub`
+
+From Xen 4.0 on you'll be able to run the GNU Hurd directly using `pv-grub`,
+without the need to [prepare a special bootstrap
+image](http://youpibouh.thefreecat.org/hurd-xen/build_hurd-modules) (like an
+initrd).
diff --git a/microkernel/mach/gnumach/ports/xen/internals.mdwn b/microkernel/mach/gnumach/ports/xen/internals.mdwn
new file mode 100644
index 00000000..eae9d9a8
--- /dev/null
+++ b/microkernel/mach/gnumach/ports/xen/internals.mdwn
@@ -0,0 +1,14 @@
+[[!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 port does use Xen's para-virtualized interface for device (ide, network,
+etc.) access.
+
+[[Virtualization]].
diff --git a/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn
new file mode 100644
index 00000000..52e6db87
--- /dev/null
+++ b/microkernel/mach/gnumach/ports/xen/networking_configuration.mdwn
@@ -0,0 +1,105 @@
+[[!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]]."]]"""]]
+
+[[!toc]]
+
+The Xen dom0 infrastructure provides for a bridged networking setup using shell
+scripts to configure the bridging device properly and attach the domUs' virtual
+interfaces to the bridge. However, we've [seen
+problems](http://lists.gnu.org/archive/html/bug-hurd/2008-08/msg00023.html)
+when using this approach, so to [solve these
+issues](http://lists.gnu.org/archive/html/bug-hurd/2008-09/msg00071.html),
+instead suggest the following configuration method (to achieve the same thing).
+
+This is for a Debian dom0.
+
+# */etc/network/interfaces*
+
+Comment out everything referencing your physical devices. Add this:
+
+ auto br0
+ iface br0 inet dhcp
+ bridge_ports regex (eth|vif).* noregex
+
+... or if you want to do the manual configuration dance:
+
+ auto br0
+ iface br0 inet static
+ bridge_ports regex (eth|vif).* noregex
+ address 192.168.10.60
+ netmask 255.255.255.0
+ [...]
+
+This needs a version of the `bridge-utils` package more recent than the current
+Debian stable one ([[!debbug 405215]]). (It's trivial to rebuild the `dpkg` of,
+e.g., the Debian testing one on Debian stable.)
+
+# */etc/xen/xend-config.sxp*
+
+Make sure that only `(network-script network-dummy)` and `(vif-script
+vif-bridge)` are activated and all other `(network-script network-WHATEVER)`,
+respective `(vif-script vif-WHATEVER)` are commented out.
+
+
+# Sample configuration files on Debian Lenny
+
+## /etc/xen/hurd on dom0
+
+ kernel = "/boot/gnumach-xen"
+ memory = 256
+ disk = ['phy:sda5,hda,w']
+ extra = "root=device:hd0"
+ vif = [ 'mac=00:16:3e:00:00:00, bridge=br0' ]
+ ramdisk = "/boot/hurd-modules"
+
+/dev/sda5 is an extended partition. br0 is bridge interface on dom0.
+
+## /etc/xen/xend-config.sxp on dom0
+
+ (network-script 'network-bridge netdev=br0')
+ (dom0-min-mem 196)
+ (dom0-cpus 0)
+ (vncpasswd '')
+
+## /etc/network/interfaces on dom0
+
+ auto br0
+ iface br0 inet static
+ address 192.168.1.211
+ network 192.168.1.0
+ netmask 255.255.255.0
+ broadcast 192.168.1.255
+ gateway 192.168.1.1
+ bridge_ports eth1
+
+eth1 is the interface that is connected to the Internet on the LAN:
+
+## Doing settrans on domU
+
+ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.210 -g 192.168.1.1 -m 255.255.255.0
+
+## /sbin/ifconfig on dom0
+
+ br0 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33
+ inet addr:192.168.1.211 Bcast:192.168.1.255 Mask:255.255.255.0
+ inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:14187 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:9214 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:0
+ RX bytes:936563 (914.6 KiB) TX bytes:746184 (728.6 KiB)
+
+ eth1 Link encap:Ethernet HWaddr 00:19:d1:2e:06:33
+ inet6 addr: fe80::219:d1ff:fe2e:633/64 Scope:Link
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:34339 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:18526 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 txqueuelen:1000
+ RX bytes:3019251 (2.8 MiB) TX bytes:1453672 (1.3 MiB)
diff --git a/microkernel/mach/gnumach/projects.mdwn b/microkernel/mach/gnumach/projects.mdwn
new file mode 100644
index 00000000..47a2756c
--- /dev/null
+++ b/microkernel/mach/gnumach/projects.mdwn
@@ -0,0 +1,129 @@
+[[!meta copyright="Copyright © 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 page is a place to keep track of ideas about things that may be improved
+in GNU Mach, so that it'll evolve to a reliable microkernel for The Hurd, both
+in terms of stability and performance. If you find anything missing here,
+please feel free to add a entry with a short description.
+
+If you want to help with any of the task (thanks!), please send a mail to
+*[[mailing lists/bug-hurd]]* stating what task you wish to work on,
+so that no duplicate efforts end up.
+
+# Active Branches
+
+ * `gnumach-1-branch` is the main branch.
+
+ * `gnumach-1-branch-Xen-branch` is a branch created by Samuel Thibault for
+ working on a [[ports/Xen]] port.
+
+ * `gnumach-1-branch-gdb-branch` is a branch created by Michael Casadevall for
+ working on [[GDB_stubs]].
+
+
+# Task List
+
+ * [[Clean_up_the_code]]
+
+ * [[Open Issues|tag/open_issue_gnumach]]
+
+ * Update the core architecture and drivers
+
+ * Check what NetBSD, FreeBSD and Linux do with their host specific code
+ (i486, PPC, Sparc, ...). And if it might be wise to take that and use
+ it in GNU Mach. There is no need to worry about purely internal API's,
+ but the external ones shouldn't require any major changes.
+
+ * Write a list of all functions provided by the host dependant code in
+ GNU Mach that gets used in the non-host specific code (kernel, IPC and
+ VM).
+
+ * Once we have decided what the new internal API should look like, make a
+ list of the new API and the old one, and try to make things as
+ compatible as possible, but not at the expense of anything.
+
+ * Implement Migrating Threads
+
+ * Migrating Threads (MT) could improve IPC performance and making easier
+ the work of the scheduler. For more information, check
+ <http://www.usenix.org/publications/library/proceedings/sf94/ford.html>
+
+ * Improve the external pagers interface
+
+ * Implement read-ahead (huge I/O improvements expected).
+
+ * Making this interface synchronous should improve I/O performance
+ significantly, without (almost) any drawbacks (we also get some
+ advantage from MT's).
+
+ * Implement more paging eviction policies, so they fit better with usual
+ behaviour of the pagers.
+
+ * Implement resource accounting for external pagers.
+
+ * VM
+
+ * Put it on user level (?)
+
+ * Clean up the mess.
+
+ * Provide a fast way to read/write from/to a memory object.
+
+ * Simplify/normalise the code.
+
+ * Simplify the IPC Semantics
+
+ * There are a lot of things in GNU Mach's IPC that we don't need. Track
+ down those things, and get rid of them without requiring many changes
+ in the Hurd (the changes will affect MiG, but that is OK).
+
+ * Temporary mappings for Client-Server memory transfers
+
+ * Extend Mach's IPC to provide some kind of object which can represent a
+ range of memory that can temporarily be mapped into the servers address
+ space for sending/receiving data. This would allow us to avoid
+ excessive memory copies.
+
+ * Find a new way to work with unaligned memory.
+
+ * GDB remote debugging support
+
+ * Implement support for GDB debugging via serial line and/or network.
+ Maybe this can be done together with the host-specific work above.
+
+ See [[GDB_stubs]].
+
+ * Make it run as a [[UNIX]]/Linux executable.
+
+ * Neal:
+
+ <neal> here's a fun project: port the mach interface to Linux
+ <neal> (e.g., via kernel modifications)
+ <neal> or, to posix/glibc
+ <neal> (mmap, some minimal ptrace, etc.)
+
+ * From the [Hurd bits at
+ sourceforge.net](http://sourceforge.net/projects/hurd):
+ <http://hurd.cvs.sourceforge.net/hurd/gnumach-otop/>, started by John
+ Tobey. Last time touched in 2003. Status completely unknown.
+
+ * [README](http://hurd.cvs.sourceforge.net/hurd/gnumach-otop/README?view=markup)
+
+
+# Wish List
+
+ * Interface for userspace non-critical drivers.
+
+ * Sound Support
+
+ * WLAN support (ipw2200) with WEP/WPA
+
+ * ACPI support
diff --git a/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn b/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
new file mode 100644
index 00000000..e865e61a
--- /dev/null
+++ b/microkernel/mach/gnumach/projects/clean_up_the_code.mdwn
@@ -0,0 +1,121 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# Restructure the tree in a sane way
+
+Merge `linux/src` and `linux/dev`. But only if using a sane RCS, so leave it
+as-is for now. Also, a bunch of (header) files from there may probably be
+discarded.
+
+
+# Remove dead files from the GNU Mach source tree
+
+For *exported* files (via `make install`), the plan is to first stick some
+`#error This file is scheduled for removal. Write to <bug-hurd@gnu.org> if you
+have a reason to have it kept available.` into them, and then actually remove
+them after some months.
+
+For some of the internal header files (containing function prototypes and the
+like), it might actually be useful to use them. (And then get rid of a bunch
+of `extern ...` statements in other files.)
+
+This following list was assembled by putting such a `#error ...` line into each
+of the `gnumach-1-branch`'s header files (exported and internal; save the
+`linux/` ones (only internal) for simplicity), and then trying to build GNU
+Mach until this would succeed again (by removing offending `#error ...`s), and
+afterwards using the set of exported files for building a cross toolchain
+(again still removing offending `#error ...`s). A very crude and imprecise
+method.
+
+So, additionally to the list given below, there may actually be a bunch of
+further files (also exported ones) that serve no real value, but are being
+`#include`d through one way or another.
+
+* [[!source_gnumach-1-branch ddb/db_expr.h]]
+
+ Currently used, but copyright violation? Rewrite?
+
+* [[!source_gnumach-1-branch ddb/db_print.h]]
+
+ Copyright violation? Currently unused, but could be used in principle (or
+ be rewritten, to avoid the copyright oddity).
+
+* [[!source_gnumach-1-branch ddb/tr.h]]
+
+ Copyright violation. Unused. Remove.
+
+* [[!source_gnumach-1-branch device/dev_master.h]]
+
+ Might be usable for SMP? Remove otherwise.
+
+* [[!source_gnumach-1-branch i386/i386/kttd_machdep.h]]
+
+* [[!source_gnumach-1-branch i386/i386/sched_param.h]]
+
+* [[!source_gnumach-1-branch i386/include/mach/i386/cthreads.h]]
+
+ Was probably once exported, but is no longer.
+
+* [[!source_gnumach-1-branch i386/include/mach/i386/ioccom.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/device/audio_status.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/device/tape_status.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/alert.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/boot.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/macro_help.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/multiboot.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/profil.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/profilparam.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach/exec/a.out.h]]
+
+ Exported.
+
+* [[!source_gnumach-1-branch include/mach_debug/pc_info.h]]
+
+ Currently not exported, but was probably once meant to be.
+
+* [[!source_gnumach-1-branch kern/act.h]]
+
+* [[!source_gnumach-1-branch kern/refcount.h]]
+
+* [[!source_gnumach-1-branch kern/shuttle.h]]
+
+
+# Remove dead functions, variables, etc. from source files
+
+
+# Rewrite ugly code
diff --git a/microkernel/mach/gnumach/projects/gdb_stubs.mdwn b/microkernel/mach/gnumach/projects/gdb_stubs.mdwn
new file mode 100644
index 00000000..ef1b4909
--- /dev/null
+++ b/microkernel/mach/gnumach/projects/gdb_stubs.mdwn
@@ -0,0 +1,13 @@
+[[!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-04/msg00103.html>
+
+ * [ChangeLog.gdb](http://cvs.savannah.gnu.org/viewvc/gnumach/ChangeLog.gdb?root=hurd&view=markup&pathrev=gnumach-1-branch-gdb-branch)
diff --git a/microkernel/mach/gnumach/reference_manual.mdwn b/microkernel/mach/gnumach/reference_manual.mdwn
new file mode 100644
index 00000000..95d11517
--- /dev/null
+++ b/microkernel/mach/gnumach/reference_manual.mdwn
@@ -0,0 +1,26 @@
+[[!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
+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 GNU Mach Reference Manual* documents the architecture, the usage and the
+programming of the GNU Mach microkernel. At the moment, the manual documents
+the interface completely, but is not very useful as a tutorial or introduction
+into the Mach architecture.
+
+ * [HTML version](http://www.gnu.org/software/hurd/gnumach-doc/index.html)
+ for browsing online,
+ * [PostScript
+ version](http://www.gnu.org/software/hurd/gnumach-doc/mach.ps) [around
+ 900KiB],
+ * [gzipped PostScript
+ version](http://www.gnu.org/software/hurd/gnumach-doc/mach.ps.gz)
+ [around 300KiB],
+ * [PDF version](http://www.gnu.org/software/hurd/gnumach-doc/mach.pdf)
+ [around 700KiB].
diff --git a/microkernel/mach/history.mdwn b/microkernel/mach/history.mdwn
new file mode 100644
index 00000000..5a3608cd
--- /dev/null
+++ b/microkernel/mach/history.mdwn
@@ -0,0 +1,60 @@
+# <a name="Early_beginnings"> Early beginnings </a>
+
+Mach has quite a history. Everything actually started at the University of Rochester in 1975. It was invented to demonstrate how operating systems could be built using a modular design where processes communicated using message passing, even across networks. The system was called the Rochester Intelligent Gateway and ran on a 16 bit mini computer called Eclipse from Data General.
+
+One of the engineers behind the project was Richard Rashid. In 1979 he moved his socks to Carnegie Mellon University to continue his research on message passing operating systems. The result emerged in 1981 and was called Accent.
+
+Accent kept running at CMU until 1984 but was by then being run over by
+[[UNIX]]. Rashid then decided to use an early embrace strategy and started
+designing the third generation OS project called Mach. By making Mach
+compatible with UNIX, Mach was supposed to gain a lot of available UNIX
+software.
+
+Mach was a vast improvement over Accent. It incorporated parts commonly used today, such as: threads, better IPC, multiprocessor support and an advanced VM system.
+
+At the time of Mach's conception, DARPA was seeking a multiprocessor (MP) capable OS and found Mach. With money from the Dept. of Defense, 4.2BSD support was added, to bloat the kernel; but most of all, to add complete UNIX compatibility.
+
+Now enters the UNIX war.
+
+UNIX was owned by AT&amp;T which controlled the market almost completely. Industry giants such as IBM, DEC and H got together and formed the Open Software Foundation, OSF. In an effort to conquer market share, OSF took the Mach 2.5 release and made it the OSF/1 system. By that time Mach contained a lot of BSD and AT&amp;T code but the OSF hoped that it would be able to take control of the rudder with OSF/1. What happens after that is a story better told by someone else ...
+
+In 1989 CMU decided to revamp Mach. They removed the bloat and put the UNIX emulation in user space making the Mach 3.0 release -- the pure Mach release.
+
+Later on support for Mach 3.0 at CMU vaned and the project was taken over by the University of Utah. The FLUX group started the Mach4 project. An ambitious project which included complete rewrite of the x86 support code and integration of Linux 2.0 drivers. That's right, Linux awoke around 1991 so this makes it apx. 1994.
+
+# <a name="GNU_Mach_and_OSKit_Mach"> </a> GNU Mach and OSKit-Mach
+
+GNU Mach is based on Mach4 from University of Utah, which in turn is based on Mach3 from Carnegie-Mellon University. The last release of Mach4 was the [UK22 release](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html).
+
+The OSKit was what evolved when the Mach4 project at University of Utah was dropped. The people involved wanted to reuse the work they had put into Mach in the form of hardware support and drivers.
+
+The oskit-mach version of GNU Mach was presented in November 1999 by Roland McGrath. <http://mail.gnu.org/pipermail/bug-hurd/1999-November/003554.html> The purpose of the port was to get better hardware support through new drivers and platform code available in the OSKit.
+
+On May 27 2002, after the Gnumach 1.3 release, Roland McGrath merged OSKit-Mach onto the HEAD of CVS making it the Gnumach 2.x mainline.
+
+Meanwhile, OSKit became unmaintained, thus posing more of a burden on than being helpful in GNU Mach development. Consequently, as of March 2006, nobody is working on OSKit Mach, or trying to use it.
+
+In 2005 Gianluca Guida started a different attempt to use the osenv interface with minimal changes to GNU Mach 1.x, thus allowing use of the generic driver interface while importing as little of the umaintained OSKit code as possible. However, there turned out to be serious problems with OSKit, so this attempt was abandoned as well.
+
+Today, GNU Mach development focuses on the 1.x branch again -- see also this
+list of [[gnumach/projects]].
+
+# <a name="Status_of_the_project"> Status of the project </a>
+
+GNU Mach 1.3 was released in May 2002, and features advanced boot script support, support for large disks (&gt;= 10GB) and an improved console.
+
+GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions (plus some backports of more recent drivers), so most newer hardware is not supported.
+
+As of March 2006 a GNU Mach 1.4 release is planned, focusing on code cleanup. It is meant to serve as a starting point for more radical future changes while maintaining 1.4.x as a stable branch.
+
+----
+
+Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
+
+-- [[Main/JoachimNilsson]] - 24 Oct 2002
+
+Apple's Macintosh OSX (OS 10.x) is based on [Darwin](http://www.apple.com/macosx/technologies/darwin.html). _"Darwin uses a monolithic kernel based on [[TWiki/FreeBSD]] 4.4 and the OSF/mk Mach 3."_ Darwin also has a [Kernel Programming](http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/About/index.html) Book.
+
+-- [[Main/GrantBow]] - 22 Oct 2002
diff --git a/microkernel/mach/ipc.mdwn b/microkernel/mach/ipc.mdwn
new file mode 100644
index 00000000..aaf3ba23
--- /dev/null
+++ b/microkernel/mach/ipc.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[General_information|/ipc]] about IPC.
+
+An IPC is sent by invoking a [[port]]. <!-- Isn't this wording a bit strange?
+``IPC is sent'' --tschwinge -->
+
+[[Sequence_numbering]].
+
+[The Unofficial GNU Mach IPC beginner's guide](http://www.nongnu.org/hurdextras/ipc_guide/ipc_guide.html)
+
+# See Also
+
+* [[RPC]]
diff --git a/microkernel/mach/ipc/sequence_numbering.mdwn b/microkernel/mach/ipc/sequence_numbering.mdwn
new file mode 100644
index 00000000..eb94d662
--- /dev/null
+++ b/microkernel/mach/ipc/sequence_numbering.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Mach's [[IPC]] mechanism allows for getting access to a message's sequence
+number.
+
+This can be used for serializing requests in a multithreaded environment.
+
+* [GNU Mach Reference Manual: 4.2.6 Message
+ Receive](http://www.gnu.org/software/hurd/gnumach-doc/Message-Receive.html)
+* [GNU Mach Reference Manual: 4.3.6 Receive
+ Rights](http://www.gnu.org/software/hurd/gnumach-doc/Receive-Rights.html)
diff --git a/microkernel/mach/mig.mdwn b/microkernel/mach/mig.mdwn
new file mode 100644
index 00000000..4275a4b4
--- /dev/null
+++ b/microkernel/mach/mig.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 2001, 2002, 2003, 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 Mach Interface Generator (MIG) is an [[IDL]] compiler. Based on an
+interface definition, it creates stubs to [[invoke]] object methods
+and to demultiplex incoming messages. These stubs conveniently hide
+the details of Mach's [[IPC]] machinery and make it easy to implement
+and use Mach [[interface]]s as [[remote_procedure_calls_(RPC)|rpc]].
+
+* [[Documentation]]
+
+# Implementations
+
+ * [[GNU_MIG]]
diff --git a/microkernel/mach/mig/documentation.mdwn b/microkernel/mach/mig/documentation.mdwn
new file mode 100644
index 00000000..be762960
--- /dev/null
+++ b/microkernel/mach/mig/documentation.mdwn
@@ -0,0 +1,84 @@
+[[!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 small collection of links to external documents describing the *Mach
+Interface Generator* used by GNU Mach.
+
+
+# MIG and C Thread Programming
+
+A tutorial which demonstrates the use of the C Threads library primitives in
+writing a multithreaded program and the use of the Mach Interface Generator
+(MIG) to generate remote procedure calls for interprocess communication. Like
+its companion tutorial, it is based on the Mach 2.5 system. However, the
+concepts are applicable to Mach 3.0 user level programming.
+
+Linda R. Walmer and Mary R. Thompson. *A Programmer's Guide to the Mach User
+Environment*. [PostScript
+](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.ps),
+[Doc](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.doc).
+February 1988. School of Computer Science, Carnegie Mellon University.
+
+An ftp directory containing the [mig programming
+examples](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig_example)
+for this tutorial.
+
+Slides to Rich Drave's talk on MIG, on November 21, 1991:
+[PostScript](http://www.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/root.ps),
+[TeX](http://www.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/slides.tex).
+
+
+# Roots
+
+Mig is an implementation of a subset of the Matchmaker **language**.
+
+"Matchmaker is a language for specifying and automating the generation of
+multilingual interprocess communication interfaces. MIG is an interim
+implementation of a subset of the Matchmaker language that generates C and C++
+remote procedure call interfaces for interprocess communication between Mach
+tasks."
+
+Richard P. Draves, Michael B. Jones, Mary R. Thompson, *MIG - THE MACH
+INTERFACE GENERATOR*.
+[ps](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps),
+[doc](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.doc).
+November 1989. Department of Computer Science, Carnegie-Mellon University.
+
+
+# Related Work
+
+See the citations about [Mach and matchmaker: kernel and language support for
+objectoriented distributed
+systems](http://citeseer.ist.psu.edu/context/93073/0). "M. B. Jones and
+R. F. Rashid, *Mach and matchmaker: kernel and language support for
+objectoriented distributed systems*, Proceedings of the Conference on
+Object-Oriented Programming Systems, Languages, and Applications, October 1986,
+pp. 67--77."
+
+
+# Further Relevant Documentation
+
+ * The [[GNU_Mach_Reference_Manual|gnumach/reference_manual]], espacially
+ [Chapter 4, Inter Process
+ Communication](http://www.gnu.org/software/hurd/gnumach-doc/Inter-Process-Communication.html).
+
+ * OSF's [Server Writer's Guide (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_writer.ps)
+ [Server Writer's Guide (pdf)](http://shakthimaan.com/downloads/hurd/server_writer.pdf)
+
+ * OSF's [Server Writer's Interfaces (ps)](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/server_interface.ps)
+ [Server Writer's Interfaces (pdf)](http://shakthimaan.com/downloads/hurd/server_interface.pdf)
+
+ * Flags:
+
+ * [[dealloc_and_dealloc[&#93;|dealloc]]
+ * [[ServerCopy]]
+
+ * MIG *in action*: [[hurd/io_path]].
diff --git a/microkernel/mach/mig/documentation/dealloc.mdwn b/microkernel/mach/mig/documentation/dealloc.mdwn
new file mode 100644
index 00000000..b627b532
--- /dev/null
+++ b/microkernel/mach/mig/documentation/dealloc.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+The [[GNU_Mach_Reference_Manual|gnumach/reference_manual]] describes the
+`dealloc` flag in [Chapter 4.2.4,
+Memory](http://www.gnu.org/software/hurd/gnumach-doc/Memory.html).
+
+What exactly is `dealloc[]` (`hurd/fs.defs:dir_readdir`)?
diff --git a/microkernel/mach/mig/documentation/servercopy.mdwn b/microkernel/mach/mig/documentation/servercopy.mdwn
new file mode 100644
index 00000000..8abf9b07
--- /dev/null
+++ b/microkernel/mach/mig/documentation/servercopy.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+For IN args. If set it...
+
+ * removes the `__mig_deallocate` for OOL IN data, which is usually done after
+ the implementation has been called;
+
+ * adds a `boolean_t NAMESCopy` for the IN arg `NAME` to indicate whether the
+ data will persist nevertheless (OOL case) or has to be copied by the
+ implementation (inline case).
+
+Cf., [[translator/exec]] server, `exec.defs`.
+
+I.e., the IN args' memory region (OOL case) persists after the implementation
+has returned.
diff --git a/microkernel/mach/mig/gnu_mig.mdwn b/microkernel/mach/mig/gnu_mig.mdwn
new file mode 100644
index 00000000..1bcbd545
--- /dev/null
+++ b/microkernel/mach/mig/gnu_mig.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2001, 2006, 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]]."]]"""]]
+
+GNU MIG is the GNU distribution of the
+[[Mach_3.0_interface_generator_*MIG*|mig]], as maintained by the GNU Hurd
+developers for the GNU project.
+
+You need this tool to compile the GNU Mach and GNU Hurd distributions, and to
+compile the GNU C library for the Hurd. Also, you will need it for other
+software in the GNU system that uses Mach-based
+[[inter-process_communication|ipc]].
+
+GNU MIG is fully compatible with [[OSF_MIG|mig]].
+
+ * [[Building]] - building (and obtaining) GNU MIG
+ * [[Open Issues|tag/open_issue_mig]]
diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn
new file mode 100644
index 00000000..f92f7dbe
--- /dev/null
+++ b/microkernel/mach/mig/gnu_mig/building.mdwn
@@ -0,0 +1,73 @@
+# <a name="Building_the_Mach_Interface_Gene"> Building the Mach Interface Generator from Source </a>
+
+If you want to build the Mach Interface Generator yourself instead of just using a pre-built package, follow these instructions.
+
+## <a name="Getting_the_Source_Code"> Getting the Source Code </a>
+
+You can chose between getting the [sources from the developers'
+RCS](http://savannah.gnu.org/cvs/?group=hurd):
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co mig
+
+... or (if you are working on a Debian system) the ones that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig):
+
+ $ apt-get source mig
+
+Please see the Debian [[hurd/running/debian/FAQ]] before using _apt-get source_.
+
+The unpacked source tree is around 1 MiB, and the build tree also is around 1 MiB.
+
+## <a name="Preparing_for_the_Build"> Preparing for the Build </a>
+
+### <a name="_on_Debian_systems"> ... on Debian systems </a>
+
+Building the Mach Interface Generator requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source mig package:
+
+ # apt-get install build-essential fakeroot
+ # apt-get build-dep mig
+
+### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a>
+
+Building the Mach Interface Generator requires a C compiler, a standard C library (with corresponding header files) and your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make.
+
+Additionally, you need to have GNU Mach's header files installed. See
+[[mach/gnumach/building]] about how to do that, then come back here.
+
+## <a name="Building_and_Installing"> Building and Installing </a>
+
+### <a name="_a_deb_file"> ... a _.deb_ file </a>
+
+Change into the directory with the downloaded / unpacked MIG sources (_mig-1.3.1.99_):
+
+ $ cd mig-1.3.1.99
+
+Start the build process:
+
+ $ dpkg-buildpackage -us -uc -b -rfakeroot
+
+You can then install / distribute the _.deb_ file which will drop out one directory above the current one.
+
+### <a name="_TODO_"> [TODO] </a>
+
+The Mach Interface Generator has to be built in a separate directory:
+
+ $ mkdir mig-build
+ $ cd mig-build
+
+Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (\_[...]/mig) and configure it:
+
+ $ GNU=~/gnu
+ $ TARGET_CPPFLAGS=-I"$GNU"/include [...]/mig/configure --prefix="$GNU"
+
+Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example:
+
+ $ make all install
+
+To make your _mig_ binary easily available, you should append something like the following to e.g. your _~/.bash\_profile_:
+
+ PATH=~/gnu/bin:$PATH
+ export PATH
+
+If you already have e.g. _~/bin_ in your _$PATH_, you could also create a symbolic link:
+
+ $ ln -s ~/gnu/bin/mig ~/bin/
diff --git a/microkernel/mach/port.mdwn b/microkernel/mach/port.mdwn
new file mode 100644
index 00000000..af4a0c8d
--- /dev/null
+++ b/microkernel/mach/port.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Mach ports are [[capabilities|capability]].
+
+A Mach port is a kernel queue. Each port has associated with
+it a receive right and one or more send and send-once rights.
+A queue can hold a number of messages. Once the queue is full,
+the send blocks until their is space to enqueue the message
+(this is interruptible via a timeout mechanism).
+
+A receive right designates a queue and authorizes the holder to
+dequeue messages from the queue, and to create send and send-once
+rights.
+
+Send and send-once rights designate a queue and authorize the
+hold to enqueue messages (in the case of a send-once right,
+a single message). Enqueuing a message is equivalent to
+[[invoke|invoking]] a capability.
+
+Send and receive rights are named using local names. Each
+task has associated with it a port [[address_space]]. A ports
+are addressed via this table. Each task thus has its own
+private [[naming_context]] for ports.
+
+Ports can be [[delegate]]d in an [[IPC]] message. When the
+receiver dequeues the message, the right is made available
+to it.
+
+A [[thread]] can only block receiving on a single port. To work
+around this, the concept of a port set was introduced. A receive
+right can be added to (at most) one port set. When a thread
+receives from a port set, it dequeues from any of the ports that
+has a message available.
diff --git a/microkernel/mach/rpc.mdwn b/microkernel/mach/rpc.mdwn
new file mode 100644
index 00000000..72acfaa0
--- /dev/null
+++ b/microkernel/mach/rpc.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[General_information|/rpc]] about RPC.
+
+Uses Mach's [[IPC]] [[mechanism]].
+
+Stub code generated by [[MIG]].
diff --git a/microkernel/research.mdwn b/microkernel/research.mdwn
new file mode 100644
index 00000000..4eefe602
--- /dev/null
+++ b/microkernel/research.mdwn
@@ -0,0 +1,15 @@
+## <a name="Research"> Research </a>
+
+Listed here are references to academical research papers related to Micro Kernels.
+
+* [Networking Performance for Microkernels](http://citeseer.nj.nec.com/maeda92networking.html) (1992) -- An article by Chris Maeda and Brian N. Bershad discussing microkernel optimizations of an UDP driver.
+
+* [The Increasing Irrelevance of IPC Performance for Microkernel-Based Operating Systems](http://citeseer.nj.nec.com/bershad92increasing.html) (1992)
+
+* [Linux Device Driver Emulation in Mach](http://citeseer.nj.nec.com/goel96linux.html) (1996)
+
+* [Microkernels Meet Recursive Virtual Machines](http://citeseer.nj.nec.com/ford96microkernel.html) (1996)
+
+* [The Flux OS Toolkit: Reusable Components for OS Implementation](http://citeseer.nj.nec.com/ford97flux.html) (1997)
+
+* [The Flux OSKit: A Substrate for Kernel and Language Research](http://www.cs.utah.edu/flux/papers/oskit-sosp97.html) (1997)
diff --git a/microkernel/viengoos.mdwn b/microkernel/viengoos.mdwn
new file mode 100644
index 00000000..2b9fee03
--- /dev/null
+++ b/microkernel/viengoos.mdwn
@@ -0,0 +1,34 @@
+[[!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]]."]]"""]]
+
+*viengoos* is a new kernel currently being designed and written by Neal
+Walfield.
+
+The source can be downloaded from the *viengoos.git* repository, cf.
+<http://git.savannah.gnu.org/gitweb/?p=hurd/viengoos.git>. You can
+check it out using, for example:
+
+ git clone git://git.sv.gnu.org/hurd/viengoos.git
+
+Then update to viengoos-on-bare-metal
+
+ cd viengoos
+ git checkout -b viengoos-on-bare-metal origin/viengoos-on-bare-metal
+
+viengoos-on-bare-metal is the current development focus.
+
+Discussion should be held on the [[mailing lists/l4-hurd]] mailing list.
+
+ * [[Building]]
+ * Running
+ * [[QEMU]]
+ * [[Hardware]]
+ * [[Documentation]]
+ * [[Projects]]
diff --git a/microkernel/viengoos/building.mdwn b/microkernel/viengoos/building.mdwn
new file mode 100644
index 00000000..45111c35
--- /dev/null
+++ b/microkernel/viengoos/building.mdwn
@@ -0,0 +1,100 @@
+[[!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]]."]]"""]]
+
+Check out Viengoos and switch to the viengoos-on-bare-metal branch
+(all development is currently done on this branch and it will
+eventually be merged into the master branch):
+
+ $ git clone git://git.savannah.gnu.org/hurd/viengoos.git
+ $ cd viengoos
+ $ git checkout -b viengoos-on-bare-metal origin/viengoos-on-bare-metal
+
+Generate the autoconf environment (note that --force is not specified
+as we have our own version of config.guess and config.sub):
+
+ $ autoreconf -i
+
+Configure a build directory:
+
+ $ mkdir build
+ $ cd build
+ $ ../configure --host=x86_64-pc-viengoos-gnu --with-newlib
+
+Now, build Viengoos. Running make the first time will automatically
+fetch binutils and gcc from the Internet and build a cross compiler.
+Running make again will build the Viengoos proper. Again, the build
+process with fetch several tarballs including Newlib, the Boehm GC and
+Sqlite.
+
+ $ make
+ ...
+ The cross compiler is now set-up. Re-run `make' and proceed as usual.
+ make[2]: Leaving directory `.../viengoos/build'
+ make[1]: Leaving directory `.../viengoos/build'
+ $ make
+
+# Booting Using QEMU
+
+To boot Viengoos, use Grub 2. You cannot use Grub Legacy: Viengoos is
+an ELF64 executable, which Grub Legacy does not support.
+
+First, check out Grub 2 from svn:
+
+ $ svn co svn://svn.savannah.gnu.org/grub/trunk/grub2
+ $ cd grub2
+
+Before building Grub 2, you should apply the following patch, which
+makes it easy to tell Grub to load a specific grub.cfg at start up
+([details](http://lists.gnu.org/archive/html/grub-devel/2009-01/msg00099.html)).
+
+ $ wget http://www.gnu.org/software/hurd/microkernel/viengoos/grub2-config.diff -O /dev/stdout | patch -p0
+
+Next, build Grub 2:
+
+ $ ./autogen.sh
+ $ mkdir build
+ $ cd build
+ $ ../configure --prefix=`pwd`/../install
+ $ make && make install
+
+Create the boot disk:
+
+ $ cd ../install
+ $ bin/grub-mkrescue boot.img --configfile="(hd0,1)/grub.cfg" --image-type=floppy --modules='help reboot serial multiboot pc configfile normal boot fat'
+
+Now, create /viengoos and link viengoos and hieronymus into that
+directory:
+
+ $ mkdir /viengoos
+ $ cd /viengoos
+ $ ln -s ~/viengoos/build/viengoos/viengoos.stripped viengoos
+ $ ln -s ~/viengoos/build/hieronymus/hieronymus.stripped hieronymus
+
+Also, create a grub.cfg file in /viengoos/grub.cfg:
+
+ set timeout=1
+ set default=0
+ set root=hd0,1
+
+ menuentry "Viengoos" {
+ multiboot /viengoos -D 3 -o serial
+ module /hieronymus
+ }
+
+NB: If you edit grub.cfg and a backup file called grub.cfg~ is
+created, qemu will use grub.cfg~ instead of grub.cfg! Thus, after
+editing grub.cfg, be sure to delete any grub.cfg~ file!
+
+Finally, boot!
+
+ $ qemu-system-x86_64 -serial stdio -fda ~/grub2/install/boot.img -hda fat:/viengoos -boot a
+
+By default, Hieronymus is configured to load ruth, a test suite. Ruth
+can take a long time to complete.
diff --git a/microkernel/viengoos/documentation.mdwn b/microkernel/viengoos/documentation.mdwn
new file mode 100644
index 00000000..52ff7a48
--- /dev/null
+++ b/microkernel/viengoos/documentation.mdwn
@@ -0,0 +1,56 @@
+[[!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 most up-to-date documentation is in the source code itself, see in
+particular the header files in the hurd directory.
+
+There is a started but as-of-yet incomplete manual in the doc
+directory, which documents the Viengoos API and the Hurd API. A
+version of that is available [[here|reference-guide.pdf]]. It is
+not, however, automatically regenerated, and thus may not be up to
+date.
+
+Academic Papers:
+
+ * [Viengoos: A Framework for Stakeholder-Directed Resource
+ Allocation](http://walfield.org/papers/2009-walfield-viengoos-a-framework-for-stakeholder-directed-resource-allocation.pdf).
+ By Neal H. Walfield. Submitted to EuroSys 2009.
+
+ General-purpose operating systems not only fail to provide adaptive
+ applications the information they need to intelligently adapt, but
+ also schedule resources in such a way that were applications to
+ aggressively adapt, resources would be inappropriately scheduled. The
+ problem is that these systems use demand as the primary indicator of
+ utility, which is a poor indicator of utility for adaptive
+ applications.
+
+ We present a resource management framework appropriate for traditional
+ as well as adaptive applications. The primary difference from current
+ schedulers is the use of stakeholder preferences in addition to
+ demand. We also show how to revoke memory, compute the amount of
+ memory available to each principal, and account shared
+ memory. Finally, we introduce a prototype system, Viengoos, and
+ present some benchmarks that demonstrate that it can efficiently
+ support multiple aggressively adaptive applications simultaneously.
+
+ * [Improving Usability via Access Decomposition and Policy
+ Refinement](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf).
+ By Neal H. Walfield and Marcus Brinkmann. Technical report
+ (submitted to HotOS 2007).
+
+ Commodity operating systems fail to meet the security, resource
+ management and integration expectations of users. We propose a unified
+ solution based on a capability framework as it supports fine grained
+ objects, straightforward access propagation and virtualizable
+ interfaces and explore how to improve resource use via access
+ decomposition and policy refinement with minimum interposition. We
+ argue that only a small static number of scheduling policies are
+ needed in practice and advocate hierarchical policy specification and
+ central realization.
diff --git a/microkernel/viengoos/documentation/reference-guide.pdf b/microkernel/viengoos/documentation/reference-guide.pdf
new file mode 100644
index 00000000..6fbea23b
--- /dev/null
+++ b/microkernel/viengoos/documentation/reference-guide.pdf
Binary files differ
diff --git a/microkernel/viengoos/grub2-config.diff b/microkernel/viengoos/grub2-config.diff
new file mode 100644
index 00000000..e4b1ef40
--- /dev/null
+++ b/microkernel/viengoos/grub2-config.diff
@@ -0,0 +1,47 @@
+2009-01-17 Neal H. Walfield <address@hidden>
+
+ * util/i386/pc/grub-mkrescue.in: Add new option --configfile. If
+ not the set and not the empty string, load it from the generated
+ config file on boot.
+
+Index: util/i386/pc/grub-mkrescue.in
+===================================================================
+--- util/i386/pc/grub-mkrescue.in (revision 2148)
++++ util/i386/pc/grub-mkrescue.in (working copy)
+@@ -49,6 +49,7 @@
+ --image-type=TYPE select floppy or cdrom (default)
+ --emulation=TYPE select El Torito boot emulation type floppy
+ or none (default) (cdrom only)
++ --configfile=FILE config file to load (default: none)
+
+ grub-mkimage generates a bootable rescue image of the specified type.
+
+@@ -93,6 +94,9 @@
+ echo "Unknown emulation type \`$emulation'" 1>&2
+ exit 1 ;;
+ esac ;;
++ --configfile=*)
++ configfile=`echo "$option" | sed 's/--configfile=//'`
++ ;;
+ -*)
+ echo "Unrecognized option \`$option'" 1>&2
+ usage
+@@ -121,9 +125,15 @@
+ ${aux_dir}/boot/grub/
+
+ modules="biosdisk `cat ${input_dir}/partmap.lst` ${modules}"
+-for i in ${modules} ; do
+- echo "insmod $i"
+-done > ${aux_dir}/boot/grub/grub.cfg
++{
++ for i in ${modules} ; do
++ echo "insmod $i"
++ done
++ if test x$configfile != x
++ then
++ echo "configfile $configfile"
++ fi
++} > ${aux_dir}/boot/grub/grub.cfg
+
+ for d in ${overlay}; do
+ echo "Overlaying $d"
diff --git a/microkernel/viengoos/hardware.mdwn b/microkernel/viengoos/hardware.mdwn
new file mode 100644
index 00000000..aff70604
--- /dev/null
+++ b/microkernel/viengoos/hardware.mdwn
@@ -0,0 +1,50 @@
+[[!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]]."]]"""]]
+
+I boot over the network using PXE.
+
+On my build machine, I have installed a tftpserver. Specifically, I use
+the one built into dnscache. In /tftpboot, I have symlinks to pistachio,
+sigma0, and the root of the build tree.
+
+My build machine boots using PXE. It gets an IP address, contacts
+my build machine and loads [grub2pxe](http://grub.enbug.org/PXEBOOT).
+Note that there is no need to use pxelinux; grub2 is a valid PXE
+executable. Further, grub2 uses the PXE interface for accessing the
+network, so if your hardware supports PXE, then you do not need to
+worry about a network driver. Here is how I build grub2 and the
+grub2 image:
+
+ cd ~/src
+ svn co svn://svn.savannah.gnu.org/grub/trunk/grub2
+ cd grub2
+ mkdir build
+ cd build
+ ../configure --prefix=$HOME/src/grub2/install && make && make install
+ cd ~/src/grub2/install
+ bin/grub-mkimage --output=core.img --prefix="(pxe)" pxe pxecmd help reboot serial multiboot pc configfile normal boot
+ cat lib/grub/i386-pc/pxeboot.img core.img > grub2pxe
+
+Here is my /tftpboot/grub.cfg, which sends output to the first
+[[serial_port]]:
+
+ # Timeout for menu
+ set timeout=1
+
+ # Set default boot entry as Entry 0
+ set default=0
+
+ menuentry "Viengoos" {
+ multiboot /viengoos/laden/laden -o serial -D
+ module /pistachio
+ module /sigma0
+ module /viengoos/viengoos/viengoos.stripped -D 3 -o serial
+ module /viengoos/hieronymus/hieronymus.stripped
+ }
diff --git a/microkernel/viengoos/projects.mdwn b/microkernel/viengoos/projects.mdwn
new file mode 100644
index 00000000..971206bb
--- /dev/null
+++ b/microkernel/viengoos/projects.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+Some projects:
+
+[[!inline
+pages="microkernel/viengoos/projects/* and !microkernel/viengoos/projects/*/*"
+show=0
+feeds=no
+actions=yes]]
diff --git a/microkernel/viengoos/projects/address_space_management.mdwn b/microkernel/viengoos/projects/address_space_management.mdwn
new file mode 100644
index 00000000..2d00e4f4
--- /dev/null
+++ b/microkernel/viengoos/projects/address_space_management.mdwn
@@ -0,0 +1,40 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_viengoos]]
+
+In Viengoos, a process's address space is managed entirely in user
+space by the process itself. This creates two interesting problems:
+dealing with circular dependencies resulting from having to manage the
+address space data structures and accessing and manipulating the
+address space data structures.
+
+First, managing the address space requires resources, which in turn
+may require address space (e.g., data structures require memory which
+require address space, etc.). We currently break this circular
+dependency by trying to keep enough resources in reserve that
+allocating resources for managing the address space never requires
+more resources than are minimally in the reserve. The reserve is
+currently chosen in an ad-hoc fashion. It would be nice to determine
+it more systematically. Moreover, it would be nice to reduce the
+cases in which a reserve is required. This may be possible by
+restructuring some of the code.
+
+Second, the address space data structures are protected using a single
+lock. This not only means that only a single thread can be updating
+the address space at a time, but that if a thread faults and the
+address space is locked, then the process dead locks! It should be
+possible to at least walk the address space using lock-free
+techniques. This requires updating the address space construction
+code such that all addresses remain valid during any given
+manipulation. Second, to avoid the mentioned dead-lock problem, we
+try to ensure that accessing the data structures will never result in
+a fault. This means protecting the stack. An alternative approach is
+to use undo buffers.
diff --git a/microkernel/viengoos/projects/capability-aware_compiler.mdwn b/microkernel/viengoos/projects/capability-aware_compiler.mdwn
new file mode 100644
index 00000000..b4e465d9
--- /dev/null
+++ b/microkernel/viengoos/projects/capability-aware_compiler.mdwn
@@ -0,0 +1,16 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_viengoos]]
+
+Modify, e.g., gcc to understand capability semantics and teach gcc how
+to optimize it, e.g., how to batch and combine calls.
+
+This project is deemed suitable for a thesis.
diff --git a/microkernel/viengoos/projects/new_hash_function.mdwn b/microkernel/viengoos/projects/new_hash_function.mdwn
new file mode 100644
index 00000000..d0374720
--- /dev/null
+++ b/microkernel/viengoos/projects/new_hash_function.mdwn
@@ -0,0 +1,22 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!tag open_issue_viengoos]]
+
+The current hash function in libhurd-ihash results in a lot of
+collisions when the hash table is 80% full. To overcome this, we keep
+hash tables at most 30% full. This represents a fair amount of
+overhead. Find a better algorithm. There can either be one that is
+appropriate in the general case or one that works well in a relevant,
+specific case, e.g., viengoos/object.c uses a hash to find the object
+corresponding to a frame, which is keyed on its physical address.
+
+Note that this applies to the Hurd's [[hurd/libihash]], too.
diff --git a/microkernel/viengoos/serial_port.mdwn b/microkernel/viengoos/serial_port.mdwn
new file mode 100644
index 00000000..14efcb9f
--- /dev/null
+++ b/microkernel/viengoos/serial_port.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+Viengoos can be configured to send output to the serial port (in fact,
+this is the only configuration that I use). To talk to the serial
+port, I use ser2net, which provides a telnet interface to the serial
+port. Be sure to edit /etc/ser2net.conf to use 115200 bps, which
+Viengoos uses by default.
diff --git a/naming_context.mdwn b/naming_context.mdwn
new file mode 100644
index 00000000..3a0751c0
--- /dev/null
+++ b/naming_context.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Names are bindings to objects, however, to find an object
+given a name, the relation must be looked up in a
+naming context. A problem with using string as names is
+that it is very easy to lose track of the correct naming
+context. This is one of the problem with [[PassiveTranslators]]:
+a passive translator is a string. When the node is accessed
+on which the passive translator is set and there is no active
+translator, then an active translator is started using the
+passive translator setting. The active translator is started
+by the file system, not the program instance that set the
+passive translator. The passive translator settings are
+therefore resolved in the file system's naming context, which
+may be different from that of the program instance that set the
+passive translator setting.
diff --git a/news.mdwn b/news.mdwn
new file mode 100644
index 00000000..4511047c
--- /dev/null
+++ b/news.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!inline
+pages="news/* and !*/discussion"
+show=0
+feeds=no
+sort=title
+reverse=yes
+actions=yes]]
diff --git a/news/2002-01-13.mdwn b/news/2002-01-13.mdwn
new file mode 100644
index 00000000..920c2593
--- /dev/null
+++ b/news/2002-01-13.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+An
+<A HREF="http://www.pl-berichte.de/berichte/brinkmann.html">interview
+with Marcus Brinkmann</A> was published by <A
+HREF="http://pro-linux.de/">Pro-Linux</A> (the interview is in
+German).
diff --git a/news/2002-01-19.mdwn b/news/2002-01-19.mdwn
new file mode 100644
index 00000000..c6923220
--- /dev/null
+++ b/news/2002-01-19.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2002, 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 Toronto Hurd User Group meets: The University of Waterloo
+Computer Science Club will be hosting a talk on the Hurd and the
+Debian GNU/Hurd operating system. There will also be a gpg keysigning
+and installfest for GNU/Hurd following the talk. All are welcome, and
+gpg keys are not required.
+<P>
+Date: 26 Jan 2002
+<P>
+Time: 1400 (2pm EST)
+<P>
+Place: University of Waterloo, Math and Computers building, room 3001
+(comfy lounge).
+<P>
+More information about this event at
+<A HREF="mailto:thug@gnu.org"><EM>thug@gnu.org</EM></A>
diff --git a/news/2002-02-18.mdwn b/news/2002-02-18.mdwn
new file mode 100644
index 00000000..e550a8f6
--- /dev/null
+++ b/news/2002-02-18.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Pro-Linux has published a <A
+HREF="http://www.pl-berichte.de/berichte/hurd/hurd-status/">GNU/Hurd
+status report</A> (in German). They will infrequently publish updates
+in the future.
diff --git a/news/2002-03-03.mdwn b/news/2002-03-03.mdwn
new file mode 100644
index 00000000..8b60ed9b
--- /dev/null
+++ b/news/2002-03-03.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+There is a new mailing list called <A
+HREF="http://mail.gnu.org/mailman/listinfo/hurd-devel-readers">
+Hurd-devel-readers</A>. It is the read-only version of Hurd-devel.
+<P>
+Hurd-devel is a mailing list for detailed discussions
+of design and implementation issues in the GNU&nbsp;Hurd; it is an internal
+low-volume list restricted to the core developers of the Hurd. While
+the <A HREF="http://lists.gnu.org/archive/html/hurd-devel/">web-based
+archive of Hurd-devel</A> has always been public, the new mailing list
+Hurd-devel-readers provides a convenient way to follow
+the discussion of the Hurd experts.
+<P>
+If you are a recipient of Hurd-devel-readers and want
+to follow up on the discussion, please reply to the
+Bug-hurd mailing list.
diff --git a/news/2002-03-08.mdwn b/news/2002-03-08.mdwn
new file mode 100644
index 00000000..f64f04f1
--- /dev/null
+++ b/news/2002-03-08.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+We are pleased to announce version 1.3 of the GNU distribution of the
+Mach 3.0 interface generator `MIG'. It may be found in the file
+<SAMP><A HREF="http://ftp.gnu.org/gnu/mig/mig-1.3.tar.gz">http://ftp.gnu.org/gnu/mig/mig-1.3.tar.gz</A></SAMP> (about 145 KB compressed).
+<P>
+Diffs from version 1.2 are in <SAMP><A HREF="http://ftp.gnu.org/gnu/mig/mig-1.2-1.3.diff.gz">http://ftp.gnu.org/gnu/mig/mig-1.2-1.3.diff.gz</A></SAMP>
+(about 6 KB compressed, 15 KB uncompressed). Relative to version 1.2,
+version 1.3 contains only some minor fixes.
+<P>
+You need this tool to compile the GNU&nbsp;Mach and Hurd distributions, and
+to compile GNU libc for the Hurd.
+<P>
+Bug reports relating to this distribution should be sent to
+<A HREF="mailto:bug-hurd@gnu.org">bug-hurd@gnu.org</A>. Requests for assistance should be made on
+<A HREF="mailto:help-hurd@gnu.org">help-hurd@gnu.org</A>.
+<P>
+The md5sum checksum for this distibution is:
+<P>
+45c2b7456727d81dbd75f7152f8136fd mig-1.3.tar.gz
diff --git a/news/2002-03-23.mdwn b/news/2002-03-23.mdwn
new file mode 100644
index 00000000..f3c12633
--- /dev/null
+++ b/news/2002-03-23.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Added the [[hurd/Hurd_Hacking_Guide]] to the documentation section. Thanks to
+Wolfgang Jährling for providing this introduction into GNU/Hurd and Mach
+programming!
diff --git a/news/2002-05-05.mdwn b/news/2002-05-05.mdwn
new file mode 100644
index 00000000..2b38863e
--- /dev/null
+++ b/news/2002-05-05.mdwn
@@ -0,0 +1,30 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+We are currently finishing the transition from a stdio-based GNU C
+Library (glibc) to a libio-based one. This is the result of about
+five months of work we put into getting the system ready and, of
+course, the work that the glibc developers did to make glibc what it
+is.
+<P>
+This change will have various advantages, for example libio has been
+tested more extensively, as it is also used by most GNU/Linux systems
+for some time now. However, it also means a change in the Application
+Binary Interface (ABI) of glibc, thus you will need to reinstall an
+existing Debian GNU/Hurd system. Upgrading has not been tested at
+all, so better do not expect it to work. Also note that you will need
+to get some of the Debian packages from <A
+HREF="ftp://alpha.gnu.org/gnu/hurd/debian-libio/">alpha.gnu.org</A>.
+Please read the recent mailing list archives for details.
+<P>
+<B>Important Note:</B> As another temporary complication, the current
+installation tarball is available at <A
+HREF="ftp://alpha.gnu.org/gnu/hurd/debian-staging/">a different place</A>
+than usual.
diff --git a/news/2002-05-18.mdwn b/news/2002-05-18.mdwn
new file mode 100644
index 00000000..7017e410
--- /dev/null
+++ b/news/2002-05-18.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2002, 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 "Linux and Unix User Group Heilbronn" (in Germany) is organizing
+a Debian GNU/Hurd <A
+HREF="http://www.luug-hn.org/vortraege.html">installation party</A> at
+25 May 2002. In addition to that, Wolfgang J&auml;hrling will give a talk
+about usage of GNU/Hurd, common problems found in porting programs to
+GNU/Hurd and programming of extensions for the Hurd. It is a public
+event, so everyone is free to show up and participate.
diff --git a/news/2002-05-24.mdwn b/news/2002-05-24.mdwn
new file mode 100644
index 00000000..a65d5c6d
--- /dev/null
+++ b/news/2002-05-24.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Finally, the transition from the stdio-based GLibC Application
+Binary Interface (ABI) to the libio-based GLibC ABI has been
+completed. The Debian GNU/Hurd binary distribution has resumed
+building packages again, and everything should be back to normal.
+Note that we have also switched to <A
+HREF="http://gcc.gnu.org/gcc-3.1/">GCC 3.1</A> as our default
+compiler. Thanks to everyone who helped in making all this possible,
+and our apologize for any inconvenience we have caused you.
diff --git a/news/2002-05-28.mdwn b/news/2002-05-28.mdwn
new file mode 100644
index 00000000..dcf7c86d
--- /dev/null
+++ b/news/2002-05-28.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+We are pleased to announce version 1.3 of the GNU distribution of
+the Mach kernel, featuring advanced boot script support, support for
+large disks (>= 10GB) and an improved console.
+<P>
+This distribution is only for x86 PC machines.
+Volunteers interested in ports to other architectures are eagerly sought.
+<P>
+More <A HREF="gnumach-download.html#release">information about GNU
+Mach 1.3</A> is available on the GNU&nbsp;Mach web page.
diff --git a/news/2002-06-22.mdwn b/news/2002-06-22.mdwn
new file mode 100644
index 00000000..b6a606da
--- /dev/null
+++ b/news/2002-06-22.mdwn
@@ -0,0 +1,19 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Various developers of the Hurd and people interested in it will meet
+at the <A HREF="http://lsm.abul.org/">Libre Software Meeting</A> in
+Bordeaux on July 9-13. Neal Walfield, who is working on porting the
+Hurd to the <A HREF="http://www.l4ka.org/">L4</A> microkernel, will give
+a presentation about L4, the people from
+<A HREF=" http://www.hurdfr.org/">HurdFr</A> will give an
+introduction to the Hurd, and another presentation about the Hurd will
+be given by Marcus Brinkmann. There might be additional talks about
+the Hurd and related topics.
diff --git a/news/2002-08-16.mdwn b/news/2002-08-16.mdwn
new file mode 100644
index 00000000..9e70d686
--- /dev/null
+++ b/news/2002-08-16.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 2002, 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 Hurd sources have stabilized again after a short period in
+which some of the interfaces were changed to prepare support of long
+files. All relevant filesystem and I/O interfaces have been modified
+to use 64 bit even on 32 bit systems.
+
+In light of the small and patient user base, we decided to drop
+backwards compatibility and replace the interfaces instead extending
+them. This means that the binaries of the Hurd, the C library, and
+some other programs need to be replaced manually, all at the same
+time, followed by a reboot.
+
+A <A
+HREF="http://www.debian.org/ports/hurd/extra-files/hurd-upgrade.txt">detailed
+step-by-step procedure how to upgrade</A> Debian GNU/Hurd is available
+on the Debian web site.
+
+People not using a binary distribution need to do a full manual
+bootstrap. It is recommended to treat this as a cross-compilation
+case.
diff --git a/news/2002-10-03.mdwn b/news/2002-10-03.mdwn
new file mode 100644
index 00000000..90f4da9f
--- /dev/null
+++ b/news/2002-10-03.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+A new article about [[the_authentication_server|hurd/documentation/auth]]
+has been added to the web pages. It resembles the talk
+about the same topic which was given at the Libre Software Meeting,
+therefore the target audience is mostly programmers which want to learn
+about the details of authentication in the Hurd.
diff --git a/news/2002-10-03_2.mdwn b/news/2002-10-03_2.mdwn
new file mode 100644
index 00000000..e08e2b3c
--- /dev/null
+++ b/news/2002-10-03_2.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+Marcus Brinkmann speaks about the GNU&nbsp;Hurd at "Reflections |
+Projections 2002", the <A
+HREF="http://www.acm.uiuc.edu/conference/">National Student ACM
+Conference</A> at the University of Urbana-Champaign, Illinois. The
+conference is held on October 18-20.
diff --git a/news/2002-10-19.mdwn b/news/2002-10-19.mdwn
new file mode 100644
index 00000000..0d3f34a0
--- /dev/null
+++ b/news/2002-10-19.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 2002, 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 Toronto Hurd Users Group meets again: The <A
+HREF="http://www.uwaterloo.ca/"> University of Waterloo</A> <A
+HREF="http://www.csclub.uwaterloo.ca/">Computer Science Club</A> will
+be hosting talks on the GNU&nbsp;Hurd on October 26 by Marcus Brinkmann and
+Neal Walfield. There will also be a <A
+HREF="http://www.gnupg.org/">GnuPG</A> keysigning before Marcus's
+talk. Please email <A HREF="mailto:rmgolbeck@uwaterloo.ca">Ryan
+Golbeck</A> your <A HREF="http://www.gnupg.org/">GnuPG</A> key so he
+can get everyone setup.</P>
+
+<P>Marcus will talk about <A
+HREF="http://www.csclub.uwaterloo.ca/events/MC2066-2002-10-26-3%3A00PM.html">the
+Hurd interfaces</A>. Neal will talk about about
+<A HREF="http://www.csclub.uwaterloo.ca/events/MC2066-2002-10-26-4%3A30PM.html">
+A GNU Approach to Virtual Memory Management in a Multiserver Operating
+System
+</A></P>
+
+<P>Date: 26 Oct 2002</P>
+<P>Time: 1330 (1:30pm EST) and 1500 (3:00pm EST)</P>
+<P>Place: University of Waterloo, Math and Computers building, room MC
+2066</P>
+
+<P>More information can be found at <A
+HREF="http://www.csclub.uwaterloo.ca/"> UW CS Club website</A> and
+at <A HREF="mailto:thug@gnu.org">thug@gnu.org</A>
diff --git a/news/2002-11-18.mdwn b/news/2002-11-18.mdwn
new file mode 100644
index 00000000..805f2726
--- /dev/null
+++ b/news/2002-11-18.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 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]]."]]"""]]
+
+For one month now, the pthread implementation by Neal Walfield is part
+of the Hurd CVS source tree, and has been used to compile more
+software for the Debian GNU/Hurd archive. The lack of a POSIX
+compatible thread library (the Hurd was based on the cthread
+implementation that originally accompanied Mach) was a show stopper,
+and we are happy about the possibility to not only compile more
+applications, but also to start the work on migrating the Hurd source
+code to pthreads.
diff --git a/news/2003-01-18.mdwn b/news/2003-01-18.mdwn
new file mode 100644
index 00000000..90c41f27
--- /dev/null
+++ b/news/2003-01-18.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2003, 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]]."]]"""]]
+
+Ga&euml;l Le Mignot, president of HurdFr,
+<A HREF="http://news.hurdfr.org/gen.php3/2002/11/05/44,0,1,0,0.html">
+presented the GNU&nbsp;Hurd on 22 November</A>
+2002 at EpX in Paris.
+<A HREF="http://kilobug.free.fr/hurd/pres-en/">English slides</A> and
+<A HREF="http://kilobug.free.fr/hurd/pres-fr/">French slides</A> of the
+talk are also available.
diff --git a/news/2003-02-14.mdwn b/news/2003-02-14.mdwn
new file mode 100644
index 00000000..2754d737
--- /dev/null
+++ b/news/2003-02-14.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2003, 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 <A HREF="/software/hurd/docs.html#UsersGuide">GNU/Hurd User's Guide</A>
+is now accessible through the <A HREF="/software/hurd/docs.html">Documentation
+</A> section of the Hurd web pages.
diff --git a/news/2003-07-02.mdwn b/news/2003-07-02.mdwn
new file mode 100644
index 00000000..7e9634b7
--- /dev/null
+++ b/news/2003-07-02.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2003, 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 tarball for Debian GNU/Hurd that Marcus Brinkmann made over the
+years has been discontinued in favour of Jeff Bailey's
+<A HREF="http://packages.debian.org/crosshurd">crosshurd</A> package.
+To install Debian GNU/Hurd from now on, this package should be used.
+Another Debian system is required to be installed on the same machine.
+The GNU/Hurd installation guide has not been updated yet.
diff --git a/news/2003-07-16.mdwn b/news/2003-07-16.mdwn
new file mode 100644
index 00000000..da1fc12a
--- /dev/null
+++ b/news/2003-07-16.mdwn
@@ -0,0 +1,16 @@
+[[!meta copyright="Copyright © 2003, 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/LinuxTag 2003 is now over and since there was a talk given about
+the Hurd, a demo GNU/Hurd machine running and the sale of Hurd
+t-shirts, Wolfgang J&auml;hrling decided to write a <A
+HREF="http://mail.gnu.org/archive/html/help-hurd/2003-07/msg00029.html">short
+summary</A> of what happened there. Many thanks to Wolfgang
+J&auml;hrling, Volker Dormeyer and Michael Banck!
diff --git a/news/2003-08-21.mdwn b/news/2003-08-21.mdwn
new file mode 100644
index 00000000..fcd2adb8
--- /dev/null
+++ b/news/2003-08-21.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2003, 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]]."]]"""]]
+
+Added a link to Patrick Strasser's <A
+HREF="http://www.htu.tugraz.at/~past/hurd/global/">the Hurd Source
+Code Cross Reference</A> in all the "Source code" sections.
diff --git a/news/2005-01-28.mdwn b/news/2005-01-28.mdwn
new file mode 100644
index 00000000..3360fd3e
--- /dev/null
+++ b/news/2005-01-28.mdwn
@@ -0,0 +1,13 @@
+[[!meta copyright="Copyright © 2005, 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]]."]]"""]]
+
+Marcus Brinkmann added
+<A HREF="/software/hurd/hurd-l4.html">a small web page</A> describing
+the ongoing developments on the Hurd-to-L4 port.
diff --git a/news/2005-09-20.mdwn b/news/2005-09-20.mdwn
new file mode 100644
index 00000000..09e156eb
--- /dev/null
+++ b/news/2005-09-20.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 2005, 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]]."]]"""]]
+
+Material from the Operating System topic during
+the <A HREF="http://libresoftwaremeeting.org/">Libre Software
+Meeting</A> which took place this summer
+is <A
+HREF="http://medias.2005.libresoftwaremeeting.org/topics/os/">available
+online</A>. Included are slides and recordings of talks by Marcus
+Brinkmann and Neal Walfield about the Hurd/L4 port.
diff --git a/news/2006-04-27.mdwn b/news/2006-04-27.mdwn
new file mode 100644
index 00000000..9f99488a
--- /dev/null
+++ b/news/2006-04-27.mdwn
@@ -0,0 +1,72 @@
+[[!meta copyright="Copyright © 2006, 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]]."]]"""]]
+
+<p>The GNU&nbsp;Hurd project will participate in this year's <strong>Google
+Summer of Code</strong>, under the aegis of the GNU project.</p>
+
+<p>The following is a list of items you might want to work on. If you want to
+modify or extend these tasks or have your own ideas what to work on, please
+feel invited to contact us on the
+[[bug-hurd_mailing_list|mailing lists/bug-hurd]] or
+the [[#hurd_IRC_channel|irc]].</p>
+
+<ul>
+
+<li>Make GNU&nbsp;Mach use more <a href="http://savannah.gnu.org/task/?5488">up
+to date <em>device drivers</em></a>.</li>
+
+<li>Work on <a href="http://savannah.gnu.org/task/?5489">GNU&nbsp;Mach's
+<em>IPC / VM system</em></a>.</li>
+
+<li>Design and implement a <a
+href="http://savannah.gnu.org/task/?5485"><em>sound system</em></a>.</li>
+
+<li>Transition the Hurd libraries and servers <a
+href="http://savannah.gnu.org/task/?5487">from <em>cthreads</em> to
+<em>pthreads</em></a>.</li>
+
+<li>Find and implement a reasonable way to make the Hurd servers use <a
+href="http://savannah.gnu.org/task/?5490"><em>syslog</em></a>.</li>
+
+<li>Design and implement <a
+href="http://savannah.gnu.org/task/?1619"><em>libchannel</em></a>, a library
+for streams.</li>
+
+<li>Rewrite <a href="http://savannah.gnu.org/task/?5469"><em>pfinet</em></a>,
+our interface to the IPv4 world.</li>
+
+<li>Implement and make the Hurd properly use <a
+href="http://savannah.gnu.org/task/?5503"><em>extended
+attributes</em></a>.</li>
+
+<li>Design / implement / enhance support for the...
+
+ <ul>
+ <li><a href="http://savannah.gnu.org/task/?5486"><em>Andrew File System
+ (AFS)</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5497"><em>NFS client</em> and
+ <em>NFSd</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5498"><em>EXT3 file
+ system</em></a>;</li>
+
+ <li><a href="http://savannah.gnu.org/task/?5499"><em>Logical Volume Manager
+ (LVM)</em></a>.</li>
+
+ </ul>
+
+</ul>
+
+<p>Please see the page <a href="/software/soc-projects/guidelines.html">GNU
+guidelines for Summer of Code projects</a> about how to make an application and
+<a href="/software/soc-projects/ideas.html">Summer of Code project ideas
+list</a> for a list of tasks for various GNU projects and information about
+about how to submit your own ideas for tasks.</p>
diff --git a/news/2007-01-07.mdwn b/news/2007-01-07.mdwn
new file mode 100644
index 00000000..530491f2
--- /dev/null
+++ b/news/2007-01-07.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A number of GNU Hurd developers will again (as already in the previous years)
+meet at the time of the FOSDEM 2007, which will take place from 2007-02-24 to
+25 in Brussels, Belgium. [[This_wiki_page|community/meetings/fosdem_2007]] has
+some details. [[Contact_us]] if you are interested in meeting with us.
diff --git a/news/2007-01-14.mdwn b/news/2007-01-14.mdwn
new file mode 100644
index 00000000..f99eda87
--- /dev/null
+++ b/news/2007-01-14.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+<p>Neal Walfield and Marcus Brinkmann have written and submitted for
+publication <a
+href="http://lists.gnu.org/archive/html/bug-hurd/2007-01/msg00046.html"><em>A
+Critique of the GNU&nbsp;Hurd Multi-server Operating System</em></a> and a <a
+href="http://lists.gnu.org/archive/html/l4-hurd/2007-01/msg00007.html">position
+paper <em>Improving Usability via Access Decomposition and Policy
+Refinement</em></a>. Please follow the two preceding links to see the complete
+announcements. The authors welcome comments and discussion which may be
+directed to the <a href="mailto:bug-hurd@gnu.org">&lt;bug-hurd@gnu.org&gt;
+mailing list</a> for the Critique and to the <a
+href="mailto:l4-hurd@gnu.org">&lt;l4-hurd@gnu.org&gt; mailing list</a> for the
+position paper.
+
+<p>The abstract of the Critique: <blockquote><p>The GNU&nbsp;Hurd's design was
+motivated by a desire to rectify a number of observed shortcomings in Unix.
+Foremost among these is that many policies that limit users exist simply as
+remnants of the design of the system's mechanisms and their implementation. To
+increase extensibility and integration, the Hurd adopts an object-based
+architecture and defines interfaces, which, in particular those for the
+composition of and access to name spaces, are virtualizable.
+
+<p>This paper is first a presentation of the Hurd's design goals and a
+characterization of its architecture primarily as it represents a departure
+from Unix's. We then critique the architecture and assess it in terms of the
+user environment of today focusing on security. Then follows an evaluation of
+Mach, the microkernel on which the Hurd is built, emphasizing the design
+constraints which Mach imposes as well as a number of deficiencies its design
+presents for multi-server like systems. Finally, we reflect on the properties
+such a system appears to require.</blockquote>
+
+<p>The abstract of the position paper: <blockquote><p>Commodity operating
+systems fail to meet the security, resource management and integration
+expectations of users. We propose a unified solution based on a capability
+framework as it supports fine grained objects, straightforward access
+propagation and virtualizable interfaces and explore how to improve resource
+use via access decomposition and policy refinement with minimum interposition.
+We argue that only a small static number of scheduling policies are needed in
+practice and advocate hierarchical policy specification and central
+realization.</blockquote>
diff --git a/news/2007-03-14.mdwn b/news/2007-03-14.mdwn
new file mode 100644
index 00000000..9895291c
--- /dev/null
+++ b/news/2007-03-14.mdwn
@@ -0,0 +1,54 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+<p>The GNU&nbsp;Hurd project will participate in this year's <strong>Google
+Summer of Code</strong>, under the aegis of the GNU project.</p>
+
+<p>The following is a list of items you might want to work on. If you want to
+modify these task proposals or have your own ideas on what to work, then please
+don't hesitate to contact us on the
+[[bug-hurd_mailing_list|mailing lists/bug-hurd]] or
+the [[#hurd_IRC_channel|irc]].</p>
+
+<ul>
+
+<li>Design and implement <a
+href="http://savannah.gnu.org/task/?1619"><em>libchannel</em></a>, a library
+for streams.</li>
+
+<li>Rewrite <a href="http://savannah.gnu.org/task/?5469"><em>pfinet</em></a>,
+our interface to the IPv4 world; create a <a
+href="http://savannah.gnu.org/task/?5470"><em>pfinet6</em></a> to interface to
+the IPv6 world.</li>
+
+<li>Make GNU Mach use more <a href="http://savannah.gnu.org/task/?5488">up to
+date <em>device drivers</em></a>.</li>
+
+<li>Design and implement a <a
+href="http://savannah.gnu.org/task/?5485"><em>sound system</em></a>.</li>
+
+<li>Introduce the world of the <a
+href="http://savannah.gnu.org/task/?5486"><em>Andrew File System (AFS)</em></a>
+to the Hurd.</li>
+
+<li>Work on enhancing our <a href="http://savannah.gnu.org/task/?5497"><em>NFS
+client</em> and <em>NFSd</em></a>.</li>
+
+<li>Implement support for <a
+href="http://savannah.gnu.org/task/?5499"><em>Logical Volume Management
+(LVM)</em></a>.</li>
+
+</ul>
+
+<p>Please see the page <a href="/software/soc-projects/guidelines.html">GNU
+guidelines for Summer of Code projects</a> about how to make an application and
+<a href="/software/soc-projects/ideas.html">Summer of Code project ideas
+list</a> for a list of tasks for various GNU projects and information about
+about how to submit your own ideas for tasks.</p>
diff --git a/news/2007-10-01.mdwn b/news/2007-10-01.mdwn
new file mode 100644
index 00000000..b35bc337
--- /dev/null
+++ b/news/2007-10-01.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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 year the GNU Hurd had again been assigned one slot within the **Google
+Summer of Code** program, which was assigned to the task **design and implement
+[*libchannel*](http://savannah.gnu.org/task/?1619), a library for streams**.
+Carl Fredrik Hammar has been working on this task and recently [posted a
+summary](http://lists.gnu.org/archive/html/bug-hurd/2007-09/msg00009.html)
+about the successful work he had been doing, but also gave an outline about how
+he intends to continue improving and extending it.
diff --git a/news/2007-10-12.mdwn b/news/2007-10-12.mdwn
new file mode 100644
index 00000000..ae125149
--- /dev/null
+++ b/news/2007-10-12.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Stefan Siegl added [[support_for_IPv6_networking|hurd/translator/pfinet/ipv6]]
+to the *pfinet* translator.
diff --git a/news/2008-02-11.mdwn b/news/2008-02-11.mdwn
new file mode 100644
index 00000000..0805287c
--- /dev/null
+++ b/news/2008-02-11.mdwn
@@ -0,0 +1,16 @@
+[[!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]]."]]"""]]
+
+A number of GNU Hurd developers will again (as already in the previous
+years) meet at the time of the FOSDEM 2008, which will take place from
+2008-02-23 to 24 in Brussels, Belgium.
+
+The page about [[community/meetings/FOSDEM_2008]] has some details.
+[[Contact_us]] if you are interested in meeting with us.
diff --git a/news/2008-03-19.mdwn b/news/2008-03-19.mdwn
new file mode 100644
index 00000000..02ea4c5f
--- /dev/null
+++ b/news/2008-03-19.mdwn
@@ -0,0 +1,20 @@
+[[!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 GNU Hurd project has been accepted as a mentoring organisation for the
+**Google Summer of Code 2008**! If you are a student and looking for a job
+during the summer, take a look at our
+[[project_ideas_list|community/gsoc]]--here's your chance to help improving the
+GNU Hurd including mentoring from our side and being paid compensation from
+Google's!
+
+The application deadline has been [**extended** to **Monday,
+2008-04-07**](http://groups.google.com/group/google-summer-of-code-announce/browse_thread/thread/9fa88f31aa401f70),
+so there's more time for you students to hand in your Hurd applications.
diff --git a/news/2008-09-11.mdwn b/news/2008-09-11.mdwn
new file mode 100644
index 00000000..7d25e5a6
--- /dev/null
+++ b/news/2008-09-11.mdwn
@@ -0,0 +1,13 @@
+[[!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]]."]]"""]]
+
+All five students who worked on the Hurd during the **Google Summer of Code 2008** succeeded
+in their projects. For more information please see [[the_community/gsoc_page|community/gsoc]].
+**Congratulations to both students and mentors!**
diff --git a/news/2008-11-14.mdwn b/news/2008-11-14.mdwn
new file mode 100644
index 00000000..58e035c3
--- /dev/null
+++ b/news/2008-11-14.mdwn
@@ -0,0 +1,14 @@
+[[!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]]."]]"""]]
+
+[[Samuel_Thibault|samuelthibault]] has implemented support for the PAE feature
+offered by modern x86 processors. This largely faciliates the deployment of
+GNU/Hurd systems running as a [[Xen_domU|microkernel/mach/gnumach/ports/xen]]
+on top of a standard Debian GNU/Linux Xen dom0, for example.
diff --git a/news/2008-12-12.mdwn b/news/2008-12-12.mdwn
new file mode 100644
index 00000000..b2e92ef0
--- /dev/null
+++ b/news/2008-12-12.mdwn
@@ -0,0 +1,39 @@
+[[!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]]."]]"""]]
+
+Neal Walfield has submitted a paper to
+[[community/meetings/EuroSys_2009]] describing how resource management
+is done in [[microkernel/viengoos]]:
+
+[Viengoos: A Framework for Stakeholder-Directed Resource
+Allocation](http://walfield.org/papers/2009-walfield-viengoos-a-framework-for-stakeholder-directed-resource-allocation.pdf).
+
+[[!if test="included()" then="""[[!toggle id=abstract
+text="Abstract."]][[!toggleable id=abstract text="[[!paste id=abstract]]"]]"""
+else="[[!paste id=abstract]]"]]
+
+[[!cut id="abstract" text="""
+> General-purpose operating systems not only fail to provide adaptive
+> applications the information they need to intelligently adapt, but also
+> schedule resources in such a way that were applications to aggressively
+> adapt, resources would be inappropriately scheduled. The problem is that
+> these systems use demand as the primary indicator of utility, which is a poor
+> indicator of utility for adaptive applications.
+
+> We present a resource management framework appropriate for traditional as
+> well as adaptive applications. The primary difference from current
+> schedulers is the use of stakeholder preferences in addition to demand. We
+> also show how to revoke memory, compute the amount of memory available to
+> each principal, and account shared memory. Finally, we introduce a prototype
+> system, Viengoos, and present some benchmarks that demonstrate that it can
+> efficiently support multiple aggressively adaptive applications
+> simultaneously.
+"""]]
+
diff --git a/news/2009-03-28.mdwn b/news/2009-03-28.mdwn
new file mode 100644
index 00000000..00aebb09
--- /dev/null
+++ b/news/2009-03-28.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]]."]]"""]]
+
+The application phase for the **Google Summer of Code 2009** has already
+started. Please see our [[page_about_the_GSoC|community/gsoc]] for
+details of how to apply for your favorite Hurd project.
diff --git a/news/2009-04-20.mdwn b/news/2009-04-20.mdwn
new file mode 100644
index 00000000..69831cca
--- /dev/null
+++ b/news/2009-04-20.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]]."]]"""]]
+
+Sergiu Ivanov will be working on [[unionmount_translators|user/scolobb]] during
+the **Google Summer of Code 2009**.
diff --git a/news/2009-06-30.mdwn b/news/2009-06-30.mdwn
new file mode 100644
index 00000000..92bc8a20
--- /dev/null
+++ b/news/2009-06-30.mdwn
@@ -0,0 +1,29 @@
+[[!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]]."]]"""]]
+
+A month of the Hurd: *Git migration*, *stand-alone libpthread* and *updated
+status*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month Thomas Schwinge [finished
+> migrating](http://lists.gnu.org/archive/html/bug-hurd/2009-06/msg00147.html)
+> the main Hurd, GNU Mach, MIG, libpthread and unionfs to Git. You can find
+> the new repositories at <http://git.savannah.gnu.org/cgit/hurd/>.
+
+> Also, he made [libpthread buildable
+> stand-alone](http://lists.gnu.org/archive/html/bug-hurd/2009-06/msg00166.html)
+> by separating its build system from the Hurd's.
+
+> Additionally, Olaf Buddenhagen wrote a usability report about his experience
+> with the [[GNU Hurd for everyday work|hurd/status]].
+"""]]
diff --git a/news/2009-07-31.mdwn b/news/2009-07-31.mdwn
new file mode 100644
index 00000000..21f09ae2
--- /dev/null
+++ b/news/2009-07-31.mdwn
@@ -0,0 +1,44 @@
+[[!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 date="2009-08-03 08:00 UTC"]]
+
+A month of the Hurd: *hurd Debian package*, *union mount translator*, *bug
+fixes*, and a *job opening*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> Samuel Thibault uploaded a new version of the hurd
+> [[Debian|hurd/running/debian]] package which improves system stability by
+> fixing a long-standing bug in the [[hurd/translator/exec]] server that had
+> randomly made it hang, inhibiting the creation of new processes.
+
+> [[Sergiu Ivanov|scolobb]] implemented most of the functionality of the
+> [[union mount translator|hurd/translator/unionmount]] which allows combining
+> the [[filesystem trees exported by several translators|hurd/translator]] with
+> the filesystem tree of the underlying node (in contrast to a pure
+> [[hurd/translator/unionfs]], which won't do that). The patches are currently
+> undergoing testing and review on the [[bug-hurd mailing
+> list|mailing_lists/bug-hurd]]. This work is being done as a [[Google Summer
+> of Code|community/gsoc]] project, and we're happy to tell that Sergiu
+> successfully passed the project's midterm evaluation.
+
+> Also, [[Zheng Da|zhengda]] [[!GNU_Savannah_patch 6851 desc="fixed a bug"]] in GNU Mach's
+> [[!wikipedia Berkeley Packet Filter desc="BPF (Berkeley Packet Filter)"]]
+> implementation and contributed a number of fixes and
+> improvements for [[hurd/debugging/rpctrace]] which should help further debugging.
+
+> Aside from looking for new [[contributors|contributing]] all the time,
+> here is another job opening that doesn't require specific Hurd knowledge:
+> we're seeking [someone interested in writing a regression test suite for Hurd
+> components](http://lists.gnu.org/archive/html/bug-hurd/2009-07/msg00177.html).
+"""]]
diff --git a/news/2009-09-30.mdwn b/news/2009-09-30.mdwn
new file mode 100644
index 00000000..38f09bfa
--- /dev/null
+++ b/news/2009-09-30.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]]."]]"""]]
+
+[[!meta date="2009-10-01 11:52 UTC"]]
+
+A month of the Hurd: *Successful Google Summer of Code project: unionmount*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month saw the successful completion of the Google Summer of Code 2009,
+> for which [[Sergiu Ivanov|scolobb]] created a
+> [[unionmount_translator|hurd/translator/unionmount]].
+> His work allows you to simply union one directory or translator into another one,
+> so you see the files of both of them side by side.
+>
+> He was mentored by Olaf Buddenhagen and both are now working on polishing the code
+> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to
+> read a node with a selected translator by simply appending `,,<translator>` to its name.
+>
+> That aside, we saw the usual steady rate of enhancement discussions, as well
+> as bugs getting fixed: X server crashing, preventing that GCC versions after
+> 4.2 optimize too much, etc.
+"""]]
diff --git a/news/2009-10-31.mdwn b/news/2009-10-31.mdwn
new file mode 100644
index 00000000..db3537d0
--- /dev/null
+++ b/news/2009-10-31.mdwn
@@ -0,0 +1,49 @@
+[[!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 date="2009-11-02 22:39 UTC"]]
+
+A month of the Hurd: new *installation CDs*, further *Git migration*,
+*porting*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month Philip Charles created a new [installation
+> CD](http://ftp.debian-ports.org/debian-cd/current/), the [L
+> series](http://ftp.debian-ports.org/debian-cd/current/README-L1-disc-set),
+> for the Hurd, which brings us a big step towards installing the Hurd from the
+> Hurd (without the need of a Linux-based installer). If you enjoy testing
+> stuff, please give it a try.
+
+> On the same front, Michael Banck uploaded a new version of
+> [crosshurd](http://packages.debian.org/sid/crosshurd) that makes it again
+> possible to use this package for creating a GNU/Hurd system image directly
+> from Debian unstable packages.
+
+> Also, Thomas Schwinge migrated Sergiu Ivanov's [[hurd/translator/nsmux]],
+> [[Flávio Cruz|flaviocruz]]' cl-hurd *(clisp bindings)*, and Carl Fredrik
+> Hammar [[hurd/libchannel]] repositories into our new [*incubator* Git
+> repository](http://git.savannah.gnu.org/cgit/hurd/incubator.git/), making
+> them easier to access for other contributors.
+
+> Our bunch of porters continued to make further Debian packages usable on
+> GNU/Hurd: Pino Toscano worked on a lot of packages, and Wesley W. Terpstra
+> made [mlton](http://packages.debian.org/sid/mlton) build -- together with
+> Samuel Thibault, who first had to enhance [[GNU
+> Mach|microkernel/mach/gnumach]] to support allocating more than 1 GiB of RAM
+> to one user-space process, which mlton needs.
+
+> On the go, Samuel also fixed a number of other bugs here and there, for
+> example together with Eric Blake and Roland McGrath hashed out a difficile
+> issue in the filesystem servers regarding POSIX conformance and system
+> stability.
+"""]]
diff --git a/news/2009-11-30.mdwn b/news/2009-11-30.mdwn
new file mode 100644
index 00000000..86a575bc
--- /dev/null
+++ b/news/2009-11-30.mdwn
@@ -0,0 +1,51 @@
+[[!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 date="2009-12-03 11:00 UTC"]]
+
+A month of the Hurd: initial work on *network device drivers in user space*,
+*GRUB 2*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+> This month [[Zheng Da|zhengda]], our [[former Google Summer of Code student
+> working on network virtualization and some related
+> topics|community/gsoc/2008]], published the code for the pcnet32 device
+> driver that he had modified to run as a user-space process instead of inside
+> the kernel, and posted some preliminary [performance benchmark
+> results](http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00144.html).
+> The test results are mostly on par with the in-kernel driver, so they show
+> that moving the lower-layer parts of the networking stack, the device drivers
+> themselves, into user space can be done without losing (much) performance.
+> Given this encouraging start, work is going on to explore whether the [Device
+> Driver Environment](http://wiki.tudos.org/DDE/DDEKit) that has been created
+> for L4-based systems can be used for [providing GNU/Hurd systems with device
+> drivers](http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00241.html)
+> that (a) are more recent than our current ones, (b) support classes of
+> devices that [[we don't support so
+> far|microkernel/mach/gnumach/hardware_compatibility_list]], and (c) are
+> running as (possibly separate, fault-isolated) user-space processes.
+
+> Thanks to Samuel Thibault, the latest Debian GRUB 2 package (1.97+20091130-1)
+> [supports native
+> installation](http://lists.debian.org/debian-hurd/2009/11/msg00095.html) from
+> GNU/Hurd itself -- booting GNU/Hurd systems with GRUB has always been
+> working, but until now it wasn't possible to *install* GRUB from a GNU/Hurd
+> system. GNU GRUB has originally been written [for booting GNU/Hurd
+> systems](http://www.gnu.org/software/grub/manual/grub.html#History), so this
+> step completes its original purpose.
+
+> Samuel also continued to work on preparing the [[Xen branch of GNU
+> Mach|microkernel/mach/gnumach/ports/xen]] for being merged with the mainline
+> code, and he fixed a kernel panic in the kernel's floating point
+> support code.
+"""]]
diff --git a/news/2009-12-31.mdwn b/news/2009-12-31.mdwn
new file mode 100644
index 00000000..286350d1
--- /dev/null
+++ b/news/2009-12-31.mdwn
@@ -0,0 +1,85 @@
+[[!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]]."]]"""]]
+
+[[!meta date="2009-12-31 17:33 UTC"]]
+
+A month of the Hurd: *official Xen domU support*, *DDE*, *porting*, and *FOSDEM 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month Samuel Thibault [merged his development branch into GNU Mach's
+> master
+> branch](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00058.html) --
+> meaning that his [[GNU Mach Xen domU
+> port|microkernel/mach/gnumach/ports/xen]] is now part of the official
+> sources. Only the [[microkernel (GNU Mach)|microkernel/mach/gnumach]] needed
+> to be extended, and no changes were needed in the Hurd, or glibc code bases.
+> He had started this port in 2007 already, but it has been in heavy use over
+> the last two years already, so merging it into the main source bases was long
+> overdue.
+
+> He also got the necessary Xen patches committed into Xen's unstable branch,
+> so that from Xen's 4.0 release on you'll be able to boot GNU/Hurd systems
+> using `pv-grub`, without the need to prepare a special bootstrap image (like
+> an initrd).
+
+> Of course, running GNU/Hurd systems in other virtualization environments is
+> possible too, but the Xen domU approach offers superior performance compared
+> to [[hurd/running/QEMU]]'s machine emulation, for example.
+
+> Samuel also spent some time on adding code for [detecting invalid (duplicate)
+> port
+> deallocations](http://lists.gnu.org/archive/html/commit-hurd/2009-12/msg00016.html),
+> and started fixing these, as well as he fulfilled his usual share of
+> miscellaneous bug fixing.
+
+> The [[DDE]] port of Zheng Da now [passes the first
+> tests](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00060.html),
+> bringing us the first steps towards updated device drivers -- and much lower
+> overhead for maintaining them.
+
+> Now that the Debian GNU/Hurd build stats are again hosted on the [master
+> Debian build machine](https://buildd.debian.org/stats/), Debian developers
+> see their packages' build failures more prominently, and quite a few started
+> to fix their packages.
+
+> Thus, thanks to the [[hurd/running/debian/porting]] work of mainly Emilio Pozuelo
+> Monfort and Pino Toscano, users of the Hurd can get many more packages
+> directly via the [[Debian GNU/Hurd|hurd/running/debian]] distribution.
+> Thanks to their and the other porters' relentless work, the percentage of
+> available Debian packages [has reached
+> 66%](https://buildd.debian.org/stats/hurd-i386.txt), rising. For a specific example,
+> they ported many GNOME packages, so that the `gnome-core` metapackage [is
+> installable
+> again](http://lists.gnu.org/archive/html/bug-hurd/2009-12/msg00217.html).
+> Please test these and [[report back|mailing lists/debian-hurd]].
+
+> Thomas Schwinge started the planning for [[a GNU Hurd folks meeting at
+> FOSDEM|community/meetings/fosdem 2010]] on February 6th/7th 2010 at the
+> Université Libre de Bruxelles.
+
+> Guillem Jover jumped in and started [fixing GNU Mach build
+> warnings](http://lists.gnu.org/archive/html/commit-hurd/2009-12/msg00008.html)
+> -- meaning that Thomas Schwinge's evil plan finally worked out, when he
+> enabled `-Wall` in an October 2006 commit:
+>
+> +# Yes, this makes the eyes hurt. But perhaps someone will finally take care of
+> +# all that scruffy Mach code... Also see <http://savannah.gnu.org/task/?5726>.
+> +AM_CFLAGS += \
+> + -Wall
+
+> ---
+
+> The GNU Hurd team wishes a pleasant Year 2010 to everyone!
+
+"""]]
diff --git a/news/2010-01-31.mdwn b/news/2010-01-31.mdwn
new file mode 100644
index 00000000..306a54b3
--- /dev/null
+++ b/news/2010-01-31.mdwn
@@ -0,0 +1,58 @@
+[[!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]]."]]"""]]
+
+[[!meta date="2010-02-02 00:25 UTC"]]
+
+A month of the Hurd: *Arch Hurd*, *FOSDEM preparations* and a *thesis on mobile Hurd objects*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month, we saw the first booting version of an [[hurd/running/Arch Hurd]]
+> system, which seconds the [[Debian GNU/Hurd|hurd/running/debian]]
+> distribution that already provides two third of the Debian software archive
+> compiled for GNU/Hurd.
+
+> Nine Hurd developers will [[meet at FOSDEM
+> 2010|community/meetings/fosdem_2010]] on February 6th and 7th in Bruxelles,
+> Belgium. On Sunday, Olaf will be giving two presentations in the Alt-OS
+> Developer Room: [*Why is Anyone Still Working on the GNU
+> Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd) (10:30), and
+> [*Porting KGI graphics drivers from Linux to GNU
+> Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd) (13:00). The
+> day before, on Saturday, Bas will be giving a [talk about *Iris*, his new
+> kernel](http://fosdem.org/2010/schedule/events/emb_iris) (18:00, Embedded
+> Developer Room).
+
+> Carl Fredrik Hammar
+> [finished and presented](http://lists.gnu.org/archive/html/bug-hurd/2010-01/msg00078.html)
+> his thesis
+> [*Generalizing mobility for the Hurd*](http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf)
+> and passed with distinction. Congratulations! Its abstract reads:
+
+> > The GNU Hurd features mobile objects
+> > in its implementation of filesystem backing stores.
+> > This thesis investigates the
+> > limitations and security concerns
+> > these objects present,
+> > and how they can be overcome.
+> > This is done in preparation for new applications
+> > that feature mobile code and mobile objects.
+> > In addition,
+> > one such application is studied and implemented,
+> > in which mobile code is used to make
+> > the `ioctl` system call more extensible.
+
+> So, when are *YOU* going to do a thesis, or another project on a
+> GNU/Hurd-related topic? [[Contact_us]] if you are interested!
+
+"""]]
diff --git a/news/2010-02-28.mdwn b/news/2010-02-28.mdwn
new file mode 100644
index 00000000..ee6e22ef
--- /dev/null
+++ b/news/2010-02-28.mdwn
@@ -0,0 +1,72 @@
+[[!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 date="2010-03-10 15:55 UTC"]]
+
+A month of the Hurd: *DDE driver*, *X.org / libpciaccess*, *FOSDEM*, and
+*Google Summer of Code 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> A bit late, but here it is finally: the *MotH* for February, 2010.
+
+> This month saw the first running and testable
+> [[DDE driver by Zheng Da|user/zhengda]],
+> with which he begins to reap the benefits of porting [[DDE]] to the Hurd --
+> essentially, allowing us to use current Linux device drivers.
+
+> Samuel Thibault pushed a [libpciaccess x86
+> backend](http://cgit.freedesktop.org/xorg/lib/libpciaccess/commit/?id=af2be74979aeab9a2fc4c933462e97ce70f816b6)
+> to X.Org:
+
+> > This adds support on x86 for OSes that do not have a PCI interface,
+> > tinkering with I/O ports, and makes use of it on GNU/Hurd.
+
+> In the course of this, he also got commit access to X.org, so it should be
+> easier now to get further Hurd-related patches applied.
+
+> As announced in our [[previous news blurb|2010-01-31]], at FOSDEM, Bas did
+> his presentation of [*Iris, a new capability-based microkernel
+> OS*](http://fosdem.org/2010/schedule/events/emb_iris) in the Embedded
+> Developer Room, and Olaf illustrated [*Why is Anyone Still Working on the GNU
+> Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd), and presented his
+> work of [*Porting KGI graphics drivers from Linux to GNU
+> Hurd*](http://fosdem.org/2010/schedule/events/altos_kgi_hurd), in the Alt-OS
+> Developer Room.
+
+> In [Mikel Olasagasti's
+> words](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00014.html):
+
+> > The room was full and people was "standing-up" for the talk. Some people
+> > even couldn't enter to the room (+20?).
+> >
+> > Antrik [Olaf] made a good job. Was nice for the crowd to see Hurd running X,
+> > slow but working.
+
+> The regular IRC meeting schedule has been
+> [changed](http://lists.gnu.org/archive/html/bug-hurd/2010-02/msg00040.html)
+> to Wednesdays, 11:00 UTC; see the [[IRC#regular_meetings]] page for details.
+
+> Last, but not least, it is time again to think about the [[Google Summer of
+> Code|community/gsoc]]. In [[community/gsoc/2007]], the GNU Hurd had one
+> successful project, in [[community/gsoc/2008]] five of them,
+> [[community/gsoc/2009]] saw another one, so we obviously plan to make it five
+> projects again this year. We already have [[dozens of
+> ideas|community/gsoc/project ideas]] online, and will add yet more -- also
+> based on YOUR suggestions and wishes!
+
+> So, if you're a student, and interested in working on the GNU Hurd, please
+> join in; browse through the [[community/GSoC]] pages, and don't be shy to
+> [[contact us]]!
+
+"""]]
diff --git a/news/2010-03-31.mdwn b/news/2010-03-31.mdwn
new file mode 100644
index 00000000..c3c424d1
--- /dev/null
+++ b/news/2010-03-31.mdwn
@@ -0,0 +1,48 @@
+[[!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 date="2010-04-01 07:55 UTC"]]
+
+A month of the Hurd: some more *bug squashing* and *Google Summer of Code 2010*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> This month saw bugs dying as they met hackers like [Jérémie,
+> Samuel](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00027.html), or
+> [Zheng,
+> Thomas](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00051.html), or
+> [Jakub](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00071.html)
+> (keeping it to a few ones which were discussed on the [[bug-hurd mailing
+> list|mailing_lists/bug-hurd]]).
+
+> Olaf, Thomas and Fredrik
+> [wrote](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00022.html) and
+> submitted our [[community/gsoc/organization_application]] for the Google
+> Summer of Code 2010. However, Google is [asking most GNU projects to work
+> under the GNU project
+> umbrella](http://lists.gnu.org/archive/html/bug-hurd/2010-03/msg00125.html),
+> so we aren't listed as an organization on our own, but instead will again
+> participate as a subproject of GNU.
+
+> Anyway, this organizational detail is not at all important for interested
+> students; you can apply for any of the ideas that are listed on our
+> [[community/gsoc/project_ideas]] page (or come up with your own ideas, of
+> course!) via the [GNU project GSoC
+> page](http://socghop.appspot.com/gsoc/org/show/google/gsoc2010/gnuproject). If
+> you apply, please also include the information we're asking for on our
+> [[community/gsoc/student_application_form]]. Don't hesitate to
+> [[contact_us]] beforehand, if there are any questions. We're looking forward
+> to seeing your applications, please send them in [before
+> 2010-04-09](http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline)!
+
+"""]]
diff --git a/news/2010-04-30.mdwn b/news/2010-04-30.mdwn
new file mode 100644
index 00000000..131af4ea
--- /dev/null
+++ b/news/2010-04-30.mdwn
@@ -0,0 +1,91 @@
+[[!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 date="2010-05-02 21:20 UTC"]]
+
+A month of the Hurd: *Arch Hurd*, *updated Debian GNU/Hurd QEMU image*, and *GSoC students*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> The Arch Hurd folks keep [making good
+> progress](http://lists.gnu.org/archive/html/help-hurd/2010-04/msg00003.html):
+> their count of available packages keeps increasing, and one of their team
+> reported the first instance of Arch Hurd [running on real
+> hardware](http://www.archhurd.org/news/11) (and uploaded [a
+> photo](http://wiki.archhurd.org/wiki/User:Giselher#ArchHurd_on_a_real_PC) as
+> evidence).
+
+> Of course, our Debian port is still progressing, too: 66% of all Debian
+> packages [are currently available for Debian
+> GNU/Hurd](https://buildd.debian.org/stats/hurd-i386.txt).
+
+> *Samuel Thibault*'s fix got included in libxcb1, so X.org again [works out of
+> the box](http://lists.debian.org/debian-hurd/2010/04/msg00034.html) using a
+> simple `startx`.
+
+> *Philip Charles* [extended his
+> offerings](http://lists.debian.org/debian-hurd/2010/04/msg00019.html) with an
+> updated *GRUB USB stick for booting Debian GNU/Hurd*.
+
+> *Carl Fredrik Hammar* proposed a patch to [faciliate debugging the startup of
+> misbehaving
+> translators](http://lists.gnu.org/archive/html/bug-hurd/2010-04/msg00037.html).
+
+> Mainly thanks to *Jose Luis Alarcon Sanchez*, we now have a [new QEMU
+> image](http://lists.debian.org/debian-hurd/2010/04/msg00098.html). It can be
+> run with a simple `qemu -hda debian-hurd-17042010-qemu.img`.
+
+> *Thomas Schwinge* updated [our glibc maintenance
+> repository](http://git.savannah.gnu.org/cgit/hurd/glibc.git/?h=tschwinge/Roger_Whittaker)
+> to a recent version, including a bunch of the patches from the Debian glibc
+> package (and these are meant to eventually be submitted upstream). After a
+> long break, he as well
+> [updated](http://lists.gnu.org/archive/html/bug-hurd/2010-04/msg00062.html)
+> his [[toolchain_cross-compilation_script|hurd/building/cross-compiling]] to
+> the current source code packages, and added C++ support.
+
+> On to the Google Summer of Code 2010: we got three students working on the
+> Hurd this year:
+
+> * *Jeremie Koenig*, mentored by *Samuel Thibault*, will be working on
+> adapting the Debian Installer to [produce working Debian GNU/Hurd
+> installation
+> images](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/debian/t127230758239)
+> so we can easily offer up to date disc-sets.
+> ([Details](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig).)
+
+> * *Emilio Pozuelo Monfort*, mentored by *Carl Fredrik Hammar* (who was a
+> GSoC student in 2007), will be working on a task that may be perceived as
+> less exciting from the outside, but yet is extremely valuable: [fixing
+> compatibility problems exposed by projects'
+> testsuites](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759396).
+> ([[Details|community/gsoc/project_ideas/testsuites]].) For starters, he
+> already got a glibc patch [accepted
+> upstream](http://sourceware.org/ml/libc-alpha/2010-04/msg00046.html).
+
+> * *Karim Allah Ahmed*, mentored by *Sergio López*, will be working on
+> [tuning the VM Subsystem in
+> GNU/Hurd](http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/gnuproject/t127230759587)
+> to bring the virtual memory management in Hurd/Mach up to date.
+> ([[Details|community/gsoc/project_ideas/vm_tuning]].)
+
+> We'd be happy to see *YOU* sign up on our mailing lists
+> ([[mailing_lists/bug-hurd]] and [[mailing_lists/debian-hurd]] are the main
+> lists), and [[contribute|contributing]] towards making the Hurd usable for
+> everyone, as written down in
+> [[our_mission_statement|community/weblogs/antrik/hurd-mission-statement]].
+> Perhaps one of the unassigned projects (outside of the Google Summer of Code
+> context) from our [[project_ideas_list|community/gsoc/project_ideas]] is fit
+> for you?
+
+"""]]
diff --git a/news/2010-05-31.mdwn b/news/2010-05-31.mdwn
new file mode 100644
index 00000000..5bef328e
--- /dev/null
+++ b/news/2010-05-31.mdwn
@@ -0,0 +1,66 @@
+[[!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 date="2010-06-06 22:15 UTC"]]
+
+A month of the Hurd: *DDE linux26*, *thread storms*, *patches*, *new live CD* and *IRC meetings*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> [[Zheng_Da|user/zhengda]]
+> [reported](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00037.html)
+> on the state of his ongoing work of porting DDE linux26 to the Hurd, which is
+> meant to improve the GNU/Hurd hardware support. The devices as emulated by
+> QEMU and VMware already work fine, but he's still seeking help for testing on
+> real hardware.
+
+> Sergio López published
+> [patches](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00059.html)
+> as well as [readily-usable
+> packages](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00106.html)
+> to prevent thread storms in ext2fs when synchronizing large pagers. This
+> should improve system performance and stability.
+
+> Emilio Pozuelo Monfort and Sergio López developed further patches (for
+> example:
+> [exec](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00108.html),
+> [tmpfs](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00077.html)) to
+> fix or improve the various internal Hurd servers, and discussed them with
+> other Hurd developers.
+
+> Justus Winter [created a live
+> CD](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00033.html) with an
+> installation wizard in the spirit of the OpenBSD installer. He needs testers
+> to help improve it.
+
+> Ludovic Courtès informed that he has added support for [cross-building
+> packages from GNU/Linux to
+> GNU/Hurd](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00105.html)
+> to the Nix package manager, as well as doing [continuous cross-building of
+> the GNU Hurd
+> itself](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00111.html),
+> and [glibc](http://sourceware.org/ml/libc-alpha/2010-05/msg00049.html).
+
+> The [[regular IRC meetings|irc#regular_meetings]] for [[Google Summer of Code
+> students|community/gsoc]], their mentors, and any other interested parties
+> [are
+> continuing](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00148.html)
+> on Mondays and Thursdays, 10:30 UTC, as Olaf Buddenhagen reported. If you
+> want to catch up, have a look at the [#hurd channel
+> logs](http://richtlijn.be/~larstiq/hurd/).
+
+> As always in the *Month of the Hurd*, these news blurbs are only a selection
+> of what happened in the last month. There's always more to be found on our
+> [[mailing_lists]], especially [[mailing_lists/bug-hurd]].
+
+"""]]
diff --git a/news/2010-06-30.mdwn b/news/2010-06-30.mdwn
new file mode 100644
index 00000000..d435d2d2
--- /dev/null
+++ b/news/2010-06-30.mdwn
@@ -0,0 +1,77 @@
+[[!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 date="2010-07-08 14:00 UTC"]]
+
+A month of the Hurd: *Debian Installer*, *clustered page-in*, and *a bunch of
+bug fixing*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> A bunch of patches have hit the mailing lists and source code repositories:
+
+> Jérémie Koenig posted a [preliminary
+> patch](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html) to
+> add initrd (initial ramdisk) support in GNU Mach for his [[Google Summer of
+> Code|community/gsoc]] 2010 project: [[Debian Installer|jkoenig]]. With this
+> patch, and some other patches that are still in flux, he ended up being able
+> to install a [[Debian GNU/Hurd|hurd/running/debian]] system using the Debian
+> Installer -- which is the goal of his project. Patches being *in flux* means
+> that there's still work left to be done to properly solve some issues, so
+> there's no need to worry that Jérémie wouldn't have any work left until the
+> GSoC ends.
+
+> Karim Allah Amed came up with the [first
+> patch](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00023.html) for
+> porting the clustered paging-in code from OSF Mach to GNU Mach, which should
+> improve the virtual memory performance of the Hurd.
+
+> Emilio Pozuelo Monfort got a bug in [glibc
+> fixed](http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=2a50c07836d2750baf70442f8f760bf6cd43b3af),
+> which unblocks a problem we've seen in [coreutils'
+> `ln`](https://savannah.gnu.org/bugs/?29655), and also continued to make
+> progress on other grounds.
+
+> Zheng Da
+> [began](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00003.html)
+> [to](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00005.html)
+> [commit](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00014.html)
+> patches to make his [[DDE project|zhengda]] support block device drivers,
+> apart from fixing some other issues, too.
+
+> Samuel Thibault [fixed memory
+> leaks](http://lists.gnu.org/archive/html/commit-hurd/2010-06/msg00018.html)
+> in [[`pfinet`|hurd/translator/pfinet]], which is the Hurd's TCP/IP networking
+> unit. Even though that a crashed `pfinet` [[server|hurd/translator]] will be
+> restarted upon its next use, having it eat up all system memory is to be
+> avoided, of course -- and is corrected with these patches.
+
+> Carl Fredrik Hammar submitted patches to improve the stability of the auth
+> server ([rendezvous port
+> death](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00003.html) /
+> [invalid rendezvous
+> ports](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00019.html)).
+
+> Lastly, if you haven't seen it already: Richard Hillesley has posted an
+> article [*GNU HURD: Altered visions and lost
+> promise*](http://www.h-online.com/open/features/GNU-HURD-Altered-visions-and-lost-promise-1030942.html)
+> that caused [quite](http://lwn.net/Articles/394295/)
+> [a](http://www.reddit.com/r/linux/comments/ckjt2/gnu_hurd_altered_visions_and_lost_promise/)
+> [bunch](http://www.reddit.com/r/programming/comments/ckjud/the_hurd_altered_visions_and_lost_promise/)
+> [of](http://www.osnews.com/comments/23511)
+> [discussion](http://news.ycombinator.com/item?id=1474941) -- some of it valid
+> and constructive criticism, some of it less so. If *you* want to come in
+> contact with us GNU Hurd developers, there are [[numerous options to contact
+> us|contact_us]]!
+
+"""]]
diff --git a/news/2010-07-31.mdwn b/news/2010-07-31.mdwn
new file mode 100644
index 00000000..68153c7a
--- /dev/null
+++ b/news/2010-07-31.mdwn
@@ -0,0 +1,59 @@
+[[!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 date="2010-08-10 17:30 UTC"]]
+
+A month of the Hurd: *Thanks, Phil!*, *Debian Installer*, *compatibility*, and
+*LWN article*.
+[[!if test="included()" then="""[[!toggle id=full_news
+text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
+else="[[!paste id=full_news]]"]]
+
+[[!cut id="full_news" text="""
+
+> Philip Charles, our 72 years old provider of Debian GNU/Hurd installation CDs
+> [has now resigned](http://lists.debian.org/debian-hurd/2010/07/msg00020.html)
+> from that position. This has lead to a flood of [public thank-you
+> responses](http://lists.debian.org/debian-hurd/2010/07/msg00020.html#00021),
+> and surely yet more of those have been sent privately. Phil, thanks again
+> for providing the many installation images you've started producing [nearly
+> ten years ago](http://lists.debian.org/debian-hurd/2000/08/msg00249.html)! --
+> oh, the joy of (not) uploading CD-size images using a 56k modem... -- and
+> that have been the first choice for many of us to get a [[Debian
+> GNU/Hurd|hurd/running/debian]] system installed.
+
+> On the other hand, there's no need to worry about these news: Jérémie Koenig
+> got the [Debian Installer for the
+> Hurd](http://jk.fr.eu.org/debian/hurd-installer/) into a basically working
+> state; there is a simple [four step installation
+> guide](http://jk.fr.eu.org/debian/hurd-installer/README.txt). This brings us
+> a big step forward towards easy installation of Debian GNU/Hurd and automated
+> image creation. You can track Jérémie's progress on his [[user
+> page|jkoenig]].
+
+> Emilio Pozuelo Monfort also made progress with his Google Summer of Code
+> work. For example, he posted a new iteration of his proposed [changes to
+> exec](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00141.html) as
+> well as he added support for [sending file descriptors over Unix
+> sockets](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00145.html).
+> These patches add features and improve compatibility to other systems, and
+> thus help to get more software packages to work as expected on GNU/Hurd
+> systems.
+
+> Ludovic Courtès [fixed `make
+> dist`](http://lists.gnu.org/archive/html/bug-hurd/2010-07/threads.html#00107),
+> which allows for easy tarball creation of the GNU Hurd sources.
+
+> We've been in the news [[last month|2010-06-30]] -- and this month yet again:
+> LWN posted a well-researched article on the status of the Hurd: Koen
+> Vervloesem: [*The Hurd: GNU's quest for the perfect
+> kernel*](http://lwn.net/Articles/395150/).
+
+"""]]
diff --git a/open_issues.mdwn b/open_issues.mdwn
new file mode 100644
index 00000000..9f9289e2
--- /dev/null
+++ b/open_issues.mdwn
@@ -0,0 +1,26 @@
+[[!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]]."]]"""]]
+
+[[!meta title="Open Issues"]]
+
+This is a dumping ground for open issues.
+
+[[!inline
+pages=none
+show=-1
+feeds=no
+actions=yes
+rootpage="open_issues" postformtext="Add a new item titled:"]]
+
+[[!map
+pages="(./open_issues/* or */open_issues/* or hurd/running/debian/porting/* or tagged(open_issue*)) and !*/discussion"
+show=title]]
+
+[[!inline pages=tag raw=yes feeds=no]]
diff --git a/open_issues/adduser.mdwn b/open_issues/adduser.mdwn
new file mode 100644
index 00000000..23552301
--- /dev/null
+++ b/open_issues/adduser.mdwn
@@ -0,0 +1,36 @@
+[[!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]]."]]"""]]
+
+[[!meta title="adduser: posix_spawn() error=1073741826"]]
+
+[[!tag open_issue_porting]]
+
+`adduser` does work as expected, the following warnings are spurious, they just
+appear when one doesn't have the nscd package. They do not appear on linux boxes
+because there posix_spawn doesn't report ENOENT for exec(). Posix indeed says
+that `if the error occurs after the calling process successfully returns, the
+child process shall exit with exit status 127'. The hurd however reports all
+errors, thus the warning.
+
+ $ 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/open_issues/automatic_backtraces_when_assertions_hit.mdwn b/open_issues/automatic_backtraces_when_assertions_hit.mdwn
new file mode 100644
index 00000000..1cfacaf5
--- /dev/null
+++ b/open_issues/automatic_backtraces_when_assertions_hit.mdwn
@@ -0,0 +1,18 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <azeem> tschwinge: ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion `! __spin_lock_locked (&ss->critical_section_lock)' failed.
+ <youpi> it'd be great if we could have backtraces in such case
+ <youpi> at least just the function names
+ <youpi> and in this case (static), just addresses would be enough
diff --git a/open_issues/automatically_checking_port_deallocation.mdwn b/open_issues/automatically_checking_port_deallocation.mdwn
new file mode 100644
index 00000000..fb8cfd01
--- /dev/null
+++ b/open_issues/automatically_checking_port_deallocation.mdwn
@@ -0,0 +1,22 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> we really need something that is able to automatically check port deallocation
+ <youpi> at least for the trivial cases, for which we do have bugs I'm currently fixing...
+ <pochu> test suite? :)
+ <pochu> won't magically find them though, so not what you've asked for...
+ <youpi> test suites can trigger some of the bugs yes
+ <youpi> which is already a good thing
+ <youpi> of course the coverage can't be perfect
+ <youpi> one of the bugs I fixed happened only for setuid binaries for instance
diff --git a/open_issues/bash.mdwn b/open_issues/bash.mdwn
new file mode 100644
index 00000000..47598071
--- /dev/null
+++ b/open_issues/bash.mdwn
@@ -0,0 +1,47 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+# *bash* 4.0 vs. typing `C-c` (*SIGINT*)
+
+Will show `-bash: echo: write error: (ipc/mig) wrong reply message ID` unter
+certain conditions.
+
+After having noticed that this error doesn't occur if starting *bash* with
+`--norc`, I isolated it to the following command in `.bashrc`:
+
+ case $TERM in
+ xterm* | rxvt*)
+ PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"';;
+ esac
+
+... and indeed:
+
+ tschwinge@flubber:~ $ echo "$TERM" -- "$PROMPT_COMMAND"
+ xterm -- echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"
+ tschwinge@flubber:~ $ ^C
+ -bash: echo: write error: (ipc/mig) wrong reply message ID
+ tschwinge@flubber:~ $ PROMPT_COMMAND=
+ tschwinge@flubber:~ $ ^C
+ tschwinge@flubber:~ $
+
+ bash-4.0$ PROMPT_COMMAND='echo >&2 -n foo\ '
+ foo bash-4.0$ ^C
+
+ bash-4.0$ PROMPT_COMMAND='echo >&1 -n foo\ '
+ foo bash-4.0$ ^C
+ bash: echo: write error: (ipc/mig) wrong reply message ID
+
+ bash-4.0$ PROMPT_COMMAND='/bin/echo >&1 -n foo\ '
+ foo bash-4.0$ ^C
+ bash: start_pipeline: pgrp pipe: (ipc/mig) wrong reply message ID
+
+So, there's something different with stdout in / after the SIGINT handler.
diff --git a/open_issues/bash_busy-loop.mdwn b/open_issues/bash_busy-loop.mdwn
new file mode 100644
index 00000000..5228ba33
--- /dev/null
+++ b/open_issues/bash_busy-loop.mdwn
@@ -0,0 +1,33 @@
+[[!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]]."]]"""]]
+
+I've first seen this problem after having had the following command line run
+for a week, or two, or three:
+
+Start `screen`. Find PID of pfinet.
+
+ $ while sleep 66; do echo "$(date)" " $(ps --no-header --format=hurd -p [PID])"; done | tee ps-pfinet
+
+Leave it running, detach from `screen`.
+
+Eventually, the main `bash` process will go bonkers and eat 100 % CPU time.
+Reproduced on four different systems.
+
+A faster way to reproduce this, again inside `screen`; every three seconds,
+write text in 10 MiB bursts to the terminal:
+
+ $ while sleep 3; do date > tmp/tmp && yes "$(date)" | dd bs=1M count=10; done
+
+This one only needs like ten hours, before `bash` starts its busy-loop, from
+which it can only be terminated with `SIGKILL`. At this point, the `term`,
+`screen`, `fifo` processes also have used 40, 52, 25 minutes of CPU time,
+respectively, but appear to be still working fine.
+
+I did not yet start debugging this.
diff --git a/open_issues/bash_interrupted_system_call.mdwn b/open_issues/bash_interrupted_system_call.mdwn
new file mode 100644
index 00000000..9feab6ff
--- /dev/null
+++ b/open_issues/bash_interrupted_system_call.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <virtuoso015> i seem to be getting this message from the shell "-bash: /dev/fd/62: Interrupted system call"
+ <virtuoso015> is it significant ?
+ <youpi> I've seen this issue already yes
+ <youpi> it's not
+ <youpi> it's bash not handling EINTR properly
+ <antrik> youpi: so this is actually a bug in bash, not Hurd generating a bogus error?
+ <youpi> well, it's Hurd generating an error which bash doesn't expect to see
diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn
new file mode 100644
index 00000000..9672041c
--- /dev/null
+++ b/open_issues/bash_vs_screen_vs_sigint.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]]."]]"""]]
+
+ * [[bash]]
+ * [[screen]]
diff --git a/open_issues/blkrrpart_ioctl.mdwn b/open_issues/blkrrpart_ioctl.mdwn
new file mode 100644
index 00000000..b3a91bfb
--- /dev/null
+++ b/open_issues/blkrrpart_ioctl.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]]."]]"""]]
+
+[[!meta title="BLKRRPART IOCTL"]]
+
+[[!tag open_issue_glibc open_issue_hurd open_issue_gnumach]]
+
+Just like in other Unix systems one can, for example, use `fdisk` or `parted`
+to manage hard disks' partition tables. After doing changes to a disk's
+partition table, the kernel has to be instructed to reinitialize its internal
+data structures: where does a partition begin, where does it end, etc.
+
+With `fdisk` and friends this is done on Linux with the `BLKRRPART` IOCTL,
+which is used to tell the kernel to reread the disk's partition table.
+
+`parted` also uses this interface on Linux, but for GNU Hurd, the corresponding
+function, `libparted/arch/gnu.c (gnu_disk_commit)`, doesn't do anything at all.
+The infrastructure in [[GNU_Mach|microkernel/mach/gnumach]] is already there,
+`linux/src/drivers/block/ide.c (ide_ioctl) <BLKRRPART>` and
+`linux/src/drivers/scsi/sd_ioctl.c (sd_ioctl) <BLKRRPART>`, but the IOCTL needs
+to be routed from `libparted` through [[hurd/glibc]]'s Hurd IOCTL interface,
+through Hurd's [[hurd/libstore]], to [[GNU_Mach|microkernel/mach/gnumach]].
+
+This is not a huge project, and actually one that is suitable for someone who
+wants to start with hacking the system.
diff --git a/open_issues/bpf.mdwn b/open_issues/bpf.mdwn
new file mode 100644
index 00000000..73f73093
--- /dev/null
+++ b/open_issues/bpf.mdwn
@@ -0,0 +1,72 @@
+[[!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=BPF]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *Berkeley Packet Filter*s.
+
+
+# Documentation
+
+ * Wikipedia: [[!wikipedia "Berkeley Packet Filter"]]
+
+ * [The Packet Filter: An Efficient Mechanism for User-level Network
+ Code](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.8755),
+ 1987, Jeffrey C. Mogul, Richard F. Rashid, Michael J. Accetta
+
+ * [The BSD Packet Filter: A New Architecture for User-level Packet
+ Capture](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.7849),
+ 1992, Steven Mccanne, Van Jacobson
+
+ * [Protocol Service Decomposition for High-Performance
+ Networking](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.8387),
+ 1993, Chris Maeda, Brian N. Bershad
+
+ * [Efficient Packet Demultiplexing for Multiple Endpoints and Large
+ Messages](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.44),
+ 1994, Masanobu Yuhara Fujitsu, Masanobu Yuhara, Brian N. Bershad, Chris
+ Maeda, J. Eliot, B. Moss
+
+ * ... and many more
+
+
+# Implementation
+
+ * [[community/HurdFr]]
+
+ * <http://wiki.hurdfr.org/index.php/BPF>
+
+ * <http://wiki.hurdfr.org/index.php/Reseau_dans_gnumach>
+
+ * Git repository: <http://rcs-git.duckcorp.org/hurdfr/bpf.git/>
+
+ The patch for [[GNU Mach|microkernel/mach/gnumach]] is expected to be
+ complete and functional, the [[hurd/translator]] less so -- amongst others,
+ there are unresolved issues concerning support of [[hurd/glibc/IOCTL]]s.
+
+ * <http://lists.gnu.org/archive/html/bug-hurd/2006-03/msg00025.html>
+
+ * [[zhengda]]
+
+ * [[!GNU_Savannah_bug 25054]] -- Kernel panic with eth-multiplexer
+
+ * [[!GNU_Savannah_patch 6619]] -- pfinet uses the virtual interface
+
+ * [[!GNU_Savannah_patch 6620]] -- pfinet changes its filter rules with
+ its IP address
+
+ * [[!GNU_Savannah_patch 6621]] -- pfinet sets the mach device into the
+ promiscuous mode
+
+ * [[!GNU_Savannah_patch 6622]] -- pfinet uses the BPF filter
+
+ * [[!GNU_Savannah_patch 6851]] -- fix a bug in BPF
diff --git a/open_issues/chroot_difference_from_linux.mdwn b/open_issues/chroot_difference_from_linux.mdwn
new file mode 100644
index 00000000..f2009bd8
--- /dev/null
+++ b/open_issues/chroot_difference_from_linux.mdwn
@@ -0,0 +1,17 @@
+[[!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
+
+ <cfhammar> weird, even fd = open("/"), chroot("/tmp/chroot"), openat(fd, "/tmp/chroot/..) opens /tmp/chroot in linux
+ <pochu> cfhammar: isn't that expected?
+ <cfhammar> pochu: well, i didn't expect it :-)
+ <cfhammar> pochu: in hurd, /tmp gets opened, which i think is more natural
+ <pochu> cfhammar: oh right, didn't notice the ".." :-)
diff --git a/open_issues/crash_server.mdwn b/open_issues/crash_server.mdwn
new file mode 100644
index 00000000..d97f5458
--- /dev/null
+++ b/open_issues/crash_server.mdwn
@@ -0,0 +1,189 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+Given an `a.out` executable that only does `raise (SIGABRT)`, invoking that
+one...
+
+ * ... against `crash-dump-core` will...
+
+ * ... not overwrite existing `core` files.
+
+ Is this reasonable? Linux does overwrite them, for example.
+
+ * ... show big variances in running-time behavior:
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.350 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.771 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.367 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 5.789 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.664 user 0.010 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:01 core
+
+ * ... produce a huge `core` file:
+
+ $ du -hs core
+ 17M core
+
+ On Linux, the `core` file occupies 76 KiB of disk space, which seems
+ much more reasonable. This is possibly related with the default 128MiB
+ heap preallocation.
+
+ * ... does not always produce a useful backtrace:
+
+ `abort();`
+
+ $ gdb test core
+ warning: core file may not match specified executable file.
+ [New Thread 86678]
+ warning: Wrong size fpregset in core file.
+ ...
+ Core was generated by `./test'.
+ Program terminated with signal 6, Aborted.
+ warning: Wrong size fpregset in core file.
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ #1 0x011f593f in __msg_sig_post (process=72, signal=6, sigcode=0, refport=1)
+ at /build/buildd-eglibc_2.10.2-7-hurd-i386-iGL6op/eglibc-2.10.2/build-tree/hurd-i386-libc/hurd/RPC_msg_sig_post.c:144
+ #2 0x0109a433 in kill_port (pid=<value optimized out>)
+ at ../sysdeps/mach/hurd/kill.c:68
+ #3 kill_pid (pid=<value optimized out>) at ../sysdeps/mach/hurd/kill.c:105
+ #4 0x0109a69f in __kill (pid=21142, sig=6) at ../sysdeps/mach/hurd/kill.c:139
+ #5 0x01099af6 in raise (sig=6) at ../sysdeps/posix/raise.c:27
+ #6 0x0109de59 in abort () at abort.c:88
+ #7 0x0804849f in main ()
+
+ `char *foo = 0; *foo = 1;`
+
+ $ gdb test core
+ Program terminated with signal 11, Segmentation fault.
+ warning: Wrong size fpregset in core file.
+ #0 0x00000000 in ?? ()
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ #1 0x0108565b in __libc_start_main (main=0x8048464 <main>, argc=1, ubp_av=0x1023e64,
+ init=0x8048490 <__libc_csu_init>, fini=0x8048480 <__libc_csu_fini>, rtld_fini=0xea20 <_dl_fini>,
+ stack_end=0x1023e5c) at libc-start.c:251
+ #2 0x080483d1 in _start ()
+
+ `raise (SIGABRT);`
+
+ $ gdb a.out core
+ warning: core file may not match specified executable file.
+ [New Thread 76651]
+
+ warning: Wrong size fpregset in core file.
+ Reading symbols from /lib/libc.so.0.3...[...]
+ Core was generated by `./a.out'.
+ Program terminated with signal 6, Aborted.
+
+ warning: Wrong size fpregset in core file.
+ #0 0x00000000 in ?? ()
+ (gdb) bt
+ #0 0x00000000 in ?? ()
+ Cannot access memory at address 0x17
+
+ [[!tag open_issue_gdb]] Probably [[GDB]] doesn't manage to dig in the stack properly.
+
+ * ... against `crash-suspend` will...
+
+ * ... not work at all:
+
+ $ CRASHSERVER=/servers/crash-suspend ./a.out
+ $ [returns to the shell and doesn't suspended]
+
+ * ... show big variances in running-time behavior:
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.381 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.332 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 21.228 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.323 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 22.279 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.362 user 0.000 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 21.110 user 0.000 system 0.000
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+ $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted (core dumped)
+ real 1.350 user 0.000 system 0.020
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+
+ * ... can reliably crash GNU Mach:
+
+ This happens if a `core` file is already present (and won't get
+ overwritten; see above). I reproduced this three times.
+
+ $ TIMEFORMAT='real %R user %U system %S'
+ $ time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core
+ Aborted
+ real 2.856 user 0.000 system 0.010
+ -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core
+
+ panic: zalloc: zone kalloc.8192 exhausted
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006aba8,4d0f7e9c,200209b0,0,0)
+ 0x20020a4d(2006b094,2006ae40,2000,20016803,4a5f4114)
+ 0x2002bca5(49a03564,1,0,9,1000)
+ 0x20022f4c(2000,4a5f45d4,4a84879c,49a46564,4ac43e78)
+ 0x20021e65(4ac43e78,4a5f45d4,4a5f4114,0,0)
+ 0x2005309d(2106ba9c,3,38,28,1783)
+ Bad frame pointer: 0x2106ba78
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020a4d 0x2002bca5 0x20022f4c 0x20021e65 0x2005309d
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ panic
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:148
+ zalloc
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/zalloc.c:470
+ kalloc
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/kalloc.c:185
+ ipc_kobject_server
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:76
+ mach_msg_trap
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367
diff --git a/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn b/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn
new file mode 100644
index 00000000..4076d8d0
--- /dev/null
+++ b/open_issues/crashes_vs_system_load_cpu_load_rpc_load.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> I have a theory
+ <antrik> when the system is under CPU load, the ext2 locking issues are more likely to happen
+ <antrik> I'm under the impression, that when doing something disk-intensive (like a compile job) *considerably* more often causes crashes, when doing *any* other activity in parallel -- be it other compile jobs, or CPU-only activities
+ <antrik> thinking about it, I'm not sure whether CPU-intensive is the decisive criterium, or maybe RPC-intensive...
+ <antrik> CPU load doesn't seem to have any effect -- neither alone, nor in combination with other testcases
diff --git a/open_issues/cvs_tasks_file.mdwn b/open_issues/cvs_tasks_file.mdwn
new file mode 100644
index 00000000..67b64651
--- /dev/null
+++ b/open_issues/cvs_tasks_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 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="CVS tasks file"]]
+
+[[!tag open_issue_hurd]]
+
+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/open_issues/cvs_todo_file.mdwn b/open_issues/cvs_todo_file.mdwn
new file mode 100644
index 00000000..a42e6dca
--- /dev/null
+++ b/open_issues/cvs_todo_file.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 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="CVS TODO file"]]
+
+[[!tag open_issue_hurd]]
+
+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/open_issues/dde.mdwn b/open_issues/dde.mdwn
new file mode 100644
index 00000000..ef319a5c
--- /dev/null
+++ b/open_issues/dde.mdwn
@@ -0,0 +1,11 @@
+[[!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 redir=/dde]]
diff --git a/open_issues/debootstrap.mdwn b/open_issues/debootstrap.mdwn
new file mode 100644
index 00000000..8e6c4900
--- /dev/null
+++ b/open_issues/debootstrap.mdwn
@@ -0,0 +1,24 @@
+[[!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
+
+ <azeem_> you know, you would really help the Hurd if you tried debootstrap instead
+ <tschwinge> Oh? Does that have everying in place by now?
+ <azeem_> applying the patch in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498731#25
+ <azeem_> they are waiting for feedbacl
+ <azeem_> feedback*
+
+\#hurd, freenode, June (?) 2010
+
+ <azeem_> jd823592: if you want to use debootstrap, you should apply a patch
+ <azeem_> and test
+ <azeem_> http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=25;filename=debootstrap_hurd.patch;att=1;bug=498731
+ <azeem_> we desperately need somebody to test the patch
diff --git a/open_issues/device_drivers_and_io_systems.mdwn b/open_issues/device_drivers_and_io_systems.mdwn
new file mode 100644
index 00000000..ce50d93e
--- /dev/null
+++ b/open_issues/device_drivers_and_io_systems.mdwn
@@ -0,0 +1,94 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *device drivers* and *I/O systems*
+in general.
+
+Also see [[user-space device drivers]].
+[[community/gsoc/project ideas/driver glue code]].
+
+[[!toc levels=2]]
+
+
+# Documentation
+
+ * [An I/O System for Mach
+ 3.0](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.3210),
+ 1991, Alessandro Forin, David Golub, Brian Bershad
+
+ * [Linux Device Driver Emulation in
+ Mach](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.7252),
+ 1996, Shantanu Goel, Dan Duchamp
+
+ * [Eliminating receive livelock in an interrupt-driven
+ kernel](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.127.8257),
+ 1997, Jeffrey Mogul, Dec Western, Jeffrey C. Mogul, K. K. Ramakrishnan
+
+ * [IO-Lite: A Unified I/O Buffering and Caching
+ System](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.4224),
+ 1997, Vivek S. Pai, Peter Druschel, Willy Zwaenepoel
+
+ * [The Flux OSKit: A substrate for kernel and language
+ research](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.118.534),
+ 1997, Bryan Ford, Godmar Back, Greg Benson, Jay Lepreau, Albert Lin, Olin
+ Shivers
+
+ * [Reuse Linux Device Drivers in Embedded
+ Systems](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.6951),
+ 1998, Chi-wei Yang, Paul C. H. Lee, Ruei-Chuan Chang
+
+ * [THINK: A Software Framework for Component-based Operating System
+ Kernels](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.133.9239),
+ 2002, Jean-Philippe Fassino, Jean-Bernard Stefani, Julia Lawall, Gilles
+ Muller
+
+ * [An I/O Architecture for Microkernel-Based Operating
+ Systems](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.4337),
+ 2003, Hermann Haertig, Jork Loeser, Jork Löser, Frank Mehnert, Lars
+ Reuther, Martin Pohlack, Alexander Warg
+
+ * [High-Speed I/O: The Operating System as a Signalling
+ Mechanism](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.9.6991),
+ 2003, Matthew Burnside, Angelos D. Keromytis
+
+ * [Unmodified device driver reuse and improved system dependability via
+ virtual
+ machines](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.5317),
+ 2004, Joshua Levasseur, Volkmar Uhlig, Jan Stoess, Stefan Götz
+
+
+# External Projects
+
+ * [[DDE]]
+
+ * [Building Linux Device Drivers on
+ FreeBSD](http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html)
+
+ * [Project UDI](http://www.projectudi.org/), a multi-company effort to define
+ a Uniform Driver Interface
+
+ * [The Free Software Movement and
+ UDI](http://www.gnu.org/philosophy/udi.html)
+
+ * [OSKit](http://www.cs.utah.edu/flux/oskit/)
+
+ * [Unofficial OSKit source](http://www.nongnu.org/oskit/) on Savannah
+
+ * [[microkernel/Mach]]-like
+
+ It might be possible to integrate these systems' device drivers, as they're
+ expected to mostly be using the same interfaces as the current in-kernel
+ Mach drivers are.
+
+ * OSF Mach
+
+ * Darwin
diff --git a/open_issues/dir-lookup_authority.mdwn b/open_issues/dir-lookup_authority.mdwn
new file mode 100644
index 00000000..64866eb5
--- /dev/null
+++ b/open_issues/dir-lookup_authority.mdwn
@@ -0,0 +1,68 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <cfhammar> I have discovered a bug in the dir-lookup protocol though
+ <cfhammar> Currently, I'm investigating the bug a bit further
+ <cfhammar> when doing dir-lookups with several path components, the look-up is done with the authority of the user who opened the directory, as opposed to the user doing the lookup
+ <cfhammar> e.g, consider foo/bar/baz, where bar can only be used by its owner and foo and baz are world readable
+ <cfhammar> if foo is opened, then transferred to another user, he can open baz, which he shouldn't be able to
+ <cfhammar> this is possible where foo/bar/baz is within a single translator, and the lookup is done in a single dir-lookup
+ <antrik> cfhammar: I'm not sure this is a bug
+ <cfhammar> I have a test case that triggers the bug, and another that doesn't which currently confuses me
+ <antrik> cfhammar: it's probably not very usual to pass around open directory ports; but if somebody does it, it's probably actually desired that it keeps the authority
+ <antrik> it's kinda consistent with passing normal FDs
+ <cfhammar> antrik: it should only allow accesses to entries not sub-entries
+ <cfhammar> antrik: it isn't allowed in Linux atleast, and I'm guessing it's mandated by posix
+ <cfhammar> also note that a more common scenario is a process that opens a directory and then drops authority
+ <cfhammar> probably more common, that is
+ <antrik> cfhammar: I'm not really familiar with directory access functions... I wasn't even aware that it's possible to pass around directory FDs
+ <antrik> but if it is, it would indeed be good to know what POSIX says about this
+ <antrik> cfhammar: I don't see how this is related?...
+ <cfhammar> antrik: after the process has dropped authority it can still make lookups in directories that it should no longer be able to
+ <antrik> cfhammar: interesting point...
+ <antrik> cfhammar: do you think this is fixable?
+ <cfhammar> antrik: Not without (defacto) changing the interface
+ <cfhammar> e.g only looking up a singe path component at a time
+ <cfhammar> or doing the auth check lazily on io_reauthenticate
+ <antrik> cfhammar: yeah, obviously it's not possible without an API change. I just wonder whether it's possible without throwing the current auth/lookup mechanism overboard alltogether...
+ <cfhammar> antrik: both my solutions are only minor changes to the API, but fairly major in the sense that we need to change all callers :-(
+ <cfhammar> diskfs_S_dir_lookup is a very large function, for example
+ <antrik> cfhammar: OK
+ <antrik> cfhammar: I wonder whether there is a possible transition path without breaking all existing installations...
+ <cfhammar> we could provide a new RPC while supporting the old one
+ <cfhammar> note that changing fs.defs only affects glibc and the Hurd, normal apps should be fine
+ <antrik> cfhammar: have you posted your findings to the ML yet?
+ <cfhammar> No, I'm still investigating why my second test-case doesn't trigger the bug
+ <cfhammar> Intrestingly it's the one using all POSIX functions...
+ <cfhammar> Perhaps its a bug that maskes the lookup bug ;-)
+ <antrik> I guess there is some quirk which you do not fully understand yet :-)
+ <cfhammar> Oh, there's always a new quirk to find in the Hurd :-)
+ <cfhammar> antrik: seems that dir_lookup isn't buggy after all
+ <cfhammar> antrik: as all FDs are reauthenticated on setauth
+ <antrik> ah
+ <cfhammar> antrik: and (presumably) ports are unauthenticated and reauthenticated when transfered
+ <antrik> yeah, that's the idea behind the auth protocol...
+ <antrik> users obtain specific capabilities by authenticating generic ports against their own ID
+ <cfhammar> I didn't really have a coherent view on how open flags are handled on reauth
+ <cfhammar> it seems open flags always win, so that a O_READ port that is unauthed is still readable
+ <antrik> not sure what you mean
+ <cfhammar> if I open a file to read it, then reauth it with a user that isn't permitted to read it, I can still read from it
+ <cfhammar> (as it should be)
+ <cfhammar> by contrast permission to do lookups in a directory is determined by who authed it
+ <cfhammar> so I won't be able to do lookups after a reauth, if it's not permitted by the file bits
+ <youpi> Mmm, openat should however be able to
+ <youpi> since you've first opened the directory with the auth
+ <cfhammar> it isn't since open FDs are reauthed on setauth
+ <cfhammar> not sure whether it should though, Linux behaves the same way atleast
+ <cfhammar> though it could be done with POSIX.2008's O_SEARCH open flag
diff --git a/open_issues/duplicate_inclusion_guards.mdwn b/open_issues/duplicate_inclusion_guards.mdwn
new file mode 100644
index 00000000..1bb8fc36
--- /dev/null
+++ b/open_issues/duplicate_inclusion_guards.mdwn
@@ -0,0 +1,16 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_mig]]
+
+E.g., both `/usr/include/hurd/process.h` and
+`/usr/include/hurd/process_request.h` use `_process_user_` as an inclusion
+guard. This leads to problems when both are needed, as is the case in
+[[GDB]]'s `gdb/gnu-nat.c`.
diff --git a/open_issues/e2fsck_i_file_acl_hi.mdwn b/open_issues/e2fsck_i_file_acl_hi.mdwn
new file mode 100644
index 00000000..6a0632ac
--- /dev/null
+++ b/open_issues/e2fsck_i_file_acl_hi.mdwn
@@ -0,0 +1,35 @@
+[[!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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <Duck> something's broken in ext2, fsck, or the like
+ <Duck> /dev/hd0s1: i_file_acl_hi for inode 81872 (/proc) is 32, shoud be 0.
+ <Duck> youpi: the other problem is probably related to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526524
+ <Duck> i'll just check when it is fixed
+ <antrik> youpi: I've seen a lot of these fsck errors since the upgrade to 1.41.x
+ <antrik> youpi: seems to happen whenever a passive translator is still active while the machine reboots
+ <Duck> antrik: ho, so in my example this could be related to procfs then
+ <antrik> Duck: don't know... I got it with various terminal-related nodes
+ <antrik> other translators get terminated before ext2 it seems, so the problem doesn't happen there
+ <antrik> unless the machine crashes of course
+ <antrik> ah, right, it told you that it's the /proc node :-)
+ <antrik> was it the only node it complained about?
+ <antrik> Duck: ^
+ <Duck> antrik: yes, the only one
+ <youpi> so it's most probably i
+ <youpi> t
+ <Duck> but currently i don't have much translators around besides the base install
+ <antrik> that's strange... my theory about translators active at reboot seems wrong then
+ <youpi> well, maybe procps is not behaving properly
+ <youpi> procfs*
+ <antrik> youpi: I doubt it. I regularily get the same issue with various term nodes; and when the machine crashes rather than rebooting cleanly, many other nodes as well
+ <youpi> k
+ <antrik> but it's always passive translator nodes
diff --git a/open_issues/elinks.mdwn b/open_issues/elinks.mdwn
new file mode 100644
index 00000000..ee372971
--- /dev/null
+++ b/open_issues/elinks.mdwn
@@ -0,0 +1,28 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+IRC, unknown channel, 2008-05-26 and later
+
+ <paakku> In elinks/src/network/state.h, there is an assumption that values of errno are between 0 and 100000. Now looking at glibc-2.5/sysdeps/mach/hurd/bits/errno.h, I see that you're using values outside this range. Have there been problems because of this?
+ <youpi> eeerf
+ <youpi> I had never seen a program assuming that
+ <youpi> that sucks
+ <paakku> It can be fixed, but that'd require some work, so I'd like to first have a clear idea of the effects.
+ <youpi> fixed where ?
+ <paakku> in elinks
+ <youpi> k
+ <paakku> by allocating just one number from our enum connection_state for system errors, and then stashing the errno value in a separate variable.
+ <paakku> Anyway, if you see this cause any user-visible bugs in ELinks, please report.
+
+ <kahmalo> I mentioned here on 2008-05-26 that ELinks assumes errno values are between 0 and 100000 whereas the Hurd uses other values. I fixed this in ELinks last weekend; the most recent 0.12 and 0.13 snapshots should include the fix. If you find any remaining errno assumptions, please post to: http://bugzilla.elinks.cz/show_bug.cgi?id=1013
+ <kahmalo> or to one of our mailing lists.
+ <kahmalo> I guess the pflocal select() bug http://savannah.gnu.org/bugs/?22861 is the primary hindrance to running ELinks on the Hurd. Has any decision been made on how that will be fixed?
diff --git a/open_issues/emacs.mdwn b/open_issues/emacs.mdwn
new file mode 100644
index 00000000..3f025c46
--- /dev/null
+++ b/open_issues/emacs.mdwn
@@ -0,0 +1,43 @@
+[[!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="GNU Emacs"]]
+
+[[!tag open_issue_porting]]
+
+GNU Emacs mostly does work, however there are a few issues.
+
+ * `dired` on a directory hangs. (Use `C-g C-g` to break the unresponsive
+ operation.)
+
+ * Configuration in `src/s/`: `gnu.h` uses `bsd-common.h`. `gnu-kfreebsd.h`
+ uses `gnu-linux.h` -- we probably should too.
+
+ * `gnu-linux.h` makes a few things depend on `/proc` (also see
+ `HAVE_PROCFS`) -- either resort to our own ways, or enhance our
+ [[hurd/translator/procfs]] accordingly.
+
+ * `sysdep.c`
+
+ * Got a hang when compiling GNU Emacs 23, when it was compiling `.el` to
+ `.elc` files. Looked like busy-looping inside glibc. This was not
+ reproducible so far.
+
+ * Debian emacs23_23.1+1-2, grubber, (probably) busy-looping in `ext2fs` on
+ `/media/data` when resuming emacs23 build in `~/tmp/emacs/emacs23-*/`
+ (`dpkg-buildpackage -B -uc -nc 2>&1 | tee L`). No modifications to
+ `emacs23-*` so far, I think. Hangs always in the same place, it seems, and
+ reproducible. Tarred to `emacs23-23.1+1.tar.bz2` (beware: empty and
+ zero-permission files:
+ `emacs23-23.1+1/.pc/debian-site-init-el.diff/lisp/site-init.el`,
+ `emacs23-23.1+1/.pc/autofiles.diff/src/config.in~`). At hang-time: the
+ rootfs is fine (`syncfs -c -s /` works; `syncfs` involving `/media/data`
+ hangs). Plan: GDB on that ext2fs, and see what's hanging / locked. [[!tag
+ open_issue_hurd]]
diff --git a/open_issues/error_message_disk_full.mdwn b/open_issues/error_message_disk_full.mdwn
new file mode 100644
index 00000000..f72cd66a
--- /dev/null
+++ b/open_issues/error_message_disk_full.mdwn
@@ -0,0 +1,14 @@
+[[!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]]."]]"""]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> /usr/bin/install: writing `/usr/src/gnumach-20060408.dfsg.1/debian/gnumach-dbg/boot/gnumach': (os/kern) memory error
+ <antrik> interesting way to tell that the disk is full ;-)
diff --git a/open_issues/etc_fstab.mdwn b/open_issues/etc_fstab.mdwn
new file mode 100644
index 00000000..eb2a34f9
--- /dev/null
+++ b/open_issues/etc_fstab.mdwn
@@ -0,0 +1,18 @@
+[[!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="/etc/fstab"]]
+
+Even though we don't need a `/etc/fstab` for mounting filesystems
+(passive [[hurd/translator]]s to the rescue; they have problems on their
+own, see the [[hurd/critique]]), we still need this file for `fsck -a`
+and `swapon -a` to function.
+
+[[!tag open_issue_hurd]]
diff --git a/open_issues/exec.mdwn b/open_issues/exec.mdwn
new file mode 100644
index 00000000..1806983a
--- /dev/null
+++ b/open_issues/exec.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+[[!open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> oh my, disabling gzip/bzip2 support makes apt preconfigure hang
+ <youpi> support in exec* I meant
+
+ <youpi> now a funny bug: if I disable gzip/bzip2 support from exec
+ <youpi> trying to run a zero-byte file hangs
diff --git a/open_issues/extern_inline.mdwn b/open_issues/extern_inline.mdwn
new file mode 100644
index 00000000..a56d4902
--- /dev/null
+++ b/open_issues/extern_inline.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> youpi: Did you ever review the Savannah hurd branch master-fix_extern_inline?
+ <youpi> why static inlines instead of extern lines ?
+ <youpi> +in
+ <youpi> static inlines can lead to space waste where it isn't inlined
+ <tschwinge> Are you sure about that -- I don't think so.
+ <tschwinge> At least with 99 inlining.
+ <youpi> what can the compiler do where it isn't inlined ?
+ <youpi> include a copy
+ <youpi> thus space waste
+ <youpi> 00000000004004b1 t f
+ <youpi> 00000000004004d5 t f
+ <youpi> I've juste checked
+ <youpi> two copies of my inline function
+ <youpi> one per .o
+ <tschwinge> Yes, but isn't it expected tobe that way? ARen't these functions those that are never included in a libarary, as opposed to those which I switched to __extern_inline in the next patch?
+ <tschwinge> It's been a long time that I had a look at this...
+ <tschwinge> The problem with the patch from the Debian package is that the functions didn't end up in the libraries anymore.
+ <youpi> ah you mean these are private functions and thus shouldn't be exposed (unexpected_reply for instance)
+ <youpi> but the duplication issue still holds
+ <youpi> the functions not ending up in the library is a concern indeed
+ <tschwinge> That's what my second patch fixes, I think.
+ <youpi> grah, callisto rebooted for no reason
+ <youpi> ah, indeed the second patch fixes things correctly
+ <youpi> uh, indeed it's --dbg-package=hurd in there
+ <youpi> how odd
+ <youpi> tschwinge: for the libftpconn case, yes unexpected_reply should probably be a static inline
+ <tschwinge> Is this true:
+ <tschwinge> static inline -- either inline or emit a local symbol vs. extern inline -- either inline or emit a reference to an external symbol.
+ <youpi> so as to not expose it
+ <youpi> for other cases we can keep an extern inline as they are just programs
+ <tschwinge> Then everything that's not expected to end up in a libarary must be static inline, as otherwise, when the compiler can't inline, there wouldn't be a reference to it available.
+ <youpi> and that avoids duplicate code
+ <youpi> yes
+ <youpi> but as long as you provide the extern inlines by compiling an xinl.c there's no problem
+ <tschwinge> Sure, that'd be the alternative.
+ <youpi> for libraries you need to take care of the symbols you want to export (which can thus be in xinl.c), and those you don't want to export (and thus keep static inlines)
+ <tschwinge> So you say it'd be better to do that (xinl.c) instead of static inline?
+ <youpi> for programs, you can just keep them all extern inlines
+ <youpi> yes, it shares code
+ <youpi> it's only in the case of symbols that shouldn't be exported by the library that we need to use static inlines
+ <tschwinge> ANd in .c files that are part of programs I'd also use extern inline or static inline?
+ <youpi> for programs just always use extern lines
+ <youpi> +in
+ <youpi> as you don't care about symbol exposure
+ <youpi> unless the inline is defined in a .c file of course, in that case it's useless to make it extern
+ <tschwinge> But then I also always need xinl.c files for those, which we apparently don't have in a few places.
+ <youpi> yes
+ <tschwinge> But probably didn't notice so far, as the functions could always be inlined.
+ <youpi> probably because we used to have luck
+ <youpi> yes
+ <tschwinge> Yes, I was thinking about the term/munge.c thing.
+ <tschwinge> OK, I think I get it now. Then I'll try to fix this accordingly.
+ <tschwinge> But not now. Thanks for the help!
+ <youpi> ok, thanks
+ <tschwinge> It was quite a bit confusing to me.
+ <tschwinge> Due to the mostly reversed definition of extern inline in glibc (I think).
+ <youpi> inline definitely is confusing
+ <youpi> especially since the semantic has changed over time and according to standards :)
+ <tschwinge> And then GCC changing that according to C99.
+ <tschwinge> Yes.
diff --git a/open_issues/fdisk.mdwn b/open_issues/fdisk.mdwn
new file mode 100644
index 00000000..ece8fc89
--- /dev/null
+++ b/open_issues/fdisk.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+ Command (m for help): w
+ The partition table has been altered!
+
+ Calling ioctl() to re-read partition table.
+ *Segmentation fault*
+
+Changes have been saved, though.
+
+Perhaps realted to the [[BLKRRPART_IOCTL]]?
diff --git a/open_issues/fsync.mdwn b/open_issues/fsync.mdwn
new file mode 100644
index 00000000..d36a75ad
--- /dev/null
+++ b/open_issues/fsync.mdwn
@@ -0,0 +1,22 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date
+
+ <youpi> azeem: I think I found why apt-get throws Hurd down sometimes
+ <youpi> the problem is that it basically write(file, 20MB); fsync();
+ <youpi> i.e. it throws a storm of dirty-writeback to ext2fs
+ <youpi> which thus goes into throttling threads
+ <youpi> since posix explicitely says that fsync() can be void, I think I'll patch apt-get on the buildd
+ <youpi> (that bug has bitten me too many times in the past days to let it go further)
+ <youpi> for now it works
+ * youpi crosses fingers
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn
new file mode 100644
index 00000000..3209d5b0
--- /dev/null
+++ b/open_issues/gcc.mdwn
@@ -0,0 +1,51 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!tag open_issue_porting open_issue_gcc fixed_in_debian]]
+
+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]].
+
+ * [[Boehm_GC]].
diff --git a/open_issues/gcc/boehm_gc.mdwn b/open_issues/gcc/boehm_gc.mdwn
new file mode 100644
index 00000000..2ee88a2b
--- /dev/null
+++ b/open_issues/gcc/boehm_gc.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]]."]]"""]]
+
+[[!tag open_issue_gcc]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> youpi: The Debian GCC 4.3 package also has this change:
+ <tschwinge> --- boehm-gc/dyn_load.c.orig 2007-08-13 09:10:48.215678000 +0200
+ <tschwinge> +++ boehm-gc/dyn_load.c 2007-08-13 09:11:09.743969000 +0200
+ <tschwinge> @@ -26,7 +26,7 @@
+ <tschwinge> * None of this is safe with dlclose and incremental collection.
+ <tschwinge> * But then not much of anything is safe in the presence of dlclose.
+ <tschwinge> */
+ <tschwinge> -#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE)
+ <tschwinge> +#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) && !defined(_GNU_SOURCE)
+ <youpi> yes, these are needed
+ <youpi> and that's the kind of fix needed for java
+
+---
+
+<http://lists.debian.org/debian-hurd/2000/03/msg00305.html>
diff --git a/open_issues/gcc/libmudflap.mdwn b/open_issues/gcc/libmudflap.mdwn
new file mode 100644
index 00000000..f14ca1bc
--- /dev/null
+++ b/open_issues/gcc/libmudflap.mdwn
@@ -0,0 +1,74 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting open_issue_gcc]]
+
+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/open_issues/gcc_testsuite.mdwn b/open_issues/gcc_testsuite.mdwn
new file mode 100644
index 00000000..b4bbc7c8
--- /dev/null
+++ b/open_issues/gcc_testsuite.mdwn
@@ -0,0 +1,211 @@
+[[!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="GCC testsuite"]]
+
+[[!tag open_issue_gcc]]
+
+Here's some log of a GCC testsuite run; this is from trunk sources, about
+2008-10-19.
+
+ make -k check
+ make[1]: Entering directory `/media/data/home/tschwinge/tmp/gcc/trunk.work.build'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gcc/trunk.work.build/fixincludes'
+ autogen -T ../../trunk.work/fixincludes/check.tpl ../../trunk.work/fixincludes/inclhack.def
+ /bin/sh ./check.sh ../../trunk.work/fixincludes/tests/base
+ Fixed: testing.h
+ Fixed: testing.h
+ Fixed: AvailabilityMacros.h
+ Fixed: X11/ShellP.h
+ Fixed: X11/Xmu.h
+ Fixed: Xm/BaseClassI.h
+ Fixed: Xm/Traversal.h
+ Fixed: ansi/math.h
+ Fixed: ansi/stdlib.h
+ Fixed: arch/i960/archI960.h
+ Fixed: architecture/ppc/math.h
+ Fixed: assert.h
+ Fixed: bits/huge_val.h
+ Fixed: bits/string2.h
+ Fixed: bsd/libc.h
+ Fixed: c_asm.h
+ Fixed: com_err.h
+ Fixed: ctrl-quotes-def-1.h
+ Fixed: ctype.h
+ Fixed: curses.h
+ Fixed: errno.h
+ Fixed: features.h
+ Fixed: fixinc-test-limits.h
+ Fixed: hsfs/hsfs_spec.h
+ Fixed: ia64/sys/getppdp.h
+ Fixed: internal/math_core.h
+ Fixed: internal/sgimacros.h
+ Fixed: internal/wchar_core.h
+ Fixed: inttypes.h
+ Fixed: io-quotes-def-1.h
+ Fixed: iso/math_c99.h
+ Fixed: mach-o/dyld.h
+ Fixed: mach-o/swap.h
+ Fixed: malloc.h
+ Fixed: math.h
+ Fixed: netdnet/dnetdb.h
+ Fixed: netinet/in.h
+ Fixed: netinet/ip.h
+ Fixed: obstack.h
+ Fixed: pixrect/memvar.h
+ Fixed: pthread.h
+ Fixed: reg_types.h
+ Fixed: regex.h
+ Fixed: regexp.h
+ Fixed: rpc/auth.h
+ Fixed: rpc/rpc.h
+ Fixed: rpc/xdr.h
+ Fixed: rpcsvc/rstat.h
+ Fixed: rpcsvc/rusers.h
+ Fixed: signal.h
+ Fixed: sparc/asm_linkage.h
+ Fixed: standards.h
+ Fixed: stdint.h
+ Fixed: stdio.h
+ Fixed: stdio_tag.h
+ Fixed: stdlib.h
+ Fixed: string.h
+ Fixed: strings.h
+ Fixed: sundev/vuid_event.h
+ Fixed: sunwindow/win_lock.h
+ Fixed: sym.h
+ Fixed: sys/asm.h
+ Fixed: sys/cdefs.h
+ Fixed: sys/file.h
+ Fixed: sys/limits.h
+ Fixed: sys/machine.h
+ Fixed: sys/mman.h
+ Fixed: sys/pthread.h
+ Fixed: sys/signal.h
+ Fixed: sys/socket.h
+ Fixed: sys/spinlock.h
+ Fixed: sys/stat.h
+ Fixed: sys/sysmacros.h
+ Fixed: sys/time.h
+ Fixed: sys/types.h
+ Fixed: sys/ucontext.h
+ Fixed: sys/wait.h
+ Fixed: testing.h
+ Fixed: time.h
+ Fixed: tinfo.h
+ Fixed: types/vxTypesBase.h
+ Fixed: unistd.h
+ Fixed: wchar.h
+
+ All fixinclude tests pass
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gcc/trunk.work.build/fixincludes'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gcc/trunk.work.build/gcc'
+ test -d testsuite || mkdir testsuite
+ test -d testsuite/gcc || mkdir testsuite/gcc
+ (rootme=`${PWDCMD-pwd}`; export rootme; \
+ srcdir=`cd ../../trunk.work/gcc; ${PWDCMD-pwd}` ; export srcdir ; \
+ cd testsuite/gcc; \
+ rm -f tmp-site.exp; \
+ sed '/set tmpdir/ s|testsuite|testsuite/gcc|' \
+ < ../../site.exp > tmp-site.exp; \
+ /bin/sh ${srcdir}/../move-if-change tmp-site.exp site.exp; \
+ EXPECT=expect ; export EXPECT ; \
+ if [ -f ${rootme}/../expect/expect ] ; then \
+ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWDCMD-pwd}` ; \
+ export TCL_LIBRARY ; fi ; \
+ GCC_EXEC_PREFIX="/home/tschwinge/tmp/gcc/trunk.work.build.install/lib/gcc/" ; export GCC_EXEC_PREFIX ; \
+ runtest --tool gcc )
+ Test Run By tschwinge on Thu Oct 23 08:42:42 2008
+ Native configuration is i386-unknown-gnu0.3
+
+ === gcc tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/config/default.exp as tool-and-target-specific interface file.
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.c-torture/compile/compile.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.c-torture/execute/execute.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/autopar/autopar.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/charset/charset.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/compat/compat.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/cpp/cpp.exp ...
+ FAIL: gcc.dg/cpp/_Pragma3.c -fno-show-column (test for excess errors)
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/cpp/trad/trad.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/debug/debug.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp ...
+ FAIL: gcc.dg/debug/dwarf2/dwarf-die3.c scan-assembler-not DW_AT_inline
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/dfp/dfp.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/dg.exp ...
+ FAIL: gcc.dg/20021014-1.c (test for excess errors)
+ FAIL: gcc.dg/cleanup-12.c (test for excess errors)
+ FAIL: gcc.dg/cleanup-5.c (test for excess errors)
+ FAIL: gcc.dg/nest.c (test for excess errors)
+ FAIL: gcc.dg/nested-func-4.c (test for excess errors)
+ FAIL: gcc.dg/pr32450.c (test for excess errors)
+ FAIL: gcc.dg/pr33645-3.c scan-assembler-not var1_t
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/format/format.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/gomp/gomp.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/graphite/graphite.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/ipa/ipa.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/matrix/matrix.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/noncompile/noncompile.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/pch/pch.exp ...
+ FAIL: gcc.dg/pch/valid-1b.c -O0 -g -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O0 -g assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -O0 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O0 assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -O1 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O1 assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -O2 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O2 assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -O3 -fomit-frame-pointer -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O3 -fomit-frame-pointer assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -O3 -g -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -O3 -g assembly comparison
+ FAIL: gcc.dg/pch/valid-1b.c -Os -I. (test for excess errors)
+ FAIL: gcc.dg/pch/valid-1b.c -Os assembly comparison
+ FAIL: largefile.c -O0 -g -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O0 -g assembly comparison
+ FAIL: largefile.c -O0 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O0 assembly comparison
+ FAIL: largefile.c -O1 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O1 assembly comparison
+ FAIL: largefile.c -O2 -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O2 assembly comparison
+ FAIL: largefile.c -O3 -fomit-frame-pointer -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O3 -fomit-frame-pointer assembly comparison
+ FAIL: largefile.c -O3 -g -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -O3 -g assembly comparison
+ FAIL: largefile.c -Os -I. (test for excess errors)
+ FAIL: gcc.dg/pch/largefile.c -Os assembly comparison
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/special/mips-abi.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/special/special.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/struct/struct-reorg.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/tls/tls.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/torture/dg-torture.exp ...
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -O0 (test for excess errors)
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -O1 (test for excess errors)
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -O2 (test for excess errors)
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -O3 -fomit-frame-pointer (test for excess errors)
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -O3 -g (test for excess errors)
+ FAIL: gcc.dg/torture/fp-int-convert-float128.c -Os (test for excess errors)
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp ...
+ Running /home/tschwinge/tmp/gcc/trunk.work/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp ...
+ XPASS: gcc.dg/tree-ssa/20040204-1.c scan-tree-dump-times optimized "link_error" 0
diff --git a/open_issues/gdb_config.mdwn b/open_issues/gdb_config.mdwn
new file mode 100644
index 00000000..4f031c8f
--- /dev/null
+++ b/open_issues/gdb_config.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gdb]]
+
+ * Have a look at config/i386/i386gnu.mh.
+
+ * configure.tgt
+
+ * glibc-tdep et al. also for GNU/Hurd?
diff --git a/open_issues/gdb_gcore.mdwn b/open_issues/gdb_gcore.mdwn
new file mode 100644
index 00000000..7d4980f1
--- /dev/null
+++ b/open_issues/gdb_gcore.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="GDB: gcore"]]
+
+[[!tag open_issue_gdb]]
+
+GDB's `gcore` command doesn't work / needs to be implemented / ported in GDB:
+
+ tschwinge@flubber:~ $ gcore 8371
+ [New Thread 8371.1]
+ [New Thread 8371.2]
+ [New Thread 8371.3]
+ /media/data/home/tschwinge/core.cA0ICY:2: Error in sourced command file:
+ Undefined command: "gcore". Try "help".
+ gcore: failed to create core.8371
diff --git a/open_issues/gdb_head.mdwn b/open_issues/gdb_head.mdwn
new file mode 100644
index 00000000..4f16259f
--- /dev/null
+++ b/open_issues/gdb_head.mdwn
@@ -0,0 +1,44 @@
+[[!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="GDB HEAD broken"]]
+
+[[!tag open_issue_gdb]]
+
+ tschwinge@blubber:~/tmp/gdb/HEAD.build $ echo 'void main(void){*(volatile int *)0;}' |
+ > gcc -o 0 -x c -
+ <stdin>: In function ‘main’:
+ <stdin>:1: warning: return type of ‘main’ is not ‘int’
+ tschwinge@blubber:~/tmp/gdb/HEAD.build $ ./0
+ Segmentation fault
+ tschwinge@blubber:~/tmp/gdb/HEAD.build $ gdb/gdb 0
+ GNU gdb (GDB) 7.0.50.20091111-cvs
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+ This is free software: you are free to change and redistribute it.
+ There is NO WARRANTY, to the extent permitted by law. Type "show copying"
+ and "show warranty" for details.
+ This GDB was configured as "i386-unknown-gnu0.3".
+ For bug reporting instructions, please see:
+ <http://www.gnu.org/software/gdb/bugs/>...
+ Reading symbols from /media/data/home/tschwinge/tmp/gdb/HEAD.build/0...done.
+ (gdb) r
+ Starting program: /media/data/home/tschwinge/tmp/gdb/HEAD.build/0
+ Can't fetch registers from thread bogus thread id 1: No such thread
+ (gdb) quit
+ A debugging session is active.
+
+ Inferior 1 [bogus thread id 0] will be killed.
+
+ Quit anyway? (y or n) y
+
+
+Good: 2009-10-19 09:30
+Bad: 2009-10-19 10
diff --git a/open_issues/gdb_non-stop_mode.mdwn b/open_issues/gdb_non-stop_mode.mdwn
new file mode 100644
index 00000000..418b144c
--- /dev/null
+++ b/open_issues/gdb_non-stop_mode.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GDB's non-stop mode"]]
+
+[[!tag open_issue_gdb]]
+
+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/open_issues/gdb_pending_execs.mdwn b/open_issues/gdb_pending_execs.mdwn
new file mode 100644
index 00000000..bb0f8419
--- /dev/null
+++ b/open_issues/gdb_pending_execs.mdwn
@@ -0,0 +1,27 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GDB: pending_execs"]]
+
+[[!tag open_issue_gdb]]
+
+<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/open_issues/gdb_qemu_debugging_gnumach.mdwn b/open_issues/gdb_qemu_debugging_gnumach.mdwn
new file mode 100644
index 00000000..d3105f50
--- /dev/null
+++ b/open_issues/gdb_qemu_debugging_gnumach.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gdb open_issue_gnumach]]
+
+\#hurd, freenode, June (?) 2010
+
+ <jkoenig> is there a way to get gdb to map addresses as required when debugging mach with qemu ?
+ <jkoenig> I can examine the data if I manually map the addresses th 0xc0000000 but maybe there's an easier way...
+ <youpi> jkoenig: I haven't found a way
+ <youpi> I'm mostly using the internal kdb
+
diff --git a/open_issues/gdb_signal_thread_bt.mdwn b/open_issues/gdb_signal_thread_bt.mdwn
new file mode 100644
index 00000000..74065922
--- /dev/null
+++ b/open_issues/gdb_signal_thread_bt.mdwn
@@ -0,0 +1,31 @@
+[[!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="GDB: bt on the signal thread"]]
+
+[[!tag open_issue_gdb]]
+
+ (gdb) r
+ Starting program: /media/data/home/tschwinge/tmp/h
+ [New Thread 26731.15]
+
+ Breakpoint 1, 0x08048236 in main ()
+ (gdb) info threads
+ 5 Thread 26731.15 0x080a97fc in mach_msg_trap ()
+ * 4 Thread 26731.14 0x08048236 in main ()
+ (gdb) thread 5
+ [Switching to thread 5 (Thread 26731.15)]#0 0x080a97fc in mach_msg_trap ()
+ (gdb) bt
+ #0 0x080a97fc in mach_msg_trap ()
+ #1 0x080a272e in mach_msg ()
+ #2 0x080a9934 in mach_msg_server_timeout ()
+ #3 0x080a99ff in mach_msg_server ()
+ #4 0x080a327e in _hurd_msgport_receive ()
+ Cannot access memory at address 0x1012000
diff --git a/open_issues/gdb_testsuite.mdwn b/open_issues/gdb_testsuite.mdwn
new file mode 100644
index 00000000..c349294f
--- /dev/null
+++ b/open_issues/gdb_testsuite.mdwn
@@ -0,0 +1,2093 @@
+[[!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="GDB testsuite"]]
+
+Note that there may be false failures listed here, due to the [[term blocking]]
+issue.
+
+
+[[!tag open_issue_gdb]]
+
+Here's a log of a GDB testsuite run; this is from 2009-09-15 HEAD sources.
+
+ make[1]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ make check-recursive
+ make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ Making check in doc
+ make[4]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/doc'
+ make[4]: Nothing to be done for `check'.
+ make[4]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/doc'
+ Making check in po
+ make[4]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/po'
+ make[4]: Nothing to be done for `check'.
+ make[4]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/po'
+ make[4]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ make[4]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
+ Making check in .
+ make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
+ make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
+ Making check in po
+ make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes/po'
+ make[3]: Nothing to be done for `check'.
+ make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes/po'
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/etc'
+ make[2]: Nothing to be done for `check'.
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/etc'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/intl'
+ make[2]: Nothing to be done for `check'.
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/intl'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libdecnumber'
+ make[2]: Nothing to be done for `check'.
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libdecnumber'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty'
+ make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty/testsuite'
+ gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -o test-demangle \
+ ../../../HEAD/src/libiberty/testsuite/test-demangle.c ../libiberty.a
+ ./test-demangle < ../../../HEAD/src/libiberty/testsuite/demangle-expected
+ ./test-demangle: 777 tests, 0 failures
+ gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -DHAVE_CONFIG_H -I.. -o test-pexecute \
+ ../../../HEAD/src/libiberty/testsuite/test-pexecute.c ../libiberty.a
+ ./test-pexecute
+ gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -DHAVE_CONFIG_H -I.. -o test-expandargv \
+ ../../../HEAD/src/libiberty/testsuite/test-expandargv.c ../libiberty.a
+ ./test-expandargv
+ PASS: test-expandargv-0.
+ PASS: test-expandargv-1.
+ PASS: test-expandargv-2.
+ PASS: test-expandargv-3.
+ make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty/testsuite'
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/readline'
+ make[2]: Nothing to be done for `check'.
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/readline'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/sim'
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/sim'
+ make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb'
+ make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
+ make -k check-gdb.base1 check-gdb.base2 check-gdb.ada check-gdb.arch check-gdb.asm check-gdb.cell check-gdb.cp check-gdb.disasm check-gdb.dwarf2 check-gdb.fortran check-gdb.gdb check-gdb.java check-gdb.mi check-gdb.modula2 check-gdb.objc check-gdb.opt check-gdb.pascal check-gdb.python check-gdb.reverse check-gdb.server check-gdb.stabs check-gdb.threads check-gdb.trace check-gdb.xml; \
+ /bin/bash ../../../HEAD/src/gdb/testsuite/dg-extract-results.sh \
+ gdb.base1/gdb.sum gdb.base2/gdb.sum gdb.ada/gdb.sum gdb.arch/gdb.sum gdb.asm/gdb.sum gdb.cell/gdb.sum gdb.cp/gdb.sum gdb.disasm/gdb.sum gdb.dwarf2/gdb.sum gdb.fortran/gdb.sum gdb.gdb/gdb.sum gdb.java/gdb.sum gdb.mi/gdb.sum gdb.modula2/gdb.sum gdb.objc/gdb.sum gdb.opt/gdb.sum gdb.pascal/gdb.sum gdb.python/gdb.sum gdb.reverse/gdb.sum gdb.server/gdb.sum gdb.stabs/gdb.sum gdb.threads/gdb.sum gdb.trace/gdb.sum gdb.xml/gdb.sum > gdb.sum; \
+ /bin/bash ../../../HEAD/src/gdb/testsuite/dg-extract-results.sh -L \
+ gdb.base1/gdb.log gdb.base2/gdb.log gdb.ada/gdb.log gdb.arch/gdb.log gdb.asm/gdb.log gdb.cell/gdb.log gdb.cp/gdb.log gdb.disasm/gdb.log gdb.dwarf2/gdb.log gdb.fortran/gdb.log gdb.gdb/gdb.log gdb.java/gdb.log gdb.mi/gdb.log gdb.modula2/gdb.log gdb.objc/gdb.log gdb.opt/gdb.log gdb.pascal/gdb.log gdb.python/gdb.log gdb.reverse/gdb.log gdb.server/gdb.log gdb.stabs/gdb.log gdb.threads/gdb.log gdb.trace/gdb.log gdb.xml/gdb.log > gdb.log
+ make[4]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
+ Nothing to be done for all...
+ Making a new config file...
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest gdb.base/a2-run.exp gdb.base/advance.exp gdb.base/all-bin.exp gdb.base/annota1.exp gdb.base/annota3.exp gdb.base/args.exp gdb.base/arithmet.exp gdb.base/arrayidx.exp gdb.base/assign.exp gdb.base/async.exp gdb.base/attach.exp gdb.base/auxv.exp gdb.base/bang.exp gdb.base/bfp-test.exp gdb.base/bigcore.exp gdb.base/bitfields.exp gdb.base/bitfields2.exp gdb.base/bitops.exp gdb.base/break-always.exp gdb.base/break.exp gdb.base/breakpoint-shadow.exp gdb.base/call-ar-st.exp gdb.base/call-rt-st.exp gdb.base/call-sc.exp gdb.base/call-signal-resume.exp gdb.base/call-strs.exp gdb.base/callexit.exp gdb.base/callfuncs.exp gdb.base/charset.exp gdb.base/checkpoint.exp gdb.base/chng-syms.exp gdb.base/code-expr.exp gdb.base/commands.exp gdb.base/completion.exp gdb.base/complex.exp gdb.base/cond-expr.exp gdb.base/condbreak.exp gdb.base/consecutive.exp gdb.base/constvars.exp gdb.base/corefile.exp gdb.base/cursal.exp gdb.base/cvexpr.exp gdb.base/dbx.exp gdb.base/default.exp gdb.base/define.exp gdb.base/del.exp gdb.base/detach.exp gdb.base/dfp-exprs.exp gdb.base/dfp-test.exp gdb.base/display.exp gdb.base/dump.exp gdb.base/echo.exp gdb.base/ena-dis-br.exp gdb.base/ending-run.exp gdb.base/environ.exp gdb.base/eval-skip.exp gdb.base/exe-lock.exp gdb.base/expand-psymtabs.exp gdb.base/exprs.exp gdb.base/fileio.exp gdb.base/find.exp gdb.base/finish.exp gdb.base/fixsection.exp gdb.base/float.exp gdb.base/foll-exec.exp gdb.base/foll-fork.exp gdb.base/foll-vfork.exp gdb.base/frame-args.exp gdb.base/freebpcmd.exp gdb.base/fullname.exp gdb.base/funcargs.exp gdb.base/gcore-buffer-overflow.exp gdb.base/gcore.exp gdb.base/gdb1056.exp gdb.base/gdb1090.exp gdb.base/gdb1250.exp gdb.base/gdb1555.exp gdb.base/gdb1821.exp gdb.base/gdbvars.exp gdb.base/hashline1.exp gdb.base/hashline2.exp gdb.base/hashline3.exp gdb.base/help.exp gdb.base/hook-stop-continue.exp gdb.base/hook-stop-frame.exp gdb.base/huge.exp gdb.base/ifelse.exp gdb.base/included.exp gdb.base/infnan.exp gdb.base/info-proc.exp gdb.base/info-target.exp gdb.base/interp.exp gdb.base/interrupt.exp gdb.base/jump.exp gdb.base/langs.exp gdb.base/lineinc.exp gdb.base/list.exp gdb.base/logical.exp gdb.base/long_long.exp gdb.base/longjmp.exp gdb.base/macscp.exp gdb.base/maint.exp gdb.base/mips_pro.exp gdb.base/miscexprs.exp gdb.base/multi-forks.exp --outdir gdb.base1
+ Test Run By tschwinge on Fri Nov 13 02:02:31 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gcore.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/exe-lock.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/complex.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdbvars.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/condbreak.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/detach.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/breakpoint-shadow.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bigcore.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/jump.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/multi-forks.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/frame-args.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/dbx.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/echo.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/all-bin.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitfields2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1821.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/environ.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/infnan.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/advance.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/commands.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/callfuncs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/define.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-fork.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/auxv.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/interrupt.exp ...
+ FAIL: gdb.base/interrupt.exp: Send Control-C, second time
+ FAIL: gdb.base/interrupt.exp: send end of file
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/a2-run.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-signal-resume.exp ...
+ FAIL: gdb.base/call-signal-resume.exp: dummy stack frame number
+ XPASS: gdb.base/call-signal-resume.exp: frame
+ FAIL: gdb.base/call-signal-resume.exp: continue to breakpoint at stop_two
+ FAIL: gdb.base/call-signal-resume.exp: continue to receipt of signal (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: break null_hand_call (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: null_hand_call (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: dummy stack frame number
+ FAIL: gdb.base/call-signal-resume.exp: set confirm off (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: return (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: break handle_signal (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: continue to breakpoint at handle_signal (timeout)
+ FAIL: gdb.base/call-signal-resume.exp: continue to program exit (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/async.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/callexit.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/freebpcmd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/corefile.exp ...
+ WARNING: can't generate a core file - core tests suppressed - check ulimit -c
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/hook-stop-frame.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/info-proc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/arithmet.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-sc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/info-target.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/expand-psymtabs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/checkpoint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/cond-expr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/consecutive.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/help.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/finish.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/lineinc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/annota1.exp ...
+ FAIL: gdb.base/annota1.exp: run until main breakpoint
+ FAIL: gdb.base/annota1.exp: send SIGUSR1 (timeout)
+ FAIL: gdb.base/annota1.exp: backtrace @ signal handler (timeout)
+ FAIL: gdb.base/annota1.exp: delete bp 1 (timeout)
+ FAIL: gdb.base/annota1.exp: delete bp 2 (timeout)
+ FAIL: gdb.base/annota1.exp: delete bp 3 (timeout)
+ FAIL: gdb.base/annota1.exp: break at 28 (timeout)
+ FAIL: gdb.base/annota1.exp: set up display (timeout)
+ FAIL: gdb.base/annota1.exp: re-run (timeout)
+ FAIL: gdb.base/annota1.exp: break at 46 (timeout)
+ FAIL: gdb.base/annota1.exp: ignore 5 4 (timeout)
+ FAIL: gdb.base/annota1.exp: annotate ignore count change (timeout)
+ FAIL: gdb.base/annota1.exp: next to exit loop
+ FAIL: gdb.base/annota1.exp: breakpoint ignore count (timeout)
+ FAIL: gdb.base/annota1.exp: signal sent (timeout)
+ FAIL: gdb.base/annota1.exp: thread switch (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/logical.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/fixsection.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/annota3.exp ...
+ FAIL: gdb.base/annota3.exp: send SIGUSR1 (pattern 4) (timeout)
+ FAIL: gdb.base/annota3.exp: backtrace @ signal handler (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: delete bp 1 (pattern 1 + sentinel) (timeout)
+ FAIL: gdb.base/annota3.exp: delete bp 2 (pattern 1 + sentinel) (timeout)
+ FAIL: gdb.base/annota3.exp: delete bp 3 (pattern 1 + sentinel) (timeout)
+ FAIL: gdb.base/annota3.exp: break at 28 (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: set up display (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: re-run (timeout)
+ FAIL: gdb.base/annota3.exp: break at 46 (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: ignore 5 4 (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: annotate ignore count change (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: next to exit loop (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: breakpoint ignore count (pattern 1) (timeout)
+ FAIL: gdb.base/annota3.exp: signal sent (pattern 1) (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/args.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/hook-stop-continue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/display.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/ifelse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1056.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitops.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/completion.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/list.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/long_long.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bang.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/mips_pro.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/dfp-exprs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/interp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/exprs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/ena-dis-br.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/langs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline1.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/assign.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-strs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/default.exp ...
+ FAIL: gdb.base/default.exp: show convenience
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/dump.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline3.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-exec.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/ending-run.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/dfp-test.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gcore-buffer-overflow.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/fileio.exp ...
+ FAIL: gdb.base/fileio.exp: Stat a NULL pathname returns ENOENT or EFAULT
+ FAIL: gdb.base/fileio.exp: Stat an empty pathname returns ENOENT
+ FAIL: gdb.base/fileio.exp: Stat a nonexistant file returns ENOENT (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Fstat an open file (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Fstat an invalid file descriptor returns EBADF (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Isatty (stdin) (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Isatty (stdout) (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Isatty (stderr) (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Isatty (invalid fd) (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Isatty (open file) (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: System says shell is available (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: System(3) call (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: System with invalid command returns 127 (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Rename a file (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Renaming a file to existing directory returns EISDIR (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Renaming a directory to a subdir of itself returns EINVAL (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Renaming a nonexistant file returns ENOENT (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Unlink a file (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Unlinking a file in a directory w/o write access returns EACCES (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Unlinking a nonexistant file returns ENOENT (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Time(2) call returns the same value as in parameter (the program is no longer running)
+ FAIL: gdb.base/fileio.exp: Time(2) returns feasible values (the program is no longer running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/huge.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/find.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/eval-skip.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/arrayidx.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1555.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/attach.exp ...
+ FAIL: gdb.base/attach.exp: attach to nonsense is prohibited (bogus pid allowed)
+ FAIL: gdb.base/attach.exp: attach to nonexistent process is prohibited
+ FAIL: gdb.base/attach.exp: attach1, after setting file
+ FAIL: gdb.base/attach.exp: attach1 detach
+ FAIL: gdb.base/attach.exp: set file, before attach2
+ FAIL: gdb.base/attach.exp: after attach2, set tbreak postloop
+ FAIL: gdb.base/attach.exp: (timeout) after attach2, reach tbreak postloop
+ FAIL: gdb.base/attach.exp: after attach2, exit (timeout)
+ FAIL: gdb.base/attach.exp: set source path
+ FAIL: gdb.base/attach.exp: cd away from process working directory (the program is no longer running)
+ FAIL: gdb.base/attach.exp: before attach3, flush symbols
+ FAIL: gdb.base/attach.exp: before attach3, flush exec
+ FAIL: gdb.base/attach.exp: attach when process' a.out not in cwd
+ FAIL: gdb.base/attach.exp: after attach3, exit
+ FAIL: gdb.base/attach.exp: attach call
+ FAIL: gdb.base/attach.exp: c
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/break.exp ...
+ FAIL: gdb.base/break.exp: breakpoint at start of multi line while conditional
+ FAIL: gdb.base/break.exp: breakpoint info
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/del.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/miscexprs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/float.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/longjmp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/code-expr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/included.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-ar-st.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/cvexpr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/maint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/funcargs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/chng-syms.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-vfork.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/charset.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/cursal.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/break-always.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-rt-st.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/constvars.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/fullname.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1250.exp ...
+ FAIL: gdb.base/gdb1250.exp: running to abort in runto
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bfp-test.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitfields.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/macscp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1090.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 3882
+ # of unexpected failures 86
+ # of unexpected successes 1
+ # of expected failures 6
+ # of known failures 19
+ # of untested testcases 1
+ # of unsupported tests 4
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.base1] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest gdb.base/nodebug.exp gdb.base/nofield.exp gdb.base/opaque.exp gdb.base/overlays.exp gdb.base/page.exp gdb.base/pc-fp.exp gdb.base/pending.exp gdb.base/pie-support.exp gdb.base/pointers.exp gdb.base/prelink.exp gdb.base/printcmds.exp gdb.base/prologue.exp gdb.base/psymtab.exp gdb.base/ptr-typedef.exp gdb.base/ptype.exp gdb.base/radix.exp gdb.base/randomize.exp gdb.base/readline.exp gdb.base/recurse.exp gdb.base/regs.exp gdb.base/relational.exp gdb.base/relativedebug.exp gdb.base/relocate.exp gdb.base/remote.exp gdb.base/remotetimeout.exp gdb.base/reread.exp gdb.base/restore.exp gdb.base/return-nodebug.exp gdb.base/return.exp gdb.base/return2.exp gdb.base/savedregs.exp gdb.base/scope.exp gdb.base/sect-cmd.exp gdb.base/sep.exp gdb.base/sepdebug.exp gdb.base/sepsymtab.exp gdb.base/set-lang-auto.exp gdb.base/setshow.exp gdb.base/setvar.exp gdb.base/shlib-call.exp gdb.base/shreloc.exp gdb.base/sigall.exp gdb.base/sigaltstack.exp gdb.base/sigbpt.exp gdb.base/sigchld.exp gdb.base/siginfo-addr.exp gdb.base/siginfo-obj.exp gdb.base/siginfo.exp gdb.base/signals.exp gdb.base/signull.exp gdb.base/sigrepeat.exp gdb.base/sigstep.exp gdb.base/sizeof.exp gdb.base/so-impl-ld.exp gdb.base/so-indr-cl.exp gdb.base/solib-disc.exp gdb.base/solib-display.exp gdb.base/solib-overlap.exp gdb.base/solib-symbol.exp gdb.base/solib-weak.exp gdb.base/solib.exp gdb.base/source.exp gdb.base/stack-checking.exp gdb.base/start.exp gdb.base/step-break.exp gdb.base/step-bt.exp gdb.base/step-line.exp gdb.base/step-test.exp gdb.base/store.exp gdb.base/structs.exp gdb.base/structs2.exp gdb.base/structs3.exp gdb.base/subst.exp gdb.base/term.exp gdb.base/trace-commands.exp gdb.base/twice.exp gdb.base/type-opaque.exp gdb.base/unload.exp gdb.base/until.exp gdb.base/unwindonsignal.exp gdb.base/value-double-free.exp gdb.base/varargs.exp gdb.base/volatile.exp gdb.base/watch_thread_num.exp gdb.base/watchpoint-hw.exp gdb.base/watchpoint-solib.exp gdb.base/watchpoint.exp gdb.base/whatis-exp.exp gdb.base/whatis.exp --outdir gdb.base2
+ Test Run By tschwinge on Fri Nov 13 04:33:11 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/radix.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/return.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/watchpoint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/signals.exp ...
+ FAIL: gdb.base/signals.exp: p count #1
+ FAIL: gdb.base/signals.exp: p func1 () #2
+ FAIL: gdb.base/signals.exp: backtrace from handler when calling func1
+ FAIL: gdb.base/signals.exp: continue (the program exited)
+ FAIL: gdb.base/signals.exp: p count #2
+ FAIL: gdb.base/signals.exp: signal without arguments disallowed (the program is no longer running)
+ FAIL: gdb.base/signals.exp: signal SIGUSR1 (the program is no longer running)
+ FAIL: gdb.base/signals.exp: backtrace for SIGUSR1
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/randomize.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/return-nodebug.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/set-lang-auto.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/structs2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/opaque.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/printcmds.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/restore.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/savedregs.exp ...
+ FAIL: gdb.base/savedregs.exp: Get thrower info frame
+ FAIL: gdb.base/savedregs.exp: Check main info frame; stack contains catcher sigtramp thrower main
+ FAIL: gdb.base/savedregs.exp: call caller (1,2,3,4,5,6,7,8) (timeout)
+ FAIL: gdb.base/savedregs.exp: Get dummy info frame (timeout)
+ FAIL: gdb.base/savedregs.exp: Get catcher info frame (timeout)
+ FAIL: gdb.base/savedregs.exp: Check sigtramp info frame; stack contains caller dummy catcher sigtramp thrower main (timeout)
+ FAIL: gdb.base/savedregs.exp: advance callee (timeout)
+ FAIL: gdb.base/savedregs.exp: Get caller info frame (timeout)
+ FAIL: gdb.base/savedregs.exp: Check dummy info frame; stack contains callee caller dummy catcher sigtramp thrower main (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/pending.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/setvar.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/varargs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/trace-commands.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/so-impl-ld.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/relocate.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sepdebug.exp ...
+ FAIL: gdb.base/sepdebug.exp: breakpoint at start of multi line while conditional
+ FAIL: gdb.base/sepdebug.exp: breakpoint info
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-obj.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/shreloc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigaltstack.exp ...
+ FAIL: gdb.base/sigaltstack.exp: continue to catch (timeout)
+ FAIL: gdb.base/sigaltstack.exp: next (timeout)
+ FAIL: gdb.base/sigaltstack.exp: backtrace (pattern 1) (timeout)
+ FAIL: gdb.base/sigaltstack.exp: finish from catch LEAF (timeout)
+ FAIL: gdb.base/sigaltstack.exp: finish to throw INNER (timeout)
+ ERROR: internal buffer is full.
+ FAIL: gdb.base/sigaltstack.exp: finish from catch INNER (timeout)
+ FAIL: gdb.base/sigaltstack.exp: finish to OUTER (timeout)
+ FAIL: gdb.base/sigaltstack.exp: finish to catch MAIN (timeout)
+ FAIL: gdb.base/sigaltstack.exp: finish to MAIN (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/relational.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/volatile.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sizeof.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/store.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/start.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib-weak.exp ...
+ FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 nodebug, lib2 nodebug, lib1 first
+ FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 nodebug, lib1 first
+ FAIL: gdb.base/solib-weak.exp: run to breakpoint - lib1 debug, lib2 debug, lib1 first
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/term.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sep.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/nofield.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/whatis-exp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/return2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/shlib-call.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib-symbol.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigall.exp ...
+ FAIL: gdb.base/sigall.exp: advance to HUP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGHUP stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_HUP (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_QUIT (timeout)
+ FAIL: gdb.base/sigall.exp: get signal HUP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to QUIT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGQUIT stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_QUIT (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_ILL (timeout)
+ FAIL: gdb.base/sigall.exp: get signal QUIT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to ILL (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGILL stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_ILL (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_EMT (timeout)
+ FAIL: gdb.base/sigall.exp: get signal ILL (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to EMT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGEMT stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_EMT (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_FPE (timeout)
+ FAIL: gdb.base/sigall.exp: get signal EMT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to FPE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGFPE stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_FPE (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_BUS (timeout)
+ FAIL: gdb.base/sigall.exp: get signal FPE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to BUS (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGBUS stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_BUS (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_SEGV (timeout)
+ FAIL: gdb.base/sigall.exp: get signal BUS (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to SEGV (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGSEGV stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_SEGV (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_SYS (timeout)
+ FAIL: gdb.base/sigall.exp: get signal SEGV (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to SYS (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGSYS stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_SYS (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_PIPE (timeout)
+ FAIL: gdb.base/sigall.exp: get signal SYS (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to PIPE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPIPE stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_PIPE (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_ALRM (timeout)
+ FAIL: gdb.base/sigall.exp: get signal PIPE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to ALRM (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGALRM stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_ALRM (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_URG (timeout)
+ FAIL: gdb.base/sigall.exp: get signal ALRM (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to URG (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGURG stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_URG (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_TSTP (timeout)
+ FAIL: gdb.base/sigall.exp: get signal URG (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to TSTP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGTSTP stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_TSTP (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_CONT (timeout)
+ FAIL: gdb.base/sigall.exp: get signal TSTP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to CONT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGCONT stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_CONT (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_CHLD (timeout)
+ FAIL: gdb.base/sigall.exp: get signal CONT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to CHLD (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGCHLD stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_CHLD (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_TTIN (timeout)
+ FAIL: gdb.base/sigall.exp: get signal CHLD (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to TTIN (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGTTIN stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_TTIN (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_TTOU (timeout)
+ FAIL: gdb.base/sigall.exp: get signal TTIN (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to TTOU (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGTTOU stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_TTOU (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_IO (timeout)
+ FAIL: gdb.base/sigall.exp: get signal TTOU (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to IO (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGIO stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_IO (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_XCPU (timeout)
+ FAIL: gdb.base/sigall.exp: get signal IO (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to XCPU (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGXCPU stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_XCPU (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_XFSZ (timeout)
+ FAIL: gdb.base/sigall.exp: get signal XCPU (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to XFSZ (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGXFSZ stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_XFSZ (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_VTALRM (timeout)
+ FAIL: gdb.base/sigall.exp: get signal XFSZ (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to VTALRM (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGVTALRM stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_VTALRM (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_PROF (timeout)
+ FAIL: gdb.base/sigall.exp: get signal VTALRM (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to PROF (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPROF stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_PROF (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_WINCH (timeout)
+ FAIL: gdb.base/sigall.exp: get signal PROF (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to WINCH (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGWINCH stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_WINCH (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_LOST (timeout)
+ FAIL: gdb.base/sigall.exp: get signal WINCH (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to LOST (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGLOST stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_LOST (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_USR1 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal LOST (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to USR1 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGUSR1 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_USR1 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_USR2 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal USR1 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to USR2 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGUSR2 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_USR2 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_PWR (timeout)
+ FAIL: gdb.base/sigall.exp: get signal USR2 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to PWR (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPWR stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_PWR (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_POLL (timeout)
+ FAIL: gdb.base/sigall.exp: get signal PWR (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to POLL (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPOLL stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_POLL (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_WIND (timeout)
+ FAIL: gdb.base/sigall.exp: get signal POLL (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to WIND (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGWIND stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_WIND (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_PHONE (timeout)
+ FAIL: gdb.base/sigall.exp: get signal WIND (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to PHONE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPHONE stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_PHONE (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_WAITING (timeout)
+ FAIL: gdb.base/sigall.exp: get signal PHONE (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to WAITING (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGWAITING stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_WAITING (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_LWP (timeout)
+ FAIL: gdb.base/sigall.exp: get signal WAITING (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to LWP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGLWP stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_LWP (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_DANGER (timeout)
+ FAIL: gdb.base/sigall.exp: get signal LWP (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to DANGER (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGDANGER stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_DANGER (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_GRANT (timeout)
+ FAIL: gdb.base/sigall.exp: get signal DANGER (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to GRANT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGGRANT stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_GRANT (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_RETRACT (timeout)
+ FAIL: gdb.base/sigall.exp: get signal GRANT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to RETRACT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGRETRACT stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_RETRACT (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_MSG (timeout)
+ FAIL: gdb.base/sigall.exp: get signal RETRACT (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to MSG (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGMSG stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_MSG (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_SOUND (timeout)
+ FAIL: gdb.base/sigall.exp: get signal MSG (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to SOUND (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGSOUND stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_SOUND (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_SAK (timeout)
+ FAIL: gdb.base/sigall.exp: get signal SOUND (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to SAK (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGSAK stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_SAK (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_PRIO (timeout)
+ FAIL: gdb.base/sigall.exp: get signal SAK (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to PRIO (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGPRIO stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_PRIO (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_33 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal PRIO (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 33 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG33 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_33 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_34 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 33 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 34 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG34 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_34 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_35 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 34 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 35 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG35 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_35 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_36 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 35 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 36 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG36 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_36 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_37 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 36 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 37 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG37 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_37 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_38 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 37 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 38 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG38 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_38 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_39 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 38 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 39 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG39 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_39 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_40 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 39 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 40 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG40 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_40 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_41 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 40 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 41 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG41 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_41 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_42 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 41 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 42 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG42 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_42 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_43 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 42 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 43 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG43 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_43 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_44 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 43 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 44 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG44 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_44 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_45 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 44 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 45 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG45 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_45 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_46 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 45 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 46 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG46 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_46 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_47 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 46 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 47 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG47 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_47 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_48 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 47 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 48 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG48 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_48 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_49 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 48 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 49 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG49 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_49 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_50 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 49 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 50 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG50 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_50 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_51 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 50 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 51 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG51 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_51 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_52 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 51 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 52 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG52 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_52 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_53 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 52 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 53 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG53 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_53 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_54 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 53 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 54 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG54 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_54 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_55 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 54 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 55 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG55 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_55 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_56 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 55 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 56 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG56 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_56 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_57 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 56 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 57 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG57 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_57 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_58 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 57 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 58 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG58 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_58 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_59 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 58 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 59 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG59 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_59 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_60 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 59 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 60 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG60 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_60 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_61 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 60 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 61 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG61 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_61 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_62 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 61 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 62 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG62 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_62 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_63 (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 62 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to 63 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIG63 stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_63 (timeout)
+ FAIL: gdb.base/sigall.exp: b gen_TERM (timeout)
+ FAIL: gdb.base/sigall.exp: get signal 63 (eof or timeout)
+ FAIL: gdb.base/sigall.exp: advance to TERM (eof or timeout)
+ FAIL: gdb.base/sigall.exp: handle SIGTERM stop print (timeout)
+ FAIL: gdb.base/sigall.exp: b handle_TERM (timeout)
+ FAIL: gdb.base/sigall.exp: get signal TERM (timeout)
+ FAIL: gdb.base/sigall.exp: send signal TERM (timeout)
+ FAIL: gdb.base/sigall.exp: continue until exit at continue to sigall exit (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/setshow.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/unwindonsignal.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/structs3.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/page.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/pc-fp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/step-bt.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib-overlap.exp ...
+ sh: prelink: not found
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-addr.exp ...
+ gdb compile failed, ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-addr.c: In function 'main':
+ ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-addr.c:58: error: 'SA_SIGINFO' undeclared (first use in this function)
+ ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-addr.c:58: error: (Each undeclared identifier is reported only once
+ ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo-addr.c:58: error: for each function it appears in.)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/siginfo.exp ...
+ FAIL: gdb.base/siginfo.exp: continue to stepi handler (timeout)
+ FAIL: gdb.base/siginfo.exp: backtrace for nexti (pattern 1) (timeout)
+ FAIL: gdb.base/siginfo.exp: step out of handler (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/structs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/subst.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/step-test.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/step-line.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/source.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/recurse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/type-opaque.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/ptype.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/relativedebug.exp ...
+ FAIL: gdb.base/relativedebug.exp: pause found in backtrace
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/remotetimeout.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/until.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/pointers.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/ptr-typedef.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/readline.exp ...
+ FAIL: gdb.base/readline.exp: Simple operate-and-get-next - C-o for p 1
+ FAIL: gdb.base/readline.exp: operate-and-get-next with secondary prompt - send if 1 > 0
+ FAIL: gdb.base/readline.exp: print 42 (timeout)
+ FAIL: gdb.base/readline.exp: arrow keys with secondary prompt (timeout)
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/watchpoint-hw.exp ...
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: couldn't load /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/gdb.base/watchpoint-hw into /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb (timed out).
+ ERROR: no fileid for www2
+ ERROR: Couldn't send watch watchee to GDB.
+ ERROR: no fileid for www2
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/signull.exp ...
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: couldn't load /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/gdb.base/signull into /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb (timed out).
+ ERROR: no fileid for www2
+ ERROR: Delete all breakpoints in delete_breakpoints (timeout)
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: Couldn't send set test = code_entry_point to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: Couldn't send break bowler to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send break keeper to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send handle SIGSEGV to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send handle SIGBUS to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send set test = data_read to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send set test = data_write to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send set test = code_entry_point to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send backtrace to GDB.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/so-indr-cl.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/psymtab.exp ...
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: couldn't load /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/gdb.base/psymtab into /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb (timed out).
+ ERROR: no fileid for www2
+ ERROR: Couldn't send set breakpoint pending off to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send break zzz::dummy to GDB.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sect-cmd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sepsymtab.exp ...
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: couldn't load /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/gdb.base/sepsymtab into /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb (timed out).
+ ERROR: no fileid for www2
+ ERROR: Couldn't send info sym main to GDB.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/unload.exp ...
+ ERROR: (timeout) GDB never initialized after 10 seconds.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: couldn't load /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/gdb.base/unload into /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb (timed out).
+ ERROR: no fileid for www2
+ ERROR: Couldn't send break shrfunc1 to GDB.
+ ERROR: no fileid for www2
+ ERROR: Couldn't send info break to GDB.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ ERROR: no fileid for www2
+ ERROR: no fileid for www2
+ ERROR: Couldn't send continue to GDB.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/twice.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/nodebug.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/remote.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigchld.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/whatis.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/pie-support.exp ...
+ FAIL: gdb.base/pie-support.exp: correctly detected PIE binary
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib-disc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigbpt.exp ...
+ FAIL: gdb.base/sigbpt.exp: stepi; stepi out of handler (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; set breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; stepi out of handler (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before segv; clear breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; set breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; stepi out of handler (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp at segv; clear breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; set breakpoint 0 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; set breakpoint 1 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; stepi out of handler (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; clear breakpoint 0 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: stepi bp before and at segv; clear breakpoint 1 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: cont; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; set breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; continue to breakpoint at fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; stepi fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont; clear breakpoint 0 of 1 (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; set breakpoint 0 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; set breakpoint 1 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; continue to breakpoint at fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; stepi fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; clear breakpoint 0 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp after segv; clear breakpoint 1 of 2 (timeout)
+ FAIL: gdb.base/sigbpt.exp: (timeout) rerun to main
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; pass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; continue to keeper (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; nopass SIGSEGV (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 0 of 3 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 1 of 3 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; set breakpoint 2 of 3 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; continue to breakpoint at fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; stepi fault (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 0 of 3 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 1 of 3 (timeout)
+ FAIL: gdb.base/sigbpt.exp: cont bp before and after segv; clear breakpoint 2 of 3 (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/scope.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/reread.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/value-double-free.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/solib-display.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigrepeat.exp ...
+ FAIL: gdb.base/sigrepeat.exp: next
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/watch_thread_num.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/prelink.exp ...
+ sh: prelink: not found
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/overlays.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/step-break.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/watchpoint-solib.exp ...
+ FAIL: gdb.base/watchpoint-solib.exp: continue to foo (the program exited)
+ FAIL: gdb.base/watchpoint-solib.exp: set watchpoint on g
+ FAIL: gdb.base/watchpoint-solib.exp: continue to watchpoint hit (the program is no longer running)
+ FAIL: gdb.base/watchpoint-solib.exp: continue to foo again (the program exited)
+ FAIL: gdb.base/watchpoint-solib.exp: continue to watchpoint hit again (the program is no longer running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/stack-checking.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.base/sigstep.exp ...
+ FAIL: gdb.base/sigstep.exp: backtrace for nexti (pattern 2)
+ FAIL: gdb.base/sigstep.exp: step from handler; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step from handler; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: stepi from handleri; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: stepi from handleri; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: stepi from handleri; leave signal trampoline (timeout)
+ FAIL: gdb.base/sigstep.exp: next from handler; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next from handler; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: nexti from handleri; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: nexti from handleri; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: nexti from handleri; leave signal trampoline (timeout)
+ FAIL: gdb.base/sigstep.exp: finish from handleri; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: finish from handleri; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: finish from handleri; leave signal trampoline (timeout)
+ FAIL: gdb.base/sigstep.exp: return from handleri; continue to handler (timeout)
+ FAIL: gdb.base/sigstep.exp: return from handleri; leave handler (timeout)
+ FAIL: gdb.base/sigstep.exp: return from handleri; leave signal trampoline (timeout)
+ FAIL: gdb.base/sigstep.exp: Set done as return will have skipped it (timeout)
+ ERROR: Delete all breakpoints in delete_breakpoints (timeout)
+ FAIL: gdb.base/sigstep.exp: break 79 (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler entry; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler entry; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: step to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler entry; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler entry; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: next to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler entry; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler entry; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: continue to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step over handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step over handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step over handler; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: next over handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next over handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next over handler; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: continue over handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue over handler; advance to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue over handler; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; break handler (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, to handler entry; clear handler (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, skip handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, skip handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, skip handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, skip handler; performing step (timeout)
+ FAIL: gdb.base/sigstep.exp: step on breakpoint, skip handler; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, skip handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, skip handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, skip handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, skip handler; performing next (timeout)
+ FAIL: gdb.base/sigstep.exp: next on breakpoint, skip handler; clear infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, skip handler; resync (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, skip handler; break infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, skip handler; continue to infinite loop (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, skip handler; performing continue (timeout)
+ FAIL: gdb.base/sigstep.exp: continue on breakpoint, skip handler; clear infinite loop (timeout)
+
+ === gdb Summary ===
+
+ # of expected passes 3181
+ # of unexpected failures 566
+ # of known failures 5
+ # of unresolved testcases 40
+ # of untested testcases 3
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.base2] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.ada --outdir=gdb.ada
+ Test Run By tschwinge on Fri Nov 13 12:32:22 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/array_bounds.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/array_return.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/array_subscript_addr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/arrayidx.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/arrayparam.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/arrayptr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/assign_1.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/atomic_enum.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/boolean_expr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/catch_ex.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/char_param.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/complete.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/exec_changed.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/exprs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/fixed_cmp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/fixed_points.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/formatted_ref.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/frame_args.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/fun_addr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/fun_in_declare.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/funcall_param.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/homonym.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/int_deref.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/interface.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/lang_switch.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/mod_from_name.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/nested.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/null_array.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/null_record.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/packed_array.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/packed_tagged.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/print_chars.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/print_pc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/ptype_arith_binop.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/ptype_field.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/ref_param.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/ref_tick_size.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/start.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/str_ref_cmp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/sym_print_name.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/taft_type.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/tagged.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/tasks.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/tick_last_segv.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/type_coercion.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/uninitialized_vars.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/variant_record_packed_array.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.ada/watch_arg.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 8
+ # of untested testcases 1
+ # of unsupported tests 45
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.arch --outdir=gdb.arch
+ Test Run By tschwinge on Fri Nov 13 12:33:06 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/alpha-step.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/altivec-abi.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/altivec-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/amd64-disp-step.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/amd64-i386-address.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/e500-abi.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/e500-prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/e500-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/gdb1291.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/gdb1431.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/gdb1558.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-bp_permanent.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-disp-step.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp ...
+ FAIL: gdb.arch/i386-gnu-cfi.exp: backtrace
+ FAIL: gdb.arch/i386-gnu-cfi.exp: shift up to the modified frame
+ FAIL: gdb.arch/i386-gnu-cfi.exp: Existence of the CFI inserted register
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-permbkpt.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-signal.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-size-overlap.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-size.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-sse.exp ...
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm0
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm0
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm1
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm1
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm2
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm2
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm3
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm3
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm4
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm4
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm5
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm5
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm6
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm6
+ FAIL: gdb.arch/i386-sse.exp: check float contents of %xmm7
+ FAIL: gdb.arch/i386-sse.exp: check int8 contents of %xmm7
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[0]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[1]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[2]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[3]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[4]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[5]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[6]
+ FAIL: gdb.arch/i386-sse.exp: check contents of data[7]
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/i386-unwind.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/iwmmxt-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/pa-nullify.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/powerpc-prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/ppc-dfp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/ppc-fp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/spu-info.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/thumb-prologue.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.arch/vsx-regs.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 69
+ # of unexpected failures 27
+ # of known failures 1
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.arch] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.asm --outdir=gdb.asm
+ Test Run By tschwinge on Fri Nov 13 12:35:00 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.asm/asm-source.exp ...
+ FAIL: gdb.asm/asm-source.exp: info target (timeout)
+ FAIL: gdb.asm/asm-source.exp: info symbol (timeout)
+ FAIL: gdb.asm/asm-source.exp: list (timeout)
+ FAIL: gdb.asm/asm-source.exp: search (timeout)
+ FAIL: gdb.asm/asm-source.exp: f in foo2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: n in foo2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: bt ALL in foo2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: bt 2 in foo2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: s 2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: n 2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: bt 3 in foo3 (timeout)
+ FAIL: gdb.asm/asm-source.exp: info source asmsrc1.s (timeout)
+ FAIL: gdb.asm/asm-source.exp: finish from foo3 (timeout)
+ FAIL: gdb.asm/asm-source.exp: info source asmsrc2.s (timeout)
+ FAIL: gdb.asm/asm-source.exp: info sources (timeout)
+ FAIL: gdb.asm/asm-source.exp: info line (timeout)
+ FAIL: gdb.asm/asm-source.exp: next over foo3 (timeout)
+ FAIL: gdb.asm/asm-source.exp: return from foo2 (timeout)
+ FAIL: gdb.asm/asm-source.exp: look at global variable (timeout)
+ FAIL: gdb.asm/asm-source.exp: x/i &globalvar (timeout)
+ FAIL: gdb.asm/asm-source.exp: disassem &globalvar &globalvar+1 (timeout)
+ FAIL: gdb.asm/asm-source.exp: look at static variable (timeout)
+ FAIL: gdb.asm/asm-source.exp: x/i &staticvar (timeout)
+ FAIL: gdb.asm/asm-source.exp: disassem &staticvar &staticvar+1 (timeout)
+ FAIL: gdb.asm/asm-source.exp: look at static function (timeout)
+
+ === gdb Summary ===
+
+ # of expected passes 3
+ # of unexpected failures 25
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.asm] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.cell --outdir=gdb.cell
+ Test Run By tschwinge on Fri Nov 13 13:00:35 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/arch.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/break.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/bt.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/core.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/data.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/ea-cache.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/ea-standalone.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/ea-test.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/f-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/gcore.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/mem-access.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/ptype.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/registers.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/sizeof.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/solib-symbol.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cell/solib.exp ...
+
+ === gdb Summary ===
+
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.cp --outdir=gdb.cp
+ Test Run By tschwinge on Fri Nov 13 13:00:43 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/abstract-origin.exp ...
+ FAIL: gdb.cp/abstract-origin.exp: p problem
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/ambiguous.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/annota2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/annota3.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/anon-union.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/arg-reference.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/bool.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/breakpoint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/bs15503.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/call-c.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/casts.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/class2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/classes.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/cp-relocate.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/cpcompletion.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/cplusfuncs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/ctti.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/demangle.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/derivation.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/exception.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/expand-sals.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/formatted-ref.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/gdb1355.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/gdb2384.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/gdb2495.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/hang.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/inherit.exp ...
+ FAIL: gdb.cp/inherit.exp: ptype tagless struct
+ FAIL: gdb.cp/inherit.exp: ptype variable of type tagless struct
+ FAIL: gdb.cp/inherit.exp: print type of anonymous union // unrecognized line type 1: class_with_anon_union::<anonymous union>;
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/local.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/m-data.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/m-static.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/maint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/mb-ctor.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/mb-inline.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/mb-templates.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/member-ptr.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/method.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/method2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/misc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/namespace-nested-import.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/namespace-using.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/namespace.exp ...
+ FAIL: gdb.cp/namespace.exp: print 'F::cXf'
+ FAIL: gdb.cp/namespace.exp: print F::cXf
+ FAIL: gdb.cp/namespace.exp: print F::cXfX
+ FAIL: gdb.cp/namespace.exp: print 'G::Xg'
+ FAIL: gdb.cp/namespace.exp: print G::Xg
+ FAIL: gdb.cp/namespace.exp: print G::XgX
+ FAIL: gdb.cp/namespace.exp: print cXOtherFile
+ FAIL: gdb.cp/namespace.exp: print XOtherFile
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/overload.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/ovldbreak.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/pass-by-ref.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/pr-1023.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/pr-1210.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/pr-574.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/pr9631.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/printmethod.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/psmang.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/punctuator.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/ref-params.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/ref-types.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/rtti.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/templates.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/try_catch.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/userdef.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.cp/virtfunc.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 2005
+ # of unexpected failures 12
+ # of known failures 22
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.cp] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.disasm --outdir=gdb.disasm
+ Test Run By tschwinge on Fri Nov 13 13:20:04 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/am33.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/h8300s.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/hppa.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/mn10300.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/sh3.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t01_mov.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t02_mova.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t03_add.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t04_sub.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t05_cmp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t06_ari2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t07_ari3.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t08_or.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t09_xor.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t10_and.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t11_logs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t12_bit.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.disasm/t13_otr.exp ...
+
+ === gdb Summary ===
+
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.dwarf2 --outdir=gdb.dwarf2
+ Test Run By tschwinge on Fri Nov 13 13:20:12 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/callframecfa.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dup-psym.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-basic.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-producer.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-restore.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-strp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/mac-fileno.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.dwarf2/valop.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 111
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.fortran --outdir=gdb.fortran
+ Test Run By tschwinge on Fri Nov 13 13:23:28 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/array-element.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/complex.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/derived-type.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/exprs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/module.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/subarray.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.fortran/types.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 125
+ # of untested testcases 5
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.gdb --outdir=gdb.gdb
+ Test Run By tschwinge on Fri Nov 13 13:24:02 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.gdb/complaints.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.gdb/observer.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.gdb/selftest.exp ...
+ FAIL: gdb.gdb/selftest.exp: backtrace through signal handler
+ Running ../../../HEAD/src/gdb/testsuite/gdb.gdb/xfullpath.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 165
+ # of unexpected failures 1
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.gdb] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.java --outdir=gdb.java
+ Test Run By tschwinge on Fri Nov 13 13:26:31 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.java/jmain.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.java/jmisc.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.java/jprint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.java/jv-exp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.java/jv-print.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 49
+ # of untested testcases 3
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.mi --outdir=gdb.mi
+ Test Run By tschwinge on Fri Nov 13 13:26:56 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/gdb2549.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/gdb669.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/gdb680.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/gdb701.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/gdb792.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-async.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-basics.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-break.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-cli.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-console.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-disassemble.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-eval.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-file-transfer.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-file.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-hack-cli.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-nonstop-exit.exp ...
+ ERROR: mi-nonstop-exit.exp tests suppressed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-nonstop.exp ...
+ ERROR: mi-nonstop.exp tests suppressed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-nsintrall.exp ...
+ ERROR: mi-nsintrall.exp tests suppressed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-nsmoribund.exp ...
+ ERROR: mi-nsmoribund.exp tests suppressed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-nsthrexec.exp ...
+ ERROR: mi-nsthrexec.exp tests suppressed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-pending.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-pthreads.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-read-memory.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-return.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-simplerun.exp ...
+ FAIL: gdb.mi/mi-simplerun.exp: continue to end (failed to resume)
+ FAIL: gdb.mi/mi-simplerun.exp: continue to end (unknown output after running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-stack.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-stepi.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-syn-frame.exp ...
+ FAIL: gdb.mi/mi-syn-frame.exp: list stack frames
+ FAIL: gdb.mi/mi-syn-frame.exp: finished exec continue (unknown output after running)
+ FAIL: gdb.mi/mi-syn-frame.exp: list stack frames (timeout)
+ FAIL: gdb.mi/mi-syn-frame.exp: call inferior function which raises exception (timeout)
+ FAIL: gdb.mi/mi-syn-frame.exp: backtrace from inferior function at exception (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-until.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-block.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-child-f.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-child.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-cmd.exp ...
+ FAIL: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now
+ FAIL: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: out of scope now, not changed
+ FAIL: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now
+ FAIL: gdb.mi/mi-var-cmd.exp: in-and-out-of-scope: in scope now, not changed
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-cp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-display.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-var-invalidate.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi-watch.exp ...
+ FAIL: gdb.mi/mi-watch.exp: hw: watchpoint trigger (unknown output after running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-basics.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-break.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-cli.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-console.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-disassemble.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-eval.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-file.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-hack-cli.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-pthreads.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-read-memory.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-return.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-simplerun.exp ...
+ FAIL: gdb.mi/mi2-simplerun.exp: continue to end (failed to resume)
+ FAIL: gdb.mi/mi2-simplerun.exp: continue to end (unknown output after running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-stack.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-stepi.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-syn-frame.exp ...
+ FAIL: gdb.mi/mi2-syn-frame.exp: list stack frames
+ FAIL: gdb.mi/mi2-syn-frame.exp: finished exec continue (unknown output after running)
+ FAIL: gdb.mi/mi2-syn-frame.exp: list stack frames (timeout)
+ FAIL: gdb.mi/mi2-syn-frame.exp: call inferior function which raises exception (timeout)
+ FAIL: gdb.mi/mi2-syn-frame.exp: backtrace from inferior function at exception (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-until.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-var-block.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-var-child.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-var-cmd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-var-display.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.mi/mi2-watch.exp ...
+ FAIL: gdb.mi/mi2-watch.exp: hw: watchpoint trigger (unknown output after running)
+
+ === gdb Summary ===
+
+ # of expected passes 1460
+ # of unexpected failures 20
+ # of expected failures 28
+ # of known failures 3
+ # of unresolved testcases 5
+ # of untested testcases 1
+ # of unsupported tests 5
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.mi] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.modula2 --outdir=gdb.modula2
+ Test Run By tschwinge on Fri Nov 13 13:48:43 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.modula2/unbounded-array.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 8
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.objc --outdir=gdb.objc
+ Test Run By tschwinge on Fri Nov 13 13:48:56 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.objc/basicclass.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.objc/nondebug.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.objc/objcdecode.exp ...
+ FAIL: gdb.objc/objcdecode.exp: continue after break on multiply defined symbol (GDB internal error)
+
+ === gdb Summary ===
+
+ # of expected passes 21
+ # of unexpected failures 1
+ # of known failures 1
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.objc] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.opt --outdir=gdb.opt
+ Test Run By tschwinge on Fri Nov 13 13:49:32 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.opt/inline-bt.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.opt/inline-cmds.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.opt/inline-locals.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 83
+ # of expected failures 2
+ # of known failures 1
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.pascal --outdir=gdb.pascal
+ Test Run By tschwinge on Fri Nov 13 13:50:44 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.pascal/floats.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.pascal/hello.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.pascal/integers.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.pascal/types.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 10
+ # of known failures 1
+ # of unsupported tests 3
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.python --outdir=gdb.python
+ Test Run By tschwinge on Fri Nov 13 13:50:57 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-cmd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-frame.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-function.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-mi.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-prettyprint.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-template.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/py-value.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.python/python.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 284
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.reverse --outdir=gdb.reverse
+ Test Run By tschwinge on Fri Nov 13 13:54:17 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/break-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/consecutive-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/finish-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/i386-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/machinestate.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/sigall-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/solib-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/step-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/until-reverse.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.reverse/watch-reverse.exp ...
+
+ === gdb Summary ===
+
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.server --outdir=gdb.server
+ Test Run By tschwinge on Fri Nov 13 13:54:23 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.server/ext-attach.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.server/ext-run.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.server/file-transfer.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.server/server-mon.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.server/server-run.exp ...
+
+ === gdb Summary ===
+
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.stabs --outdir=gdb.stabs
+ Test Run By tschwinge on Fri Nov 13 13:54:29 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.stabs/exclfwd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.stabs/weird.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 193
+ # of expected failures 7
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.threads --outdir=gdb.threads
+ Test Run By tschwinge on Fri Nov 13 13:55:20 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/attach-into-signal.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/attach-stopped.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/attachstop-mt.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/bp_in_thread.exp ...
+ FAIL: gdb.threads/bp_in_thread.exp: run to noreturn
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/current-lwp-dead.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/execl.exp ...
+ FAIL: gdb.threads/execl.exp: info threads before exec
+ FAIL: gdb.threads/execl.exp: continue across exec
+ FAIL: gdb.threads/execl.exp: continue to end
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/fork-child-threads.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/fork-thread-pending.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/gcore-thread.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/hand-call-in-threads.exp ...
+ FAIL: gdb.threads/hand-call-in-threads.exp: show scheduler locking on
+ FAIL: gdb.threads/hand-call-in-threads.exp: hand call, thread 5 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: set confirm off (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 1 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 1
+ FAIL: gdb.threads/hand-call-in-threads.exp: setting frame, thread 1 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 1 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 2 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 2
+ FAIL: gdb.threads/hand-call-in-threads.exp: setting frame, thread 2 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 2 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 3 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 3
+ FAIL: gdb.threads/hand-call-in-threads.exp: setting frame, thread 3 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 3 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 4 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 4
+ FAIL: gdb.threads/hand-call-in-threads.exp: setting frame, thread 4 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 4 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: prepare to discard hand call, thread 5 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: dummy stack frame number, thread 5
+ FAIL: gdb.threads/hand-call-in-threads.exp: setting frame, thread 5 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: discard hand call, thread 5 (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: all dummies popped (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: disable scheduler locking (timeout)
+ FAIL: gdb.threads/hand-call-in-threads.exp: show scheduler locking off (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/interrupted-hand-call.exp ...
+ FAIL: gdb.threads/interrupted-hand-call.exp: hand-call interrupted by signal in another thread
+ FAIL: gdb.threads/interrupted-hand-call.exp: continue to program exit (timeout)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/killed.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/linux-dp.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/manythreads.exp ...
+ FAIL: gdb.threads/manythreads.exp: info threads
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/multi-create.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/pending-step.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/print-threads.exp ...
+ FAIL: gdb.threads/print-threads.exp: Running threads (fast) (unknown output)
+ FAIL: gdb.threads/print-threads.exp: Running threads (slow) (unknown output)
+ FAIL: gdb.threads/print-threads.exp: Running threads (slow with kill breakpoint) (unknown output)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/pthread_cond_wait.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/pthreads.exp ...
+ FAIL: gdb.threads/pthreads.exp: Continue to creation of first thread
+ FAIL: gdb.threads/pthreads.exp: Continue to creation of second thread
+ FAIL: gdb.threads/pthreads.exp: continue until common routine run 15 times
+ FAIL: gdb.threads/pthreads.exp: Stopped with a ^C (timeout)
+ WARNING: Could not stop child with ^C; skipping rest of tests.
+
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/schedlock.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/sigthread.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/staticthreads.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/step.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/step2.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/switch-threads.exp ...
+ FAIL: gdb.threads/switch-threads.exp: continue to breakpoint: continue to thread_func
+ FAIL: gdb.threads/switch-threads.exp: next
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/thread-execl.exp ...
+ FAIL: gdb.threads/thread-execl.exp: continue to thread start
+ FAIL: gdb.threads/thread-execl.exp: get to main in new image
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/thread-specific.exp ...
+ FAIL: gdb.threads/thread-specific.exp: continue to thread-specific breakpoint
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp ...
+ FAIL: gdb.threads/thread-unwindonsignal.exp: hand-call interrupted by signal in another thread
+ FAIL: gdb.threads/thread-unwindonsignal.exp: dummy stack frame present
+ FAIL: gdb.threads/thread-unwindonsignal.exp: continue to program exit (the program is no longer running)
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/thread_check.exp ...
+ FAIL: gdb.threads/thread_check.exp: continue to tf
+ FAIL: gdb.threads/thread_check.exp: backtrace from thread function
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/thread_events.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/threadapply.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/threxit-hop-specific.exp ...
+ FAIL: gdb.threads/threxit-hop-specific.exp: continue to thread start
+ FAIL: gdb.threads/threxit-hop-specific.exp: get past the thread specific breakpoint
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/tls-nodebug.exp ...
+ FAIL: gdb.threads/tls-nodebug.exp: thread local storage
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/tls-shared.exp ...
+ FAIL: gdb.threads/tls-shared.exp: print thread local storage variable
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/tls.exp ...
+ FAIL: gdb.threads/tls.exp: continue to first thread: no progress?
+ FAIL: gdb.threads/tls.exp: first thread print me
+ FAIL: gdb.threads/tls.exp: first thread local storage
+ FAIL: gdb.threads/tls.exp: first another thread local storage
+ FAIL: gdb.threads/tls.exp: continue to second thread
+ FAIL: gdb.threads/tls.exp: second thread print me
+ FAIL: gdb.threads/tls.exp: second thread local storage
+ FAIL: gdb.threads/tls.exp: second another thread local storage
+ FAIL: gdb.threads/tls.exp: continue to third thread
+ FAIL: gdb.threads/tls.exp: third thread print me
+ FAIL: gdb.threads/tls.exp: third thread local storage
+ FAIL: gdb.threads/tls.exp: third another thread local storage
+ FAIL: gdb.threads/tls.exp: selected thread: 1
+ FAIL: gdb.threads/tls.exp: selected thread: 2
+ FAIL: gdb.threads/tls.exp: selected thread: 3
+ FAIL: gdb.threads/tls.exp: 8 thread local storage
+ FAIL: gdb.threads/tls.exp: 8 another thread local storage
+ FAIL: gdb.threads/tls.exp: 6 thread local storage
+ FAIL: gdb.threads/tls.exp: 6 another thread local storage
+ FAIL: gdb.threads/tls.exp: 7 thread local storage
+ FAIL: gdb.threads/tls.exp: 7 another thread local storage
+ FAIL: gdb.threads/tls.exp: mess at end
+ FAIL: gdb.threads/tls.exp: running to spin in runto
+ FAIL: gdb.threads/tls.exp: p a_thread_local
+ FAIL: gdb.threads/tls.exp: p file2_thread_local
+ FAIL: gdb.threads/tls.exp: p a_thread_local second time
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/watchthreads.exp ...
+ FAIL: gdb.threads/watchthreads.exp: watch args[0]
+ FAIL: gdb.threads/watchthreads.exp: watch args[1]
+ FAIL: gdb.threads/watchthreads.exp: threaded watch loop
+ FAIL: gdb.threads/watchthreads.exp: first watchpoint on args[0] hit
+ FAIL: gdb.threads/watchthreads.exp: first watchpoint on args[1] hit
+ FAIL: gdb.threads/watchthreads.exp: watchpoint on args[0] hit in thread
+ FAIL: gdb.threads/watchthreads.exp: watchpoint on args[1] hit in thread
+ FAIL: gdb.threads/watchthreads.exp: combination of threaded watchpoints = 30
+ Running ../../../HEAD/src/gdb/testsuite/gdb.threads/watchthreads2.exp ...
+ FAIL: gdb.threads/watchthreads2.exp: run to thread_started
+ FAIL: gdb.threads/watchthreads2.exp: run to thread_started
+ FAIL: gdb.threads/watchthreads2.exp: run to thread_started
+ FAIL: gdb.threads/watchthreads2.exp: run to thread_started (the program is no longer running)
+ FAIL: gdb.threads/watchthreads2.exp: all threads started
+
+ === gdb Summary ===
+
+ # of expected passes 172
+ # of unexpected failures 93
+ # of known failures 1
+ # of unsupported tests 4
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: *** [check-gdb.threads] Error 1
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.trace --outdir=gdb.trace
+ Test Run By tschwinge on Fri Nov 13 14:16:00 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/actions.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/backtrace.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/circ.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/collection.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/deltrace.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/infotrace.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/limits.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/packetlen.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/passc-dyn.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/passcount.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/report.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/save-trace.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/tfind.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/tracecmd.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/while-dyn.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.trace/while-stepping.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 125
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest --directory=gdb.xml --outdir=gdb.xml
+ Test Run By tschwinge on Fri Nov 13 14:19:31 2009
+ Native configuration is i386-unknown-gnu0.3
+
+ === gdb tests ===
+
+ Schedule of variations:
+ unix
+
+ Running target unix
+ Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
+ Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
+ Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
+ Running ../../../HEAD/src/gdb/testsuite/gdb.xml/tdesc-arch.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.xml/tdesc-errors.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.xml/tdesc-regs.exp ...
+ Running ../../../HEAD/src/gdb/testsuite/gdb.xml/tdesc-xinclude.exp ...
+
+ === gdb Summary ===
+
+ # of expected passes 13
+ # of known failures 1
+ # of unsupported tests 1
+ /media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090914-cvs -nw -nx
+
+ make[4]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
+ make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
+ make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb'
+ make[1]: Nothing to be done for `check-target'.
+ make[1]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build'
diff --git a/open_issues/gdb_thread_ids.mdwn b/open_issues/gdb_thread_ids.mdwn
new file mode 100644
index 00000000..eeb67f30
--- /dev/null
+++ b/open_issues/gdb_thread_ids.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+[[!meta title="GDB: thread ids"]]
+
+[[!tag open_issue_gdb]]
+
+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/open_issues/git-core-2.mdwn b/open_issues/git-core-2.mdwn
new file mode 100644
index 00000000..df38dc70
--- /dev/null
+++ b/open_issues/git-core-2.mdwn
@@ -0,0 +1,55 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta title="Hiccup of git clone when checking out files"]]
+
+[[!tag open_issue_porting]]
+
+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)
+
+---
+
+Still seen on 2010-03-16.
diff --git a/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn b/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn
new file mode 100644
index 00000000..6d1b4bea
--- /dev/null
+++ b/open_issues/glibc___libc_alloca_cutoff_should_be_lowered.mdwn
@@ -0,0 +1,19 @@
+[[!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="glibc: __libc_alloca_cutoff should be lowered"]]
+
+[[!tag open_issue_hurd open_issue_glibc]]
+
+Ognyan Kulev, *[LIBC] \_\_libc\_alloca\_cutoff should be lowered*, bug-hurd,
+2003-06-12, <http://lists.gnu.org/archive/html/bug-hurd/2003-06/msg00050.html>
+
+Replace second link (mail.gnu.org) with
+<http://lists.gnu.org/archive/html/bug-hurd/2002-09/msg00143.html>.
diff --git a/open_issues/glibc_ioctls.mdwn b/open_issues/glibc_ioctls.mdwn
new file mode 100644
index 00000000..14329d0f
--- /dev/null
+++ b/open_issues/glibc_ioctls.mdwn
@@ -0,0 +1,72 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> d'oh, broken defines for ioctl()!
+ <pinotree> http://paste.debian.net/45021/ ← any idea about this? looks like something fishy with the SIO* defines
+ <pinotree> tschwinge: ↑ know anything about this?
+ <pinotree> #define _IOT_arpreq _IOT_SIMPLE (struct arpreq) ← looks like it is missing for bits/ioctls.h
+ <pinotree> eglibc patch submitted-ioctl-unsigned-size_t.diff should be pimped a bit
+
+ <pinotree> youpi: while trying to compile ossp-uuid (needed by pgsql 8.4, needed by various other stuff), i found a bug in a hurd libc header
+ <youpi> that's possible
+ <pinotree> it has a ioctrl() using an id with a value having type 'struct arpreq'
+ <youpi> ah, that's not a bug then
+ <youpi> see the ioctl section of the porting page of the wiki
+ <pinotree> due to the sort of "mangling" done in bits/ioctrls.h, there should be an helper macro for the size of the struct arpreq
+ <pinotree> +#define _IOT_arpreq _IOT_SIMPLE (struct arpreq) ← adding this before any header was enough
+ * pinotree looks
+ <youpi> it's not to be done so simply
+ <youpi> see the page :)
+ <youpi> I'm afraid _IOT_arpreq can't be properly defined
+ * pinotree is not finding it...
+ <pinotree> the closest i see is http://lists.gnu.org/archive/html/bug-hurd/2006-03/msg00025.html
+ <youpi> that's it yes
+ <youpi> I mean, that's the kind of thing
+ <youpi> but not the wiki page, let me look
+ <youpi> http://www.gnu.org/software/hurd/hurd/porting/guidelines.html
+ <pinotree> i also saw a glib patch adding few types like that (char, short, int)
+ <youpi> yes that's the same kind of thing
+ <pinotree> i see
+ <youpi> setting it to _IOT_SIMPLE(struct arpreq) would probably work with 32bit gnumach and 32bit userland, but may not with e.g. 64bit gnumach and 32bit userland and such
+ <pinotree> hmmm, sockaddr,sockaddr,int,sockaddr,char[16]
+ <pinotree> so basically it would support at most 3 elements in a passed struct?
+ <pinotree> s/elements/fields/
+ <youpi> 3 kinds of fields
+ <youpi> as you provide a count
+ <pinotree> youpi: so basically: #define _IOT_arpreq _IOT (_IOTS (struct sockaddr), 3, _IOTS (int), 1, _IOTS (char), 16) ?
+ <pinotree> ie the order of the fields in the struct does not matter, it seems?
+ <youpi> the order of the fields does matter
+ <youpi> as this encodes how mig will read the struct to send them
+ <pinotree> uhm
+ <youpi> also, _IOTS(struct sockaddr) won't work
+ <pinotree> yeah i should define it too
+ <youpi> no, it even needs to be replaced by its content
+ <pinotree> ah
+ <pinotree> it is possible to compose the _IOTS()?
+ <pinotree> (to build structs with more than 3 kind of fields)
+ <youpi> no
+ <pinotree> d'oh
+ <youpi> that's a hard shortcoming of the whole ioctl encoding
+ * pinotree scratches his head
+ <youpi> there's no way but redefining ioctl(), really
+ <youpi> it was a funny trick to encode it this way, but unrealistic
+ <pinotree> i see, yes
+ <youpi> not to mention ioctls which contain pointers, which just can not be passed to mig
+ <pinotree> indeed
+ <youpi> actually it's not mach's ioctl issue
+ <youpi> as mach doesn't know ioctl
+ <youpi> but the hurd ioctl interface
+ <pinotree> right
+ <youpi> which might end up in mach, other processes, other machines, etc.
+ * pinotree s/Mach/Hurd/ :)
diff --git a/open_issues/glibc_libpthread_robust_mutexes.mdwn b/open_issues/glibc_libpthread_robust_mutexes.mdwn
new file mode 100644
index 00000000..a92c984d
--- /dev/null
+++ b/open_issues/glibc_libpthread_robust_mutexes.mdwn
@@ -0,0 +1,54 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc open_issue_libpthread]]
+
+libpthread: glibc 44e2ad5ab8c21dbfed3e384ba2ed31d7a8fc4744
+998e5fc14595229101561d76282036839e5b66ab -- The robust mutex functions are in
+POSIX 2008.
+
+---
+
+IRC, #hurd, unknown date.
+
+ <youpi> neal: bad news: you remember the PTHREAD_RECURSIVE_MUTEX_INITIALIZER that points to a global __pthread_recursive_mutexattr?
+ <youpi> that doesn't work
+ <youpi> because some libraries like libstdc++ do not link against libpthread, while still using pthread_mutex_lock/unlock (counting on them being provided by either libc or libpthread-stubs)
+ <CIA-1> sthibaul-guest * r626 pkg-hurd/hurd/trunk/debian/ (changelog patches/series):
+ <CIA-1> * debian/patches/libpthread_rwlock_initializer.patch: Disable patch for now:
+ <CIA-1> our initializer does not work when the application does not link against
+ <CIA-1> libpthread.
+
+ <CIA-1> sthibaul-guest * r629 pkg-hurd/hurd/trunk/debian/ (changelog patches/series): do not disable adding PTHREAD_RWLOCK_INITIALIZER, that's not the one that poses problems
+ <CIA-1> sthibaul-guest * r630 pkg-hurd/hurd/trunk/debian/ (3 files in 2 dirs):
+ <CIA-1> * debian/patches/libpthread_no_recursive_mutex_initializer.patch: New patch
+ <CIA-1> to drop undefined references to __pthread_recursive_mutexattr.
+
+ <youpi> I'm thinking about how to fix the PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+ <youpi> instead of a pointer to a static attribute variable, which posed problem
+ <youpi> could we perhaps consider that page 0 is never mapped
+ <youpi> and thus not only pointer 0 but also 1 2, etc. are invalid
+ <neal> I think that is a good solution
+ <youpi> and use them as special values
+ <neal> alternatively, we could assume that -PAGESIZE is never valid
+ <youpi> that makes us test it in all pthread_mutex_* functions, but it's not so bad
+ <neal> I'm not sure which is better
+ <youpi> why isn't it?
+ <neal> because the kernel is mapped there normally
+ <youpi> the kernel could be elsewhere
+ <neal> true
+ <youpi> in a 64bit adressing space for instance
+ <neal> I think your solution is a good one
+ <youpi> ok
+
+ <CIA-1> sthibault * r633 pkg-hurd/hurd/trunk/debian/ (3 files in 2 dirs):
+ <CIA-1> * debian/patches/libpthread_recursive_mutex_initializer.patch: New patch
+ <CIA-1> to fix the recursive mutex initializers usage in libraries not linking
+ <CIA-1> against libpthread.
diff --git a/open_issues/glibc_ptrace.mdwn b/open_issues/glibc_ptrace.mdwn
new file mode 100644
index 00000000..b4c529d7
--- /dev/null
+++ b/open_issues/glibc_ptrace.mdwn
@@ -0,0 +1,47 @@
+[[!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="glibc: ptrace"]]
+
+[[!tag open_issue_glibc]]
+
+`ptrace` has some issues (`sysdeps/mach/hurd/ptrace.c`).
+
+ * Our implementation (and the generic one in `misc/ptrace.c`) differ
+ from the Linux one (`sysdeps/unix/sysv/linux/ptrace.c`)
+ w.r.t. handling of...
+
+ * the third argument: `int data` vs. `void *data`;
+
+ * `void *addr2` -- Linux doesn't have this, but we provide some
+ additional functionalty using this;
+
+ * function declaration: Linux has **`long`** `int ptrace (enum
+ __ptrace_request __request, ...)` **`__THROW`**, we have `int ptrace
+ (enum __ptrace_request __request, ...)`;
+
+ * interface do differ, e.g., Linux' `PTRACE_GETREGS` uses `void
+ *data`, we use `void *addr` for returning the struct, and in
+ Linux this is a `struct user_regs_struct` from `linux/user.h`,
+ and for us it is a `struct i386_thread_state` from
+ `mach/i386/thread_status.h`;
+
+ * Linux probides some functionality that we don't provide, e.g.,
+ `PTRACE_SINGLESTEP`.
+
+ * Some parts are wrongly implemented, e.g., `PTRACE_GETREGS` and
+ `PTRACE_SETREGS` both do the same thing.
+
+ * `return` values are wrong, e.g., `return EOPNOTSUPP` should instead
+ set `errno = EOPNOTSUPP` and `return -1` in a few places (but not
+ with the three `PTRACE_PEEK*` requests.
+
+Also consider the `sysdeps/generic/sys/ptrace.h` and
+`sysdeps/unix/sysv/linux/sys/ptrace.h` files.
diff --git a/open_issues/glibc_testsuite.mdwn b/open_issues/glibc_testsuite.mdwn
new file mode 100644
index 00000000..4cceb241
--- /dev/null
+++ b/open_issues/glibc_testsuite.mdwn
@@ -0,0 +1,105 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+`configure --without-cvs --prefix= --disable-profile --build=i486-gnu
+--host=i486-gnu`
+
+`make -k check` changes from 538603af899057a9ef9583cc447804ec602a45e5 to
+c9fd33ef070def49c078c94f8d9bc9f8a8e267f7.
+
+Configured with `--prefix=/usr` instead of `--prefix=`.
+
+Resolved failures:
+
+ * localedata/tst_mblen.out
+ * localedata/tst_mbrlen.out
+ * localedata/tst_mbrtowc.out
+ * localedata/tst_mbsrtowcs.out
+ * localedata/tst_mbstowcs.out
+ * localedata/tst_mbtowc.out
+ * localedata/tst_swscanf.out
+ * localedata/tst_wcrtomb.out
+ * localedata/tst_wcsrtombs.out
+ * localedata/tst_wcstombs.out
+ * localedata/tst_wctob.out
+ * localedata/tst_wctomb.out
+ * localedata/bug-iconv-trans.out
+ * localedata/tst-wctype.out
+ * math/test-float.out
+ * math/test-double.out
+ * posix/tst-vfork3-mem
+ * io/tst-mkdirat.out
+
+New:
+
+ * A lot of `error while loading shared libraries: libmachuser.so.1: cannot
+ open shared object file: No such file or directory`. Is it perhaps picking
+ that library up from `$prefix/lib/`?
+
+ New failures; likely due to that:
+
+ * iconvdata/iconv-test.out
+ * iconvdata/tst-tables.out
+ * malloc/tst-mtrace.out
+ * grp/tst_fgetgrent.out
+ * posix/globtest.out
+ * posix/wordexp-tst.out
+ * io/ftwtest.out
+ * elf/tst-pathopt.out
+
+ Changed failures; likely due to that:
+
+ * debug/tst-chk4.out / debug/tst-chk5.out
+
+ -error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
+ +error while loading shared libraries: libpthread-stubs.so.0: cannot open shared object file: No such file or directory
+
+---
+
+Changes to b367d4f996512af6841c3cefdb943cb0a826a6a1: nothing interesting.
+
+---
+
+Changes to b85c54a1f7e5241c1ef99dfeaecbd1bf4117564f: nothing interesting.
+
+New failures:
+
+ * posix/bug-glob3.out (SEGFAULT; but also on Linux)
+ * wctype/bug-wctypeh.o (compile error; but also on Linux)
+
+Other things noticed:
+
+ * Running `make -k check` for the second time:
+
+ -i486-gnu-gcc tst-timer2.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -g -Wno-parentheses -Wstrict-prototypes -mpreferred-stack-boundary=2 -I../include -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build -I../sysdeps/i386/elf -I../sysdeps/mach/hurd/i386 -I../sysdeps/mach/hurd -I../sysdeps/gnu -I../sysdeps/unix/bsd/bsd4.4 -I../sysdeps/unix/mman -I../sysdeps/mach/i386 -I../sysdeps/mach -I../sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/unix/bsd -I../sysdeps/unix/common -I../sysdeps/unix/inet -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../hurd -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/hurd/ -I../mach -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/mach/ -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DNOT_IN_libc=1 -o /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt/tst-timer2.o -MD -MP -MF /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt/tst-timer2.o.dt -MT /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt/tst-timer2.o
+ -tst-timer2.c: In function ‘do_test’:
+ -tst-timer2.c:33: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ -tst-timer2.c:33: error: (Each undeclared identifier is reported only once
+ -tst-timer2.c:33: error: for each function it appears in.)
+ -make[2]: *** [/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt/tst-timer2.o] Error 1
+ +/usr/bin/install -c -m 644 ../include/pthread.h /usr/include/pthread.h
+ +/usr/bin/install: cannot remove `/usr/include/pthread.h': Permission denied
+ +make[2]: *** [/usr/include/pthread.h] Error 1
+
+ -i486-gnu-gcc tst-thrlock.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -g -Wno-parentheses -Wstrict-prototypes -mpreferred-stack-boundary=2 -I../include -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build -I../sysdeps/i386/elf -I../sysdeps/mach/hurd/i386 -I../sysdeps/mach/hurd -I../sysdeps/gnu -I../sysdeps/unix/bsd/bsd4.4 -I../sysdeps/unix/mman -I../sysdeps/mach/i386 -I../sysdeps/mach -I../sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/unix/bsd -I../sysdeps/unix/common -I../sysdeps/unix/inet -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../hurd -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/hurd/ -I../mach -I/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/mach/ -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DNOT_IN_libc=1 -o /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock.o -MD -MP -MF /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock.o.dt -MT /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock.o
+ -i486-gnu-gcc -nostdlib -nostartfiles -o /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock -Wl,-dynamic-linker=/usr/lib/ld.so.1 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/csu/crt1.o /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/csu/crti.o `i486-gnu-gcc --print-file-name=crtbegin.o` /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock.o /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/dlfcn/libdl.so.2 -Wl,-rpath-link=/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/math:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/dlfcn:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/nss:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/nis:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/rt:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/resolv:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/crypt:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/mach:/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/hurd /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/libc.so.0.3 /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/libc_nonshared.a -lgcc -Wl,--as-needed -lgcc_s -Wl,--no-as-needed `i486-gnu-gcc --print-file-name=crtend.o` /home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/csu/crtn.o
+ -/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock.o: In function `do_test':
+ -/media/data/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker/elf/tst-thrlock.c:38: undefined reference to `pthread_create'
+ -/media/data/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker/elf/tst-thrlock.c:48: undefined reference to `pthread_join'
+ -collect2: ld returned 1 exit status
+ -make[2]: *** [/home/tschwinge/tmp/glibc/tschwinge--Roger_Whittaker.build/elf/tst-thrlock] Error 1
+ +/usr/bin/install -c -m 644 ../include/pthread.h /usr/include/pthread.h
+ +/usr/bin/install: cannot remove `/usr/include/pthread.h': Permission denied
+ +make[2]: *** [/usr/include/pthread.h] Error 1
+
+ * Not all tests are re-run in a `make -k tests; make tests-clean; make -k
+ tests` cycle.
diff --git a/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn b/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn
new file mode 100644
index 00000000..47f104c6
--- /dev/null
+++ b/open_issues/glibc_tls_segment_tcbhead_t_dtv_offset.mdwn
@@ -0,0 +1,28 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> you can hardcode DTV_OFFSET as 4 for now
+ <youpi> it's the offset of the dtv field in the tcbhead_t structure from hurd/libpthread
+ <tschwinge> youpi: May very well be that I'm misunderstanding something, but wouldn't it rather be the offset of tcb in __pthread + the offset of dtv in tcbhead_t (which indeed is 4)?
+ <youpi> what you don't know is that DTV_OFFSET is not relative to __pthread, but to the tls segment
+ <tschwinge> Oh, aha. Thanks.
+ <youpi> and drepper abused the fact that in nptl __pthread appears at the start of the tls segment
+
+kFreeBSD, glibc:
+
+ ++#if 0
+ + DTV_OFFSET offsetof(struct pthread, header.dtv)
+ ++#else
+ ++DTV_OFFSET offsetof(struct _pthread_descr_struct, p_header.data.dtvp)
+ ++#endif
diff --git a/open_issues/glusterfs.mdwn b/open_issues/glusterfs.mdwn
new file mode 100644
index 00000000..68518938
--- /dev/null
+++ b/open_issues/glusterfs.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+IRC, unknown channel, unknown date.
+
+ <antrik> "GlusterFS is one of the most sophisticated file system in terms of features and extensibility. It
+ <antrik> borrows a powerful concept called Translators from GNU Hurd kernel."
+ <antrik> seems to be more similar to libstore than actual translators, though
diff --git a/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn b/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn
new file mode 100644
index 00000000..2df74301
--- /dev/null
+++ b/open_issues/gnumach_general_protection_trap_gdb_vm_read.mdwn
@@ -0,0 +1,142 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <antrik> youpi: I have found an interesting Mach problem, but I'm a bit scared of debugging it...
+ <antrik> (it is related to VM stuff)
+ <antrik> I have a memory region that is mapped by the iopl device (it's an mmio region -- graphics memory to be precise)
+ <antrik> when gdb tries to read that region with vm_read() (for a "print" command), it triggers a general protection trap...
+ <youpi> antrik: does the general protection trap kill the whole kernel or just gdb?
+ <antrik> kernel
+ <antrik> kernel: General protection trap (13), code=0
+ <antrik> pmap_copy_page(41000000,49f2000,1,0,1)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../i386/i386/phys.c:62
+ <antrik> vm_object_copy_slowly(209c1c54,41000000,1000,1,20994908)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1150
+ <antrik> vm_object_copy_strategically(209c1c54,41000000,1000,20994908,2099490c)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1669
+ <antrik> vm_map_copyin(209ba6e4,2c000,1000,0,25394ec8)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_map.c:3297
+ <antrik> vm_read(209ba6e4,2c000,1000,208d303c,25394f00)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_user.c:228
+ <antrik> _Xvm_read(2095cfe4,208d3010,0,1fff3e48,2095cfd4)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/kern/mach.server.c:1164
+ <antrik> ipc_kobject_server(2095cfd4,2095cfe4,28,127ca0,0)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../kern/ipc_kobject.c:201
+ <antrik> mach_msg_trap(1024440,3,28,30,2c)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../ipc/mach_msg.c:1367
+ <antrik> Bad frame pointer: 0x102441c
+ <antrik> BTW, is it useful at all to write down the paramenters as well?...
+ <antrik> argments I mean
+ <youpi> in the trace you mean?
+ <antrik> yes
+ <youpi> apparently the problem here is that the call to vm_fault_page() didn't perform its task
+ <youpi> which address is faulty?
+ <antrik> not sure what you mean
+ <youpi> ah shit the gpf wouldn't tell you
+ <youpi> does examine 49f2000 work?
+ <youpi> oh, wait, 4100000, that can't work
+ <youpi> +0
+ <youpi> which physical address is your mmio at?
+ <antrik> haven't tried it... but I can provoke the fault again if it helps :-)
+ <youpi> we have the 1GB limitation issue
+ <antrik> oh... lemme check
+ <youpi> no need to, I think the problem is that
+ <youpi> the iopl driver should check that it's not above phys_last_addr
+ <antrik> it's only vm_read() that fails, though...
+ <antrik> the actual program I debugged in gdb works perfectly fine
+ <youpi> yes, but that's because it's accessing the memory in a different way
+ <youpi> in the case of direct reads it just uses the page table
+ <youpi> in the case of vm_read() it uses kernel's projection
+ <youpi> but in that case it's not in the kernel projection
+ <antrik> phys = 1090519040
+ <youpi> that's it, it's beyond 1GB
+ <youpi> there's not much to do except changing mach's adressing organization
+ <antrik> yeah, that's the 0x41000000
+ <antrik> hm... I guess we could make the vm_read() bail out instead of crashing?...
+ <youpi> yes
+ <youpi> but there are a lot of places like this
+ <antrik> still, it's not exactly fun when trying to debug a program and the kernel crashes :-)
+ <youpi> right :)
+ <antrik> I could try to add the check... if you tell me where it belongs ;-)
+ <youpi> antrik: it's not just one place, that's the problem
+ <youpi> it's all the places that call pmap_zero_page, pmap_copy_page, copy_to_phys or copy_from_phys
+ <youpi> and since we do want to let the iopl device create such kind of page, in principle we have to cope with them all
+ <youpi> pmap_zero_page should be ok, though
+ <youpi> the rest isn't
+ <antrik> is that tricky, or just a matter of doing it in all places?
+
+ <antrik> hm... now it crashed in "normal" usage as well...
+ <antrik> hm... a page fault trap for a change...
+ <antrik> hm... now gdb tried to vm_read() something that is mapped to physical address 0x0...
+ <antrik> so I guess I fucked something up in the mapping code
+ <antrik> is it expected that such a vm_read() causes a kernel page fault, though?...
+ <antrik> youpi: ^
+ <youpi> nope
+ <youpi> in principle the check for validity of the page is done earlier
+ <youpi> physical address 0x0 makes sense, though
+ <antrik> OK, here is the trace:
+ <antrik> Kernel page fault (14), code=0 at address 0x0
+ <antrik> pmap_copy_page(0,6e54000,1,0,1)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../i386/i386/phys.c:62
+ <antrik> vm_object_copy_slowly(20a067b0,0,1000,1,0acacec)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1150
+ <antrik> vm_object_copy_strategically(20a067b0,0,1000,20acacec,20acacf0)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_object.c:1669
+ <antrik> vm_map_copyin(20a0f1c4,120d000,1000,0,253cdec8)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_map.c:3297
+ <antrik> vm_read(20a0f1c4,120d000,1000,20a5703c,253cdf00)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../vm/vm_user.c:228
+ <antrik> _Xvm_read(20a52c80,20a57010,253cdf40,20ae33cc,20a52c70)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/kern/mach.server.c:1164
+ <antrik> ipc_kobject_server(20a52c70,20a52c80,28,20873074,20873070)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../kern/ipc_kobject.c:201
+ <antrik> mach_msg_trap(10247d0,3,28,30,2f)
+ <antrik> /build/buildd/gnumach-1.3.99.dfsg.cvs20090220/build-dbg/../ipc/mach_msg.c:1367
+ <antrik> Bad frame pointer: 0x10247ac
+ <antrik> seems to be exactly the same, except for the different arguments...
+ <antrik> hm... interesting... it *does* write something to the framebuffer, before it crashes...
+ <antrik> (which unfortunately makes it a bit hard to read the panic message... ;-) )
+ <LarstiQ> heh :)
+ <antrik> wait, it must write to something else than the frame buffer as well, or else the debugger should just paint over the crap...
+ <antrik> or perhaps it crashes so hard that the debugger doesn't even work? ;-)
+ <antrik> hm... I guess the first thing I should actually do is finding out what's up with e2fsck... this make testing crashes kinda annoying :-(
+ <antrik> oh, "interesting"... I ran it on one of my other hurd partitions, and it complained about an endless number of files... (perhaps all)
+ <antrik> however, the value for the normal files was different than for the passive translator nodes
+ <antrik> it doesn't happen only on crashes; it seems that all passive translators that are still in use at time of shutdown (or crash) have the offending bit set in the inode
+ <antrik> ouch... seems it doesn't write into the framebuffer after all, but rather scribbles all over the first 4 MiB of memory -- which includes also the VGA window, before it goes on killing the kernel...
+ <youpi> which iopl driver are you using ?
+ <antrik> ?
+ <youpi> the one from the debian patch?
+ <youpi> upstream, gnumach doesn't have an iopl device any more
+ <antrik> I guess so... standard Debian stuff here
+ <antrik> oh. how does X map the memory, then?
+ <youpi> X does yes
+ <antrik> ?
+ <youpi> X uses the iopl() device to access the video memory, yes
+ <youpi> I don't know if that was what you were asking for, but that's what I meant by my answer :)
+ <antrik> yeah, I know how it does *currently* do it -- I stole the code from there :-)
+ <antrik> my question is, how is X supposed to get at the framebuffer, when there is no iopl device anymore?
+ <youpi> ah, I hadn't noticed the "how" word
+ <youpi> in Debian there is
+ <LarstiQ> !debian → !x?
+ <youpi> the clean "access device memory" interface is yet to be done
+ <antrik> err... that sounds like Xorg philosophy
+ <youpi> what, to wait for a nice interface ?
+ <antrik> "let's kill the old stuff, fuck regressions... maybe someone will figure out how to do it with the new stuff at some point. if not, not our problem"
+ <youpi> that's also a GNU philosophy
+ <youpi> ah, that one
+ <antrik> anyone know how device_map() is supposed to behave? the documentation isn't really clear...
+ <antrik> my understanding was then when an offset is specified, then the resulting object will be relative to that object; i.e. the offset of a later vm_map() on this object is applied on top of the object's internal offset...
+ <antrik> but that doesn't seem to be how it works for the iopl device, if I read the xf86 code correctly...
+ <antrik> yeah, the offset parameter seems a nop when doing device_map() on the iopl device
diff --git a/open_issues/gnumach_tlb_flushing.mdwn b/open_issues/gnumach_tlb_flushing.mdwn
new file mode 100644
index 00000000..45d0730d
--- /dev/null
+++ b/open_issues/gnumach_tlb_flushing.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> gianluca, youpi: Why the value 32 for the TLB flushing decision, by the way?
+ <youpi> completely arbitrary
+ <tschwinge> I thought whether that might perhaps be worth a macro definition with a comment?
+ <verte> what's the typical TLB size these days?
+ <youpi> tschwinge: right
+ <youpi> note that the 32 value would be probably different between native and xen
+ <gianluca> tschwinge: just arbitrary
diff --git a/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn b/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn
new file mode 100644
index 00000000..b1eaf9a5
--- /dev/null
+++ b/open_issues/hurd_file_name_lookup_retry_FS_RETRY_MAGIC.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+IRC, #hurd, 2009-08-25
+
+ <cfhammar> also I fixed (what I think is) a bug in hurd_file_name_lookup_retry when opening FDs with FS_RETRY_MAGIC
+ <cfhammar> it didn't actually reopen the FD, rather it just (effectively) duped it
+ <scolobb> cfhammar: That's great! I think I had some problems because of not being able to truly reopen a port to a file.
+ <antrik> cfhammar: what is the difference, and why do you consider it a bug?...
+ <cfhammar> antrik: for one thing you can't change open modes, and it doesn't reset the file cursor
+ <cfhammar> (which I actually needed, though I could have done it manually)
+ <cfhammar> antrik: and also it isn't consistant with linux
+ <cfhammar> you can trigger the bug from the shell: cat /dev/fd/3 3>> /tmp/foo
+ <antrik> cfhammar: I can't say that I understand the test case... but I can at least confirm that it behaves differently on Hurd and on Linux :-)
diff --git a/open_issues/hurdextras.mdwn b/open_issues/hurdextras.mdwn
new file mode 100644
index 00000000..fa45a763
--- /dev/null
+++ b/open_issues/hurdextras.mdwn
@@ -0,0 +1,100 @@
+[[!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]]."]]"""]]
+
+This is about merging some hurdextras stuff into Hurd proper repostitories.
+
+[[!toc levels=2]]
+
+
+# OK
+
+## cvsfs
+
+/!\ Waiting for <https://savannah.gnu.org/support/?107474>.
+
+ * stesie -- OK
+
+## libfuse
+
+/!\ Waiting for <https://savannah.gnu.org/support/?107474>.
+
+ * stesie -- OK
+
+## mboxfs
+
+Tarball-import, plus trivial changes.
+
+ * Ludovic Courtes -- OK
+ * mmenal -- NOK (but trivial) -- OK
+
+## notice
+
+Tarball-import.
+
+ * Wolfgang Jährling <wolfgang@pro-linux.de> -- OK
+
+## run
+
+Tarball-import.
+
+ * Marcus Brinkmann <marcus@gnu.org> -- OK
+ * Manuel Menal <mmenal@hurdfr.org> -- NOK (but trivial) -- OK
+
+
+# Not Interesting
+
+## procfs
+
+Not interesting anymore, but perhaps import for posterity? Likewise for Neal's
+tarball(s).
+
+
+# Not OK
+
+## httpfs
+
+ * Arun V. <arunsark@yahoo.com> -- NOK
+ * Gopika U. K. <gopika78@yahoo.com> -- NOK
+ * mrphython / James A. Morrison <ja2morri@uwaterloo.ca> -- OK
+
+## jfs
+
+ * Sajith T S <sajith@symonds.net> -- NOK
+ * mmenal / Manuel Menal <mmenal@hurdfr.org> -- NOK
+
+## memfs
+
+ * Farid Hajji <farid.hajji@ob.kamp.net> -- NOK
+ * Ludovic Courtes <ludo@chbouib.org> -- OK
+ * mmenal -- NOK (but trivial) -- OK
+
+## pith
+
+[[tschwinge]] has some tarballs, too.
+
+ * John Tobey <jtobey@john-edwin-tobey.org> -- NOK
+ * Manuel Menal <mmenal@hurdfr.org> -- NOK (but trivial) -- OK
+
+## pptop
+
+ * Miles Bader -- OK
+ * Paul Emsley <paule@chem.gla.ac.uk> -- NOK
+ * James Morrison -- OK
+ * Neal Walfield -- OK
+ * Jon Arney <jarney1@cox.net> -- OK
+ * Alfredo Beaumont Sainz <alfredo.beaumont@gmail.com> -- NOK (but trivial) -- OK
+
+## smbfs
+
+ * rocky\_10\_balboa, gscrivano -- NOK (but has assignments various other GNU projects)
+
+## xmlfs
+
+ * mmenal -- NOK
diff --git a/open_issues/kvm.mdwn b/open_issues/kvm.mdwn
new file mode 100644
index 00000000..6dfffc9a
--- /dev/null
+++ b/open_issues/kvm.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+Issues when running Hurd under KVM: un-synced filesystems, etc. No problems
+with Virtualbox.
+
+2010-07-28, #hurd
+
+ <youpi> pochu: you were the one reporting issues with qemu/kvm and hurd, right?
+ <youpi> is your machine somehow smp (like multicore for instance)
+ <youpi> ?
+ <pochu> youpi: yes, it's a Core 2 Duo
+ <pochu> so 2 cores
+ <youpi> ok, you might want to try to bind qemu/kvm
+ <youpi> e.g. install hwloc, and prepend "hwloc-bind 1 --" before the qemu/kvm command line
+ <pochu> ok, ty
+
+2010-07-31, GNU Mach commit 039176372b4271f370ef38eb2ee5d43923a5b28b.
diff --git a/open_issues/libasyncns.mdwn b/open_issues/libasyncns.mdwn
new file mode 100644
index 00000000..bbd34bff
--- /dev/null
+++ b/open_issues/libasyncns.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> tschwinge: btw, would you be able to tell if and what's wrong with a socket-related problem?
+ <pinotree> it is reproducible with a very small self-contained C library
+ <pinotree> http://0pointer.de/lennart/projects/libasyncns/
+ <pinotree> it has a test case with it, which fails
+ <pinotree> tschwinge: if that can ring some bell, imho the problem is related to SOCK_STREAM sockets created with socketpair and used with send/recv
diff --git a/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn b/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn
new file mode 100644
index 00000000..1e4a6acb
--- /dev/null
+++ b/open_issues/libdiskfs_dot_dot-dot_relevant_for_libnetfs.mdwn
@@ -0,0 +1,20 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <tschwinge> By the way: your libdiskfs ., .. fix -- is that relevant for libnetfs as well? (Didn't look it up so far.)
+ <youpi> it could be a good idea to protect netfs users directly from there yes
+ <tschwinge> But probably the backend (e.g., NFS server) would protect us in the netfs case, right?
+ <youpi> possibly, but we could have locking issues in between like in libdiskfs
+ <youpi> and POSIX says it's invalid anyway
+ <youpi> so we'd probably better just forbid it
diff --git a/open_issues/libfshelp_in_hurdlibs.mdwn b/open_issues/libfshelp_in_hurdlibs.mdwn
new file mode 100644
index 00000000..0700b061
--- /dev/null
+++ b/open_issues/libfshelp_in_hurdlibs.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!meta title="libfshelp in HURDLIBS"]]
+
+[[!tag open_issue_hurd]]
+
+[[hurd/libtrivfs]] seems to use [[hurd/libfshelp]], but doesn't have it listed
+in `HURDLIBS`. Should we change that? Same for [[hurd/libnetfs]] and
+[[hurd/libdiskfs]]?
diff --git a/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn b/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn
new file mode 100644
index 00000000..817dac76
--- /dev/null
+++ b/open_issues/libgomp_pthread_attr_setstacksize_pthread_stack_min.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_libpthread]]
+
+IRC, unknown channel, unknown date:
+
+ <azeem> neal: libgomp (GNU's implementation of OpenMP) uses PTHREAD_STACK_MIN, which we do not define apparently
+ <neal> azeem: We have fixed sized stacks.
+ <neal> so the pthread_attr_setstacksize will fail once you define PTHREAD_STACK_MIN)
diff --git a/open_issues/libmachuser_libhurduser_rpc_stubs.mdwn b/open_issues/libmachuser_libhurduser_rpc_stubs.mdwn
new file mode 100644
index 00000000..d069641e
--- /dev/null
+++ b/open_issues/libmachuser_libhurduser_rpc_stubs.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]]."]]"""]]
+
+bug-hurd discussion.
+
+---
+
+IRC, #hurd, 2010-08-12
+
+ <jkoenig> Looking at hurd.git, shouldn't {hurd,include}/Makefile's "all" target do something, and shouldn't pretty much everything depend on them? As it stands it seems that the system headers are used and the potentially newer ones never get built, except maybe on "install" (which is seemingly never called from the top-level Makefile)
+ <jkoenig> I would fix it, but something tells me that maybe it's a feature :-)
+ <antrik> jkoenig: the headers are provided by glibc, along with the stubs
+ <jkoenig> antrik, you mean, even those built from the .defs files in hurd/ ?
+ <antrik> yes
+ <jkoenig> oh, ok then.
+ <antrik> as glibc provides the stubs (in libhurduser), the headers also have to come from there, or they would get out of sync
+ <jkoenig> hmm, shouldn't glibc also provide /usr/share/msgids/hurd.msgids, then?
+ <antrik> jkoenig: not necessarily. the msgids describe what the servers actually understand. if the stubs are missing from libhurduser, that's no reason to leave out the msgids...
+ <jkoenig> ok this makes sense
diff --git a/open_issues/libpthread.mdwn b/open_issues/libpthread.mdwn
new file mode 100644
index 00000000..16b6d098
--- /dev/null
+++ b/open_issues/libpthread.mdwn
@@ -0,0 +1,44 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc open_issue_libpthread]]
+
+GSoC project idea: [[community/gsoc/project ideas/pthreads]]
+
+---
+
+`#hurd`, 2010-01-24
+
+ <pinotree> youpi: hm, thought about the pthread/stubs issue w/ dlopen'ed libraries
+ <pinotree> currently looks like libstdc++ on hurd links to pthread-stubs, we're the only one with such configuration
+ <pinotree> i was looking at the gcc 4.4 patch hurd-pthread.diff, could it be it does not set THREADLIBS in the configure.ac switch case?
+ <youpi> that's expected
+ <youpi> on linux the libc provides hooks itself, on hurd-i386 it's pthread-stubs
+ <pinotree> why not explicitly link to pthread though?
+ <youpi> because there is no strict need to, for applications that don't need libpthread
+ <youpi> the dlopen case is a tricky case that pthread-stubs had not thought about
+ <pinotree> hm
+ <pinotree> what if the pthread stubs would be moved in our glibc?
+ <youpi> that's what we should do yes
+ <youpi> (ideally)
+ <youpi> but for this we need to build libpthread along glibc, to get it really working
+ <youpi> and that's the tricky part (Makefile & such) which hasn't been done yet
+ <pinotree> why both (stubs + actual libpthread)?
+ <youpi> because you need the stubs to be able to call the actual libpthread
+ <youpi> as soon libpthread gets dlopened for instance
+ <youpi> +as
+ <pinotree> i see
+ <youpi> (remember that nptl does this if you want to see how)
+ <youpi> (it's the libc files in nptl/)
+ <youpi> (and forward.c)
+ <guillem> also if libpthreads gets integrated with glibc don't we need to switch the hurd from cthreads then? Which has been the blocker all this time AFAIR?
+ <youpi> we don't _need_ to
+ <guillem> ok
+
diff --git a/open_issues/libpthread_weak_symbols.mdwn b/open_issues/libpthread_weak_symbols.mdwn
new file mode 100644
index 00000000..6f135979
--- /dev/null
+++ b/open_issues/libpthread_weak_symbols.mdwn
@@ -0,0 +1,50 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc open_issue_libpthread]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> btw, the issue with pthread_cancel is tricky
+ <youpi> I'm afraid there might be no fix
+ <youpi> clean fix, I mean
+ <pinotree> oh, hm
+ <pinotree> where it the problem located, actually?
+ <youpi> it's a lot more than just one place
+ <youpi> in some c++ header there is a weak reference to pthread_cancel
+ <youpi> libpthreadstubs0 provides a weak definition of pthread_cancel, which can suit well
+ <youpi> problem comes when also linking with a library which pulls libpthread
+ <youpi> oops no libpthreadstubs0 doesn't provide a weak definition of pthread_cancel
+ <youpi> it couldn't implement it anyway
+ <youpi> and the problem here is that the linker seems to be looking for pthread_cancel in the libpthreadstubs0 library, not libpthread
+ <youpi> and can't find it
+ <youpi> I don't know how this translate to english, but we're “walking on eggs
+ <youpi> ” on this issue
+ <pinotree> i see
+ <youpi> i.e. we already know we're not respecting the ELF standard
+ <youpi> we need a feature that is not in the standard to make pthread symbols working
+ <youpi> the solution would be to integrate libpthread into the glibc
+ <pinotree> you mean in the sources, but still providing separate libc.so and libpthread.so?
+ <youpi> yes
+ <pinotree> would that be difficult/tricky?
+ <youpi> because that permits to put pthread_* functions forwarding directly in the glibc, as is done on linux
+ <youpi> problem is upstream, you know...
+ <youpi> if we put libpthread there, it'll be difficult for us to maintain it
+ <pinotree> ah, the friendly ulrich mate?
+ <youpi> we already have difficults to get almost trivial patches commited
+ <youpi> and the "yes I'll handle it someday" Roland mate
+ <youpi> Roland is supposed to be the GNU part maintainer, but he doesn't have a box running at the moment
+ <youpi> what we could do is to do it in Debian for the moment
+ <pinotree> yeah
+ <pinotree> iirc eglibc is maintained within git, isn't it?
+ <pinotree> maybe you could do a hurd branch, putting all the hurd patches and the pthread sources, and then releasing from that
+ <youpi> we're already moving to something like that, yes
+ <youpi> at least for all the other glibc patches we have
+ <youpi> maybe we'll just do that on sourceware actually
diff --git a/open_issues/libstore_parted.mdwn b/open_issues/libstore_parted.mdwn
new file mode 100644
index 00000000..852c8fa8
--- /dev/null
+++ b/open_issues/libstore_parted.mdwn
@@ -0,0 +1,11 @@
+[[!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 redir=hurd/libstore/part]]
diff --git a/open_issues/lisp_cross-compile.mdwn b/open_issues/lisp_cross-compile.mdwn
new file mode 100644
index 00000000..c9100aec
--- /dev/null
+++ b/open_issues/lisp_cross-compile.mdwn
@@ -0,0 +1,11 @@
+[[!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]]."]]"""]]
+
+flaviocruz-soc2008-lisp-branch: lisp stuff can't be cross-compiled.
diff --git a/open_issues/lsof.mdwn b/open_issues/lsof.mdwn
new file mode 100644
index 00000000..2cbf2302
--- /dev/null
+++ b/open_issues/lsof.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]]."]]"""]]
+
+We don't have a `lsof` tool. Perhaps we could cook something with having a
+look at which ports are open at the moment (as [[`portinfo`|hurd/portinfo]]
+does, for example)?
diff --git a/open_issues/ltrace.mdwn b/open_issues/ltrace.mdwn
new file mode 100644
index 00000000..cf0df759
--- /dev/null
+++ b/open_issues/ltrace.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <youpi> it'd be good to have ltrace eventually
+ <youpi> rpctrace has too many issues to be usable
+ <youpi> (and a lot of them are hard to fix iirc)
+ <youpi> ltrace traces library calls
+ <youpi> in principle it should just work at the dynamic linker stage, so should be portable
diff --git a/open_issues/m4_vs_stack.mdwn b/open_issues/m4_vs_stack.mdwn
new file mode 100644
index 00000000..c92cfb00
--- /dev/null
+++ b/open_issues/m4_vs_stack.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+ m4 (1.4.13-1+hurd.2) unreleased; urgency=low
+
+ * Drop stack overflow (checks/stackovf) check, test-c-stack and
+ test-c-stack2 checks, and /dev/null/ (test-open and test-fopen) checks.
+
+ -- Samuel Thibault <samuel.thibault@ens-lyon.org> Tue, 18 Aug 2009 20:54:30 +0000
+
+ <youpi> that was a quick fix (as not having m4 makes autoconf uninstallable, which is quite a problem)
+ <youpi> there's probably something wrong in the stack management of the Hurd, I haven't investigated
diff --git a/open_issues/mach-defpager_vs_defpager.mdwn b/open_issues/mach-defpager_vs_defpager.mdwn
new file mode 100644
index 00000000..d6976706
--- /dev/null
+++ b/open_issues/mach-defpager_vs_defpager.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+\#hurd, 2010, end of May / beginning of June
+
+ <cfhammar> whats the difference between mach-defpager and defpager?
+ <cfhammar> i'm guessing defpager is a hurdish version that uses libstore but was never finished or something
+ <cfhammar> found an interesting thread about it: http://mirror.libre.fm/hurd/list/msg01232.html
+ <slpz> antrik: an interesting thread, indeed :-)
+ <pochu> slpz: btw is mach-defpager linked statically but not called mach-defpager.static on purpose?
+ <slpz> antrik: also, I can confirm that mach-defpager needs a complete rewrite ;-)
+ <slpz> pochu: I think the original defpager was launched by serverboot
+ <slpz> pochu: that could be the reason to have it static, like ext2fs
+ <slpz> and since there's no need to execute it again during the normal operation of the system, they probably decided to not create a dynamically linked version
+ <slpz> (but I'm just guessing)
+ <slpz> of perhaps they wanted to prevent mach-defpager from the need of reading libraries, since it's used when memory is really scarce (guessing again)
diff --git a/open_issues/magic_translator_machtype.mdwn b/open_issues/magic_translator_machtype.mdwn
new file mode 100644
index 00000000..1c62b762
--- /dev/null
+++ b/open_issues/magic_translator_machtype.mdwn
@@ -0,0 +1,24 @@
+[[!meta copyright="Copyright © 2008, 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="/hurd/magic machtype"]]
+
+[[!tag open_issue_hurd open_issue_glibc]]
+
+ tschwinge@clubber:~ $ settrans -ca machtype /hurd/magic machtype
+ tschwinge@clubber:~ $ l mach<TAB>Connection to clubber.bddebian.com closed.
+ thomas@dirichlet:~ $ ssh clubber
+ Warning: Permanently added '[clubber.bddebian.com]:2251' (RSA) to the list of known hosts.
+ Last login: Tue Dec 30 08:52:58 2008 from dslb-084-057-196-016.pools.arcor-ip.net
+ tschwinge@clubber:~ $ cat machtype
+ Segmentation fault
+ tschwinge@clubber:~ $ l machtype
+ Segmentation fault
+ tschwinge@clubber:~ $ l mach<TAB>Connection to clubber.bddebian.com closed.
diff --git a/open_issues/mig_error_reply.mdwn b/open_issues/mig_error_reply.mdwn
new file mode 100644
index 00000000..21a5b217
--- /dev/null
+++ b/open_issues/mig_error_reply.mdwn
@@ -0,0 +1,68 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_mig]]
+
+\#hurd, freenode, 2010-05-19
+
+ <cfhammar> ugh, mig server stubs generated from *_reply.defs don't call the server functions when the reply is an error, since the message size is too small...
+ <cfhammar> term seems to get around it by turning of type checking
+ <cfhammar> s/of/off
+ <cfhammar> but streamio doesn't
+ <cfhammar> luckily the only other program that makes use of a *_reply.defs is crash, and crash_reply.defs' routines only return an error code so it isn't affected
+ <slpz> cfhammar: could you point me to a stub with that problem?
+ <cfhammar> slpz: trans/device_replyServer.c:_Xdevice_open_reply (in build dir)
+ <slpz> cfhammar: So, if I understand it correctly, the problem is that GNU Mach generated stub doesn't properly set the size of the message if there's an error in the function, thus the type checking in user generated stub discards the reply
+ <cfhammar> slpz: the size is correct, error messages contain just a return value
+ <cfhammar> slpz: it is the type checking that is at fault imho
+ <slpz> cfhammar: even when a server wants to return an error, the size of the message should be the same as the reply structure previously defined
+ <slpz> cfhammar: on the other hand, I can't understand why streamio is using device_open_request (async RPC) instead of device_open (sync RPC)...
+ <cfhammar> slpz: the server does not always know the proper size, e.g. when it doesn't understand the message
+ <slpz> cfhammar: what do you mean by "doesn't understand the message"?
+ <cfhammar> slpz: if it doesn't implement that interface or is the wrong type, etc.
+ <cfhammar> slpz: in that case the mig stub needs to send out a generic error reply
+ <cfhammar> slpz: i don't know why streamio uses it either
+ <slpz> cfhammar: OK, now I see your point. If the server answers with a generic error code (as MIG_*), device_open_reply will not be called, and device_open_request doesn't get an error.
+ <slpz> cfhammar: good catch :-)
+ <cfhammar> slpz: all errors are handled the same way, MIG_* is just an example of why it does so
+ <slpz> cfhammar: on an unrealted note, I think we should get rid of all asynchronous messages sent from the user to the kernel, since they aren't asynchronous except for sending the reply to a different port (the process is really done by the thread calling mach_msg)
+ <cfhammar> slpz: i'm not not all that familiar with the low-level parts of message passing so i can't really comment
+ <slpz> cfhammar: in that point I disagree. If the server function can understand the message (so there isn't a MIG_* error), it can send a reply message with the proper size
+ <cfhammar> slpz: it could, but what is the advantage if we still need to handle generic errors?
+ <cfhammar> slpz: "sending the reply to a different port", different from what?
+ <slpz> cfhammar: to differentiate between message marshalling errors and errors generated by the called function
+ <slpz> cfhammar: in a synchronous RPC, the same call to mach_msg will send the request and receive the reply by providing a mig generated reply port
+ <slpz> cfhammar: but in an asynchronous, the reply is received by a port previously generated by the function requesting the message
+ <cfhammar> slpz: ah, that's a clever optimization
+ <slpz> cfhammar: if the "asynchronous" message is sent to the kernel, the thread calling for mach_msg will execute the server's function, but the reply will be sent to one of these previously generated ports
+ <slpz> cfhammar: actually you have a synchronous operation replying to a different port. That doesn't make much sense to me :-)
+ <antrik> slpz: note that most kernel functions can be implemented by userspace servers, in which case they could be really async...
+ <cfhammar> slpz: not sure how differentiating mig errors from server errors is useful...
+ <slpz> antrik: define "most kernel functions" ;-)
+ <cfhammar> slpz: if nothing else kernel rpcs can be proxied, e.g. rpctrace
+ <slpz> cfhammar: well, think of device_open_request. If the result is not a mig error, you can still device_open_reply an expect it to properly process the return code from the message
+ <cfhammar> slpz: it should be able to handle all kinds of errors anyway, the result should be the same as with syncronous rpcs
+ <slpz> cfhammar: yes, you're right. User generated stub should be able to fill the reply with the error code and call to the reply function.
+ <slpz> cfhammar: Then someone needs to introduce some changes in MiG's magic...
+ <cfhammar> slpz: yes, a flag to generate reply side of an interface would be ideal
+ <cfhammar> slpz: then we could toss out *_reply.defs altogether
+ <slpz> cfhammar: well, that's a different change from what I was thinking
+ <cfhammar> slpz: how would you change it?
+ <slpz> cfhammar: just generating stubs which, in case of error, will properly call to the reply function with the error code in its arguments
+ <cfhammar> slpz: ah yes, i considered that as well, but i don't think mig can actually distinguish the error code from any other int argument
+ <cfhammar> slpz: i should double check it though
+ <slpz> cfhammar: I tag can be used to point to argument of this nature
+ <slpz> cfhammar: s/I/A/
+ <cfhammar> slpz: oh, it already is tagged with retcode, intresting
+ <slpz> cfhammar: OMG, I'm thinking like MiG! ;-P
+ <cfhammar> slpz: is that a good or bad ;
+ <cfhammar> slpz: ;-)
+ <slpz> cfhammar: I don't know, but it's somewhat scary ;-)
+ <cfhammar> slpz: apparently retcode is only there for comatibility, mig just ignores it...
diff --git a/open_issues/neals_hurd-misc_papers.mdwn b/open_issues/neals_hurd-misc_papers.mdwn
new file mode 100644
index 00000000..7f4e1e3b
--- /dev/null
+++ b/open_issues/neals_hurd-misc_papers.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]]."]]"""]]
+
+[[!tag open_issue_documentation]]
+
+<http://walfield.org/pub/people/neal/papers/hurd-misc/>
+
+ <tschwinge> neal: We could put that into the wiki some day, I think.
+ <neal> sure
diff --git a/open_issues/nice_changes_priority_of_parent_shell.mdwn b/open_issues/nice_changes_priority_of_parent_shell.mdwn
new file mode 100644
index 00000000..d731ef82
--- /dev/null
+++ b/open_issues/nice_changes_priority_of_parent_shell.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_glibc]]
+
+ * <http://bugs.debian.org/44039>
+
+ * Also see [[nice_vs_mach_thread_priorities]].
diff --git a/open_issues/nice_vs_mach_thread_priorities.mdwn b/open_issues/nice_vs_mach_thread_priorities.mdwn
new file mode 100644
index 00000000..e6b68134
--- /dev/null
+++ b/open_issues/nice_vs_mach_thread_priorities.mdwn
@@ -0,0 +1,197 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_glibc]]
+
+This issue has been known for some time, due to coreutils' testsuite choking
+when testing *nice*: <http://bugs.debian.org/190581>.
+
+There has been older discussion about this, too, but this is not yet captured
+here.
+
+IRC, #hurd, August 2010
+
+ <pochu> I'm reading Mach and POSIX documentation to understand the priorities/nice problems
+ <pochu> antrik said it would be better to reimplement everything instead of fixing the current Mach interfaces, though I'm not sure about that yet
+ <youpi> uh, so he changed his mind?
+ <pochu> it seems POSIX doesn't say nice values should be -20..20, but 0..(2*NZERO - 1)
+ <youpi> he said we could just change the max priority value and be done with it :)
+ <pochu> so we can probably define NZERO to 16 to match the Mach range of 0..31
+ <youpi> s/said/had said previously/
+ <antrik> youpi: POSIX is actually fucked up regarding the definition of nice values
+ <antrik> or at least the version I checked was
+ <pochu> antrik: why? this says the range is [0,{NZERO}*2-1], so we can just set NZERO to 16 AFAICS: http://www.opengroup.org/onlinepubs/9699919799/functions/getpriority.html
+ <antrik> it talkes about NZERO and all; making it *look* like this could be defined arbitrarily... but in other places, it's clear that the standard 40 level range is always assumed
+ <antrik> anyways, I totally see no point in deviating from other systems in this regard. it can only cause problems, and gives us no benefits
+ <cfhammar> it says NZERO should be at least 20 iirc
+ <youpi> agreed
+ <antrik> I don't remember the details; it's been a while since I looked at this
+ <antrik> youpi: changing the number of levels is only part of the issue. I'm not sure why I didn't mention it initially when we discussed this
+ <antrik> youpi: I already concluded years ago that it's not possible to implement nice levels correctly with the current Mach interfaces in a sane fashion
+ <antrik> (it's probably possible, but only with a stupid hack like setting all the thread priorities one by one)
+ <antrik> youpi: also, last time we discussed this, I checked how the nice stuff works currently on Hurd; and concluded that it's so utterly broken, that there is no point in trying to preserve *any* compatibility. I think we can safely throw away any handling that is alread there, and do it over from scratch in the most straightforward fashion
+ <pochu> antrik: I've thought about setting NZERO to 16 and doing exactly what you've just said to be a hack (setting all the thread priorities one by one)
+ <pochu> but there seems to be consensus that that's undesirable...
+ <pochu> indeed, POSIX says NZERO should be at least 20
+ <antrik> pochu: BTW, I forgot to say: I'm not sure you appreciate the complexity of setting the thread max priorities individually
+ <pochu> antrik: I don't. would it be too complex? I imagined it would be a simple loop :)
+ <antrik> pochu: in order to prevent race conditions, you have to stop all other threads before obtaining the list of threads, and continue them after setting the priority for each
+ <antrik> I don't even know whether it can be done without interfering with other thread handling... in which case it gets really really ugly
+ <pochu> antrik: btw I'm looking at [gnumach]/kern/thread.[ch], removing the priority stuff as appropriate, and will change the tasks code later
+ <antrik> it seems to me that using a more suitable kernel interface will not only be more elegant, but quite possibly actually easier to implement...
+ <pochu> antrik: apparently it's not that hard to change the priority for all threads in a task, see task_priority() in gnumach/kern/task.c
+ <pochu> it looks like the nice test failures are mostly because of the not 1:1 mapping between nice values and Mach priorities
+ <marcusb> "Set priority of task; used only for newly created threads."
+ <marcusb> there is a reason I didn't fix nice 8 years ago
+ <marcusb> ah there is a change_threads option
+ <pochu> marcusb: I'm not sure that comment is correct. that syscall is used by setpriority()
+ <marcusb> yeah
+ <marcusb> I didn't read further, where it explains the change_threads options
+ <marcusb> I was shooting before asking questions :)
+ <marcusb> pochu: although there are some bad interactions if max_priorities are set per thread
+ <antrik> pochu: maybe we are talking past each other. my point was not that it's hard to do in the kernel. I was just saying that it would be painful to do from userspace with the current kernel interface
+ <pochu> antrik: you could still use that interface in user space, couldn't you? or maybe I'm misunderstanding...
+ <pochu> cfhammar, antrik: current patch: http://emilio.pozuelo.org/~deb/gnumach.patch, main issue is probably what to do with high-priority threads. are there cases where there should be a thread with a high priority but the task's priority shouldn't be high? e.g. what to do with kernel_thread() in [gnumach]/kern/thread.c
+ <pochu> i.e. if tasks have a max_priority, then threads shouldn't have a higher priority, but then either we raise the task's max_priority if we need a high-prio thread, or we treat them specially (e.g. new field in struct thread), or maybe it's a non-issue because in such cases, all the task is high-prio?
+ <pochu> also I wonder whether I can kill the processor set's max_priority. It seems totally unused (I've checked gnumach, hurd and glibc)
+ <pochu> (that would simplify the priority handling)
+ <cfhammar> pochu: btw what does your patch do? i can't remember what was decided
+ <pochu> cfhammar: it moves the max_priority from the thread to the task, so raising/lowering it has effect on all of its threads
+ <pochu> it also increases the number of run queues (and thus that of priority levels) from 32 to 40 so we can have a 1:1 mapping with nice values
+ <pochu> cfhammar: btw don't do a full review yet, just a quick look would be fine for now
+ <neal> why not do priorities from 0 to 159
+ <neal> then both ranges can be scaled
+ <neal> without loss of precision
+ <pochu> neal: there would be from Mach to nice priorities, e.g. a task with a priority of 2 another with 3 would have the same niceness, though their priority isn't really the same
+ <neal> pochu: sure
+ <neal> pochu: but any posix priority would map to a current mach priority and back
+ <neal> sorry, that's not true
+ <neal> a posix priority would map to a new mach priority and bach
+ <neal> and a current mach priority would map to a new mach priority and back
+ <neal> which is I think more desirable than changing to 40 priority levels
+ <pochu> neal> and a current mach priority would map to a new mach priority and back <- why should we care about this?
+ <neal> to be compatible with existing mach code
+ <neal> why gratutiously break existing interfaces?
+ <pochu> they would break anyway, wouldn't them? i.e. if you do task_set_priority(..., 20), you can't know if the caller is assuming old or new priorities (to leave it as 20 or as 100)
+ <neal> you add a new interface
+ <neal> you should avoid changing the semantics of existing interfaces as much as possible
+ <pochu> ok, and deprecate the old ones I guess
+ <neal> following that rule, priorities only break if someone does task_set_priority_new(..., X) and task_get_priority ()
+ <neal> there are other users of Mach
+ <neal> I'd add a configure check for the new interface
+ <neal> alternatively, you can check at run time
+ <pochu> well if you _set_priority_new(), you should _get_priority_new() :)
+ <neal> it's not always possible
+ <pochu> other users of GNU Mach?
+ <neal> you are assuming you have complete control of all the code
+ <neal> this is usually not the case
+ <neal> no, other users of Mach
+ <neal> even apple didn't gratuitously break Mach
+ <neal> in fact, it may make sense to see how apple handles this problem
+ <pochu> hmm, I hadn't thought about that
+ <pochu> the other thing I don't understand is: "I'd add a configure check for the new interface". a configure check where? in Mach's configure? that doesn't make sense to me
+ <neal> any users of the interface
+ <pochu> ok so in clients, e.g. glibc & hurd
+ <neal> yes.
+ <antrik> neal: I'm not sure we are winning anything by keeping compatibility with other users of Mach...
+ <antrik> neal: we *know* that to make Hurd work really well, we have to do major changes sooner or later. we can just as well start now IMHO
+ <antrik> keeping compatibility just seems like extra effort without any benefit for us
+ <guillem> just OOC have all other Mach forks, preserved full compatibility?
+ <neal> guillem: Darwin is pretty compatible, as I understand it
+ <antrik> pochu: the fundamental approach of changing the task_priority interface to serve as a max priority, and to drop the notion of max priorities from threads, looks fine
+ <antrik> pochu: I'm not sure about the thread priority handling
+ <antrik> I don't know how thread priorities are supposed to work in chreads and/or pthread
+ <antrik> I can only *guess* that they assume a two-stage scheduling process, where the kernel first decides what process to run; and only later which thread in a process...
+ <antrik> if that's indeed the case, I don't think it's even possible to implement with the current Mach scheduler
+ <antrik> I guess we could work with relative thread priorities if we really want: always have the highest-priority thread run with the task's max priority, and lower the priorities of the other threads accordingly
+ <antrik> however, before engaging into this, I think you should better check whether any of the code in Hurd or glibc actually uses thread priorities at all. my guess is that it doesn't
+ <antrik> I think we could get away with stubbing out thread priority handling alltogether for now, and just use the task priority for all threads
+ <antrik> I agree BTW that it would be useful to check how Darwin handles this
+ <pochu> btw do you know where to download the OS X kernel source? I found something called xnu, but I?m not sure that's it
+ <antrik> pochu: yeah, that's it
+ <antrik> Darwin is the UNIX core of OS X, and Xnu is the actual kernel...
+ <pochu> hmm, so they have both a task.priority and a task.max_priority
+ <neal> pochu: thoughts?
+ <pochu> neal: they have a priority and a max_priority in the task and in the threads, new threads inherit it from its parent task
+ <pochu> then they have a task_priority(task, priority, max_priority) that can change a task's priorities, and it also changes it for all its threads
+ <neal> how does the global run queue work?
+ <pochu> and they have 128 run queues, no idea if there's a special reason for that number
+ <pochu> neal: sorry, what do you mean?
+ <neal> I don't understand the point of the max_priority parameter
+ <pochu> neal: and I don't understand the point of the (base) priority ;)
+ <pochu> the max_priority is just that, the maximum priority of a thread, which can be lowered, but can't exceed the max one
+ <pochu> the (base) priority, I don't understand what it does, though I haven't looked too hard. maybe it's the one a thread starts at, and must be <= max_priority
+ <antrik> pochu: it's clearly documented in the manual, as well as in the code your initial patch changes...
+ <antrik> or do you mean the meaning is different in Darwin?...
+ <pochu> I was speaking of Darwin, though maybe it's the same as you say
+ <antrik> I would assume it's the same. I don't think there would be any point in having the base vs. max priority distinction at all, except to stay in line with standard Mach...
+ <antrik> at least I can't see a point in the base priority semantics for use in POSIX systems...
+ <pochu> right, it would make sense to always have priority == max_priority ...
+ <pochu> neal: so max_priority is that maximum priority, and priority is the one used to calculate the scheduled priority, and can be raised and lowered by the user without giving special permissions as long as he doesn't raise it above max_priority
+ <pochu> well this would allow a user to lower a process' priority, and raise it again later, though that may not be allowed by POSIX, so then we would want to have max_priority == priority (or get rid of one of them if possible and backwards compatible)
+ <antrik> pochu: right, that's what I think too
+ <antrik> BTW, did I bring up handling of thread priorities? I know that I meant to, but I don't remember whether I actually did...
+ <pochu> antrik: you told me it'd be ok to just get rid of them for now
+ <pochu> so I'm more thinking of fixing max_priority and (base) priority and leaving thread's scheduling priority as it currently is
+ <pochu> s/so/though/
+ <antrik> pochu: well, my fear is that keeping the thread priority handling as ist while changing task priority handling would complicate the changes, while giving us no real benefit...
+ <antrik> though looking at what Darwin did there should give you an idea what it involves exactly...
+ <pochu> antrik: what would you propose, keeping sched_priority == max_priority ?
+ <pochu> s/keeping/making/
+ <antrik> yes, if that means what I think it does ;-)
+ <antrik> and keeping the priority of all threads equal to the task priority for now
+ <antrik> of course this only makes sense if changing it like this is actually simpler than extending the current handling...
+ <antrik> again, I can't judge this without actually knowing the code in question. looking at Darwin should give you an idea...
+ <pochu> I think leaving it as is, making it work with the task's max_priority changes would be easier
+ <antrik> perhaps I'm totally overestimating the amount of changes required to do what Darwin does
+ <antrik> OTOH, carrying around dead code isn't exactly helping the maintainability and efficiency of gnumach...
+ <antrik> so I'm a bit ambivalent on this
+ <antrik> should we go for minimal changes here, or use this occasion to simplify things?...
+ <antrik> I guess it would be good to bring this up on the ML
+ <cfhammar> in the context of gsoc i'd say minimal changes
+ <pochu> there's also neal's point on keeping backwards compatibility as much as possible
+ <neal> my point was not backwards compatibility at all costs
+ <antrik> I'm still not convinced this is a valid point :-)
+ <neal> but to not gratutiously break things
+ <antrik> neal: well, I never suggested breaking things just because we can... I only suggested breaking things to make the code and interface simpler :-)
+ <antrik> I do not insist on it though
+ <neal> at that time, we did not know how Mac did it
+ <antrik> I only think it would be good to get into a habit that Mach interfaces are not sacred...
+ <neal> and, I also had a proposal, which I think is not difficult to implement given the existing patch
+ <antrik> but as I said, I do not feel strongly about this. if people feel more confident about a minimal change, I'm fine with that :-)
+ <antrik> neal: err... IIRC your proposal was only about the number of nice levels? we are discussing the interface change necessary to implement POSIX semantics properly
+ <antrik> or am I misremembering?
+ <pochu> antrik: he argues that with that number of nice levels, we could keep backwards compatibility for the 0..31 levels, and for 0..39 for POSIX compatibility
+ <antrik> pochu: yes, I remember that part
+ <neal> antrik : My suggestion was: raise the number of nice levels to 160 and introduce a new interface which uses those. Adjust the old interface to space by 160/32
+ <antrik> neal: I think I said it before: the problem is not *only* in the number of priority levels. the semantics are also wrong. which is why Darwin added a max_priority for tasks
+ <neal> what do you mean the semantics are wrong?
+ <neal> I apologize if you already explained this.
+ <antrik> hm... I explained it at some point, but I guess you were not present at that conversation
+ <neal> I got disconnected recently so I likely don't have it in backlog.
+ <antrik> in POSIX, any process can lower its priority; while only privileged processes can raise it
+ <antrik> Mach distinguishes between "current" and "max" priority for threads: "max" behaves like POSIX; while "current" can be raised or lowered at will, as long as it stays below "max"
+ <antrik> for tasks, there is only a "current" priority
+ <antrik> (which applies to newly created threads, and optionally can be set for all current threads while changing the task priority)
+ <antrik> glibc currently uses the existing task priorities, which leads to *completely* broken semantics
+ <antrik> instead, we need something like a max task priority -- which is exactly what Darwin added
+ <neal> yes
+ <antrik> (the "current" task priority is useless for POSIX semantics as far as I can tell; and regarding thread priorities, I doubt we actually use them at all?...)
+ <cfhammar> where does a new thread get its initial max_priority from?
+ <antrik> cfhammar: from the creator thread IIRC
+ <pochu> yes
+
+2010-08-12
+
+ <pochu> my plan is to change the number of priority levels and the threads/tasks priority handling, then add new RPCs to play with them and make the old ones stay compatible, then make glibc use the new RPCs
+
+---
+
+Another nice issue: [[nice_changes_priority_of_parent_shell]].
diff --git a/open_issues/nptl.mdwn b/open_issues/nptl.mdwn
new file mode 100644
index 00000000..9ff5fb51
--- /dev/null
+++ b/open_issues/nptl.mdwn
@@ -0,0 +1,37 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_libpthread open_issue_glibc]]
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> Other question: how difficult is a NPTL port? Futexes and some kernel interfaces for scheduling stuff etc. -- what else?
+ <youpi> actually NPTL doesn't _require_ futexes
+ <youpi> it just requires low-level locks
+ <youpi> Mmm, it seems to be so only in principle
+ <youpi> I can see futex names here and there in the generic code
+ <youpi> looks like Drepper isn't disciplined enough in that area either
+ <tschwinge> (well, why would he...)
+ <youpi> I'm not sure we really want to port NPTL
+ <tschwinge> OK.
+ <youpi> Drepper will keep finding things to add
+ <youpi> while the interface between glibc and libpthread isn't increasing _so_ much
+ <tschwinge> ... and even less so the interfavce that actual applications are using.
+ <tschwinge> We'd need to evaluate which benefits NPTL would bring.
+
+---
+
+# Resources
+
+ * <http://www.akkadia.org/drepper/nptl-design.pdf>
+
+ * <http://nptltracetool.sourceforge.net/>
+
+ * <http://posixtest.sourceforge.net/>
diff --git a/open_issues/ogi.mdwn b/open_issues/ogi.mdwn
new file mode 100644
index 00000000..87eb6779
--- /dev/null
+++ b/open_issues/ogi.mdwn
@@ -0,0 +1,14 @@
+[[!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]]."]]"""]]
+
+Go through Ognyan Kulev's (ogi) pages,
+<http://debian.fmi.uni-sofia.bg/~ogi/hurd/links/>,
+<http://debian.fmi.uni-sofia.bg/~ogi/hurd/ext3fs/>, and archive / hunt down
+what's still interesting.
diff --git a/open_issues/open_posix_test_suite.mdwn b/open_issues/open_posix_test_suite.mdwn
new file mode 100644
index 00000000..089ea1b1
--- /dev/null
+++ b/open_issues/open_posix_test_suite.mdwn
@@ -0,0 +1,2715 @@
+[[!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="Open POSIX Test Suite"]]
+
+Here's a log of a [Open POSIX Test Suite](http://posixtest.sourceforge.net/)
+run (get sources, `make`, inspect `logfile`); this is from 2009-07-27 HEAD
+sources on a 2009-07-27 Debian GNU/Hurd system.
+
+The `logfile` has been post-processed with:
+
+ $ sed ↩
+ -e '/build: PASS$/d' ↩
+ -e '/link: PASS$/d' ↩
+ -e '/link: SKIP$/d' ↩
+ -e '/execution: PASS$/d'
+
+The tests that failed as *INTERRUPTED* were hanging and have manually been
+interrupted using `kill [PID]`.
+
+ conformance/definitions/signal_h/16-1: build: FAILED: Compiler output:
+ conformance/definitions/signal_h/16-1.c:14: error: ‘SA_SIGINFO’ undeclared here (not in a function)
+ conformance/definitions/signal_h/16-1.c:15: error: ‘SA_NOCLDWAIT’ undeclared here (not in a function)
+ conformance/definitions/signal_h/26-1: build: FAILED: Compiler output:
+ conformance/definitions/signal_h/26-1.c:9: error: expected ‘)’ before ‘int’
+ conformance/definitions/signal_h/26-1.c: In function ‘dummyfcn’:
+ conformance/definitions/signal_h/26-1.c:13: error: ‘pthread_kill_test’ undeclared (first use in this function)
+ conformance/definitions/signal_h/26-1.c:13: error: (Each undeclared identifier is reported only once
+ conformance/definitions/signal_h/26-1.c:13: error: for each function it appears in.)
+ conformance/definitions/signal_h/26-1.c:13: error: expected ‘;’ before ‘dummyvar’
+ conformance/definitions/signal_h/26-1.c:14: error: ‘dummyvar’ undeclared (first use in this function)
+ conformance/definitions/signal_h/26-1.c:14: error: ‘pthread_kill’ undeclared (first use in this function)
+ conformance/interfaces/aio_cancel/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_cancel/3-1.c: In function ‘main’:
+ conformance/interfaces/aio_cancel/3-1.c:96: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_cancel/3-1.c:96: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_cancel/3-1.c:96: error: for each function it appears in.)
+ conformance/interfaces/aio_cancel/3-1.c:97: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_fsync/1-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/1-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/1-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/1-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/10-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/10-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/10-1.c:33: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/10-1.c:33: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/11-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/11-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/11-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/11-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/13-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/13-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/6-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/6-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/6-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_fsync/7-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_fsync/7-1.c: In function ‘main’:
+ conformance/interfaces/aio_fsync/7-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_fsync/7-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/12-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/12-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/12-1.c:34: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/12-1.c:34: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/13-1.c:33: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/13-1.c:33: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/14-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/14-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/14-1.c:34: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/14-1.c:34: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/15-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/15-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/15-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/15-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_read/6-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_read/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_read/6-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_read/6-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_suspend/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/1-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/1-1.c:120: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/1-1.c:120: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/1-1.c:120: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/1-1.c:126: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/2-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_suspend/2-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/2-1.c:31: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_suspend/2-1.c:31: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_suspend/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/6-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/6-1.c:116: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/6-1.c:116: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/6-1.c:116: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/6-1.c:122: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/7-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/7-1.c:118: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/7-1.c:118: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/7-1.c:118: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/7-1.c:124: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/aio_suspend/8-1.c: In function ‘main’:
+ conformance/interfaces/aio_suspend/8-1.c:121: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/aio_suspend/8-1.c:121: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/aio_suspend/8-1.c:121: error: for each function it appears in.)
+ conformance/interfaces/aio_suspend/8-1.c:127: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/aio_write/10-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/10-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/10-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/10-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/11-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/11-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/11-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/11-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/12-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/12-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/12-1.c:31: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/12-1.c:31: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/13-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/13-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/13-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/13-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/aio_write/4-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/aio_write/4-1.c: In function ‘main’:
+ conformance/interfaces/aio_write/4-1.c:30: error: implicit declaration of function ‘exit’
+ conformance/interfaces/aio_write/4-1.c:30: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/fork/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/fork/2-1.c: In function ‘main’:
+ conformance/interfaces/fork/2-1.c:240: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/fork/2-1.c:240: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/fork/2-1.c:240: error: for each function it appears in.)
+ conformance/interfaces/fork/2-1.c:241: error: ‘SA_NOCLDWAIT’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/1-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/1-1.c:110: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/1-1.c:110: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/1-1.c:110: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/1-1.c:122: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/10-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/10-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/10-1.c:107: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/10-1.c:107: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/10-1.c:107: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/10-1.c:119: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/11-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/11-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/11-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/11-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/11-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/11-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/14-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/14-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/14-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/14-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/14-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/14-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/15-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/15-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/15-1.c:111: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/15-1.c:111: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/15-1.c:111: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/15-1.c:123: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/16-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/16-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/16-1.c:32: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/16-1.c:32: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/17-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/17-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/17-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/17-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/19-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/19-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/19-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/19-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/2-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/2-1.c:106: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/2-1.c:106: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/2-1.c:106: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/2-1.c:118: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/20-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/20-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/20-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/20-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/21-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/21-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/21-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/21-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/22-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/22-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/22-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/22-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/23-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/23-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/23-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/23-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/24-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/24-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/24-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/24-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/25-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/lio_listio/25-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/25-1.c:19: error: implicit declaration of function ‘exit’
+ conformance/interfaces/lio_listio/25-1.c:19: error: incompatible implicit declaration of built-in function ‘exit’
+ conformance/interfaces/lio_listio/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/3-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/3-1.c:107: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/3-1.c:107: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/3-1.c:107: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/3-1.c:119: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/4-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/4-1.c:114: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/4-1.c:114: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/4-1.c:114: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/4-1.c:126: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/lio_listio/7-1.c: In function ‘main’:
+ conformance/interfaces/lio_listio/7-1.c:113: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/lio_listio/7-1.c:113: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/lio_listio/7-1.c:113: error: for each function it appears in.)
+ conformance/interfaces/lio_listio/7-1.c:125: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/mq_open/27-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_open/27-1.c: In function ‘main’:
+ conformance/interfaces/mq_open/27-1.c:27: error: ‘PATH_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_open/27-1.c:27: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_open/27-1.c:27: error: for each function it appears in.)
+ cc1: warnings being treated as errors
+ conformance/interfaces/mq_open/27-1.c:27: error: unused variable ‘qname’
+ conformance/interfaces/mq_send/13-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/13-1.c:30: error: ‘MQ_PRIO_MAX’ undeclared here (not in a function)
+ conformance/interfaces/mq_send/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-1.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-1.c:41: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/mq_send/4-2: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-2.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-2.c:41: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-2.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-2.c:41: error: for each function it appears in.)
+ conformance/interfaces/mq_send/4-3: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/4-3.c: In function ‘main’:
+ conformance/interfaces/mq_send/4-3.c:51: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/4-3.c:51: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/4-3.c:51: error: for each function it appears in.)
+ conformance/interfaces/mq_send/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_send/7-1.c: In function ‘main’:
+ conformance/interfaces/mq_send/7-1.c:60: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_send/7-1.c:60: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_send/7-1.c:60: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/13-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/13-1.c:31: error: ‘MQ_PRIO_MAX’ undeclared here (not in a function)
+ conformance/interfaces/mq_timedsend/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-1.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/4-2: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-2.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-2.c:45: error: for each function it appears in.)
+ conformance/interfaces/mq_timedsend/4-3: build: FAILED: Compiler output:
+ conformance/interfaces/mq_timedsend/4-3.c: In function ‘main’:
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: ‘MQ_PRIO_MAX’ undeclared (first use in this function)
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/mq_timedsend/4-3.c:55: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_getstack/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_getstack/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_getstack/1-1.c:54: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_getstacksize/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_getstacksize/1-1.c:53: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/1-1.c:63: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/2-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/2-1.c:90: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/4-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/4-1.c:73: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/6-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/6-1.c:59: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstack/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstack/7-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstack/7-1.c:60: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/1-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/2-1.c:79: error: for each function it appears in.)
+ conformance/interfaces/pthread_attr_setstacksize/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c: In function ‘main’:
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: ‘PTHREAD_STACK_MIN’ undeclared (first use in this function)
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/pthread_attr_setstacksize/4-1.c:50: error: for each function it appears in.)
+ conformance/interfaces/pthread_key_create/speculative/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_key_create/speculative/5-1.c:37: error: ‘PTHREAD_KEYS_MAX’ undeclared here (not in a function)
+ conformance/interfaces/pthread_once/3-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_once/3-1.c: In function ‘main’:
+ conformance/interfaces/pthread_once/3-1.c:71: error: expected expression before ‘{’ token
+ conformance/interfaces/pthread_once/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/pthread_once/6-1.c: In function ‘test’:
+ conformance/interfaces/pthread_once/6-1.c:199: error: expected expression before ‘{’ token
+ conformance/interfaces/sched_yield/1-1: build: FAILED: Compiler output:
+ cc1: warnings being treated as errors
+ conformance/interfaces/sched_yield/1-1.c: In function ‘set_process_affinity’:
+ conformance/interfaces/sched_yield/1-1.c:87: error: implicit declaration of function ‘__CPU_ZERO_S’
+ conformance/interfaces/sched_yield/1-1.c:89: error: implicit declaration of function ‘__CPU_SET_S’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘set_thread_affinity’:
+ conformance/interfaces/sched_yield/1-1.c:119: error: implicit declaration of function ‘pthread_setaffinity_np’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘runner’:
+ conformance/interfaces/sched_yield/1-1.c:136: error: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘pthread_t’
+ conformance/interfaces/sched_yield/1-1.c: In function ‘busy_thread’:
+ conformance/interfaces/sched_yield/1-1.c:159: error: format ‘%ld’ expects type ‘long int’, but argument 3 has type ‘pthread_t’
+ conformance/interfaces/sem_init/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sem_init/6-1.c: In function ‘main’:
+ conformance/interfaces/sem_init/6-1.c:29: error: ‘SEM_VALUE_MAX’ undeclared (first use in this function)
+ conformance/interfaces/sem_init/6-1.c:29: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sem_init/6-1.c:29: error: for each function it appears in.)
+ conformance/interfaces/sem_open/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sem_open/5-1.c: In function ‘main’:
+ conformance/interfaces/sem_open/5-1.c:32: error: ‘SEM_VALUE_MAX’ undeclared (first use in this function)
+ conformance/interfaces/sem_open/5-1.c:32: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sem_open/5-1.c:32: error: for each function it appears in.)
+ conformance/interfaces/sigaction/10-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/10-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/10-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/10-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/10-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigaction/11-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/11-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/11-1.c:50: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/11-1.c:50: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/11-1.c:50: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-1.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-1.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-1.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-10: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-10.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-10.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-10.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-10.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-11: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-11.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-11.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-11.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-11.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-12: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-12.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-12.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-12.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-12.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-13: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-13.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-13.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-13.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-13.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-14: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-14.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-14.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-14.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-14.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-15: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-15.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-15.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-15.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-15.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-16: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-16.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-16.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-16.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-16.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-17: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-17.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-17.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-17.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-17.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-18: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-18.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-18.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-18.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-18.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-19: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-19.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-19.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-19.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-19.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-2: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-2.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-2.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-2.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-2.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-20: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-20.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-20.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-20.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-20.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-21: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-21.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-21.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-21.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-21.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-22: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-22.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-22.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-22.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-22.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-23: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-23.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-23.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-23.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-23.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-24: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-24.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-24.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-24.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-24.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-25: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-25.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-25.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-25.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-25.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-26: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-26.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-26.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-26.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-26.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-3: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-3.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-3.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-3.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-3.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-4: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-4.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-4.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-4.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-4.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-5: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-5.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-5.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-5.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-5.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-6: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-6.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-6.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-6.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-6.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-7: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-7.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-7.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-7.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-7.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-8: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-8.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-8.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-8.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-8.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/19-9: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/19-9.c: In function ‘main’:
+ conformance/interfaces/sigaction/19-9.c:117: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/19-9.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/19-9.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/21-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/21-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/21-1.c:36: error: ‘SA_NOCLDWAIT’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/21-1.c:36: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/21-1.c:36: error: for each function it appears in.)
+ conformance/interfaces/sigaction/29-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/29-1.c: In function ‘handler’:
+ conformance/interfaces/sigaction/29-1.c:95: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/29-1.c:95: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/29-1.c:95: error: for each function it appears in.)
+ conformance/interfaces/sigaction/29-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/29-1.c:133: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/29-1.c:145: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/30-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/30-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/30-1.c:117: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/30-1.c:117: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/30-1.c:117: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-1.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-1.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-1.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-10: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-10.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-10.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-10.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-10.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-11: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-11.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-11.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-11.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-11.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-12: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-12.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-12.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-12.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-12.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-13: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-13.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-13.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-13.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-13.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-14: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-14.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-14.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-14.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-14.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-15: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-15.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-15.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-15.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-15.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-16: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-16.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-16.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-16.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-16.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-17: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-17.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-17.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-17.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-17.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-18: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-18.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-18.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-18.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-18.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-19: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-19.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-19.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-19.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-19.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-2: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-2.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-2.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-2.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-2.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-20: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-20.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-20.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-20.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-20.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-21: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-21.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-21.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-21.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-21.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-22: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-22.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-22.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-22.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-22.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-23: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-23.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-23.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-23.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-23.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-24: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-24.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-24.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-24.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-24.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-25: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-25.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-25.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-25.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-25.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-26: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-26.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-26.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-26.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-26.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-3: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-3.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-3.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-3.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-3.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-4: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-4.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-4.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-4.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-4.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-5: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-5.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-5.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-5.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-5.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-6: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-6.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-6.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-6.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-6.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-7: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-7.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-7.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-7.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-7.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-8: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-8.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-8.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-8.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-8.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/6-9: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/6-9.c: In function ‘main’:
+ conformance/interfaces/sigaction/6-9.c:34: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/6-9.c:34: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/6-9.c:34: error: for each function it appears in.)
+ conformance/interfaces/sigaction/9-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigaction/9-1.c: In function ‘main’:
+ conformance/interfaces/sigaction/9-1.c:49: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigaction/9-1.c:49: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigaction/9-1.c:49: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/1-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/1-1.c: In function ‘myhandler’:
+ conformance/interfaces/sigqueue/1-1.c:33: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/1-1.c:33: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/1-1.c:33: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/1-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/1-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/1-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/4-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/4-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/4-1.c:45: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/4-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/4-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/4-1.c:48: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/5-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/5-1.c:48: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/5-1.c:48: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/5-1.c:48: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/6-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/6-1.c:55: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/6-1.c:55: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/6-1.c:55: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/6-1.c:58: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/7-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/7-1.c:52: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1.c:52: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/7-1.c:52: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/7-1.c:58: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/7-1.c:58: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/8-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/8-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/8-1.c:46: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/8-1.c:46: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/8-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/9-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigqueue/9-1.c: In function ‘main’:
+ conformance/interfaces/sigqueue/9-1.c:46: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigqueue/9-1.c:46: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigqueue/9-1.c:46: error: for each function it appears in.)
+ conformance/interfaces/sigqueue/9-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwait/2-1.c: In function ‘main’:
+ conformance/interfaces/sigwait/2-1.c:45: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/2-1.c:45: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwait/2-1.c:45: error: for each function it appears in.)
+ conformance/interfaces/sigwait/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwait/7-1.c: In function ‘main’:
+ conformance/interfaces/sigwait/7-1.c:114: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwait/7-1.c:114: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwait/7-1.c:114: error: for each function it appears in.)
+ conformance/interfaces/sigwait/7-1.c:114: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/2-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/2-1.c:44: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/2-1.c:49: error: ‘SIGRTMAX’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/2-1.c:49: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/5-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/5-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/5-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/6-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/6-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/6-1.c:41: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/7-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/7-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/7-1.c:48: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/7-1.c:51: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/8-1: build: FAILED: Compiler output:
+ conformance/interfaces/sigwaitinfo/8-1.c: In function ‘main’:
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: ‘SA_SIGINFO’ undeclared (first use in this function)
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: (Each undeclared identifier is reported only once
+ conformance/interfaces/sigwaitinfo/8-1.c:47: error: for each function it appears in.)
+ conformance/interfaces/sigwaitinfo/8-1.c:50: error: ‘SIGRTMIN’ undeclared (first use in this function)
+ conformance/definitions/mqueue_h/1-1: execution: UNTESTED: Output:
+ Not Implemented!
+ conformance/definitions/mqueue_h/10-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/11-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/2-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/3-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/4-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/5-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/6-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/7-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/8-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/definitions/mqueue_h/9-1: execution: UNTESTED: Output:
+ Test not implemented!
+ conformance/interfaces/aio_cancel/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/10-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/2-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_cancel/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_error/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/12-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/14-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/4-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-3: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/8-4: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_fsync/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/10-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/11-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/11-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/3-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_read/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/3-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_return/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/4-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_suspend/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/1-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/1-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/2-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/3-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/7-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/8-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/aio_write/9-2: execution: UNSUPPORTED: Output:
+ conformance/interfaces/clock_getcpuclockid/1-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_getcpuclockid/2-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_getres/3-1: execution: FAILED: Output:
+ clock_getres() failed
+ Test FAILED
+ conformance/interfaces/clock_getres/7-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME not supported
+ conformance/interfaces/clock_getres/8-1: execution: UNSUPPORTED: Output:
+ _POSIX_THREAD_CPUTIME not supported
+ conformance/interfaces/clock_gettime/3-1: execution: UNSUPPORTED: Output:
+ CLOCK_MONOTONIC unsupported
+ conformance/interfaces/clock_gettime/4-1: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/clock_nanosleep/10-1: execution: FAILED: Output:
+ In handler
+ errno != EINTR
+ Test FAILED
+ conformance/interfaces/clock_nanosleep/9-1: execution: FAILED: Output:
+ In handler
+ clock_nanosleep() did not return EINTR
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/clock_settime/1-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/19-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/4-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/4-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/clock_settime/5-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/5-2: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/7-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/7-2: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/8-1: execution: UNTESTED: Output:
+ Run this test as ROOT, not as a Regular User
+ conformance/interfaces/clock_settime/speculative/4-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/clock_settime/speculative/4-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/fork/1-1: execution: UNRESOLVED: Output:
+ [02:46:23]Test conformance/interfaces/fork/1-1.c unresolved: got 1073741869 (Operation not supported) on line 115 (Failed to open the semaphore)
+ [02:46:23]Test conformance/interfaces/fork/1-1.c unresolved: got 1073741869 (Operation not supported) on line 115 (Failed to open the semaphore)
+ conformance/interfaces/fork/11-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/fork/12-1: execution: FAILED: Output:
+ [09:57:13]SIGUSR1 and SIGUSR2 are pending, we can fork
+ [09:57:13]SIGUSR1 and SIGUSR2 are blocked in child
+ [09:57:13]Test conformance/interfaces/fork/12-1.c FAILED: The new process was created with SIGUSR1 pending
+ [09:57:13]SIGUSR1 and SIGUSR2 are pending, we can fork
+ [09:57:13]Test conformance/interfaces/fork/12-1.c FAILED: Child exited abnormally
+ conformance/interfaces/fork/13-1: execution: UNRESOLVED: Output:
+ [09:57:14]Test conformance/interfaces/fork/13-1.c unresolved: got 1073741902 (Function not implemented) on line 117 (Failed to set interval timer for ITIMER_VIRTUAL)
+ conformance/interfaces/fork/14-1: execution: UNRESOLVED: Output:
+ [09:57:14]Test conformance/interfaces/fork/14-1.c unresolved: got 1073741869 (Operation not supported) on line 100 (Failed to create the named semaphore)
+ conformance/interfaces/fork/17-1: execution: UNRESOLVED: Output:
+ [09:57:15]Test conformance/interfaces/fork/17-1.c unresolved: got 1073741902 (Function not implemented) on line 103 (Failed to get max priority value)
+ conformance/interfaces/fork/17-2: execution: UNRESOLVED: Output:
+ [09:57:15]Test conformance/interfaces/fork/17-2.c unresolved: got 1073741902 (Function not implemented) on line 103 (Failed to get max priority value)
+ conformance/interfaces/fork/18-1: execution: UNRESOLVED: Output:
+ [09:57:16]Test conformance/interfaces/fork/18-1.c unresolved: got 1073741902 (Function not implemented) on line 128 (Failed to create a timer)
+ conformance/interfaces/fork/19-1: execution: UNRESOLVED: Output:
+ [09:57:16]Test conformance/interfaces/fork/19-1.c unresolved: got 1073741902 (Function not implemented) on line 114 (Failed to create the message queue descriptor)
+ conformance/interfaces/fork/21-1: execution: UNRESOLVED: Output:
+ [09:57:17]Test conformance/interfaces/fork/21-1.c unresolved: got 1073741869 (Operation not supported) on line 128 (Failed to open the semaphore)
+ conformance/interfaces/fork/22-1: execution: UNTESTED: Output:
+ [09:57:17]File conformance/interfaces/fork/22-1.c cannot test: The testcase needs CPUTIME or THREAD_CPUTIME support
+ conformance/interfaces/fork/8-1: execution: FAILED: Output:
+ [09:57:20]Test conformance/interfaces/fork/8-1.c FAILED: The process is created with non-zero tms_cutime or tms_cstime
+ conformance/interfaces/fsync/7-1: execution: FAILED: Output:
+ fsync/7-1.c Test Fail: Expect EINVAL, get: (ipc/mig) bad request message ID
+ conformance/interfaces/lio_listio/12-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/13-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/18-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/5-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/6-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/8-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/lio_listio/9-1: execution: UNSUPPORTED: Output:
+ conformance/interfaces/mlock/10-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlock/5-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlock/8-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/mlockall/13-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/13-2: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/3-6: execution: UNRESOLVED: Output:
+ An error occurs when calling mlockall(): Function not implemented
+ conformance/interfaces/mlockall/3-7: execution: UNRESOLVED: Output:
+ An error occurs when calling mlockall(): Function not implemented
+ conformance/interfaces/mlockall/8-1: execution: UNRESOLVED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mlockall/speculative/15-1: execution: UNRESOLVED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/mmap/11-4: execution: FAILED: Output:
+ pa: 0x28000
+ pa_2: 0x29000
+ Test Fail: mmap/11-4.c Modification of the partial page at the end of an object is written out
+ conformance/interfaces/mmap/11-5: execution: FAILED: Output:
+ Test Fail: mmap/11-5.c Modification of the partial page at the end of an object is written out
+ conformance/interfaces/mmap/13-1: execution: FAILED: Output:
+ Time before write(): 1248767904
+ Time before mmap(): 1248767905
+ Time before munmap(): 1248767906
+ atime1: 1248767904, atime2: 1248767904, atime3: 1248767904
+ Test Fail mmap/13-1.c st_atime did not update properly
+ conformance/interfaces/mmap/14-1: execution: FAILED: Output:
+ Time before write(): 1248767907
+ Time before mmap(): 1248767908
+ Time before write reference: 1248767909
+ Time before msync(): 1248767910
+ ctime1: 1248767909, ctime2: 1248767909
+ mtime1: 1248767909, mtime2: 1248767909
+ Test Fail mmap/14-1.c st_ctime and st_mtime were not updated properly
+ conformance/interfaces/mmap/18-1: execution: UNRESOLVED: Output:
+ mmap/18-1.c Error at mlockall(): Function not implemented
+ conformance/interfaces/mmap/21-1: execution: FAILED: Output:
+ Test FAIL
+
+Kernel panic [[!tag open_issue_gnumach]] (at conformance/interfaces/mmap/24-1):
+
+ Assertion `(object == VM_OBJECT_NULL) || (object->ref_count > 0) || ((object->paging_in_progress != 0) && internal)' failed in file "../gnumach-1-branch-Xen-branch/vm/vm_object.c", line 2087
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006abc1,20067354,2006708c,827,2e4e5514)
+ 0x20020ace(20067354,2006708c,827,2001c900,2e3b54f4)
+ 0x20035ef2(2e4e5514,1000,0,200194c0,2e3b54f4)
+ 0x2003929f(2e3b4d64,2fc6ff9c,400,0,1)
+ 0x200577ea(1,15ff998,400,0,1)
+ 0x20006838(1,15ff998,400,0,1)
+ >>>>> user space <<<<<
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020ace 0x20035ef2 0x2003929f 0x200577ea 0x20006838
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ Assert
+ ??:0
+ vm_object_enter
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/vm/vm_object.c:2109
+ vm_map
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/vm/vm_user.c:326
+ syscall_vm_map
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_mig.c:657
+ mach_call_call
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/i386/i386/locore.S:1083
+
+Disable the panic-causing test (conformance/interfaces/mmap/24-1) and restart:
+
+ [...]
+ conformance/interfaces/mmap/24-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/mmap/27-1: execution: UNTESTED: Output:
+ Test Untested: MAP_FIXED defined
+ conformance/interfaces/mmap/28-1: execution: FAILED: Output:
+ Test Fail: mmap/28-1.c Got no error at mmap()
+ conformance/interfaces/mmap/31-1: execution: FAILED: Output:
+ Test FAIL: expect EOVERFLOW but get other error: Cannot allocate memory
+ off: fffff000, len: fffff000
+ conformance/interfaces/mmap/6-4: execution: FAILED: Output:
+ Test Fail: Did not get EACCES as expected
+ conformance/interfaces/mmap/6-6: execution: FAILED: Output:
+ Test Fail: Did not get EACCES as expected
+ conformance/interfaces/mmap/7-1: execution: UNRESOLVED: Output:
+ mmap/7-1.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/mmap/7-2: execution: UNRESOLVED: Output:
+ mmap/7-2.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/mq_close/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_close/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 2-1: mq_open: Function not implemented
+ unexpected error: mq_close 2-1: read: EOF
+ conformance/interfaces/mq_close/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 3-1: mq_open: Function not implemented
+ conformance/interfaces/mq_close/3-2: execution: FAILED: Output:
+ errno != EBADF on invalid descriptor
+ Test FAILED
+ conformance/interfaces/mq_close/3-3: execution: FAILED: Output:
+ errno != EBADF on invalid descriptor
+ Test FAILED
+ conformance/interfaces/mq_close/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_close 4-1: mq_open: Function not implemented
+ conformance/interfaces/mq_close/5-1: execution: UNTESTED: Output:
+ Functionality of using mqdes after mq_close() and before
+ mq_open() will not be tested as POSIX says this is undefined.
+ conformance/interfaces/mq_getattr/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 2-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/2-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 2-2: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 3-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 4-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_getattr/speculative/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_getattr 7-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_notify/1-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 1-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 2-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/3-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 3-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/4-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 4-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/5-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 5-1: mq_open: Function not implemented
+ conformance/interfaces/mq_notify/8-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 8-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_notify/9-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_notify 9-1: mq_open: Function not implemented
+ conformance/interfaces/mq_open/1-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/10-1: execution: UNTESTED: Output:
+ Will not test the user ID and group ID of a created
+ message queue as we would need multiple users and
+ groups on the system to test.
+ Will not test the file permissions as testing would
+ be implementation defined.
+ conformance/interfaces/mq_open/11-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/12-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/13-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/14-1: execution: UNTESTED: Output:
+ Will not test calling process privileges on name
+ as POSIX does not define when this error occurs.
+ conformance/interfaces/mq_open/15-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/16-1: execution: FAILED: Output:
+ Test FAILED - mq_open() never succeeded
+ conformance/interfaces/mq_open/17-1: execution: UNTESTED: Output:
+ Will not test setting O_EXCL without O_CREAT because
+ results are undefined.
+ conformance/interfaces/mq_open/18-1: execution: FAILED: Output:
+ mq_open() did not return success w/O_NONBLOCK set: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/19-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/20-1: execution: FAILED: Output:
+ mq_open() did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/22-1: execution: UNTESTED: Output:
+ Will not test returning EACCESS when privileges are denied
+ as POSIX does not define when this error occurs.
+ conformance/interfaces/mq_open/23-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/24-1: execution: UNTESTED: Output:
+ Will not test mq_open() being interrupted as it is
+ not possible to predictably interrupt an mq_open().
+ conformance/interfaces/mq_open/25-1: execution: UNTESTED: Output:
+ Will not test mq_open() failing with EINVAL if mq_open()
+ is not supported for the name parameter as
+ unsupported names are implementation defined.
+ conformance/interfaces/mq_open/25-2: execution: FAILED: Output:
+ errno != EINVAL for mq_maxmsg 0
+ errno != EINVAL for mq_maxmsg -1
+ errno != EINVAL for mq_maxmsg -2147483648
+ errno != EINVAL for mq_msgsize 0
+ errno != EINVAL for mq_msgsize -1
+ errno != EINVAL for mq_msgsize -2147483648
+ Test FAILED
+ conformance/interfaces/mq_open/27-2: execution: FAILED: Output:
+ errno != ENAMETOOLONG
+ Test FAILED
+ conformance/interfaces/mq_open/28-1: execution: UNTESTED: Output:
+ Will not test returning with ENFILE if the system has
+ too many message queues as this is beyond this
+ test's domain.
+ conformance/interfaces/mq_open/29-1: execution: FAILED: Output:
+ errno != ENOENT
+ Test FAILED
+ conformance/interfaces/mq_open/30-1: execution: UNTESTED: Output:
+ Will not test mq_open() failing with ENOSPC when there
+ is not enough space to create the message queue
+ as system space cannot be controlled from this test.
+ conformance/interfaces/mq_open/4-1: execution: UNTESTED: Output:
+ Will not test that {OPEN_MAX} file and message queues can
+ be opened as we cannot determine at run-time if a given
+ implementation is implemented with a file descriptor.
+ conformance/interfaces/mq_open/7-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/7-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/7-3: execution: FAILED: Output:
+ mq_open() for read-only queue did not return success: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_open/8-1: execution: UNRESOLVED: Output:
+ mq_open() for write-only queue did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/8-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success on read-write queue: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/9-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_open/speculative/26-1: execution: FAILED: Output:
+ mq_open() failed before expected
+ errno != EMFILE on > _POSIX_OPEN_MAX or _POSIX_MQ_OPEN_MAX queues
+ Test FAILED
+ conformance/interfaces/mq_receive/1-1: execution: FAILED: Output:
+ unexpected error: mq_receive 1-1: mq_open: Function not implemented
+ unexpected error: mq_receive 1-1: mq_send: Function not implemented
+ unexpected error: mq_receive 1-1: mq_send: Function not implemented
+ unexpected error: mq_receive 1-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 1-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 1-1: mq_close: Function not implemented
+ unexpected error: mq_receive 1-1: mq_unlink: Function not implemented
+ FAIL: mq_receive didn't receive the highest priority message
+ FAIL: receive priority 134520252 != send priority 2
+ FAIL: mq_receive didn't receive the correct message
+ FAIL: receive priority 134520252 != send priority 1
+ Test FAILED
+ conformance/interfaces/mq_receive/10-1: execution: FAILED: Output:
+ unexpected error: mq_receive 10-1: mq_open: Function not implemented
+ unexpected error: mq_receive 10-1: mq_close: Function not implemented
+ unexpected error: mq_receive 10-1: mq_unlink: Function not implemented
+ errno != EAGAIN
+ Test FAILED
+ conformance/interfaces/mq_receive/11-1: execution: FAILED: Output:
+ unexpected error: mq_receive 11-1: mq_open(): Function not implemented
+ unexpected error: mq_receive 11-1: mq_close(): Function not implemented
+ unexpected error: mq_receive 11-1: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_receive/11-2: execution: FAILED: Output:
+ unexpected error: mq_receive 11-2: mq_open(): Function not implemented
+ unexpected error: mq_receive 11-2: mq_close: Function not implemented
+ unexpected error: mq_receive 11-2: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_receive/12-1: execution: FAILED: Output:
+ unexpected error: mq_receive 12-1: mq_open: Function not implemented
+ unexpected error: mq_receive 12-1: mq_send: Function not implemented
+ unexpected error: mq_receive 12-1: mq_close: Function not implemented
+ unexpected error: mq_receive 12-1: mq_unlink: Function not implemented
+ errno != EMSGSIZE
+ Test FAILED
+ conformance/interfaces/mq_receive/13-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 13-1: mq_open: Function not implemented
+ mq_close() did not return success: Function not implemented
+ mq_unlink() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 2-1: mq_open: Function not implemented
+ unexpected error: mq_receive 2-1: mq_send: Function not implemented
+ unexpected error: mq_receive 2-1: mq_close: Function not implemented
+ unexpected error: mq_receive 2-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/5-1: execution: FAILED: Output:
+ unexpected error: mq_receive 5-1: mq_open: Function not implemented
+ unexpected error: mq_receive 5-1: mq_send: Function not implemented
+ unexpected error: mq_receive 5-1: mq_receive: Function not implemented
+ unexpected error: mq_receive 5-1: mq_close: Function not implemented
+ unexpected error: mq_receive 5-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_receive/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_receive 7-1: mq_open: Function not implemented
+ unexpected error: mq_receive 7-1: mq_close: Function not implemented
+ unexpected error: mq_receive 7-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_receive/8-1: execution: FAILED: Output:
+ unexpected error: mq_receive 8-1: mq_open: Function not implemented
+ unexpected error: mq_receive 8-1: mq_send: Function not implemented
+ unexpected error: mq_receive 8-1: mq_send: Function not implemented
+ unexpected error: mq_receive 8-1: mq_close: Function not implemented
+ unexpected error: mq_receive 8-1: mq_unlink: Function not implemented
+ FAIL: mq_receive didn't return the selected message size correctly
+ FAIL: mq_receive didn't return the selected message size correctly
+ Test FAILED
+ conformance/interfaces/mq_send/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/10-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/11-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/11-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/12-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/14-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/3-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/3-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/5-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/5-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/6-1: execution: UNTESTED: Output:
+ Priority Scheduling needed to make a reliable test case
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_send/8-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_send/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/1-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_setattr/5-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_setattr 5-1: mq_open(): Function not implemented
+ conformance/interfaces/mq_timedreceive/1-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 1-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 1-1: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't receive the highest priority message
+ FAIL: receive priority 134520424 != send priority 2
+ FAIL: mq_timedreceive didn't receive the correct message
+ FAIL: receive priority 134520424 != send priority 1
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/10-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 10-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_send: Function not implemented
+ FAIL: mq_receive fails unexpectly
+ : Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/10-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 10-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_send: Function not implemented
+ Unexpected error at mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-1: mq_unlink: Function not implemented
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/11-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 11-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 11-1: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't return the selected message size correctly
+ FAIL: mq_timedreceive didn't return the selected message size correctly
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/13-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 13-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 13-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 13-1: mq_unlink: Function not implemented
+ errno != EAGAIN
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/14-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 14-1: mq_open(): Function not implemented
+ unexpected error: mq_timedreceive 14-1: mq_close(): Function not implemented
+ unexpected error: mq_timedreceive 14-1: mq_unlink(): Function not implemented
+ errno != EBADF
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/15-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 15-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 15-1: mq_unlink: Function not implemented
+ errno != EMSGSIZE
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-1: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-2: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/17-3: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 17-3: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 17-3: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 17-3: mq_unlink: Function not implemented
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/18-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 18-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 18-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 18-1: mq_unlink: Function not implemented
+ errno != ETIMEDOUT
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/18-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 18-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 18-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 18-2: mq_unlink: Function not implemented
+ errno != ETIMEDOUT
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 2-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 2-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/5-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 5-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_timedreceive: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 5-1: mq_unlink: Function not implemented
+ mq_timedreceive didn't block on waiting
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/5-2: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 5-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 5-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 5-2: mq_unlink: Function not implemented
+ FAIL: mq_timedreceive didn't block until timout expires
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/5-3: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 5-3: mq_open: Function not implemented
+ mq_close() did not return success: Function not implemented
+ mq_unlink() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/7-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 7-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 7-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 7-1: mq_unlink: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedreceive/8-1: execution: FAILED: Output:
+ unexpected error: mq_timedreceive 8-1: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 8-1: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 8-1: mq_unlink: Function not implemented
+ Using CLOCK_REALTIME
+ FAIL: mq_timedreceive didn't block until timout expires
+ Test FAILED
+ conformance/interfaces/mq_timedreceive/speculative/10-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_timedreceive 10-2: mq_open: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_send: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_close: Function not implemented
+ unexpected error: mq_timedreceive 10-2: mq_unlink: Function not implemented
+ mq_timedreceive() did fail on invalid abs_time
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/1-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/10-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/11-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/11-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/12-1: execution: INTERRUPTED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/14-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/15-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/16-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/17-1: execution: UNTESTED: Output:
+ Will not test timeout resolution.
+ conformance/interfaces/mq_timedsend/18-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/19-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/2-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/20-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_timedsend/3-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/3-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/5-3: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/6-1: execution: UNTESTED: Output:
+ Priority Scheduling needed to make a reliable test case
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_timedsend/7-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/8-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/9-1: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ conformance/interfaces/mq_timedsend/speculative/18-2: execution: UNRESOLVED: Output:
+ mq_open() did not return success: Function not implemented
+ Test UNRESOLVED
+ conformance/interfaces/mq_unlink/1-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 1-1: mq_open: Function not implemented
+ conformance/interfaces/mq_unlink/2-1: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 2-1: mq_open: Function not implemented
+ unexpected error: mq_unlink 2-1: read: EOF
+ conformance/interfaces/mq_unlink/2-2: execution: UNRESOLVED: Output:
+ unexpected error: mq_unlink 2-2: mq_open: Function not implemented
+ unexpected error: mq_unlink 2-2: read: EOF
+ conformance/interfaces/mq_unlink/2-3: execution: UNTESTED: Output:
+ Difficult to detect whether mq_unlink will block until all the reference have been closed
+ for this instance. Will not be tested.
+ conformance/interfaces/mq_unlink/7-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/mq_unlink/speculative/7-2: execution: FAILED: Output:
+ Test FAILED, error is Function not implemented
+ conformance/interfaces/munlock/10-1: execution: UNRESOLVED: Output:
+ Unexpected error: Operation not permitted
+ conformance/interfaces/munlock/11-1: execution: UNRESOLVED: Output:
+ Unexpected error: Operation not permitted
+ conformance/interfaces/munlock/7-1: execution: UNRESOLVED: Output:
+ You don't have permission to lock your address space.
+ Try to rerun this test as root.
+ conformance/interfaces/munmap/3-1: execution: FAILED: Output:
+ Test FAILED: munmap/3-1.c munmap returns: No such file or directory
+ conformance/interfaces/munmap/4-1: execution: UNRESOLVED: Output:
+ munmap/4-1.c Error at msync(): Error in unknown error system: FFFFFFFF
+ conformance/interfaces/munmap/8-1: execution: FAILED: Output:
+ Test FAILED: Expect EINVAL but get: (os/kern) successful
+ conformance/interfaces/munmap/9-1: execution: FAILED: Output:
+ Test Fail: Expect EINVAL while get No such file or directory
+ conformance/interfaces/nanosleep/10000-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/nanosleep/5-1: execution: FAILED: Output:
+ nanosleep() did not return -1 on failure
+ conformance/interfaces/nanosleep/5-2: execution: FAILED: Output:
+ In handler
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/nanosleep/6-1: execution: UNRESOLVED: Output:
+ sleep -1
+ nanosleep() did not return -1 on failure
+ conformance/interfaces/nanosleep/7-1: execution: FAILED: Output:
+ In handler
+ nanosleep did not return -1
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/nanosleep/7-2: execution: FAILED: Output:
+ In handler
+ nanosleep() was not interrupted
+ Child did not exit normally.
+ Test FAILED
+ conformance/interfaces/pthread_atfork/1-1: execution: UNRESOLVED: Output:
+ Error in pthread_atfork
+ conformance/interfaces/pthread_atfork/1-2: execution: UNRESOLVED: Output:
+ [11:58:02]Test conformance/interfaces/pthread_atfork/1-2.c unresolved: got 1073741902 (Function not implemented) on line 216 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_atfork/2-1: execution: FAILED: Output:
+ Test FAILED: Expected return value success, instead received 1073741902
+ conformance/interfaces/pthread_atfork/2-2: execution: UNRESOLVED: Output:
+ [11:58:03]Test conformance/interfaces/pthread_atfork/2-2.c unresolved: got 1073741902 (Function not implemented) on line 244 (Failed to register the atfork handlers(N,N,N))
+ conformance/interfaces/pthread_atfork/3-2: execution: UNRESOLVED: Output:
+ [11:58:03]Test conformance/interfaces/pthread_atfork/3-2.c unresolved: got 1073741902 (Function not implemented) on line 213 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_atfork/3-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_atfork/4-1: execution: UNRESOLVED: Output:
+ [12:10:53]Test conformance/interfaces/pthread_atfork/4-1.c unresolved: got 1073741902 (Function not implemented) on line 244 (Failed to register the atfork handlers)
+ conformance/interfaces/pthread_attr_getschedparam/1-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_getschedparam 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_getschedpolicy/2-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_getschedpolicy 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setinheritsched/2-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setinheritsched 2-1: pthread_attr_setschedpolicy: (os/kern) successful
+ conformance/interfaces/pthread_attr_setinheritsched/2-2: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setinheritsched 2-2: pthread_attr_setschedpolicyconformance/interfaces/pthread_attr_setinheritsched/2-3: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 4-1: pthread_setschedparam
+ conformance/interfaces/pthread_attr_setinheritsched/2-4: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 4-2: pthread_setschedparam
+ conformance/interfaces/pthread_attr_setschedparam/1-1: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 1-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-2: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 1-2: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-3: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 3-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/1-4: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 3-2: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/speculative/3-1: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedparam 3-1: pthread_attr_setschedpolicy
+ conformance/interfaces/pthread_attr_setschedparam/speculative/3-2: execution: FAILED: Output:
+ unexpected error: pthread_attr_setschedpaarm 3-2: pthread_attr_setschedpolicyconformance/interfaces/pthread_attr_setschedpolicy/1-1: execution: FAILED: Output:
+ Error on pthread_attr_setschedpolicy() rc=1073741942
+ conformance/interfaces/pthread_attr_setschedpolicy/speculative/5-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_attr_setschedpolicy 5-1: pthread_attr_setinheritsched
+ conformance/interfaces/pthread_attr_setscope/5-1: execution: UNTESTED: Output:
+ Untested for now, cannot find a unsupported inheritsched value
+ conformance/interfaces/pthread_barrierattr_getpshared/2-1: execution: UNRESOLVED: Output:
+ Error at pthread_barrierattr_setpshared()
+ conformance/interfaces/pthread_barrierattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Error at pthread_barrierattr_setpshared()
+ conformance/interfaces/pthread_cancel/3-1: execution: UNRESOLVED: Output:
+ unexpected error: pthread_cancel 3-1: pthread_setschedparam
+ conformance/interfaces/pthread_cancel/5-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_broadcast/1-2: execution: UNRESOLVED: Output:
+ [12:42:33]Test starting
+ [12:42:33]System abilities:
+ [12:42:33] TPS : -1
+ [12:42:33] CS : 200112
+ [12:42:33] MON : -1
+ [12:42:33] MF : 200112
+ [12:42:33]Process-shared attributes won't be tested
+ [12:42:33]Alternative clock won't be tested
+ [12:42:33]Test conformance/interfaces/pthread_cond_broadcast/1-2.c unresolved: got 1073741846 (Invalid argument) on line 393 ([parent] Failed to set thread stack size)
+ conformance/interfaces/pthread_cond_broadcast/2-3: execution: UNRESOLVED: Output:
+ [12:42:36]Test starting
+ [12:42:36]System abilities:
+ [12:42:36] TPS : -1
+ [12:42:36] CS : 200112
+ [12:42:36] MON : -1
+ [12:42:36] MF : 200112
+ [12:42:36]Process-shared attributes won't be tested
+ [12:42:36]Alternative clock won't be tested
+ [12:42:36]Test conformance/interfaces/pthread_cond_broadcast/2-3.c unresolved: got 1073741846 (Invalid argument) on line 384 ([parent] Failed to set thread stack size)
+ conformance/interfaces/pthread_cond_broadcast/4-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_destroy/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_init/1-2: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/1-2.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/1-3: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/1-3.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/2-2: execution: UNTESTED: Output:
+ File conformance/interfaces/pthread_cond_init/2-2.c cannot test: This test requires unsupported features
+ conformance/interfaces/pthread_cond_init/4-1: execution: UNRESOLVED: Output:
+ Test conformance/interfaces/pthread_cond_init/4-1.c unresolved: got 1073741942 (Not supported) on line 145 (Cond attribute PSHARED failed)
+ conformance/interfaces/pthread_cond_init/4-2: execution: INTERRUPTED: Output:
+ Test conformance/interfaces/pthread_cond_init/4-2.c unresolved: got 1073741942 (Not supported) on line 171 (Cond attribute PSHARED failed)
+ conformance/interfaces/pthread_cond_signal/1-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_signal/4-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_timedwait/4-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_cond_wait/4-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_condattr_getpshared/1-2: execution: UNRESOLVED: Output:
+ Error in pthread_condattr_setpshared(), error: 1073741942
+ conformance/interfaces/pthread_condattr_setclock/1-2: execution: UNSUPPORTED: Output:
+ UNSUPPORTED: CLOCK_MONOTONIC is unsupported
+ conformance/interfaces/pthread_condattr_setclock/1-3: execution: UNSUPPORTED: Output:
+ _POSIX_CPUTIME unsupported
+ conformance/interfaces/pthread_condattr_setpshared/1-2: execution: FAILED: Output:
+ Test FAILED: Could not set pshared to PTHREAD_PROCESS_SHARED, error: 1073741942
+ conformance/interfaces/pthread_create/1-4: execution: UNTESTED: Output:
+ [13:44:56]System abilities:
+ [13:44:56] TSA: -1
+ [13:44:56] TSS: -1
+ [13:44:56] TPS: -1
+ [13:44:56] pagesize: 4096
+ [13:44:56] min stack size: -1
+ [13:44:56]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/1-5: execution: UNTESTED: Output:
+ [13:44:56]System abilities:
+ [13:44:56] TSA: -1
+ [13:44:56] TSS: -1
+ [13:44:56] TPS: -1
+ [13:44:56] pagesize: 4096
+ [13:44:56] min stack size: -1
+ [13:44:56]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/1-6: execution: UNTESTED: Output:
+ [13:44:57]System abilities:
+ [13:44:57] TSA: -1
+ [13:44:57] TSS: -1
+ [13:44:57] TPS: -1
+ [13:44:57] pagesize: 4096
+ [13:44:57] min stack size: -1
+ [13:44:57]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/11-1: execution: UNSUPPORTED: Output:
+ _POSIX_THREAD_CPUTIME not supported
+ conformance/interfaces/pthread_create/14-1: execution: UNTESTED: Output:
+ [13:45:08]System abilities:
+ [13:45:08] TSA: -1
+ [13:45:08] TSS: -1
+ [13:45:08] TPS: -1
+ [13:45:08] pagesize: 4096
+ [13:45:08] min stack size: -1
+ [13:45:08]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/15-1: execution: UNTESTED: Output:
+ [13:45:09]System abilities:
+ [13:45:09] TSA: -1
+ [13:45:09] TSS: -1
+ [13:45:09] TPS: -1
+ [13:45:09] pagesize: 4096
+ [13:45:09] min stack size: -1
+ [13:45:09]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/3-2: execution: UNTESTED: Output:
+ [13:45:11]Growing down stack started upon 0x19fffa0 and we are currently down to 0x19fff60
+ [13:45:11]Test starting
+ Stack tests will be executed.
+ Sched tests won't be executed.
+ [13:45:11]System abilities:
+ [13:45:11] TSA: -1
+ [13:45:11] TSS: -1
+ [13:45:11] TPS: -1
+ [13:45:11] pagesize: 4096
+ [13:45:11] min stack size: -1
+ [13:45:11]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_create/8-2: execution: UNTESTED: Output:
+ [13:45:13]System abilities:
+ [13:45:13] TSA: -1
+ [13:45:13] TSS: -1
+ [13:45:13] TPS: -1
+ [13:45:13] pagesize: 4096
+ [13:45:13] min stack size: -1
+ [13:45:13]File conformance/interfaces/pthread_create/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/1-2: execution: UNTESTED: Output:
+ [13:45:13]System abilities:
+ [13:45:13] TSA: -1
+ [13:45:13] TSS: -1
+ [13:45:13] TPS: -1
+ [13:45:13] pagesize: 4096
+ [13:45:13] min stack size: -1
+ [13:45:13]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/2-2: execution: UNTESTED: Output:
+ [13:45:14]System abilities:
+ [13:45:14] TSA: -1
+ [13:45:14] TSS: -1
+ [13:45:14] TPS: -1
+ [13:45:14] pagesize: 4096
+ [13:45:14] min stack size: -1
+ [13:45:14]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_detach/4-3: execution: UNTESTED: Output:
+ [13:45:15]System abilities:
+ [13:45:16] TSA: -1
+ [13:45:16] TSS: -1
+ [13:45:16] TPS: -1
+ [13:45:16] pagesize: 4096
+ [13:45:16] min stack size: -1
+ [13:45:16]File conformance/interfaces/pthread_detach/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_equal/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_exit/1-2: execution: UNTESTED: Output:
+ [15:01:43]System abilities:
+ [15:01:43] TSA: -1
+ [15:01:43] TSS: -1
+ [15:01:43] TPS: -1
+ [15:01:43] pagesize: 4096
+ [15:01:43] min stack size: -1
+ [15:01:43]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/2-2: execution: UNTESTED: Output:
+ [15:01:44]System abilities:
+ [15:01:44] TSA: -1
+ [15:01:44] TSS: -1
+ [15:01:44] TPS: -1
+ [15:01:44] pagesize: 4096
+ [15:01:44] min stack size: -1
+ [15:01:44]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/3-2: execution: UNTESTED: Output:
+ [15:01:45]System abilities:
+ [15:01:45] TSA: -1
+ [15:01:45] TSS: -1
+ [15:01:45] TPS: -1
+ [15:01:45] pagesize: 4096
+ [15:01:45] min stack size: -1
+ [15:01:45]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/4-1: execution: UNTESTED: Output:
+ [15:01:45]System abilities:
+ [15:01:45] TSA: -1
+ [15:01:45] TSS: -1
+ [15:01:45] TPS: -1
+ [15:01:45] pagesize: 4096
+ [15:01:45] min stack size: -1
+ [15:01:45]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/5-1: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/6-1: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_exit/6-2: execution: UNTESTED: Output:
+ [15:01:46]System abilities:
+ [15:01:46] TSA: -1
+ [15:01:46] TSS: -1
+ [15:01:46] TPS: -1
+ [15:01:46] pagesize: 4096
+ [15:01:46] min stack size: -1
+ [15:01:46]File conformance/interfaces/pthread_exit/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_getschedparam/1-1: execution: FAILED: Output:
+ Error at pthread_getschedparam: rc=1073741902
+ conformance/interfaces/pthread_getschedparam/1-2: execution: UNRESOLVED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_getschedparam/1-3: execution: UNRESOLVED: Output:
+ [15:01:49]Test conformance/interfaces/pthread_getschedparam/1-3.c unresolved: got 1073741902 (Function not implemented) on line 223 (Failed to get min priority)
+ conformance/interfaces/pthread_getschedparam/4-1: execution: UNRESOLVED: Output:
+ [15:01:49]Test conformance/interfaces/pthread_getschedparam/4-1.c unresolved: got 1073741902 (Function not implemented) on line 200 (Unexpected error returned)
+ conformance/interfaces/pthread_join/1-2: execution: UNTESTED: Output:
+ [15:01:54]System abilities:
+ [15:01:54] TSA: -1
+ [15:01:54] TSS: -1
+ [15:01:54] TPS: -1
+ [15:01:54] pagesize: 4096
+ [15:01:54] min stack size: -1
+ [15:01:54]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_join/3-1: execution: UNRESOLVED: Output:
+ Error in pthread_testcancel(). Cancel request timed out.
+ : (os/kern) successful
+ conformance/interfaces/pthread_join/4-1: execution: UNTESTED: Output:
+ [15:02:06]System abilities:
+ [15:02:06] TSA: -1
+ [15:02:06] TSS: -1
+ [15:02:06] TPS: -1
+ [15:02:06] pagesize: 4096
+ [15:02:06] min stack size: -1
+ [15:02:06]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_join/6-3: execution: UNTESTED: Output:
+ [15:02:07]System abilities:
+ [15:02:07] TSA: -1
+ [15:02:07] TSS: -1
+ [15:02:07] TPS: -1
+ [15:02:07] pagesize: 4096
+ [15:02:07] min stack size: -1
+ [15:02:07]File conformance/interfaces/pthread_join/threads_scenarii.c cannot test: The min stack size is not a multiple of the page size
+ conformance/interfaces/pthread_key_create/2-1: execution: INTERRUPTED: Output:
+ 2-1.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/hurd/pt-getspecific.c:30: pthread_getspecific: Assertion `key < __pthread_key_count' failed.
+ conformance/interfaces/pthread_kill/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/7-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_kill/8-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_getprioceiling/1-1: execution: FAILED: Output:
+ Test FAILED: Error obtaining the priority ceiling
+
+Another system crash, due to conformance/interfaces/pthread_mutex_init/5-1:
+
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+ (default pager): dropping data_request because of previous paging errors
+
+Disable the panic-causing test (conformance/interfaces/pthread_mutex_init/5-1)
+and restart:
+
+ conformance/interfaces/pthread_mutex_init/speculative/5-2: execution: UNTESTED: Output:
+ Implementation is:
+ GNU
+ 0.3
+ GNU-Mach 1.3.99/Hurd-0.3
+ This implementation is not tested yet
+ conformance/interfaces/pthread_mutex_timedlock/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_timedlock/5-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutex_trylock/4-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_mutexattr_getprioceiling/1-1: execution: UNRESOLVED: Output:
+ Error obtaining the attribute process-shared
+ conformance/interfaces/pthread_mutexattr_getprioceiling/1-2: execution: UNRESOLVED: Output:
+ Error setting prioceiling to -1
+ conformance/interfaces/pthread_mutexattr_getprioceiling/3-1: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_getprotocol/1-2: execution: UNRESOLVED: Output:
+ Error setting protocol to 1
+ conformance/interfaces/pthread_mutexattr_getpshared/1-2: execution: UNRESOLVED: Output:
+ Error in pthread_mutexattr_setpshared(), error: 1073741942
+ conformance/interfaces/pthread_mutexattr_gettype/speculative/3-1: execution: FAILED: Output:
+ Test FAILED: Incorrect return code. Expected EINVAL, but got: 0
+ conformance/interfaces/pthread_mutexattr_setprioceiling/1-1: execution: FAILED: Output:
+ Test FAILED: Error setting prioceiling to -1
+ conformance/interfaces/pthread_mutexattr_setprioceiling/3-1: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_setprioceiling/3-2: execution: FAILED: Output:
+ Test FAILED: Invalid return code 1073741902. Expected EINVAL or 0.
+ conformance/interfaces/pthread_mutexattr_setprotocol/1-1: execution: UNRESOLVED: Output:
+ Error setting protocol to 1
+ conformance/interfaces/pthread_mutexattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Cannot set pshared attribute to PTHREAD_PROCESS_SHARED. Error code: 1073741942
+ conformance/interfaces/pthread_mutexattr_setpshared/2-2: execution: FAILED: Output:
+ Test FAILED: Expected return code 0, got: 1073741942
+ conformance/interfaces/pthread_rwlock_rdlock/2-1: execution: FAILED: Output:
+ main: has priority: 1
+ main: attempt read lock
+ main: acquired read lock
+ main: create wr_thread, with priority: 0
+ wr_thread: attempt write lock
+ main: create rd_thread, with priority: -1
+ rd_thread: attempt read lock
+ rd_thread: acquired read lock
+ rd_thread: unlock read lock
+ Test FAILED: rd_thread did not block on read lock, when a reader owns the lock, and a higher priority writer is waiting for the lock
+ conformance/interfaces/pthread_rwlock_rdlock/2-2: execution: FAILED: Output:
+ main: attempt read lock
+ main: acquired read lock
+ main: create wr_thread, with priority: 0
+ wr_thread: attempt write lock
+ main: create rd_thread, with priority: 0
+ rd_thread: attempt read lock
+ rd_thread: acquired read lock
+ rd_thread: unlock read lock
+ Test FAILED: rd_thread did not block on read lock, when a reader owns the lock, and an equal priority writer is waiting for the lock
+ conformance/interfaces/pthread_rwlock_unlock/3-1: execution: FAILED: Output:
+ main: write lock
+ main: create writer1, with priority: 1
+ writer1: attempt write lock
+ main: create reader, with priority: 1
+ reader: attempt read lock
+ main: create writer2, with priority: -1
+ writer2: attempt write lock
+ main: release write lock
+ writer2: acquired writer lock
+ Test fail: writer did not get write lock, when main release the lock
+ conformance/interfaces/pthread_rwlock_unlock/4-1: execution: INTERRUPTED: Output:
+ 4-1.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/generic/pt-rwlock-unlock.c:34: pthread_rwlock_unlock: Assertion `__pthread_spin_trylock (&rwlock->__held) == ((0x10 << 26) | ((16) & 0x3fff))' failed.
+ conformance/interfaces/pthread_rwlock_unlock/4-2: execution: INTERRUPTED: Output:
+ 4-2.test: /var/tmp/hurd-20090404/./libpthread/sysdeps/generic/pt-rwlock-unlock.c:34: pthread_rwlock_unlock: Assertion `__pthread_spin_trylock (&rwlock->__held) == ((0x10 << 26) | ((16) & 0x3fff))' failed.
+ main: attempt read lock
+ main: acquired read lock
+ main: create un_thread
+ un_thread: unlock read lock
+ conformance/interfaces/pthread_rwlock_wrlock/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_rwlockattr_getpshared/2-1: execution: UNRESOLVED: Output:
+ Error at pthread_rwlockattr_setpshared()
+ conformance/interfaces/pthread_rwlockattr_setpshared/1-1: execution: FAILED: Output:
+ Test FAILED: Error at pthread_rwlockattr_setpshared(), return error: 1073741942
+ conformance/interfaces/pthread_setschedparam/1-1: execution: FAILED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_setschedparam/1-2: execution: UNTESTED: Output:
+ [08:51:19]File conformance/interfaces/pthread_setschedparam/1-2.c cannot test: Failed to get min SCHED_RR range
+ conformance/interfaces/pthread_setschedparam/4-1: execution: UNRESOLVED: Output:
+ [08:51:20]Test conformance/interfaces/pthread_setschedparam/4-1.c unresolved: got 1073741902 (Function not implemented) on line 132 (Failed to set thread policy -- need to be root?)
+ conformance/interfaces/pthread_setschedparam/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_setschedprio/1-1: execution: UNRESOLVED: Output:
+ Error at pthread_setschedparam: rc=1073741902
+ conformance/interfaces/pthread_sigmask/10-1: execution: FAILED: Output:
+ FAIL: SIGKILL was added to the signal mask
+ Test FAILED
+ conformance/interfaces/pthread_sigmask/18-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/4-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/5-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_sigmask/6-1: execution: HUNG: Output:
+ conformance/interfaces/pthread_sigmask/9-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/pthread_spin_lock/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sched_get_priority_max/1-1: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/1-2: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/1-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_get_priority_max/1-4: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_max/2-1: execution: FAILED: Output:
+ error is not EINVAL: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-1: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-2: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/1-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_get_priority_min/1-4: execution: FAILED: Output:
+ An error occurs: Function not implemented
+ conformance/interfaces/sched_get_priority_min/2-1: execution: FAILED: Output:
+ error is not EINVAL: Function not implemented
+ conformance/interfaces/sched_getparam/1-1: execution: FAILED: Output:
+ Return code is not zero.
+ conformance/interfaces/sched_getparam/2-1: execution: FAILED: Output:
+ Different results between pid == 0 and pid == getpid().
+ conformance/interfaces/sched_getparam/3-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getparam/4-1: execution: FAILED: Output:
+ errno is not ESRCH: Function not implemented
+ conformance/interfaces/sched_getparam/6-1: execution: UNRESOLVED: Output:
+ errno is not EPERM: The system allows a non-rootuser to use sched_getparam(): Function not implemented
+ conformance/interfaces/sched_getparam/speculative/7-1: execution: UNRESOLVED: Output:
+ sched_getparam() return -1 and sets errno == 1073741902.
+ conformance/interfaces/sched_getscheduler/1-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getscheduler/2-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_getscheduler() when pid is negative
+ because it is unspecified.
+ conformance/interfaces/sched_getscheduler/3-1: execution: FAILED: Output:
+ Returned code is -1.
+ conformance/interfaces/sched_getscheduler/4-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_getscheduler/7-1: execution: FAILED: Output:
+ errno is not EPERM: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/1-1: execution: FAILED: Output:
+ Unexpected error: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/2-1: execution: FAILED: Output:
+ interval.tv_sec not updated.
+ conformance/interfaces/sched_rr_get_interval/3-1: execution: FAILED: Output:
+ Returned error is not ESRCH: Function not implemented
+ conformance/interfaces/sched_rr_get_interval/speculative/5-1: execution: UNRESOLVED: Output:
+ sched_rr_get_interval() return -1 and sets errno == 1073741902.
+ conformance/interfaces/sched_setparam/1-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/10-1: execution: UNRESOLVED: Output:
+ An error occurs when calling shmget(): Invalid argument
+ conformance/interfaces/sched_setparam/12-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/13-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/14-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setparam/15-1: execution: UNTESTED: Output:
+ Will not test the effects of the sched_ss_low_priority,
+ sched_ss_repl_period, and sched_ss_init_budget members when the scheduling
+ policy of the target process is not SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC.
+ It is implementation-defined.
+ conformance/interfaces/sched_setparam/16-1: execution: UNTESTED: Output:
+ Will not test the result of sched_setparam when the scheduling policy of the
+ target process is not SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC.
+ It is implementation-defined.
+ conformance/interfaces/sched_setparam/17-1: execution: UNTESTED: Output:
+ Will not test that sched_setparam have no effect on the scheduling of threads
+ with system scheduling contention scope.
+ conformance/interfaces/sched_setparam/18-1: execution: UNTESTED: Output:
+ Will not test that the threads scheduling policy and associated parameters
+ are not affected.
+ conformance/interfaces/sched_setparam/19-1: execution: UNTESTED: Output:
+ Will not test that the underlying kernel-scheduled entities for the system
+ contention scope threads are not be affected by this sched_setparam().
+ conformance/interfaces/sched_setparam/2-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_setscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/2-2: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_setscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/22-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-5: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/23-6: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/23-7: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/25-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getscheduler(): Function not implemented
+ conformance/interfaces/sched_setparam/25-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setparam/26-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/27-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/3-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_setparam() when pid is negative because
+ it is unspecified.
+ conformance/interfaces/sched_setparam/5-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setparam/6-1: execution: UNTESTED: Output:
+ Will not test the conditions under which one process has permission to
+ change the scheduling parameters of another process, because they are
+ implementation-defined.
+ conformance/interfaces/sched_setparam/7-1: execution: UNTESTED: Output:
+ Will not test that implementations may require the requesting process to
+ have the appropriate privilege to set its own scheduling parameters or those
+ of another process.
+ conformance/interfaces/sched_setparam/8-1: execution: UNTESTED: Output:
+ Will not test that the target process is moved to the tail of the thread
+ list for its priority when it is running.
+ conformance/interfaces/sched_setparam/9-1: execution: UNRESOLVED: Output:
+ An error occurs when calling shmget(): Invalid argument
+ conformance/interfaces/sched_setscheduler/1-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ Error calling sched_setscheduler() for SCHED_FIFO policy
+ Policy: SCHED_RR
+ Error calling sched_setscheduler() for SCHED_RR policy
+ Policy: SCHED_OTHER
+ Error calling sched_setscheduler() for SCHED_OTHER policy
+ conformance/interfaces/sched_setscheduler/10-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setscheduler/11-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sched_setscheduler/12-1: execution: UNTESTED: Output:
+ Will not test that sched_setscheduler have no effect on the scheduling of
+ threads with system scheduling contention scope.
+ conformance/interfaces/sched_setscheduler/13-1: execution: UNTESTED: Output:
+ Will not test that the threads scheduling policy and associated parameters
+ are not affected.
+ conformance/interfaces/sched_setscheduler/14-1: execution: UNTESTED: Output:
+ Will not test that the underlying kernel-scheduled entities for the system
+ contention scope threads are not be affected by sched_setscheduler().
+ conformance/interfaces/sched_setscheduler/15-1: execution: UNSUPPORTED: Output:
+ Process contention scope threads are not supported.
+ conformance/interfaces/sched_setscheduler/16-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getscheduler(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/17-5: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-6: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/17-7: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/19-1: execution: UNRESOLVED: Output:
+ Policy: SCHED_FIFO
+ An error occurs when calling sched_get_priority_max(): Function not implemented
+ conformance/interfaces/sched_setscheduler/19-2: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-3: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-4: execution: UNSUPPORTED: Output:
+ Does not support SS (SPORADIC SERVER)
+ conformance/interfaces/sched_setscheduler/19-5: execution: FAILED: Output:
+ Unknow error: Function not implemented
+ conformance/interfaces/sched_setscheduler/2-1: execution: UNTESTED: Output:
+ Will not test the behavior of sched_setscheduler() when pid is negative
+ because it is unspecified.
+ conformance/interfaces/sched_setscheduler/20-1: execution: FAILED: Output:
+ errno is not EPERM: Function not implemented
+ conformance/interfaces/sched_setscheduler/21-1: execution: FAILED: Output:
+ errno is not ESRCH: Function not implemented
+ conformance/interfaces/sched_setscheduler/4-1: execution: UNRESOLVED: Output:
+ An error occurs when calling sched_getparam(): Function not implemented
+ conformance/interfaces/sched_setscheduler/5-1: execution: UNTESTED: Output:
+ Will not test the condition under which one process has the appropriate
+ privilege to change the scheduling parameters of another process because
+ they are implementation-defined.
+ conformance/interfaces/sched_setscheduler/6-1: execution: UNTESTED: Output:
+ Will not test that implementations may require that the requesting process
+ have permission to set its own scheduling parameters or those of another
+ process.
+ conformance/interfaces/sched_setscheduler/7-1: execution: UNTESTED: Output:
+ Will not test if implementation-defined restrictions apply as to the
+ appropriate privileges required to set a process' own scheduling policy, or
+ another process' scheduling policy, to a particular value.
+ conformance/interfaces/sched_setscheduler/9-1: execution: UNTESTED: Output:
+ Not yet tested.
+ conformance/interfaces/sem_close/1-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/2-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/3-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_close 3-1: sem_open: Operation not supported
+ conformance/interfaces/sem_close/3-2: execution: UNRESOLVED: Output:
+ [08:56:54]Test conformance/interfaces/sem_close/3-2.c unresolved: got 1073741869 (Operation not supported) on line 113 (Failed to create the semaphore)
+ conformance/interfaces/sem_getvalue/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/4-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 4-1: sem_open: Operation not supported
+ conformance/interfaces/sem_getvalue/5-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_getvalue 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_init/3-2: execution: UNRESOLVED: Output:
+ [08:56:59]Test conformance/interfaces/sem_init/3-2.c unresolved: got 1073741869 (Operation not supported) on line 135 (Failed to init the semaphore)
+ conformance/interfaces/sem_init/3-3: execution: UNRESOLVED: Output:
+ [08:57:00]Test conformance/interfaces/sem_init/3-3.c unresolved: got 1073741869 (Operation not supported) on line 134 (Failed to init the semaphore)
+ conformance/interfaces/sem_init/7-1: execution: UNTESTED: Output:
+ [08:57:01]sysconf( _SC_SEM_NSEMS_MAX ) = -1
+ [08:57:01]File conformance/interfaces/sem_init/7-1.c cannot test: There is no constraint on SEM_NSEMS_MAX
+ conformance/interfaces/sem_open/1-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/1-3: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 1-3: sem_open: Operation not supported
+ conformance/interfaces/sem_open/1-4: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 1-4: sem_open: Operation not supported
+ conformance/interfaces/sem_open/10-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 10-1: sem_open: Operation not supported
+ conformance/interfaces/sem_open/15-1: execution: UNRESOLVED: Output:
+ [08:57:03]Test conformance/interfaces/sem_open/15-1.c unresolved: got 1073741869 (Operation not supported) on line 106 (Failed to sem_open)
+ conformance/interfaces/sem_open/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_open/2-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_open 2-2: sem_open: Operation not supported
+ conformance/interfaces/sem_open/3-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/4-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_open/6-1: execution: FAILED: Output:
+ TEST FAILED
+ conformance/interfaces/sem_post/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/1-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 1-2: sem_open: Operation not supported
+ conformance/interfaces/sem_post/2-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/4-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 4-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/5-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/6-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_post 6-1: sem_open: Operation not supported
+ conformance/interfaces/sem_post/8-1: execution: UNTESTED: Output:
+ _POSIX_PRIORITY_SCHEDULING not defined
+ conformance/interfaces/sem_timedwait/9-1: execution: FAILED: Output:
+ In handler
+ TEST FAILED: errno != EINTR
+ conformance/interfaces/sem_unlink/1-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_unlink 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_unlink/2-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_unlink 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_unlink/2-2: execution: UNRESOLVED: Output:
+ [08:57:23]Test conformance/interfaces/sem_unlink/2-2.c unresolved: got 1073741869 (Operation not supported) on line 158 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/3-1: execution: UNRESOLVED: Output:
+ [08:57:23]Test conformance/interfaces/sem_unlink/3-1.c unresolved: got 1073741869 (Operation not supported) on line 156 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/4-1: execution: FAILED: Output:
+ TEST FAILED: semaphore does exist
+ conformance/interfaces/sem_unlink/4-2: execution: FAILED: Output:
+ [08:57:24]Error 1073741869: Operation not supported
+ [08:57:24]Test conformance/interfaces/sem_unlink/4-2.c FAILED: The error was not ENOENT
+ conformance/interfaces/sem_unlink/6-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/6-1.c unresolved: got 1073741869 (Operation not supported) on line 107 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/7-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/7-1.c unresolved: got 1073741869 (Operation not supported) on line 126 (Failed to create the semaphore)
+ conformance/interfaces/sem_unlink/9-1: execution: UNRESOLVED: Output:
+ [08:57:25]Test conformance/interfaces/sem_unlink/9-1.c unresolved: got 1073741869 (Operation not supported) on line 133 (Failed to create the semaphore)
+ conformance/interfaces/sem_wait/1-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 1-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/1-2: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 2-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/11-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_trywait 11-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/12-1: execution: INTERRUPTED: Output:
+ unexpected error: sem_trywait 12-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/3-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 3-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/5-1: execution: INTERRUPTED: Output:
+ unexpected errno: sem_trywait 5-1: sem_open: Operation not supported
+ conformance/interfaces/sem_wait/7-1: execution: UNRESOLVED: Output:
+ unexpected error: sem_wait 7-1: sem_open: Operation not supported
+ conformance/interfaces/shm_open/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/10-1: execution: UNTESTED: Output:
+ Will not test whether the file offset is set because it is unspecified.
+ conformance/interfaces/shm_open/12-1: execution: UNTESTED: Output:
+ Will not test the behavior of implementation when an application does not
+ specify exactly one of two values: O_RDONLY and O_RDWR.
+ conformance/interfaces/shm_open/14-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/19-1: execution: UNTESTED: Output:
+ Will not test the effect of calling shm_open() when the shared memory object
+ does not exists, the O_CREAT flags is set, and bits in mode other than the
+ file permission bits are set. It is unspecified.
+ conformance/interfaces/shm_open/2-1: execution: UNTESTED: Output:
+ Will not test that the shm_open() function create an open file description
+ that refers to the shared memory object and a file descriptor that refers to
+ conformance/interfaces/shm_open/23-1: execution: UNRESOLVED: Output:
+ error at sem_open: Operation not supported
+ conformance/interfaces/shm_open/24-1: execution: UNTESTED: Output:
+ Will not test the result of shm_open() when O_EXCL is set and O_CREAT is not
+ set because it is undefined.
+ conformance/interfaces/shm_open/26-2: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/shm_open/27-1: execution: UNTESTED: Output:
+ Will not test the result of shm_open() when using O_TRUNC with O_RDONLY.
+ It is undefined.
+ conformance/interfaces/shm_open/28-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/28-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/shm_open/29-1: execution: UNTESTED: Output:
+ Will not test whether the name and shared memory object state remain valid
+ after a system reboot. It is unspecified.
+ conformance/interfaces/shm_open/3-1: execution: UNTESTED: Output:
+ Will not test whether the name appears in the file system and is visible to
+ other functions that take pathnames as arguments because it is unspecified.
+ conformance/interfaces/shm_open/36-1: execution: UNTESTED: Output:
+ It is very difficult to test that the shm_open() function sets errno = EINTR
+ when it is interrupted by a signal.
+ conformance/interfaces/shm_open/37-1: execution: FAILED: Output:
+ Name: '[GARBAGE]'
+ OK: open with success.
+ Name: '[GARBAGE]'
+ OK: open with success.
+ Name: '..'
+ Unexpected error: Is a directory
+ Name: '/'
+ OK: errno == EINVAL
+ Name: '//'
+ OK: errno == EINVAL
+ Name: '/abc'
+ OK: open with success.
+ Test FAILED
+ conformance/interfaces/shm_open/39-2: execution: UNRESOLVED: Output:
+ An error occurs when calling pathconf(): Invalid argument
+ conformance/interfaces/shm_open/42-1: execution: UNTESTED: Output:
+ Will not test that the shm_open() function sets errno to ENOSPC if there is
+ insufficient space for the creation of the new shared memory object.
+ conformance/interfaces/shm_open/5-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/shm_open/6-1: execution: UNTESTED: Output:
+ Will not test the effect of a name which does not begin with the slash
+ character because it is implementation-defined.
+ conformance/interfaces/shm_open/7-1: execution: UNTESTED: Output:
+ Will not test the interpretation of slash characters other than the leading
+ slash character in name because it is implementation-defined.
+ conformance/interfaces/shm_open/9-1: execution: UNTESTED: Output:
+ Will not test that the open file description is new.
+ conformance/interfaces/shm_unlink/10-2: execution: UNRESOLVED: Output:
+ An error occurs when calling pathconf(): Invalid argument
+ conformance/interfaces/shm_unlink/8-1: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/shm_unlink/9-1: execution: UNRESOLVED: Output:
+ You don't have permission to change your UID.
+ Try to rerun this test as root.
+ conformance/interfaces/sigaction/4-37: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-23: execution: FAILED: Output:
+ Caught SIGURG
+ Test FAILED
+ conformance/interfaces/sigaction/12-41: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-4: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-28: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-26: execution: FAILED: Output:
+ Caught SIGXFSZ
+ Test FAILED
+ conformance/interfaces/sigaction/12-49: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-8: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-45: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-18: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-42: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-15: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-25: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-7: execution: FAILED: Output:
+ Caught SIGHUP
+ Test FAILED
+ conformance/interfaces/sigaction/4-48: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-23: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-34: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-24: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-43: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-22: execution: FAILED: Output:
+ Caught SIGTRAP
+ Test FAILED
+ conformance/interfaces/sigaction/12-31: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-35: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-46: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-7: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-34: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-3: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-52: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-30: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-51: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-13: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-36: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-21: execution: FAILED: Output:
+ Caught SIGSYS
+ Test FAILED
+ conformance/interfaces/sigaction/17-11: execution: FAILED: Output:
+ Caught SIGQUIT
+ Test FAILED
+ conformance/interfaces/sigaction/4-38: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-47: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-30: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-44: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-50: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-27: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-20: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-40: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-19: execution: FAILED: Output:
+ Caught SIGPOLL
+ Test FAILED
+ conformance/interfaces/sigaction/12-16: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-51: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-21: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-1: execution: FAILED: Output:
+ Caught SIGABRT
+ Test FAILED
+ conformance/interfaces/sigaction/4-32: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-12: execution: FAILED: Output:
+ Caught SIGSEGV
+ Test FAILED
+ conformance/interfaces/sigaction/12-52: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-10: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-36: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-9: execution: FAILED: Output:
+ Caught SIGINT
+ Test FAILED
+ conformance/interfaces/sigaction/4-47: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-11: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-10: execution: FAILED: Output:
+ Caught SIGPIPE
+ Test FAILED
+ conformance/interfaces/sigaction/12-5: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-48: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-19: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-46: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-17: execution: FAILED: Output:
+ Caught SIGUSR1
+ Test FAILED
+ conformance/interfaces/sigaction/12-14: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-14: execution: FAILED: Output:
+ Caught SIGTSTP
+ Test FAILED
+ conformance/interfaces/sigaction/17-18: execution: FAILED: Output:
+ Caught SIGUSR2
+ Test FAILED
+ conformance/interfaces/sigaction/4-41: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-43: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-28: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-6: execution: FAILED: Output:
+ Caught SIGFPE
+ Test FAILED
+ conformance/interfaces/sigaction/4-45: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-35: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-6: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-29: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-16: execution: FAILED: Output:
+ Caught SIGTTOU
+ Test FAILED
+ conformance/interfaces/sigaction/4-39: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-29: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-9: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-25: execution: FAILED: Output:
+ Caught SIGXCPU
+ Test FAILED
+ conformance/interfaces/sigaction/17-4: execution: FAILED: Output:
+ Caught SIGCHLD
+ Test FAILED
+ conformance/interfaces/sigaction/12-22: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-13: execution: FAILED: Output:
+ Caught SIGTERM
+ Test FAILED
+ conformance/interfaces/sigaction/4-31: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-38: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-12: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-44: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/4-49: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-40: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-42: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-15: execution: FAILED: Output:
+ Caught SIGTTIN
+ Test FAILED
+ conformance/interfaces/sigaction/17-3: execution: FAILED: Output:
+ Caught SIGBUS
+ Test FAILED
+ conformance/interfaces/sigaction/12-2: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-5: execution: FAILED: Output:
+ Caught SIGCONT
+ Test FAILED
+ conformance/interfaces/sigaction/12-33: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-17: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-2: execution: FAILED: Output:
+ Caught SIGALRM
+ Test FAILED
+ conformance/interfaces/sigaction/12-37: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/17-20: execution: FAILED: Output:
+ Caught SIGPROF
+ Test FAILED
+ conformance/interfaces/sigaction/17-8: execution: FAILED: Output:
+ Caught SIGILL
+ Test FAILED
+ conformance/interfaces/sigaction/4-33: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/12-39: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-50: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/12-32: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaction/4-27: execution: FAILED: Output:
+ About to stop child
+ Child has continued
+ Test FAILED
+ conformance/interfaces/sigaction/17-24: execution: FAILED: Output:
+ Caught SIGVTALRM
+ Test FAILED
+ conformance/interfaces/sigaction/12-26: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/1-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/11-1: execution: FAILED: Output:
+ Test FAILED: Expected return value of -1.
+ conformance/interfaces/sigaltstack/12-1: execution: FAILED: Output:
+ Test FAILED: Expected return value of -1.
+ conformance/interfaces/sigaltstack/2-1: execution: FAILED: Output:
+ Test FAILED: ss_sp of the handler's stack changed even though SS_DISABLE was set
+ conformance/interfaces/sigaltstack/3-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/6-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigaltstack/7-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigpause/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/sigpending/1-2: execution: INTERRUPTED: Output:
+ Not all pending signals found
+ conformance/interfaces/sigpending/1-3: execution: INTERRUPTED: Output:
+ Error with send signals
+ Test FAILED
+ conformance/interfaces/sigqueue/10-1: execution: FAILED: Output:
+ sigqueue() failed on EINVAL but errno not set correctly
+ conformance/interfaces/sigqueue/11-1: execution: FAILED: Output:
+ sigqueue() failed on ESRCH but errno not set correctly
+ conformance/interfaces/sigqueue/12-1: execution: FAILED: Output:
+ sigqueue() failed but errno not set correctly
+ conformance/interfaces/sigqueue/2-1: execution: FAILED: Output:
+ Could not call sigqueue with sig = 0
+ conformance/interfaces/sigqueue/2-2: execution: FAILED: Output:
+ sigqueue() failed on ESRCH but errno not set correctly
+ At least one test FAILED -- see output for status
+ conformance/interfaces/sigqueue/3-1: execution: FAILED: Output:
+ Test FAILED: EPERM error not received
+ conformance/interfaces/sigset/6-1: execution: UNRESOLVED: Output:
+ Unexpected error while using sigset(): (os/kern) successful
+ conformance/interfaces/sigset/7-1: execution: UNRESOLVED: Output:
+ Unexpected error while using sigset(): (os/kern) successful
+ conformance/interfaces/sigset/8-1: execution: FAILED: Output:
+ Test FAILED: sigset() didn't return SIG_HOLD
+ conformance/interfaces/sigsuspend/1-1: execution: UNRESOLVED: Output:
+ suspending child
+ SIGUSR2 called. Inside handler
+ parent sending child a SIGUSR2 signal
+ parent sending child a SIGUSR1 signal
+ Exit status from child is 1
+ Test UNRESOLVED: Either sigsuspend did not successfully block SIGUSR2, OR sigsuspend returned before handling the signal SIGUSR1
+ conformance/interfaces/sigtimedwait/1-1: execution: FAILED: Output:
+ Test FAILED: sigtimedwait() did not return in the required time
+ conformance/interfaces/sigtimedwait/4-1: execution: FAILED: Output:
+ Call to sigtimedwait() failed
+ : Function not implemented
+ conformance/interfaces/sigtimedwait/6-1: execution: FAILED: Output:
+ Test FAILED: sigtimedwait() did set errno to EAGAIN
+ conformance/interfaces/sigwait/1-1: execution: FAILED: Output:
+ Signal SIGALRM is not pending!
+ conformance/interfaces/sigwait/3-1: execution: FAILED: Output:
+ Test FAILED
+ conformance/interfaces/sigwait/6-1: execution: FAILED: Output:
+ [09:04:10]0 threads were awaken
+ [09:04:10]Test conformance/interfaces/sigwait/6-1.c FAILED: Unexpected number of threads awaken
+ conformance/interfaces/sigwaitinfo/1-1: execution: UNRESOLVED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ conformance/interfaces/sigwaitinfo/3-1: execution: FAILED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ Child calling sigwaitinfo()
+ parent sending child a SIGUSR1 signal
+ Exit status from child is 2
+ Test FAILED
+ conformance/interfaces/sigwaitinfo/9-1: execution: FAILED: Output:
+ Call to sigwaitinfo() failed
+ : Function not implemented
+ conformance/interfaces/strftime/2-1: execution: INTERRUPTED: Output:
+ conformance/interfaces/timer_create/1-1: execution: FAILED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/10-1: execution: UNRESOLVED: Output:
+ sysconf(_SC_CPUTIME) returns: -1
+ conformance/interfaces/timer_create/11-1: execution: UNSUPPORTED: Output:
+ rc = -1
+ _POSIX_THREAD_CPUTIME unsupported
+ conformance/interfaces/timer_create/16-1: execution: FAILED: Output:
+ errno != EINVAL
+ Test FAILED
+ conformance/interfaces/timer_create/3-1: execution: FAILED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/7-1: execution: UNSUPPORTED: Output:
+ CLOCK_MONOTONIC unsupported
+ conformance/interfaces/timer_create/8-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/9-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/speculative/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_create/speculative/5-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_delete/speculative/5-1: execution: FAILED: Output:
+ timer_delete() returned -1, but didn't set errno!=EINVAL
+ conformance/interfaces/timer_delete/speculative/5-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/2-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/3-1: execution: UNTESTED: Output:
+ Cannot be tested as DELAYTIMER_MAX is too large.
+ DELAYTIMER_MAX is ffffffff
+ conformance/interfaces/timer_getoverrun/speculative/6-1: execution: FAILED: Output:
+ fcn returned -1, but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_getoverrun/speculative/6-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_getoverrun/speculative/6-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/1-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/2-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/3-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/speculative/6-1: execution: FAILED: Output:
+ fcn returned -1 but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_gettime/speculative/6-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_gettime/speculative/6-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/1-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/1-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/13-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/2-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/3-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/5-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/6-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/8-4: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/9-1: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/9-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/speculative/12-1: execution: FAILED: Output:
+ fcn returned -1, but errno!=EINVAL
+ Test FAILED
+ conformance/interfaces/timer_settime/speculative/12-2: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ conformance/interfaces/timer_settime/speculative/12-3: execution: UNRESOLVED: Output:
+ timer_create() did not return success
+ : Function not implemented
+ functional/threads/schedule/1-1: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 5-4: pthread_attr_setschedpolicy
+ functional/threads/schedule/1-2: execution: UNRESOLVED: Output:
+ unexpected error: scheduler 5-5: pthread_setschedparam
diff --git a/open_issues/packaging_libpthread.mdwn b/open_issues/packaging_libpthread.mdwn
new file mode 100644
index 00000000..7594ae76
--- /dev/null
+++ b/open_issues/packaging_libpthread.mdwn
@@ -0,0 +1,47 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_libpthread open_issue_glibc]]
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> My idea was to have a separate libpthread package. What do you think about that?
+ <youpi> in the long term, that can't work with glibc
+ <youpi> because of the thread stub stuff
+ <youpi> it's not really possible to keep synchronized
+ <youpi> because you have to decide which package you unpack first
+ <youpi> (when upgrading)
+ <tschwinge> Hmm, how is that different if two shared libraries are in one package vs. two packages? It isn't atomic either way? Aren't sonames / versioned library packages solving that?
+ <tschwinge> ... for incompatible forward changes?
+ <youpi> that'd be a mess to maintain
+ <youpi> Drepper doesn't have this constraint and thus adds members of private fields at will
+ <tschwinge> OK, but how is it different then if the libpthread is in the Hurd package?
+ <youpi> I'm not saying it's better to have libpthread in the Hurd package
+ <tschwinge> OK.
+ <youpi> I'm saying it's useless to package it separately when Drepper makes everything to have us put it along glibc
+ <tschwinge> Then, to goal is to have it in glibc?
+ <tschwinge> OK. :-)
+ <tschwinge> OK, I can accommodate to that. Isn't not that we'd want to switch libpthread to something else so quickly.
+ <tschwinge> So our official goal is to have libpthread in glibc, at least for Debian purposese?
+ <youpi> for any port purpose
+ <tschwinge> Ack.
+ <youpi> provided you're using glibc, you're deemed to ship libpthread with it
+ <youpi> because of the strong relations Drepper puts between them
+ <youpi> (just to remind: we already have bugs just because our current libpthread isn't bound enough to glibc: dlopen()ing a library depending on libpthread doesn't work, for instance)
+ <pinotree> yeah, pthread-stubs is linked to almost everywhere -lpthread isn't used
+ <pinotree> (would be nice to not have those issues anymore...)
+ <tschwinge> So -- what do we need to put it into glibc? We can make libpthread a Git submodule (or move the code; but it's shared also for Neal's viengoos, so perhaps the submodule is better?), plus some glibc make foo, plus some other adaptions (stubs, etc.)
+ <tschwinge> Does that sound about right, or am I missing something fundamental?
+ <youpi> I actually don't know what a git submodule permits :)
+ <youpi> looks like a good thing for this, yes
+ <tschwinge> Unfortunately I can't allocate much time at the moment to work on this. :-/
+ <youpi> well, as long as I know where we're going, I can know how to package stuff in Debian
+ <tschwinge> That sounds like a plan to me. libpthread -> glibc as submodule.
+ <youpi> (note: actually, the interface between glibc and the libpthread is the responsibility of the libpthread: it gives a couple of .c files to be shipped in libc.so)
diff --git a/open_issues/perlmagick.mdwn b/open_issues/perlmagick.mdwn
new file mode 100644
index 00000000..1daac62b
--- /dev/null
+++ b/open_issues/perlmagick.mdwn
@@ -0,0 +1,64 @@
+[[!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]]."]]"""]]
+
+[[!debbug 557771]]
+
+# Bisecting
+
+ * Good
+
+ * 7:6.4.0.9.dfsg1-1 (2008-04-22) built from
+ <http://snapshot.debian.net/package/imagemagick>
+ * 6.4.0-11
+ * 6.4.1-0
+ * 6.4.1-1
+
+ * Bad
+
+ * 6.4.1-2
+ * 6.4.1-5
+ * 6.4.1-10
+ * 6.4.2-10
+ * 6.4.5-9
+ * 6.4.8-0 / Debian 6.4.8.0-1
+ * 6.5.5-3 / Debian 6.5.5.3-1
+ * 6.5.8.3-1 from Debian unstable (also in testing)
+ * Svn trunk (r848)
+
+
+# 6.4.1-1 -> 6.4.1-2
+
+ -CFLAGS = -g -O2 -Wall -W -pthread
+ +CFLAGS = -fopenmp -g -O2 -Wall -W -pthread
+ -GOMP_LIBS =
+ +GOMP_LIBS = -lgomp
+ -LDFLAGS = -lfreetype -lz
+ +LDFLAGS = -fopenmp -lfreetype -lz
+
+Etc.
+
+ +/usr/include/pthread.h:
+ +
+ +/usr/include/pthread/pthread.h:
+ +
+ +/usr/include/bits/spin-lock-inline.h:
+ +
+ +/usr/include/bits/cancelation.h:
+ +
+ +/usr/include/bits/pthread-np.h:
+ +
+ +/usr/lib/gcc/i486-gnu/4.4.2/include/omp.h:
+
+
+# Other
+
+[[!debbug 551017]]
+
+Code in Svn: `+ 1` missing to account for both `/` and `\0`.
diff --git a/open_issues/pflocal_x_slowness.mdwn b/open_issues/pflocal_x_slowness.mdwn
new file mode 100644
index 00000000..9bc18128
--- /dev/null
+++ b/open_issues/pflocal_x_slowness.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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, #hurd, 2010-08-10
+
+ <antrik> m1k11e: I think the X slowness is a problem in pflocal, i.e. the translator handling UNIX domain sockets
+ <antrik> (X clients communicate with a local X server using domain sockets)
diff --git a/open_issues/phython.mdwn b/open_issues/phython.mdwn
new file mode 100644
index 00000000..62f70be0
--- /dev/null
+++ b/open_issues/phython.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]]."]]"""]]
+
+Go through James Morrison's (phython) pages, <http://hurd.dyndns.org/>, (via
+Intrernet Archive Wayback Machine), and archive / hunt down what's still
+interesting.
diff --git a/open_issues/populate_hurd_git_with_submodules_etc.mdwn b/open_issues/populate_hurd_git_with_submodules_etc.mdwn
new file mode 100644
index 00000000..c89b95e9
--- /dev/null
+++ b/open_issues/populate_hurd_git_with_submodules_etc.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]]."]]"""]]
+
+[[!meta title="populate hurd.git with submodules, etc."]]
+
+Populate the top-level *[Savannah]/hurd.git* with a bunch of submodules
+(various translators; everything that's intersting), have it serve as sort of a
+tested distribution (because the submodules are versioned), plus adding build
+machinery / cross-compilation support, etc.
diff --git a/open_issues/pth.mdwn b/open_issues/pth.mdwn
new file mode 100644
index 00000000..12bf5098
--- /dev/null
+++ b/open_issues/pth.mdwn
@@ -0,0 +1,28 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+IRC, unknown channel, unknown date.
+
+ <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
+
+ <azeem> actually, pth fails to build right now
+ <azeem> pth_mctx.c:477: error: request for member '__pc' in something not a structure or union
+
+ <azeem> I know the pth test suite fails (it locks up the machine) or used to fail, so I guess porting work for pth would be needed
+ <azeem> < marcusb> from reading the pth/PORTING document, porting libpth shouldn't be too hard...
+
+ <youpi> dropped pth [from the channel's topic], as we think we know why it fails (sigaltstack is bogus)
diff --git a/open_issues/resource_management_problems.mdwn b/open_issues/resource_management_problems.mdwn
new file mode 100644
index 00000000..1723d7d3
--- /dev/null
+++ b/open_issues/resource_management_problems.mdwn
@@ -0,0 +1,29 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd open_issue_viengoos]]
+
+[[microkernel/Mach]] interfaces do not allow for proper resource accounting,
+when a server allocates resources on behalf of a client.
+
+Mach can't do a good job at resource management, as it doesn't have enough
+information how resources are used: which data is important and which is
+discardable, for example.
+
+These issues are what Neal Walfield is working on with his new kernel
+[[microkernel/viengoos]].
+
+
+# Examples
+
+ * [[configure max command line length]]
+
+ * [[zalloc_panics]]
diff --git a/open_issues/resource_management_problems/configure_max_command_line_length.mdwn b/open_issues/resource_management_problems/configure_max_command_line_length.mdwn
new file mode 100644
index 00000000..6c0a0d99
--- /dev/null
+++ b/open_issues/resource_management_problems/configure_max_command_line_length.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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+ <terpstra> do the buildds also crash?
+ <youpi> sometimes
+ <youpi> usually when a configure scripts tries to find out how large a
+ command line can be
+ <youpi> (thus eating all memory)
diff --git a/open_issues/resource_management_problems/zalloc_panics.mdwn b/open_issues/resource_management_problems/zalloc_panics.mdwn
new file mode 100644
index 00000000..09710022
--- /dev/null
+++ b/open_issues/resource_management_problems/zalloc_panics.mdwn
@@ -0,0 +1,56 @@
+[[!meta copyright="Copyright © 2005, 2007, 2008, 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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+Written by antrik / Olaf Buddenhagen, last updated: 12 Apr 2007.
+
+The Hurd sometimes crashes with a kernel panic saying someting like: "Panic: zalloc failed: zone map exhausted".
+
+These panics are generally caused by some kind of kernel resource exhaustion, but there are several differnt reasons for that.
+
+It used to happen very often under heavy disk load (like large compile jobs), or in a reproducible test case by opening a large number of ports to /dev/null and then closing them all very quickly. The reason for this particular problem has been identified a while back: The multithreaded Hurd servers create a new worker thread whenever a new request (RPC) comes in while all existing threads are busy. When the server is hammered with lots of requests -- which happens both under heavy disk load, and when quickly closing many ports to one server -- it will create an absurd number of threads, causing the resource exhaustion.
+
+The Debian hurd package contains a patch by k0ro (Sergio Lopez), which fixes this by limiting the amount of created threads in a rather simplistic but very effective manner. This patch however hasn't been included in upstream CVS so far. A more elegant solution, suitable for upstream inclusion, would be desirable.
+
+Some panics still seem to happen in very specific situations, like the one described at <https://savannah.gnu.org/bugs/?19426> . These are probably the result of bugs that cause port leaks, accidental fork bombs, or similar problems.
+
+In principle, resource exhaustion can also happen by normal use, though this is rather unlikely in the absence of bugs or malicious programs. Nevertheless, all these problems could be avoided (or limited in effect) by introducing some limits on number of processes per user, number of threads and ports per process/user etc.
+
+Trying to track down causes for the panics, I got some interesting results. (UPDATE: Many of my original observations were clearly related to the server thread explosion problem. To avoid confusion, I now removed these, as this is no longer an open issue.)
+
+* It all started with someone (probably azeem) mentioning that builing some package always crashes Hurd at the same stage of the Debian packaging process (UPDATE: Almost all of these panics when building packages were a result of the thread explosion and don't happen anymore.)
+* Someone (maybe he himself) pointed out that this stage is characterized by many processes being quickly created and destroyed
+* Someone else (probably hde) started some experimenting, to get a reproducible test case
+* He realized that just starting and killing five child processes in quick succession suffices to kill some Hurd systems
+* I tried to confirm this, but it turned out my system is more robust
+
+As I could never reproduce the problem with a small number of quickly killed processes, I can't say whether this problem still exists. While I could reproduce such an effect with first opening and then very quickly closing many ports (which is more or less what happens when quickly killing many processes), I needed really large numbers of processes/ports for that. The thread throtteling patch fixed my test case; but it seems unlikely that killing only five processes could have caused a thread explosion, so maybe hde's observation was a different problem really...
+
+I started various other experiments with creating child processes (fork bombs), resulting in a number of interesting observations:
+
+* Just forking a large number of processes crashes the Hurd reliably (not surprising)
+* The number of processes at which the panic occurs is very constant (typicallly +-2) under stable conditions, as long as forking doesn't happen too fast
+* The exact number depends on various conditions:
+ * Run directly from the Mach console, it's around 1040 on my machine (given enough RAM); however, it drops to 940 when started through a raw ssh session, and to 990 when run under screen through ssh (TODO: check number of ports open per process depending on how it is started) UPDATE: In a later test, I got somewhat larger numbers (don't remember exactly, but well above 1000), but still very constant between successive runs. Not sure what effected this change.
+ * It doesn't depend on whether normal user or root
+ * With only 128 MiB of RAM, the numbers drop slightly (like 100 less or so); no further change between 256 and 384 MiB
+ * Lowering zone\_map\_size in mach/kern/zalloc.c reduces the numbers (quite exactly half from 8 MiB to 4 MiB)
+ * There seems to be some saturation near 16 MiB however: The difference between 8 MiB and 16 MiB is significantly smaller
+ * Also, with 8 MiB or 4 MiB, the difference between console/ssh/screen becomes much more apparent (500 vs. 800, 250 vs. 400)
+ * With more than 16 MiB, Mach doesn't even boot
+* Creating the processes very fast results in a sooner and less predictable crash (TODO: Check whether this is still the case with thread throtteling?)
+* Creating processes recursively (fork only one child which forks the next one etc.) results in faster crash
+* rpcinfo shows that child processes have more ports open by default, which is very likely the reason for the above observation
+* Opening many ports from a few processes doesn't usually cause a system crash; there are only lots of open() failures and translator faults once some limit is reached... Seems the zalloc-full condition is better caught on open() than on fork() (TODO: investigate this further, with different memory sizes, different zone\_map\_size, different kinds of resources using zalloc etc.)
+* After opening/leaking lots of ports to /dev/null (32768 it seems), the NULL translator somehow becomes disfunctional, and a new instance is started
+
+While most of these Observations clearly show an exhaustion of kernel memory which is not surprising, some of the oddities seem to indicate problems that might deserve further investigation.
diff --git a/open_issues/runit.mdwn b/open_issues/runit.mdwn
new file mode 100644
index 00000000..c7a0962c
--- /dev/null
+++ b/open_issues/runit.mdwn
@@ -0,0 +1,19 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+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/open_issues/screen.mdwn b/open_issues/screen.mdwn
new file mode 100644
index 00000000..6ece5c40
--- /dev/null
+++ b/open_issues/screen.mdwn
@@ -0,0 +1,116 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+Typing `C-c` (*SIGINT*) in a *screen* session (Debian package 4.0.3-14; -11 is
+fine):
+
+ * shell prompt: no reaction (nothing printed)
+ * `sleep 10` running: `^C` printed, but SIGINT is not sent.
+
+[[!debbug 522689#38]].
+
+---
+
+Revisit this issue: [[!debbug 97343]] -- special handling of `TIOCSCTTY`
+depending on `__GNU__`.
+
+---
+
+`#ifdef linux` and friends are used in quite a number of places.
+
+---
+
+All diffs are GNU/Linux vs. GNU/Hurd.
+
+ /*
+ * If your system supports BSD4.4's seteuid() and setegid(), define
+ * HAVE_SETEUID.
+ */
+ -/* #undef HAVE_SETEUID */
+ +#define HAVE_SETEUID 1
+
+TODO: check.
+
+---
+
+ /*
+ * define HAVE_SVR4_PTYS if you have a /dev/ptmx character special
+ * device and support the ptsname(), grantpt(), unlockpt() functions.
+ */
+ -#define HAVE_SVR4_PTYS 1
+ +/* #undef HAVE_SVR4_PTYS */
+
+ /*
+ * define HAVE_GETPT if you have the getpt() function.
+ */
+ #define HAVE_GETPT 1
+
+ /*
+ * define HAVE_OPENPTY if your system has the openpty() call.
+ */
+ -/* #undef HAVE_OPENPTY */
+ +#define HAVE_OPENPTY 1
+
+ /*
+ * define PTYRANGE0 and or PTYRANGE1 if you want to adapt screen
+ * to unusual environments. E.g. For SunOs the defaults are "qpr" and
+ * "0123456789abcdef". For SunOs 4.1.2
+ * #define PTYRANGE0 "pqrstuvwxyzPQRST"
+ * is recommended by Dan Jacobson.
+ */
+ -/* #undef PTYRANGE0 */
+ -/* #undef PTYRANGE1 */
+ +#define PTYRANGE0 "pq"
+ +#define PTYRANGE1 "0123456789abcdefghijklmnopqrstuv"
+
+TODO: check: `HAVE_SVR4_PTYS` is due to `configure.in` doing `test -c
+/dev/ptmx`. But: even if we don't have that file, we still have `ptsname`,
+`grantpt`, `unlockpt`.
+
+---
+
+ gcc -c -I. -I. -g -O2 -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers pty.c
+ +pty.c: In function 'OpenPTY':
+ +pty.c:323: warning: implicit declaration of function 'openpty'
+ +pty.c: At top level:
+ +pty.c:75: warning: 'PtyName' defined but not used
+ +pty.c:86: warning: 'PtyProto' defined but not used
+ +pty.c:87: warning: 'TtyProto' defined but not used
+
+TODO: check.
+
+---
+
+ --- linux/osdef.h 2009-10-06 18:43:53.000000000 +0200
+ +++ screen-4.0.3/osdef.h 2009-10-06 18:49:49.000000000 +0200
+ @@ -42,13 +42,19 @@
+ #endif
+
+ #ifdef SYSV
+ +extern char *strchr __P((char *, int));
+ +extern char *strrchr __P((char *, int));
+ +extern char *memset __P((char *, int, int));
+ +extern int memcmp __P((char *, char *, int));
+ #else
+ #endif
+
+ #ifndef USEBCOPY
+ # ifdef USEMEMCPY
+ +extern void memcpy __P((char *, char *, int));
+ # else
+ # ifdef USEMEMMOVE
+ +extern void memmove __P((char *, char *, int));
+ # else
+ # endif
+ # endif
+
+TODO: check.
diff --git a/open_issues/secure_file_descriptor_handling.mdwn b/open_issues/secure_file_descriptor_handling.mdwn
new file mode 100644
index 00000000..c9956ede
--- /dev/null
+++ b/open_issues/secure_file_descriptor_handling.mdwn
@@ -0,0 +1,14 @@
+[[!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]]."]]"""]]
+
+`O_CLOEXEC`, `dup3` et al.; see
+<http://udrepper.livejournal.com/20407.html>. [[tschwinge]] once worked
+on this, posted patches to libc-alpha. This works needs to be resumed
+and finished.
diff --git a/open_issues/select.mdwn b/open_issues/select.mdwn
new file mode 100644
index 00000000..ab6af90b
--- /dev/null
+++ b/open_issues/select.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+There are a lot of reports about this issue, but no thorough analysis.
+
+---
+
+IRC, unknown channel, unknown date.
+
+ <paakku> This is related to ELinks... I've looked at the select() implementation for the Hurd in glibc and it seems that giving it a short timeout could cause it not to report that file descriptors are ready.
+ <paakku> It sends a request to the Mach port of each file descriptor and then waits for responses from the servers.
+ <paakku> Even if the file descriptors have data for reading or are ready for writing, the server processes might not respond immediately.
+ <paakku> So if I want ELinks to check which file descriptors are ready, how long should the timeout be in order to ensure that all servers can respond in time?
+ <paakku> Or do I just imagine this problem?
diff --git a/open_issues/sendmsg_scm_creds.mdwn b/open_issues/sendmsg_scm_creds.mdwn
new file mode 100644
index 00000000..1f4de59c
--- /dev/null
+++ b/open_issues/sendmsg_scm_creds.mdwn
@@ -0,0 +1,91 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc]]
+
+IRC, unknown channel, unknown date.
+
+ <pinotree> Credentials: s_uid 1000, c_uid 1000, c_gid 100, c_pid 2722
+ <pinotree> 2722: Credentials: s_uid 1000, c_uid 1000, c_gid 100, c_pid 2724
+ <pinotree> \o/
+ <youpi> \o/
+ <pinotree> the patch is even short, after all: http://paste.debian.net/54795/
+ --- a/sysdeps/mach/hurd/sendmsg.c
+ +++ b/sysdeps/mach/hurd/sendmsg.c
+ @@ -18,6 +18,7 @@
+
+ #include <errno.h>
+ #include <string.h>
+ +#include <unistd.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+
+ @@ -45,6 +46,7 @@
+ mach_msg_type_number_t amount;
+ int dealloc = 0;
+ int i;
+ + struct sockaddr_storage sa;
+
+ /* Find the total number of bytes to be written. */
+ len = 0;
+ @@ -122,6 +124,34 @@
+ err = EIEIO;
+ }
+
+ + memset (&sa, 0, sizeof (struct sockaddr_storage));
+ + if (addr)
+ + {
+ + memcpy (&sa, addr, addr_len);
+ + }
+ + else
+ + {
+ + getsockname (fd, (struct sockaddr *) &sa, &addr_len);
+ + }
+ + addr = (struct sockaddr_un *) &sa;
+ + if (message && (addr->sun_family == AF_LOCAL))
+ + {
+ + struct cmsghdr *cm;
+ + struct msghdr *m = (struct msghdr *) message;
+ + for (cm = CMSG_FIRSTHDR (m); cm; cm = CMSG_NXTHDR (m, cm))
+ + {
+ + if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_CREDS)
+ + {
+ + struct cmsgcred *cred = (struct cmsgcred *) CMSG_DATA (cm);
+ + cred->cmcred_pid = __getpid ();
+ + cred->cmcred_uid = __getuid ();
+ + cred->cmcred_euid = __geteuid ();
+ + cred->cmcred_gid = __getgid ();
+ + cred->cmcred_ngroups = getgroups (sizeof (cred->cmcred_groups) / sizeof (gid_t), cred->cmcred_groups);
+ + }
+ + }
+ + }
+ +
+ err = HURD_DPORT_USE (fd,
+ ({
+ if (err)
+ <youpi> what checks that the pid is correct?
+ <youpi> and uid, etc.
+ <pinotree> hm?
+ <youpi> credential is not only about one claiming to the other his uid & such
+ <youpi> it's about the kernel or whatever authority tell to an end the identity of the other end
+ <pinotree> yep
+ <pinotree> but given that the data is then send to pflocal, this code is the last part that runs on the application side
+ <youpi> pflocal could as well just request the info from proc
+ <youpi> it will have to anyway, to check that it's true
+ <pinotree> hm
+ <pinotree> yeah, though about that, chose this approach as "quicker" (of course not definitive)
+ <youpi> well at least it shows we're able to transmit something :)
+ <pinotree> well it just manipulates the data which gets send nicely already ;)
+ <youpi> but really, it's most probably up to pflocal to check authentication from proc and give it to the other end
+ <youpi> the application sender part would be just the RPC authentication calls
+ <youpi> Mmm, just realizing: so receiver part already exists actually, right?
+ <youpi> (since it's just about letting the application reading from the message structure)
+ <pinotree> yep
+ <youpi> ok, good :)
diff --git a/open_issues/socat.mdwn b/open_issues/socat.mdwn
new file mode 100644
index 00000000..1961a9a8
--- /dev/null
+++ b/open_issues/socat.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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+`socat` needs porting. Some work has already been done in 2007, see
+<http://www.dest-unreach.org/socat/contrib/socat-hurd.html> or contact
+[[Thomas_Schwinge|tschwinge]].
diff --git a/open_issues/some_todo_list.mdwn b/open_issues/some_todo_list.mdwn
new file mode 100644
index 00000000..5f8470b7
--- /dev/null
+++ b/open_issues/some_todo_list.mdwn
@@ -0,0 +1,121 @@
+[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+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/open_issues/subhurd_error_messages.mdwn b/open_issues/subhurd_error_messages.mdwn
new file mode 100644
index 00000000..46b58fa4
--- /dev/null
+++ b/open_issues/subhurd_error_messages.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date:
+
+ <antrik> BTW, many things in a subhurd print various error messages that are never visible on a normal Hurd...
diff --git a/open_issues/sudo_date_crash.mdwn b/open_issues/sudo_date_crash.mdwn
new file mode 100644
index 00000000..53303abc
--- /dev/null
+++ b/open_issues/sudo_date_crash.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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date.
+
+ <grey_gandalf> I did a sudo date...
+ <grey_gandalf> and the machine hangs
diff --git a/open_issues/sync_but_still_unclean_filesystem.mdwn b/open_issues/sync_but_still_unclean_filesystem.mdwn
new file mode 100644
index 00000000..f1fbb4e0
--- /dev/null
+++ b/open_issues/sync_but_still_unclean_filesystem.mdwn
@@ -0,0 +1,18 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+\#hurd, 2010, end of May / beginning of June
+
+ [runnign sync, but sill unclean filesystem at next boot]
+ <slpz> guillem: when libpager syncs an object, it sends an m_o_lock_request and waits (if the synchronous argument was specified) for a m_o_lock_completed. But m_o_lock_completed only means that dirty pages have been sent to the translator, and this one still needs to write them to the backing storage
+ <slpz> guillem: there's no problem if sync() returns before actually writting the changes to disk, but this also happens when shutting down the translator
+ <slpz> guillem: in theory, locking mechanisms in libpager should prevent this from happening by keeping track of write operations, but this seems to fail in some situations
diff --git a/open_issues/syslog.mdwn b/open_issues/syslog.mdwn
new file mode 100644
index 00000000..778933a7
--- /dev/null
+++ b/open_issues/syslog.mdwn
@@ -0,0 +1,7 @@
+IRC, unknwon channel, unknown date.
+
+ <tschwinge> scolobb: In wiki edit 60accafa79f645ae61b578403f7fc0c11914b725 I see that you intend(ed) to use syslog for logging debug messages. I thought I'd point you to http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00042.html -- no idea if that's still an issue or what went wrong at that time. Perhaps you can have a look?
+ <scolobb> tschwinge: Thanks for information! Currently I'm logging some debug messages to a simple file, but I'll now check whether the issue you've pointed out is still present.
+ <scolobb> tschwinge: I am getting absolutely abnormal results: when I call syslog() from a simple C program for the first time, the message goes to the system log. However, any further calls to syslog() do just nothing... I am able to send something to syslog only after reboot (it doesn't help if I restart syslogd).
+
+
diff --git a/open_issues/system_crash_nmap.mdwn b/open_issues/system_crash_nmap.mdwn
new file mode 100644
index 00000000..25d9a1c6
--- /dev/null
+++ b/open_issues/system_crash_nmap.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date:
+
+ <Casper_> Hmm, `nmap hurd -p 1-` seems to reliably make a hurd machine reboot.
diff --git a/open_issues/system_crash_pflocal_fifo.mdwn b/open_issues/system_crash_pflocal_fifo.mdwn
new file mode 100644
index 00000000..1dddc44e
--- /dev/null
+++ b/open_issues/system_crash_pflocal_fifo.mdwn
@@ -0,0 +1,41 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach]]
+
+IRC, unknown channel, unknown date:
+
+`cat < /dev/zero | cat > /dev/null` will eventually make the system crash,
+likewise when using a FIFO.
+
+ <antrik> hm... VM activity seems much higher when running fifo than pfinet... may be the cause
+ <antrik> "zero filled" and "page faults" are serveral times higher with pipe than with pfinet
+ <antrik> (cow faults however are about the same...)
+ <antrik> pflocal is about the same as fifo
+
+ <antrik> no, because it usually takes like 20 minutes until it crashes, sometimes much longer
+
+ <antrik> not sure, but the longest so far was in the range of hours IIRC
+
+ <antrik> I think I never tested what happens on "cat /dev/zero >/dev/null"... another thing yet to try
+
+ <antrik> Linux BTW seems to employ some major VM trickery in this case -- dd shows a transfer rate of 10 GB/s...
+
+ <antrik> no, no anomalies in vmstat
+ <antrik> the only observation I made is that number of page faults and some other number rise pretty quickly with pflocal and fifo, but not with pfinet
+ <antrik> I guess that's somehow related to the fact that pfinet doesn't crash -- though I guess the difference is simply that pfinet is way slower...
+ <antrik> (haven't checked that, though)
+
+ <antrik> BTW, I'm not sure you got it right: the test case is "cat /dev/zero|cat >/dev/null", *not* "cat /dev/zero >/dev/null"
+
+ <antrik> OK, "cat /dev/zero|tail -c 1" also crashes, so it's definitely not related to /dev/null
+ <antrik> "dd if=/dev/zero|tail -c 1" crashes as well
+ <antrik> but "tail -c 1 /dev/zero" doesn't seem to
+ <antrik> cool... running multiple instances of the pipe test also considerably speeds up the crash
diff --git a/open_issues/term_blocking.mdwn b/open_issues/term_blocking.mdwn
new file mode 100644
index 00000000..8d3e3b9f
--- /dev/null
+++ b/open_issues/term_blocking.mdwn
@@ -0,0 +1,100 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+There must be some blocking / dead-locking (?) problem in `term`:
+
+ # w | grep [t]sch
+ tschwing p1 192.168.10.60: Tue 8PM 0:03 2172 /bin/bash
+ tschwing p2 192.168.10.60: Tue 4PM 40hrs 689 emacs
+ tschwing p3 192.168.10.60: 8:52PM 11:37 15307 /bin/bash
+ tschwing p0 192.168.10.60: 6:42PM 11:47 8104 /bin/bash
+ tschwing p8 192.168.10.60: 8:27AM 0:02 16510 /bin/bash
+
+Now open a new screen window, or login shell, or...
+
+ # ps -Af | tail
+ [...]
+ tschwinge 16538 676 p6 0:00.08 /bin/bash
+ root 16554 128 co 0:00.09 ps -Af
+ root 16555 128 co 0:00.01 tail
+
+`bash` is started (on `p6`), but newer makes it to the shell promt; doesn't
+even start to execute `.bash_profile` / `.bashrc`. The next shell started, on
+the next available pseudoterminal, will work without problems.
+
+The `term` on `p6` has already been running before:
+
+ # ps -Af | grep [t]typ6
+ root 6871 3 - 5:45.86 /hurd/term /dev/ptyp6 pty-master /dev/ttyp6
+
+In this situation, `w` will sometimes report erroneous values for *IDLE*
+for the process using that terminal.
+
+Killed that `term` instance, and things were fine again.
+
+
+All this reproducible happens while running the [[GDB testsuite]].
+
+---
+
+Have a freshly started shell blocking on such a `term` instance.
+
+ $ ps -F hurd-long -p 1766 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 1766 0 3 1 1 6 131M 1.14M 0.0 0:28.85 5:40.91 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3
+ 0 0.0 0:05.76 1:08.48
+ 1 0.0 0:00.00 0:00.01
+ 2 0.0 0:06.40 1:11.52
+ 3 0.0 0:05.76 1:09.89
+ 4 0.0 0:05.42 1:06.74
+ 5 0.0 0:05.50 1:04.25
+
+... and after 5:45 h:
+
+ $ ps -F hurd-long -p 21987 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 21987 1001 676 21987 21987 2 148M 2.03M 0.0 0:00.02 0:00.07 /bin/bash
+ 0 0.0 0:00.02 0:00.07
+ 1 0.0 0:00.00 0:00.00
+
+ $ ps -F hurd-long -p 1766 -T -Q
+ PID TH# UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
+ 1766 0 3 1 1 6 131M 1.14M 0.0 0:29.04 5:42.38 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3
+ 0 0.0 0:05.76 1:08.48
+ 1 0.0 0:00.00 0:00.01
+ 2 0.0 0:06.41 1:11.90
+ 3 0.0 0:05.82 1:10.28
+ 4 0.0 0:05.52 1:07.06
+ 5 0.0 0:05.52 1:04.63
+
+ $ sudo gdb /hurd/term 1766
+ [sudo] password for tschwinge:
+ GNU gdb (GDB) 7.0-debian
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+ This is free software: you are free to change and redistribute it.
+ There is NO WARRANTY, to the extent permitted by law. Type "show copying"
+ and "show warranty" for details.
+ This GDB was configured as "i486-gnu".
+ For bug reporting instructions, please see:
+ <http://www.gnu.org/software/gdb/bugs/>...
+ Reading symbols from /hurd/term...Reading symbols from /usr/lib/debug/hurd/term...done.
+ (no debugging symbols found)...done.
+ Attaching to program `/hurd/term', pid 1766
+ [New Thread 1766.1]
+ [New Thread 1766.2]
+ [New Thread 1766.3]
+ [New Thread 1766.4]
+ [New Thread 1766.5]
+ [New Thread 1766.6]
+ Reading symbols from /lib/libhurdbugaddr.so.0.3...Reading symbols from /usr/lib/debug/lib/libhurdbugaddr.so.0.3...
+ [System doesn't respond anymore, but no kernel crash.]
diff --git a/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn b/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn
new file mode 100644
index 00000000..72af3f35
--- /dev/null
+++ b/open_issues/thread-cancel_c_55_hurd_thread_cancel_assertion___spin_lock_locked_ss_critical_section_lock.mdwn
@@ -0,0 +1,41 @@
+[[!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="ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)'"]]
+
+[[!tag open_issue_hurd]]
+
+<http://bugs.debian.org/46859>, <http://bugs.debian.org/195360>
+
+IRC, unknown channel, unknown date:
+
+ <youpi> azeem, marcus: ext2fs.static: thread-cancel.c:55: hurd_thread_cancel: Assertion '! __spin_lock_locked (&ss->critical_section_lock)' failed
+ <youpi> I actually don't understand this assertion
+ <youpi> it's just before __spin_lock (&ss->critical_section_lock);
+ <youpi> why should one check that a lock is free before taking it ?
+ <youpi> just the same in hurdexec.c
+ <youpi> (no, ss is not our own sigstate, so it's not safe to assume no other path can take it)
+ <youpi> there's another one in sysdeps/mach/hurd/spawni.c
+ <youpi> and jmp-unwind.c
+ <antrik> youpi: why do you think it's nonsense?... the fact that we take the lock (so we can't be interrupted) doesn't mean we are willing to wait for others to release the lock... maybe the code path should never be reached while others have a lock, or something
+ <youpi> then it's useless to take the lock
+ <youpi> "we take the lock (so we can't be interrupted)": no, it's not _our_ lock here, it's the lock of the thread we want to cancel
+ <antrik> what exactly is cancelling a thread?... (sorry, I don't really have experience with thread programming)
+ <youpi> ~= killing it
+ <antrik> well, we take the lock so nobody can mess with the thread while we are cancelling it, no?...
+ <youpi> yes
+ <youpi> that is fine
+ <youpi> but checking that the lock is free before taking it doesn't make sense
+ <youpi> why nobody should be able to take the lock ?
+ <youpi> and if nobody is, why do we take it ? (since nobody would be able to take it)
+ <antrik> well, maybe after taking the lock, we do some action that might result in others trying to take it...
+ <youpi> nope: look at the code :)
+ <youpi> or maybe the cancel_hook, but I really doubt it
+
diff --git a/open_issues/threads_issues.mdwn b/open_issues/threads_issues.mdwn
new file mode 100644
index 00000000..aec216e0
--- /dev/null
+++ b/open_issues/threads_issues.mdwn
@@ -0,0 +1,15 @@
+[[!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]]."]]"""]]
+
+List of issues w.r.t. the Hurd's many-threads paradigm.
+
+[[!tag open_issue_hurd]]
+
+ * [[fsync]]
diff --git a/open_issues/time.mdwn b/open_issues/time.mdwn
new file mode 100644
index 00000000..eda5b635
--- /dev/null
+++ b/open_issues/time.mdwn
@@ -0,0 +1,55 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_porting]]
+
+Neither the `time` executable from the GNU time package work completely
+correctly, nor does the GNU Bash built-in one.
+
+ tschwinge@flubber:~ $ \time sleep 2
+ 0.00user 0.00system 9:38:00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ \time sleep 4
+ 0.00user 0.00system 18:50:25elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ \time sleep 6
+ 0.00user 0.00system 28:00:53elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ tschwinge@flubber:~ $ time sleep 2
+
+ real 0m2.093s
+ user 0m0.000s
+ sys 0m0.011s
+ tschwinge@flubber:~ $ time sleep 4
+
+ real 0m4.083s
+ user 0m0.000s
+ sys 0m0.010s
+ tschwinge@flubber:~ $ time sleep 6
+
+ real 0m6.164s
+ user 0m0.000s
+ sys 0m0.010s
+
+GNU time's *elapsed* value is off by some factor.
+
+ $ \time factor 1111111111111111111
+ 1111111111111111111: 1111111111111111111
+ 0.00user 0.00system 52:39:24elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
+ 0inputs+0outputs (0major+0minor)pagefaults 0swaps
+ $ time factor 1111111111111111111
+ 1111111111111111111: 1111111111111111111
+
+ real 0m11.424s
+ user 0m0.000s
+ sys 0m0.010s
+
+As above; also here all the running time should be attriuted to *user* time.
+This is probably a [[!taglink open_issue_gnumach]].
diff --git a/open_issues/tinyproxy.mdwn b/open_issues/tinyproxy.mdwn
new file mode 100644
index 00000000..9a4a0cfb
--- /dev/null
+++ b/open_issues/tinyproxy.mdwn
@@ -0,0 +1,18 @@
+[[!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="Problem with using tinyproxy for tunneling HTTPS"]]
+
+`tinyproxy` works fine for HTTP connections, but fails to proxy HTTPS ones:
+
+ ERROR Jun 12 14:58:51 [20676]: relay_connection: select() error "Interrupted system call". Closing connection (client_fd:7, server_fd:8)
+
+This is supposedly due to the already known select bug, which is a [[!taglink
+open_issue_glibc]].
diff --git a/open_issues/translate_fd_or_port_to_file_name.mdwn b/open_issues/translate_fd_or_port_to_file_name.mdwn
new file mode 100644
index 00000000..25a74456
--- /dev/null
+++ b/open_issues/translate_fd_or_port_to_file_name.mdwn
@@ -0,0 +1,54 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_glibc open_issue_hurd]]
+
+\#hurd, freenode, June (?) 2010
+
+ <pochu> is there a way (POSIX or Hurdish) to get the corresponding file name for a fd or a hurd port?
+ <marcusb> there is a way
+ <pochu> marcusb: which one would that be?
+ <marcusb> I forgot
+ <marcusb> there is an implementation in libc
+ <marcusb> realpath has a similar job
+ <marcusb> but that's not what I mean
+ <marcusb> pochu: maybe I am misremembering. But it was something where you keep looking up .. and list that directory, looking for the node with the ID of the node you had .. for
+ <marcusb> maybe it works only for directories
+ <marcusb> yeah
+ <marcusb> pochu: check the getcwd() implementation of libc
+ <marcusb> sysdeps/mach/hurd/getcwd.c
+ <marcusb> _hurd_canonicalize_directory_name_internal 
+ * pochu looks
+ <pochu> marcusb: interesting
+ <pochu> though that is for dirs, and doesn't seem to be extensible to files, as you cannot lookup for ".." under a file
+ <marcusb> right
+ <pochu> oh you already said that :)
+ <marcusb> actually, I am not sure that's correct
+ <marcusb> it's probably correct, but there is no reason why looking .. up on a file couldn't return the directory it's contianed in
+ <pochu> I don't know the interfaces or the Hurd internals very well yet, but it would look strange to me if you could do that
+ <marcusb> the hurd is strange
+ <pochu> it sounds like if you could `ls getcwd.c/..` to get sysdeps/mach/hurd/ :-)
+ <marcusb> yep
+ <pochu> ok. interesting
+ <marcusb> you wouldn't find "ls foo.zip/.." very strange, wouldn't you?
+ <pochu> I guess not if `ls foo.zip` listed the contents of foo.zip
+ <marcusb> there you go
+ <marcusb> or the other way round: would you be surprised if "cat somedir" would work?
+ <pochu> I think so. if it did, what would it do?
+ <marcusb> originally, cat dir would list the directory content!
+ <marcusb> in the old unix times
+ <pochu> I was surprised the first time I typed `vi somedir` by accident
+ <marcusb> and some early BSDs
+ * pochu feels young :-)
+ <marcusb> he don't worry, I didn't see those times either
+ <marcusb> technically, files and directories are implemented in the same way in the hurd, they both are objects implementing the fs.defs interface
+ <marcusb> which combines file and directory operations
+ <marcusb> of course, files and directories implement those functions differently
+ <antrik> marcusb: do you know why this behavior (cat on directories) was changed?
diff --git a/open_issues/translator_environment_variables.mdwn b/open_issues/translator_environment_variables.mdwn
new file mode 100644
index 00000000..cae5a494
--- /dev/null
+++ b/open_issues/translator_environment_variables.mdwn
@@ -0,0 +1,31 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+IRC, unknown channel, unknown date.
+
+ <cfhammar> BTW, is settrans -a supposed to clear all env variables?
+ <cfhammar> or can I consider it a bug ;-)
+ <cfhammar> scolobb: yeah, seems the problem is in libfshelp
+ <scolobb> cfhammar: Are you talking about fshelp_start_translator_long?
+ <scolobb> (I can remember that it does something to the environment indeed)
+ <cfhammar> scolobb: yes, I think it's the culprit
+ <cfhammar> clearing the environment makes sense for passive translators I guess, but not active ones
+ <scolobb> Hm, searching ``env'' in hurd/libfshelp/start-translator-long.c gives me nothing :-(
+ <scolobb> I think the problem might be in the fact that fshelp_start_translator_long just doesn't copy the environment, but I may be wrong.
+ <cfhammar> scolobb: yeah, that's my guess also
+ <scolobb> Well, I don't know proc, but there might be a way to copy the environment to a task when you know its ID, what do you think?
+ <scolobb> I can see proc_set_arg_locations in process.defs, which sees to set something connected with environment, but I'm not sure whether it suits your needs.
+ <cfhammar> scolobb: it seems that the env isn't passed to file_exec in fshelp_start_translator_long
+ <scolobb> cfhammar: Yeah, that's right
+ <scolobb> I wonder what could the motivation for not passing the environment to a child process
+ <cfhammar> hmm... fshelp_start_translator_long parameterizes everything except env...
+ <cfhammar> perhaps there needs to be a fshelp_start_translator_longer ;-)
diff --git a/open_issues/translator_stdout_stderr.mdwn b/open_issues/translator_stdout_stderr.mdwn
new file mode 100644
index 00000000..e0828b28
--- /dev/null
+++ b/open_issues/translator_stdout_stderr.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!tag open_issue_hurd]]
+
+Decide / implement / fix that (all?) running (passive?) translators' output
+should show up on the (Mach / Hurd) console / syslog.
diff --git a/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn b/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn
new file mode 100644
index 00000000..5d3c3aab
--- /dev/null
+++ b/open_issues/translators_O_NOTRANS_O_NOFOLLOW_namespace-based_selection.mdwn
@@ -0,0 +1,148 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_hurd open_issue_glibc]]
+
+bug-hurd email from 2010-07-28: *O_NOTRANS & O_NOFOLLOW*
+
+2010-07-29, #hurd
+
+ <antrik> cfhammar: I think that touches on a rather fundamental problem... it's always hard to decide how to handle translators, as the most useful approach depends a lot on context
+ <antrik> this was actually part of the idea behind namespace-based translator selection
+ <cfhammar> or perhaps we should just drop the whole O_NOFOLLOW == O_NOTRANS and only apply it for link like translators
+ <pochu> cfhammar: from what I read in [glibc]/hurd/lookup-retry.c, the problem is that some translators can lie about that
+ <antrik> cfhammar: at some point I considered the possibility of adding a couple of special flags describing translators ("link" and "device" being some, but also introducing a few new ones) to decide standard behaviour in various situations
+ <pochu> so you can't really know whether they are links without O_NOTRANS
+ <cfhammar> pochu: yeah, this would have to be considered carefully
+ <pochu> antrik: care to explain what namespace based translator selection means? :)
+ <antrik> pochu: the basic idea is that you add special suffixes to the file name during a lookup, which change the behaviour of lookups
+ <antrik> the most basic use would be adding a suffix that automatically runs an annonymous translator on the file
+ <cfhammar> antrik: doesn't stat cover most of those flags (except for firmlink i guess)
+ <antrik> (scolobb mostly implemented that part)
+ <antrik> but the idea was also to selectively activate/deactivate static translators based on patterns
+ <antrik> (this is implemented partially, but recursion is completely missing so far)
+ <antrik> cfhammar: some of them, yes. but I think there are some cases where the standard stat information is not enough to decide on useful handling
+ <antrik> let's take the example of a translator that mangles the underlying file -- like xmlfs, mboxfs etc.
+ <antrik> these aren't device file nor links, but should not really be handled like "normal" (store) filesystems either
+ <antrik> hm... is there any information in the stat that indicates mount points?
+ <antrik> I guess that would be good enough to flag "normal" filesystems
+ <pochu> I'm not sure I understand. you add a suffix during a lookup, based on what? whatever, including e.g. flags?
+ <antrik> pochu: well, an exmple would be "cat foo.gz,,u"
+ <antrik> where "u" would be a shorthand for "unzip"
+ <antrik> and it would launch a translator that uncompresses the underlying file
+ <pochu> what if there are a foo.gz and a foo.gz,,u files?
+ <antrik> (I think storeio with gzip store can do that... though some more generic translator might be useful, to cover other compression/archieve types as well)
+ <antrik> pochu: than you are SOL ;-)
+ <antrik> pochu: I chose ",," as the suffix after some careful examination that this is *extremely* unlikely to occur in normal use
+ <antrik> pochu: actually, we introduced an escaping scheme too, so it is still possible to access files with ",," in the name... but that's of limited use, as programs not aware of this will still break
+ <cfhammar> hmm i wonder why glibc handles O_NOFOLLOW to begin with, since the test it does presumes trust in the containing directory the fs could do it just as securely
+ <antrik> cfhammar: the FS could do what?
+ <pochu> another problem I've found is that an open(symlink, O_RDONLY | O_NOFOLLOW, 0) should fail with ELOOP according to POSIX, but it doesn't fail on Hurd
+ <antrik> pochu: yeah, saw that
+ <antrik> shouldn't be too hard to fix I hope?...
+ <cfhammar> antrik: libc test whether the node is a symlink or a (trusted) root owned translator, which it would follow
+ <pochu> antrik: probably not, though I haven't looked at it closely
+ <antrik> cfhammar: in what situation would the filesystem do the test?
+ <antrik> cfhammar: and what advantage would it have over the current approach?
+ <antrik> pochu: OK
+ <cfhammar> antrik: the point of the test is to approximate symlink vs. mount point but the fs seems to be in a better position to answer this
+ <antrik> cfhammar: why? I think this information should be fully available to glibc... if it's not, I'd consider this a bug, or at least a major omission
+ <cfhammar> antrik: well take fifos for instance, they should be considered part of the containing filesystem but would not by glibc
+ <cfhammar> antrik: we could make an exception in glibc for fifos but not for other future situations in new translators
+ <cfhammar> antrik: i mean, we could but this leaves control at the translators hand and let different translators handle things their own way
+ <cfhammar> generally, it seems more flexible to leave policy to servers rather than to bake it into the (implicit) protocol (which glibc implements)
+ <antrik> cfhammar: I don't see though why handling it in the filesystem would help here... if the filesystem has the information about how the translator should be handled, it can pass it to the clients
+ <antrik> hm... that's actually a tricky point. we have many situations where we have to choose between handling things in the client library or server-side... I'm haven't really formed an opinion yet which is preferable in general
+ <pochu> with cfhammar's proposal, you wouldn't need O_NOTRANS when you specify O_NOFOLLOW, right?
+ <cfhammar> pochu: i don't think my proposal would even work with O_NOTRANS
+ <antrik> cfhammar: hm, perhaps we are talking past each other. do you want the handling to be in the filesystem containing the underlying node, or in the actual translator implementing the node?
+ <antrik> hrm
+ <cfhammar> antrik: the containing filesystem
+ <cfhammar> (since this is a security issue)
+ <pochu> yeah, otherwise the trust issue would still be there
+ <antrik> then why wouldn't it work with O_NOTRANS?
+ <antrik> BTW, what security issue are you talking about? do you mean the fact that a translator can redirect the lookups to another file, but hide the fact that it's a link?
+ <pochu> antrik: I mean the O_NOTRANS & O_NOFOLLOW comment in [glibc]/hurd/lookup-retry.c
+ <cfhammar> antrik: because O_NOTRANS means don't follow translators (including symlinks) and O_NOFOLLOW means don't follow (any) link but do follow translators
+ <antrik> pochu: I must admit that I never fully understood what that one is about :-)
+ <cfhammar> antrik: i imagine O_NOTRANS|O_NOFOLLOW == O_NOTRANS
+ <antrik> cfhammar: I see
+ <antrik> cfhammar: but I guess that's totally orthogonal from handling in glibc vs. handling in the FS?...
+ <pochu> AFAIU, it's that if you do an open(translator, O_NOFOLLOW, 0), the translator can lie about it being a symlink. So you need to do an O_NOTRANS lookup
+ <pochu> hence hurd/hurdlookup.c adds O_NOTRANS if O_NOFOLLOW is present in flags
+ <antrik> ah, OK
+ <antrik> so the idea here is that instead of doing that, glibc would only pass on O_NOFOLLOW, and the filesystem would handle the O_NOTRANS part itself
+ <cfhammar> antrik: if you have O_NOTRANS the filesystem will never follow any translators including non-link ones, so it can't really handle O_NOFOLLOW to exclude link translators
+ <cfhammar> antrik: yeah
+ <antrik> AIUI the problem is that with the current scheme, using O_NOFOLLOW will also ignore non-link translators?
+ <cfhammar> antrik: exactly, including fifos
+ <cfhammar> antrik: of course, there's still the problem of determining that it is a non-link translator
+ <antrik> cfhammar: but why can't this be fixed keeping the current scheme? wouldn't it suffice for glibc to ask the filesystem whether there is a link (with O_NOTRANS), and if not, do the actual lookup without O_NOTRANS?...
+ <pochu> antrik: there's still the problem of translators lying about them being symlinks or not, right? so instead of a blacklist (is it a symlink?) you would need a whitelist
+ <antrik> pochu: sure. I just don't see how an implementation in the filesystem would do any better on that score than one in glibc
+ <cfhammar> antrik: the fs is better at maintaining the whitelist, e.g. you could have different whitelist for different translators
+ <cfhammar> antrik: the fs also knows who own the fs, so it could make exeptions for the owner's translators
+ <cfhammar> like glibc does for the root user, currently
+ <antrik> I'm not really convinced so far that having these policies in the filesystem is really preferable to having them in the client-side library...
+ <cfhammar> antrik: we want to put /hurd/fifo in the whitelist for all users but we can't determine whether an active translator on the underlying node is /hurd/fifo or not, but the FS can if it started the translator itself
+ <cfhammar> antrik: of course, this can also be done by hiding the /hurd/fifo translator so that glibc doesn't do the test in the first place
+ <cfhammar> antrik: but this isn't pretty, you'd have to proxy it afaics :-/
+ <antrik> cfhammar: TBH, I don't like the whole whilelisting idea
+ <antrik> seems to me this is really just another manifestation of the infamous firmlink problem
+ <antrik> as I said in past discussions, I tend to think that the only way to fix it *properly* is changing the way authentification is handled
+ <antrik> we actually discussed this at some point... when crossing translator boundries, the client shouldn't use it's full permissions on the new translator, but rather the intersection of it's own permissions and that of the parent translator
+ <antrik> this way, "secret" links should cease to be dangerous...
+ <cfhammar> yeah, but that'll take way too long for poor pochu ;-)
+ <antrik> cfhammar: true... but I'm not convinced that a whitelisting hack in the meantime is really worthwhile
+ <cfhammar> antrik: we already have a whitelisting hack (root user's translators), we're just moving it to the filesystem and adding /hurd/fifo
+ <antrik> cfhammar: nope, allowing all root translators is a general policy, not a whitelisting hack
+ <antrik> not elegant either, but a very different class
+ <cfhammar> antrik: i don't remember the details but fixing firmlink problem seemed to require some fundamental changes, it might even turn out to be unfeasible
+ <antrik> BTW, it's still not clear to my why the filesystem is supposed to have a better idea which translators to whitelist than glibc?...
+ <cfhammar> antrik: huh, i don't think i've seen that policy elsewhere, only for root clients not servers
+ <cfhammar> antrik: for one it can keep track of if the current active translator is the current passive one, and thus know which program it runs
+ <antrik> do I get it right that in the case of fifo, the client can't generally trust the user running the translator, and thus the idea is instead to trust the translator program?...
+ <cfhammar> O_NOFOLLOW implies that the client does not trust the file not to redirect it anywhere and we know /hurd/fifo will not do this
+ <antrik> cfhammar: was that a "yes"?...
+ <cfhammar> antrik: yes
+ <antrik> hm... I think I already said it in the context of object migration: I really don't like the idea of trust based on the program being executed...
+ <antrik> this workaround also has other shortcomings: what if the transaltor is started actively?
+ <cfhammar> hmm the owner of the translator could hijack it and the fs wouldn't know
+ <antrik> I must admit though that I don't see another short-term solution either :-(
+ <antrik> oh, right, that's another problem
+ <cfhammar> seems like the fs must implement the fifo itself (or atleast hide the /hurd/fifo translator behind a proxy)
+ <antrik> BTW, what is the specific manifestation of the problem with fifos being ignored on NOFOLLOW?
+ <pochu> there are two problems
+ <pochu> one is that with O_NOFOLLOW, it's ext2fs who checks the file permissions, and denies it (dunno the reason for that)
+ <pochu> the other one is that if you stat the fifo with O_NOFOLLOW and without it, the device will look different (and thus cp believes the file has changed and fails)
+ <pochu> that's because an stat on the fifo will return the fifo translator's PID as the device
+ <antrik> ah
+ <pochu> while one with O_NOFOLLOW will return the partition device
+ <antrik> so the specific problem here is that the stat info is differenet with the fifo translator than without
+ <pochu> I'm not sure whether it would be correct & possible to return the device of the parent translator in libtrivfs, instead of the PID
+ <pochu> yes
+ <pochu> that, and the permission one (they are different)
+ <pochu> though both would be solved if O_NOFOLLOW didn't imply O_NOTRANS :)
+ <antrik> what exactly do you mean by "device" here?
+ <pochu> I mean st_dev in struct stat
+ <antrik> well, I wonder whether the permission problem shouldn't actually be considered a bug in fifo. i sthere a good reason why the permissions are not propagated to the underlying node, as with most other translators?
+ <pochu> I don't think that's the problem
+ <antrik> what else?
+ <pochu> it's rather that if you open the fifo with O_NOTRANS, you don't get the underlying node, and then it's ext2fs (and so libdiskfs) who checks the permissions, and it denies them for whatever reason
+ <pochu> antrik: libdiskfs/dir-lookup.c has this:
+ <pochu> if (((type == S_IFSOCK || type == S_IFBLK || type == S_IFCHR)
+ <pochu> >------- && (flags & (O_READ|O_WRITE|O_EXEC)))
+ <pochu> >------- || (type == S_IFLNK && (flags & (O_WRITE|O_EXEC))))
+ <pochu> >-------error = EACCES;
+ <pochu> so it returns EACCES for the fifo
+ <pochu> I wonder whether there's a good reason (that I'm missing) for that
+ <cfhammar> pochu: i think the reason might be that ext2fs denies access because it does not implement those file types itself
+ <cfhammar> i.e. ext2fs expects them to be opened without O_NOTRANS
+ <cfhammar> (or opened exclusively for non rwx reasons such as stat or settrans)
diff --git a/open_issues/unit_testing.mdwn b/open_issues/unit_testing.mdwn
new file mode 100644
index 00000000..01ed02b3
--- /dev/null
+++ b/open_issues/unit_testing.mdwn
@@ -0,0 +1,43 @@
+[[!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]]."]]"""]]
+
+A collection of thoughts with respect to unit testing.
+
+We definitely want to add unit test suites to our code base.
+
+We should select a tool that we like to use, and that is supported (not
+abandoned).
+
+ * [DejaGnu](http://www.gnu.org/software/dejagnu/) /
+ [Expect](http://expect.nist.gov/)
+
+ * used by GCC, GDB, binutils, etc.
+
+ * glibc has a home-grown system (Makefile-based)
+
+ * [check](http://check.sourceforge.net/)
+
+ * used by some GNU packages, for example GNU PDF (Jose E. Marchesi)
+
+ * CodeSourcery's [QMTest](http://www.codesourcery.com/qmtest)
+
+ * useb by?
+
+ * documentation:
+
+ * <http://www.codesourcery.com/public/qmtest/whitepaper.pdf>
+
+ * <http://www.python.org/workshops/2002-02/papers/01/index.htm>
+
+ * <http://gcc.gnu.org/ml/gcc/2002-05/msg01978.html>
+
+ * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/tutorial/index.html>
+
+ * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/manual/index.html>
diff --git a/open_issues/user-space_device_drivers.mdwn b/open_issues/user-space_device_drivers.mdwn
new file mode 100644
index 00000000..98f48013
--- /dev/null
+++ b/open_issues/user-space_device_drivers.mdwn
@@ -0,0 +1,160 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_gnumach open_issue_hurd]]
+
+This is a collection of resources concerning *user-space device drivers*.
+
+Also see [[device drivers and IO systems]].
+[[community/gsoc/project ideas/driver glue code]].
+
+[[!toc levels=2]]
+
+
+# Issues
+
+## IRQs
+
+ * Can be modeled using [[RPC]]s.
+
+ * Security considerations: IRQ sharing.
+
+ * *Omega0* paper defines an interface.
+
+ * As is can be read in the *Mach 3 Kernel Principles*, there is an *event
+ object* facility in Mach that can be used for having user-space tasks react
+ to IRQs. However, at least in GNU Mach, that code (`kern/eventcount.c`)
+ doesn't seem functional at all and isn't integrated properly in the kernel.
+
+## DMA
+
+ * Security considerations.
+
+ * I/O MMU.
+
+## I/O Ports
+
+ * Security considerations.
+
+## PCI and other buses
+
+ * Security considerations: sharing.
+
+## Latency of doing RPCs
+
+ * [[GNU Mach|microkernel/mach/gnumach]] is said to have a high overhead when
+ doing RPC calls.
+
+
+# Plan
+
+ * Examine what other systems are doing.
+
+ * L4
+
+ * Hurd on L4: deva, fabrica
+
+ * [[DDE]]
+
+ * Minix 3
+
+ * Start with a simple driver and implement the needed infrastructure (see
+ *Issues* above) as needed.
+
+ * <http://savannah.nongnu.org/projects/user-drivers/>
+
+ Some (unfinished?) code written by Robert Millan in 2003: PC keyboard
+ and parallel port drivers, using `libtrivfs`.
+
+
+# Documentation
+
+ * [An Architecture for Device Drivers Executing as User-Level
+ Tasks](http://portal.acm.org/citation.cfm?id=665603), 1993, David B. Golub,
+ Guy G. Sotomayor, Freeman L. Rawson, III
+
+ * [Performance Measurements of the Multimedia Testbed on Mach 3.0: Experience
+ Writing Real-Time Device Drivers, Servers, and
+ Applications](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.8685),
+ 1993, Roger B. Dannenberg, David B. Anderson, Tom Neuendorffer, Dean
+ Rubine, Jim Zelenka
+
+ * [User Level IPC and Device Management in the Raven
+ Kernel](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.3733),
+ 1993, D. Stuart Ritchie, Gerald W. Neufeld
+
+ * [Creating User-Mode Device Drivers with a
+ Proxy](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.3055),
+ 1997, Galen C. Hunt
+
+ * [The APIC Approach to High Performance Network Interface Design: Protected
+ DMA and Other
+ Techniques](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.1198),
+ 1997, Zubin D. Dittia, Guru M. Parulkar, Jerome R. Cox, Jr.
+
+ * [The Fluke Device Driver
+ Framework](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.7927),
+ 1999, Kevin Thomas Van Maren
+
+ * [Omega0: A portable interface to interrupt hardware for L4
+ system](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.21.5958),
+ 2000, Jork Löser, Michael Hohmuth
+
+ * [Userdev: A Framework For User Level Device Drivers In
+ Linux](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.4461),
+ 2000, Hari Krishna Vemuri
+
+ * [User Mode Drivers](http://www.linuxjournal.com/article/5442), 2002, Bryce
+ Nakatani
+
+ * [Towards Untrusted Device
+ Drivers](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.1725),
+ 2003, Ben Leslie, Gernot Heiser
+
+ * [Encapsulated User-Level Device Drivers in the Mungi Operating
+ System](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.1531),
+ 2004, Ben Leslie Nicholas, Nicholas FitzRoy-Dale, Gernot Heiser
+
+ * [Linux Kernel Infrastructure for User-Level Device
+ Drivers](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.1408),
+ 2004, Peter Chubb
+
+ * [Get More Device Drivers out of the
+ Kernel!](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.6333),
+ 2004, Peter Chubb
+
+ * <http://gelato.unsw.edu.au/IA64wiki/UserLevelDrivers>
+
+ * [Initial Evaluation of a User-Level Device
+ Driver](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.4531),
+ 2004, Kevin Elphinstone, Stefan Götz
+
+ * [User-level Device Drivers: Achieved
+ Performance](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.6766),
+ 2005, Ben Leslie, Peter Chubb, Nicholas FitzRoy-Dale, Stefan Götz, Charles
+ Gray, Luke Macpherson, Daniel Potts, Yueting Shen, Kevin Elphinstone,
+ Gernot Heiser
+
+ * [Virtualising
+ PCI](http://www.ice.gelato.org/about/oct06_presentations.php#pres14), 2006,
+ Myrto Zehnder, Peter Chubb
+
+ * [Microdrivers: A New Architecture for Device
+ Drivers](http://www.cs.rutgers.edu/~vinodg/papers/hotos2007/), 2007, Vinod
+ Ganapathy, Arini Balakrishnan, Michael M. Swift, Somesh Jha
+
+
+# External Projects
+
+ * [[DDE]]
+
+ * <http://ertos.nicta.com.au/research/drivers/uldd/>
+
+ * <http://gelato.unsw.edu.au/IA64wiki/UserLevelDrivers>
diff --git a/open_issues/viengoos_make_clean.mdwn b/open_issues/viengoos_make_clean.mdwn
new file mode 100644
index 00000000..af2920e7
--- /dev/null
+++ b/open_issues/viengoos_make_clean.mdwn
@@ -0,0 +1,22 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_viengoos]]
+
+IRC, unknown channel, unknown date.
+
+ <neal> tschwinge: If I do a make clean n the root directory, follow that with a configure, configure fails with: configure: error: C compiler cannot create executables
+ <neal> this is in config.log: /home/neal/src/hurd-l4/build/lib/gcc/i686-pc-viengoos-gnu/4.2.2/../../../../i686-pc-viengoos-gnu/bin/ld: cannot find -lc
+ <neal> rt
+ <tschwinge> neal: Should make clean also remove srcdir/gcc/gcc and binutils, as you do it with newlib?
+ <neal> I'd prefer it not to
+ <neal> as I use make clean to prep the tree for new configure changes
+ <neal> and build gcc takes a long time
+ <neal> (as does newlib, but newlib in this case needs to be rebuilt)
diff --git a/open_issues/viengoos_tls_gcc.mdwn b/open_issues/viengoos_tls_gcc.mdwn
new file mode 100644
index 00000000..92499903
--- /dev/null
+++ b/open_issues/viengoos_tls_gcc.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_viengoos]]
+
+IRC, unknown channel, unknown date.
+
+ <neal> tschwinge : I'm trying to enable tls for viengoos. This requires compiling gcc with --enable-tls, which enables threading, which pulls in libpthread, which requires newlib headers.
+ <neal> tschwinge : Unfortunately, I don't see how to install the newlib headers without having gcc
+ <neal> tschwinge : Have you got any ideas?
diff --git a/open_issues/wrong_reply_message_id.mdwn b/open_issues/wrong_reply_message_id.mdwn
new file mode 100644
index 00000000..e84e2571
--- /dev/null
+++ b/open_issues/wrong_reply_message_id.mdwn
@@ -0,0 +1,23 @@
+[[!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]]."]]"""]]
+
+[[!meta title="(ipc/mig) wrong reply message ID"]]
+
+[[!tag open_issue_gnumach open_issue_mig open_issue_glibc]]
+
+ <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.
+
+This error code is `MIG_REPLY_MISMATCH` and can be returned in GNU Mach's
+`kern/exception.c (exception_parse_reply)`, in MIG-generated code, see `user.c
+(WriteCheckIdentity)`, and in glibc's `sysdeps/mach/hurd/ioctl.c (__ioctl)`.
diff --git a/open_issues/xen_crash_copy-size_le_page_size.mdwn b/open_issues/xen_crash_copy-size_le_page_size.mdwn
new file mode 100644
index 00000000..f2d8081e
--- /dev/null
+++ b/open_issues/xen_crash_copy-size_le_page_size.mdwn
@@ -0,0 +1,104 @@
+[[!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]]."]]"""]]
+
+[[!tag open_issue_xen]]
+
+`/dev/hd2` is 2 GiB in size (backed by LVM), unformatted.
+
+ # mkfs.ext2 -o hurd /dev/hd2
+ mke2fs 1.41.7 (29-June-2009)
+ hd2 count 1
+ re-open, hd2 count 2
+ ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /dev/hd2 is mounted.
+ re-open, hd2 count 3
+ re-open, hd2 count 4
+ re-open, hd2 count 5
+ Filesystem label=
+ OS type: Hurd
+ Block size=4096 (log=2)
+ Fragment size=4096 (log=2)
+ 131072 inodes, 524288 blocks
+ 26214 blocks (5.00%) reserved for the super user
+ First data block=0
+ Maximum filesystem blocks=536870912
+ 16 block groups
+ 32768 blocks per group, 32768 fragments per group
+ 8192 inodes per group
+ Superblock backups stored on blocks:
+ 32768, 98304, 163840, 229376, 294912
+
+ Assertion `copy->size <= PAGE_SIZE' failed in file "../gnumach-1-branch-Xen-branch/xen/block.c", line 536
+ Kernel Breakpoint trap, eip 0x20020a77
+ Stopped at 0x20020a76: int $3
+ db> trace
+ 0x20020a76(2006abc1,2006ba03,2006782c,218,2e2be8d4)
+ 0x20020ace(2006ba03,2006782c,218,2e3629a0,32000)
+ 0x2003e9d5(2de04764,2e2be0b8,12,0,3fff80)
+ 0x200476e6(2de5ad54,2e2db010,2e30a9a0,2de3a854,2de5ad44)
+ 0x20021ed4(2de5ad44,2e2bb2e0,2e2bb2a0,0,0)
+ 0x2005309d(129b8f0,3,38,28,e)
+ 0x20006838(129b8f0,3,38,28,e)
+ >>>>> user space <<<<<
+
+
+ $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020ace 0x2003e9d5 0x200476e6 0x20021ed4 0x2005309d 0x20006838
+ Debugger
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105
+ Assert
+ ??:0
+ device_write
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/xen/block.c:537
+ _Xdevice_write
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/device/device.server.c:253
+ ipc_kobject_server
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:201
+ mach_msg_trap
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367
+ mach_call_call
+ /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/i386/i386/locore.S:1083
+
+GDB on `mkfs.ext2`:
+
+ raw_write_blk (channel=0x80829d8, data=0x8082a40, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:272
+ 272 actual = write(data->dev, buf, size);
+ (gdb) print size
+ $4 = 32768
+ (gdb) bt
+ #0 raw_write_blk (channel=0x80829d8, data=0x8082a40, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:272
+ #1 0x080635fc in unix_write_blk64 (channel=0x80829d8, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:673
+ #2 0x0806373c in unix_write_blk (channel=0x80829d8, block=524272, count=8, buf=0x80a0a60) at ../../../git/lib/ext2fs/unix_io.c:705
+ #3 0x0805e87d in ext2fs_zero_blocks (fs=0x8082940, blk=524272, num=16, ret_blk=0x15ffb1c, ret_count=0x0)
+ at ../../../git/lib/ext2fs/mkjournal.c:182
+ #4 0x0804ec56 in main (argc=131072, argv=0x80000) at ../../git/misc/mke2fs.c:2032
+
+Discussion:
+
+ <tschwinge> I had a look at the code, but unfortunately don't really know
+ how this data transfers between Xen and the domU work.
+ <tschwinge> Well, I know how it roughly works, but not the implementation
+ deatils.
+ <youpi> well here it's not about the xen/domU transfers
+ <youpi> it's about copying data to align it
+ <youpi> i.e. when offset is not aligned, I need to copy it
+ <tschwinge> Yes-
+ <youpi> I was lazy, just implemented it for things smaller than a page
+ <youpi> it just needs to be extended into copying several pages
+ <tschwinge> youpi: Hmm, do we need to copy all the data to shift away the
+ offset or is there a better way?
+ <youpi> the blkbackend needs data to be sector-aligned
+ <youpi> just aligning on a page makes offset computation simpler
+ <youpi> as it's rare that's not a problem
+ <tschwinge> And a sector is the usual 512 bytes there, I assume?
+ <tschwinge> But then we do need to copy all of it?
+ <youpi> let me check
+ <youpi> the sector is the granularity you can't go below
+ <youpi> sector is the sector_size reported by the backend
+ <youpi> but for sector_number and first/last_sect it's 512
+ <youpi> yes, that's weird
diff --git a/open_issues/xen_domu_with_ro_hd.mdwn b/open_issues/xen_domu_with_ro_hd.mdwn
new file mode 100644
index 00000000..efbd2d18
--- /dev/null
+++ b/open_issues/xen_domu_with_ro_hd.mdwn
@@ -0,0 +1,35 @@
+[[!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="Xen domU with a read-only HD"]]
+
+[[!tag open_issue_xen]]
+
+read-only hd3
+
+ foobar:~# e2fsck /dev/hd3
+ e2fsck 1.40.11 (17-June-2008)
+ re-open, hd3 count 5
+ re-open, hd3 count 6
+ /dev/hd3 was not cleanly unmounted, check forced.
+ Pass 1: Checking inodes, blocks, and sizes
+ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+ /dev/hd3: 2729/262144 files (0.2% non-contiguous), 34116/524288 blocks
+ Error writing block 1 (Attempt to write block from filesystem resulted in short write). Ignore error<y>? yes
+
+ foobar:~# e2fsck /dev/hd3
+ e2fsck 1.40.11 (17-June-2008)
+ re-open, hd3 count 7
+ re-open, hd3 count 8
+ e2fsck: Attempt to read block from filesystem resulted in short read while trying to open /dev/hd3
+ Could this be a zero-length partition?
diff --git a/persistency.mdwn b/persistency.mdwn
new file mode 100644
index 00000000..f5347a4e
--- /dev/null
+++ b/persistency.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A persistent object is an object that survives reboot.
+On [[Unix]], files and directories are persistent but
+processes and file descriptors are not. [[microkernel/EROS]] is
+an example of an orthogonally persistent system:
+processes and capabilities also survive reboot. To a
+process, it generally only looks as if it had not been
+scheduled for a long time; the rest of its environment
+remains essentially the indistinguishable.
diff --git a/policy.mdwn b/policy.mdwn
new file mode 100644
index 00000000..1bc3c527
--- /dev/null
+++ b/policy.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A policy is a rule that define what may or may not happens, not
+how it happens. The latter is referred to as [[mechanism]].
diff --git a/principal.mdwn b/principal.mdwn
new file mode 100644
index 00000000..c9b952ec
--- /dev/null
+++ b/principal.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+A principal is an accountable entity. A principal may be
+a user. On some computer systems, users are represented by their
+respective UID. A process may also be a principal. However, a
+principal may span multiple processes (a web request that causes
+a CGI script to be invoked) or a principal may contain a number
+of separate principals (a web server serves multiple requests,
+each request represents a different principal).
diff --git a/public_hurd_boxen.mdwn b/public_hurd_boxen.mdwn
new file mode 100644
index 00000000..3bf8e85c
--- /dev/null
+++ b/public_hurd_boxen.mdwn
@@ -0,0 +1,80 @@
+[[!meta copyright="Copyright © 2006, 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]]."]]"""]]
+
+Here are some Hurd boxes that users have made available to the public:
+
+[[!table class="table_style_1" data="""
+"Hoster","Name","Distribution","Machine Specs","Comments"
+"[[bddebian]]","blubber","Debian GNU/Hurd","Celeron 2.2 GHz; 222 MiB","Xen domU on [[zenhost]]; for experimental stuff"
+"[[bddebian]]","clubber","Debian GNU/Hurd","PIII 1 GHz; 384 MiB"
+"[[bddebian]]","flubber","Debian GNU/Hurd","Celeron 2.2 GHz; 666 MiB","Xen domU on [[zenhost]]"
+"[[bddebian]]","snubber","Debian GNU/Hurd","Celeron 2.2 GHz; 160 MiB","Xen domU on [[zenhost]]; web server"
+"[[bddebian]]","gnubber","Debian GNU/Hurd","PII 733 MHz; 384 MiB"
+"[[bddebian]]","goober","Debian GNU/Hurd","?"
+"[[bddebian]]","grubber","Debian GNU/Hurd","Celeron 2.2 GHz; 222 MiB","Xen domU on [[zenhost]]; for experimental stuff"
+"[[bddebian]]","[[zenhost]]","Debian GNU/Linux","Celeron 2.2 GHz","Xen dom0 for several hosts"
+"""]]
+
+To request an account on the *[[bddebian]]* machines either contact
+*bddebian* or *tschwinge* (other people might also be able to help) in [[IRC]]
+or send email to <hurd-shell-account@gnu.org>. Also use these contact
+addresses for requesting support with respect to software installations, etc.
+
+
+For easy access, you should append your public SSH key(s)
+to `~/.ssh/authorized_keys` on the remote machine.
+
+Also, add the following stanza to `~/.ssh/config` of the machine you're
+connecting from:
+
+ Host blubber.bddebian.com blubber
+ HostName blubber.bddebian.com
+
+ Host clubber.bddebian.com clubber
+ HostName clubber.bddebian.com
+ Port 2251
+
+ Host flubber.bddebian.com flubber
+ HostName flubber.bddebian.com
+ Port 2250
+
+ Host gnubber.bddebian.com gnubber
+ HostName gnubber.bddebian.com
+ Port 2254
+
+ Host goober.bddebian.com goober
+ HostName goober.bddebian.com
+ Port 2255
+
+ Host grubber.bddebian.com grubber
+ HostName grubber.bddebian.com
+
+ Host snubber.bddebian.com snubber
+ HostName snubber.bddebian.com
+
+ Host zenhost.bddebian.com zenhost
+ HostName zenhost.bddebian.com
+ Port 2260
+
+ Host blubber.bddebian.com blubber grubber.bddebian.com grubber snubber.bddebian.com snubber
+ ProxyCommand ssh zenhost socat - TCP4:%h:%p
+
+ Host *.bddebian.com blubber clubber flubber gnubber goober grubber snubber zenhost
+ CheckHostIP no
+ UserKnownHostsFile /dev/null
+ StrictHostKeyChecking no
+ User [username]
+
+The `CheckHostIP` statement is for not having to worry about the machines's IP
+addresses changing (due to dial-up connection), and the `UserKnownHostsFile`
+one together with the `StrictHostKeyChecking` one are for not having ot worry
+about the host keys changing (when the machines are re-installed). Of course,
+this undermines SSH's security system, so you may disagree about these.
diff --git a/public_hurd_boxen/bddebian.mdwn b/public_hurd_boxen/bddebian.mdwn
new file mode 100644
index 00000000..82fb0b8c
--- /dev/null
+++ b/public_hurd_boxen/bddebian.mdwn
@@ -0,0 +1,21 @@
+[[!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]]."]]"""]]
+
+# IP addresses
+
+ * [[zenhost]]: 192.168.10.60
+ * blubber: 192.168.10.61
+ * flubber: 192.168.10.50
+ * grubber: 192.168.10.63
+ * snubber: 192.168.10.62
+
+At least anything in the .60 range can be used.
+
+Registered in zenhost's `/etc/hosts`.
diff --git a/public_hurd_boxen/installation.mdwn b/public_hurd_boxen/installation.mdwn
new file mode 100644
index 00000000..67878f1a
--- /dev/null
+++ b/public_hurd_boxen/installation.mdwn
@@ -0,0 +1,102 @@
+[[!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]]."]]"""]]
+
+This page documents how installation of a new machine is being done on
+[[zenhost]].
+
+This method uses
+*[install_crosshurd](http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=install_crosshurd)*.
+
+Another option might be switching to <http://www.informatik.uni-koeln.de/fai/>
+or a equivalent system.
+
+Steps for *install_crosshurd*:
+
+ * Enable loggin with screen (`C-a H`).
+
+ * \# lvcreate ...
+
+ * machines/[MACHINE]
+
+ * \# MACHINE=[MACHINE] TARGET=/dev/zenhost/[MACHINE]-root ./install_crosshurd
+
+ * TODO
+
+ I: Extracting /var/cache/apt/archives/dash_0.5.5.1-3_hurd-i386.deb...
+ tar: ./bin/sh: Cannot create symlink to `dash': File exists
+ tar: ./usr/share/man/man1/sh.1.gz: Cannot create symlink to `dash.1.gz': File exists
+ tar: Exiting with failure status due to previous errors
+
+ Ignore? --
+ <http://lists.gnu.org/archive/html/bug-hurd/2009-11/msg00094.html>
+
+ * \# sudo umount /tmp/*/target
+
+ * /etc/xen/[MACHINE]
+
+ * \# xm create -c [MACHINE]
+
+ * \# /install
+
+ * TODO
+
+ Unpacking debconf (from .../debconf_1.5.28_all.deb) ...
+ + debconf-set-selections
+ warning: Unknown type error, skipping line 9
+
+ * TODO
+
+ +---------------------------Configuring grub-pc------------------------------+
+
+ Make it not install GRUB packages.
+
+ Likewise, the *gnumach* package need not be installed.
+
+ * If needed:
+
+ \# cd /dev/ && ./MAKEDEV hd2
+ \# mkfs.ext2 -I 128 -b 4096 /dev/hd2 # TAKE CARE!
+ \# mkdir /media/data && settrans /media/data /hurd/ext2fs /dev/hd2
+ \# rmdir /home && ln -s media/data/home /
+ \# mkdir /media/data/home
+
+ * If needed: restore (parts of) some files
+
+ * /etc/fstab
+
+ * /etc/{passwd,shadow,group,gshadow}
+
+ * \# adduser ... sudo
+
+ * \# passwd root
+
+ * /etc/ssh/ssh_host_*key*
+
+ Can do this here or have to move after install_packages due to the
+ files being overwritten again (don't think so)?
+
+ * \# syncfs -s && halt
+
+ * \# xm create -c [MACHINE]
+
+ * \# /install_packages
+
+ * Until [[open_issues/screen]] is fixed:
+
+ * Install `flubber:~tschwinge/screen_4.0.3-11_hurd-i386.deb` instead.
+
+ * \# printf 'screen\thold\n' | dpkg --set-selections
+
+ * add line to zenhost's `/etc/hosts`
+
+ * system-specific:
+
+ * [[flubber]]
+ * [[snubber]]
diff --git a/public_hurd_boxen/installation/flubber.mdwn b/public_hurd_boxen/installation/flubber.mdwn
new file mode 100644
index 00000000..66a01c3c
--- /dev/null
+++ b/public_hurd_boxen/installation/flubber.mdwn
@@ -0,0 +1,25 @@
+[[!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]]."]]"""]]
+
+# *git daemon*
+
+## `/etc/rc.local`
+
+ [...]
+ # runit doesn't work yet...
+ LC_ALL=C date >> /var/log/git-daemon
+ git daemon --verbose --user-path >> /var/log/git-daemon 2>&1 &
+ [...]
+
+Should [[fix runit|open issues/runit]] and use Debian's `git-daemon-run`
+package instead.
+
+
+# *polipo*
diff --git a/public_hurd_boxen/installation/snubber.mdwn b/public_hurd_boxen/installation/snubber.mdwn
new file mode 100644
index 00000000..957a73fb
--- /dev/null
+++ b/public_hurd_boxen/installation/snubber.mdwn
@@ -0,0 +1,61 @@
+[[!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]]."]]"""]]
+
+# Additional Packages
+
+Before 2010-08-12, we've been using apache2-mpm-worker, but that brought
+the system to its knees too often, leading to a un-syncable rootfs, etc.
+Let's see how apache2-mpm-prefork behaves.
+
+ apache2-mpm-prefork build-essential git-core gitweb ikiwiki inetutils-inetd
+ less libtext-csv-perl netcat nullmailer perlmagick screen texinfo
+
+Yet more:
+
+ * libemail-send-perl (for my *sendmail vs. ikiwiki* patch)
+
+## [[open_issues/syslog]]
+
+ $ find /etc/rc*/ | grep syslog | sudo xargs rm
+
+
+# `~hurd-web/`
+
+ $ mkdir hurd-web && GIT_DIR=hurd-web git init
+
+
+# `~tschwinge/`
+
+ $ mkdir tmp/backup && chmod 0733 tmp/backup
+
+
+# `/var/www/robots.txt`
+
+This file used to contain:
+
+ User-agent: *
+ Disallow: /gitweb/
+ Disallow: /cgi-bin/
+
+... which I've now changed to:
+
+ User-agent: *
+ Disallow: /
+
+The goal is that robots rather index the official pages,
+<http://www.gnu.org/software/hurd/>, instead of the staging area on
+<http://www.bddebian.com:8888/~hurd-web/>.
+
+
+# Restore Backup
+
+## `/etc/apache2/mods-enabled/`
+
+`rewrite.load`, `userdir.conf`, `userdir.load`
diff --git a/public_hurd_boxen/xen_handling.mdwn b/public_hurd_boxen/xen_handling.mdwn
new file mode 100644
index 00000000..47d92c43
--- /dev/null
+++ b/public_hurd_boxen/xen_handling.mdwn
@@ -0,0 +1,49 @@
+[[!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]]."]]"""]]
+
+# listing running domUs
+
+ $ sudo xm list
+
+ $ sudo xm top
+
+# handling running domUs
+
+Forcefully killing a domU (that has crashed or is busy-looping, etc.):
+
+ $ sudo xm destroy [domU]
+
+As for (re-)starting a domU, read below in *domU consoles*.
+
+Using `xm shutdown [domU]` to gracefully shut down a running domU does not yet
+work -- this is not yet implemented in the [[Xen port of GNU
+Mach|microkernel/mach/gnumach/ports/xen]] ([[!taglink open_issue_xen]]).
+
+# domU consoles
+
+To avoid any complications with people trying to use the same console at the
+same time, please use this command for attaching to a domU's console (this
+command line will also start the domU in case that it isn't running already):
+
+ $ host=[domU] && sudo screen -DRRS console-$host sh -c "xm console $host || xm create -c $host"
+
+Otherwise, if one attaches to the same console twice, the second instance will
+in fact forward input to the domU (possibly infering with what the person is
+doing on the first instance), but the output won't be sent back to the second
+instance.
+
+After having typed this once, Bash's `reverse-search-history` (`C-r`), followed
+by typing in `host=flubber`, for example, will be enough to get access to
+that machine's console.
+
+/!\ TODO: How does one get the environment variables `COLUMNS` and `LINES` set
+properly when using `xm console`? This is relevant for everything using
+`(n)curses` -- for interactive console applications. Using `export COLUMNS=143
+LINES=44` does work, but is a manual process.
diff --git a/public_hurd_boxen/zenhost.mdwn b/public_hurd_boxen/zenhost.mdwn
new file mode 100644
index 00000000..b828b8e9
--- /dev/null
+++ b/public_hurd_boxen/zenhost.mdwn
@@ -0,0 +1,18 @@
+[[!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]]."]]"""]]
+
+*zenhost* is a Xen dom0 (hosted by [[bddebian]]) which is hosting several domUs
+(see the table on [[public hurd boxen]] for a list).
+
+
+[[!inline pages=public_hurd_boxen/xen_handling feeds=no]]
+
+
+# [[Installation of new machines|installation]]
diff --git a/purify_html b/purify_html
new file mode 100755
index 00000000..4cf582af
--- /dev/null
+++ b/purify_html
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Mangle the rendered files to cause fewer differernces upon re-rendering.
+
+# Written by Thomas Schwinge <tschwinge@gnu.org>.
+
+# Un-mangle mailto links: convert HTML character entities to real characters.
+find ./ -name \*.html -print0 \
+ | xargs -0 \
+ perl -p -i -l -e \
+ 'BEGIN { $replacing = 0; }
+ # The replacing-toggling logic is a bit rough, but so is life.
+ $replacing = 1 if /<a href="mailto:/;
+ s%\&#(x?)([^;]*);%chr(length($1) ? hex($2) : $2)%eg if $replacing;
+ $replacing = 0 if /<\/a>/;'
diff --git a/qemu.mdwn b/qemu.mdwn
new file mode 100644
index 00000000..19b5fb9f
--- /dev/null
+++ b/qemu.mdwn
@@ -0,0 +1,36 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+QEMU is free software written by Fabrice Bellard that implements a fast
+processor [[emulator|emulation]], allowing a user to run one operating system
+within another one. It is similar to projects such as [[Bochs]] and VMware
+Workstation, but has several features these lack, including increased speed and
+support for multiple architectures. By using dynamic translation it achieves a
+reasonable speed while being easy to port on new host CPUs.
+
+QEMU has two operating modes:
+
+ * User mode emulation: QEMU can launch Linux processes compiled for one CPU
+ on another CPU. Linux system calls are converted because of endianness and
+ 32/64 bit mismatches. Wine and Dosemu are the main targets for QEMU.
+
+ * System mode emulation: QEMU emulates a full system, including a processor
+ and various peripherials. It enables easier testing and debugging of
+ system code. It can also be used to provide virtual hosting of several
+ virtual PCs on a single server.
+
+The majority of the program is under the [[LGPL]], with the system mode
+emulation under the [[GPL]].
+
+# External Links
+
+ * <http://www.nongnu.org/qemu/>
+ * [Qemu on Windows](http://www.h7.dion.ne.jp/~qemu-win/)
diff --git a/recent_changes.mdwn b/recent_changes.mdwn
new file mode 100644
index 00000000..594a0390
--- /dev/null
+++ b/recent_changes.mdwn
@@ -0,0 +1,14 @@
+[[!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="Recent Changes"]]
+
+[[!inline pages="internal(recent_changes/change_*)" template=recentchanges
+show=0]]
diff --git a/render_locally b/render_locally
new file mode 100755
index 00000000..ca7856f5
--- /dev/null
+++ b/render_locally
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+# Render the pages of this repository.
+
+# Written by Thomas Schwinge <tschwinge@gnu.org>.
+
+# See `contributing/web_pages' for further information.
+
+export ROOT && ROOT=$(readlink -f "$(dirname "$0")") &&
+
+# Don't translate.
+export LC_MESSAGES && LC_MESSAGES=C &&
+
+case $1 in
+ # Use this for rendering the set of pages which are to be installed under
+ # <http://www.gnu.org/software/hurd/>.
+ --official)
+ shift &&
+
+ export TZ && TZ=UTC &&
+ export DESTDIR && DESTDIR=$ROOT.rendered.official &&
+
+ # Use ``--no-usedirs'' here, so that not too many separate directories have
+ # to be created.
+ #
+ # Use ``--gettime --plugin update_mtimes'' to reset pages' / files' mtimes
+ # according to the RCS information when using --refresh mode.
+ set x \
+ --set wikistatedir="$ROOT"/.ikiwiki-official \
+ --url http://www.gnu.org/software/hurd \
+ --no-usedirs \
+ --gettime --plugin reset_mtimes \
+ "$@" &&
+ shift;;
+
+ --w3m-wrapper)
+ shift &&
+
+ export NO_MSG && NO_MSG=y &&
+
+ # Disable the configured VCS, as the CGI wrapper together with using the
+ # anonok plugin inhibits the propagation of authorship information.
+ set x \
+ --cgi --wrapper ~/.ikiwiki/wrappers/hurd-web.cgi \
+ --plugin anonok \
+ --rcs norcs \
+ "$@" &&
+ shift &&
+
+ exec \
+ "$0" \
+ --w3m \
+ "$@";;
+
+ --w3m)
+ shift &&
+
+ export DESTDIR && DESTDIR=$ROOT.rendered.w3m &&
+
+ set x \
+ --set wikistatedir="$ROOT"/.ikiwiki-w3m \
+ --cgiurl hurd-web.cgi --w3mmode \
+ "$@" &&
+ shift &&
+
+ exec \
+ "$0" \
+ "$@";;
+
+ *)
+ # Use ``--no-usedirs'' here, because when browsing local files, the web
+ # browsers don't display `index.html' files by default when a hyperlink
+ # referencing a directory is being opened.
+ set x \
+ --no-usedirs \
+ "$@" &&
+ shift;;
+esac &&
+
+ikiwiki \
+ --setup "$ROOT"/ikiwiki.setup \
+ --refresh \
+ "$@" &&
+
+if [ ${NO_MSG-n} = y ]; then :; else
+ echo &&
+ echo Now\ open\ \`"${DESTDIR-"$ROOT".rendered}"/index.html\'' to browse the web pages.'
+fi
diff --git a/rpc.mdwn b/rpc.mdwn
new file mode 100644
index 00000000..9703268f
--- /dev/null
+++ b/rpc.mdwn
@@ -0,0 +1,11 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+RPC stands for remote procedure call.
diff --git a/rules.mdwn b/rules.mdwn
new file mode 100644
index 00000000..6f6f9e2f
--- /dev/null
+++ b/rules.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+* [[Source_repositories]]
+* [[Savannah_group]]
diff --git a/rules/savannah_group.mdwn b/rules/savannah_group.mdwn
new file mode 100644
index 00000000..4e2cf357
--- /dev/null
+++ b/rules/savannah_group.mdwn
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright © 2006, 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]]."]]"""]]
+
+<http://savannah.gnu.org/projects/hurd/>
+
+# Group membership
+
+There is no need to be a formal member of the GNU Hurd Savannah group in order
+to be able to contribute to the system. In fact, if we added every single soul
+that was interested in the Hurd to the Savannah group it'd probably have
+exploded by now. We have the policy of adding people as soon as they are
+beginning to make substantial contributions. Simply use the [[mailing lists]]
+for sending your contributions, for asking questions, and so on.
+
+Have a look at the page for [[contributing]]. Also be sure to have a look at
+the [[contributing/questionnaire]].
+
+## List of members
+
+The list of members can be seen at
+<http://savannah.gnu.org/project/memberlist.php?group=hurd>.
+
+<a name="copyright_assignment">
+## Copyright assignment
+</a>
+
+If you have pieces of code or documentation to contribute, then, in order to
+install them into our [[source_repositories]], you have to assign the copyright
+of your changes to the [Free Software Foundation](http://www.fsf.org/).
+
+Please [[contact_us]] to request the needed forms.
diff --git a/rules/source_repositories.mdwn b/rules/source_repositories.mdwn
new file mode 100644
index 00000000..8215af3b
--- /dev/null
+++ b/rules/source_repositories.mdwn
@@ -0,0 +1,12 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!meta redir=/source_repositories]]
diff --git a/sandbox.mdwn b/sandbox.mdwn
new file mode 100644
index 00000000..b90e8160
--- /dev/null
+++ b/sandbox.mdwn
@@ -0,0 +1,42 @@
+This is the sandbox, a page anyone can edit to learn how to use the wiki.
+
+There even is a [[subsandbox]].
+
+---
+
+Here's a paragraph.
+
+Here's another one with *emphasized* text.
+
+# Header
+
+## Subheader
+
+This is a blockquote.
+
+> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+
+Numbered list
+
+ 1. First item.
+ 1. Another.
+ 1. And another.
+
+Bulleted list
+
+ * *item*
+ * item
+
+[[ikiwiki/wikilink]]
+
+---
+
+[[Texinfo]] example.
+
+---
+
+UTF-8 testing: © Queensrÿche ¿ Ø ß ®
diff --git a/sandbox/subsandbox.mdwn b/sandbox/subsandbox.mdwn
new file mode 100644
index 00000000..3e5ada72
--- /dev/null
+++ b/sandbox/subsandbox.mdwn
@@ -0,0 +1 @@
+Not much is going on here. \ No newline at end of file
diff --git a/sandbox/texinfo.texi b/sandbox/texinfo.texi
new file mode 100644
index 00000000..39bbdcf0
--- /dev/null
+++ b/sandbox/texinfo.texi
@@ -0,0 +1,61 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename sample.info
+@settitle Sample Manual 1.0
+@c %**end of header
+
+@copying
+This is a short example of a complete Texinfo file.
+
+Copyright @copyright{} 2004 Free Software Foundation, Inc.
+@end copying
+
+@titlepage
+@title Sample Title
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@c Output the table of the contents at the beginning.
+@contents
+
+@ifnottex
+@node Top
+@top GNU Sample
+
+@insertcopying
+@end ifnottex
+
+@menu
+* First Chapter:: The first chapter is the
+ only chapter in this sample.
+* Index:: Complete index.
+@end menu
+
+
+@node First Chapter
+@chapter First Chapter
+
+@cindex chapter, first
+
+This is the first chapter.
+@cindex index entry, another
+
+Here is a numbered list.
+
+@enumerate
+@item
+This is the first item.
+
+@item
+This is the second item.
+@end enumerate
+
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@bye
diff --git a/security.mdwn b/security.mdwn
new file mode 100644
index 00000000..0e22df00
--- /dev/null
+++ b/security.mdwn
@@ -0,0 +1,60 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Alan Karp [identifies][1] 11 security questions:
+
+ [1]: http://www.eros-os.org/pipermail/cap-talk/2007-December/009460.html
+
+ * Authentication Who am I talking to?
+ * Authorization What should I be able to do?
+ * Audit Who did that?
+ * Access control Should this request be honored?
+
+ * Non-repudiation Can I pretend I never said that?
+ * Confidentiality Can others see what I'm seeing?
+ * Privacy Can others see that I'm seeing it?
+ * Integrity Can this data be changed?
+ * Anonymity Can others find out who I am?
+
+ * Denial of service Can I be assured of access?
+ * Physical security Who can touch it?
+
+Mark Miller [proposes][2] some ways to think about security relationships:
+
+ [2]: http://www.eros-os.org/pipermail/cap-talk/2008-March/010615.html
+
+A way to talk about security relationships
+
+Permissions channels (necessarily overt in a sensible system) are phisical:
+
+ * Alice gives Bob a car or a car key.
+
+Online overt information channels are visual:
+
+ * Bob can see Carol. Bob can see Carol's car.
+ * (Potential, transitive) overt connectivity is line of sight.
+ * Lack of overt connectivity (including revocation) is occlusion.
+ * Alice tells the Caretaker to turn opaque, blocking Bob's view of Carol.
+
+Offline overt channels are visual but indirect:
+
+ * Bob can see that Kilroy was here.
+
+Online non-overt channels (both covert & side) are auditory:
+
+ * Bob can hear Carol (e.g., hear Carol banging on the wall)
+ * Alice tries to silence (or mute) Carol
+ * Alice deafens Bob (or creates a deaf Bob)
+ * In order for Bob to hear Carol's wall banging, Bob and Carol,
+ must be awake at the same time
+
+Offline non-overt channels are olfactory:
+
+ * Bob can smell that Kilroy was here, even if Kilroy is asleep or dead.
diff --git a/set_mtimes b/set_mtimes
new file mode 100755
index 00000000..7157e7f5
--- /dev/null
+++ b/set_mtimes
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# Set the checked-out files' mtimes according to their last Git revision.
+
+# Written by Thomas Schwinge <tschwinge@gnu.org>
+
+trap '
+ if [ x"$tmp_dir" = x ]; then :; else
+ rm -rf -- "$tmp_dir"
+ fi
+' EXIT &&
+
+# TODO: handle arguments meaning to only process a subset (directories / files)
+# of the repository.
+if [ x"$#" = x0 ]; then :; else
+ echo >&2 No command line arguments expected.
+ exit 1
+fi &&
+
+tmp_dir=$(mktemp -d) &&
+
+tmp_ignore=$tmp_dir/ignore &&
+# TODO: have to add more flags?
+git ls-files \
+ > "$tmp_ignore" \
+ -d -m &&
+while read file; do
+ echo >&2 "*** WARNING: file <$file> locally changed or deleted, not touching"
+done < "$tmp_ignore" &&
+
+tmp_known=$tmp_dir/known &&
+git ls-files \
+ > "$tmp_known" \
+ -c &&
+
+tmp_consider=$tmp_dir/consider &&
+grep \
+ < "$tmp_known" \
+ > "$tmp_consider" \
+ -f "$tmp_ignore" -x -v &&
+
+while read file; do
+ # TODO: use %ci? TODO: can we optimize this to not have to invoke git log
+ # individually for every single file?
+ date_git=$(git log -1 --pretty=format:%ai -- "$file") &&
+ date_git=$(date --rfc-3339=ns -d "$date_git") &&
+ date_file=$(date --rfc-3339=ns -r "$file") &&
+ if [ x"$date_git" = x"$date_file" ]; then :; else
+ echo >&2 "*** INFO: file $file: mtime <$date_file> -> <$date_git>"
+ touch -m -d "$date_git" "$file"
+ fi \
+ || {
+ echo >&2 "*** ERROR: file <$file>, date_git <$date_git>, date_file <$date_file>"
+ exit 1
+ }
+done < "$tmp_consider"
diff --git a/sfi.mdwn b/sfi.mdwn
new file mode 100644
index 00000000..4b57d7c6
--- /dev/null
+++ b/sfi.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+SFI stands for Software-Based Fault Isolation. SFI is an [[isolation]]
+technique described by Wahbe et al. in their 1993 paper [Effcient
+Software-Based Fault Isolation](http://citeseer.ist.psu.edu/wahbe93efficient.html).
+Instead of running code is a separate process, untrusted code
+is loaded into into the host's address space, part of the address
+space is reserved to the application and referred to as its fault
+domain, and the code is rewritten such that it cannot modify or jump
+to addresses outside of its fault domain.
diff --git a/shortcuts.mdwn b/shortcuts.mdwn
new file mode 100644
index 00000000..bd4a7ee3
--- /dev/null
+++ b/shortcuts.mdwn
@@ -0,0 +1,85 @@
+[[!if test="enabled(shortcut)"
+ then="This wiki has shortcuts **enabled**."
+ else="This wiki has shortcuts **disabled**."]]
+
+Some examples of using shortcuts include:
+
+ \[[!google foo]]
+ \[[!wikipedia War_of_1812]]
+ \[[!debbug 12345]]
+ Check the \[[!cia ikiwiki desc="CIA page for %s"]].
+
+This page controls what shortcut links the wiki supports.
+
+* [[!shortcut name=google url="http://www.google.com/search?q=%s"]]
+* [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
+* [[!shortcut name=gmap url="http://maps.google.com/maps?q=%s"]]
+* [[!shortcut name=gmsg url="http://groups.google.com/groups?selm=%s"]]
+* [[!shortcut name=wikipedia url="http://en.wikipedia.org/wiki/%s"]]
+* [[!shortcut name=wikitravel url="http://wikitravel.org/en/%s"]]
+* [[!shortcut name=wiktionary url="http://en.wiktionary.org/wiki/%s"]]
+* [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
+* [[!shortcut name=deblist url="http://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
+* [[!shortcut name=debpkg url="http://packages.debian.org/%s"]]
+* [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]]
+* [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
+* [[!shortcut name=debmsg url="http://lists.debian.org/msgid-search/%s"]]
+* [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
+* [[!shortcut name=debss url="http://snapshot.debian.net/package/%s"]]
+ * Usage: `\[[!debss package]]`, `\[[!debss package#version]]`, or `\[[!debss package/version]]`. See http://snapshot.debian.net for details.
+* [[!shortcut name=debwiki url="http://wiki.debian.org/%s"]]
+* [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
+* [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
+* [[!shortcut name=gnomebug url="http://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
+* [[!shortcut name=linuxbug url="http://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
+* [[!shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
+* [[!shortcut name=gnulist url="http://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
+* [[!shortcut name=marcmsg url="http://marc.info/?i=%s"]]
+* [[!shortcut name=marclist url="http://marc.info/?l=%s"]]
+* [[!shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
+* [[!shortcut name=gmanemsg url="http://mid.gmane.org/%s"]]
+* [[!shortcut name=cpan url="http://search.cpan.org/search?mode=dist&query=%s"]]
+* [[!shortcut name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]
+* [[!shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
+* [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
+* [[!shortcut name=ljuser url="http://%s.livejournal.com/"]]
+* [[!shortcut name=rfc url="http://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
+* [[!shortcut name=c2 url="http://c2.com/cgi/wiki?%s"]]
+* [[!shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
+* [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
+* [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
+* [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
+* [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
+* [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
+* [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
+* [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
+* [[!shortcut name=cve url="http://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
+* [[!shortcut name=cia url="http://cia.vc/stats/project/%s"]]
+* [[!shortcut name=ciauser url="http://cia.vc/stats/user/%s"]]
+* [[!shortcut name=flickr url="http://www.flickr.com/photos/%s"]]
+* [[!shortcut name=man url="http://linux.die.net/man/%s"]]
+* [[!shortcut name=ohloh url="http://www.ohloh.net/projects/%s"]]
+
+To add a new shortcut, use the `shortcut`
+[[ikiwiki/directive]]. In the url, "%s" is replaced with the
+text passed to the named shortcut, after [[!wikipedia url_encoding]]
+it, and '%S' is replaced with the raw, non-encoded text. The optional
+`desc` parameter controls the description of the link.
+
+Remember that the `name` you give the shortcut will become a new
+[[ikiwiki/directive]]. Avoid using a `name` that conflicts
+with an existing directive. These directives also accept a `desc`
+parameter that will override the one provided at definition time.
+
+If you come up with a shortcut that you think others might find useful,
+consider contributing it to the [shortcuts page on the ikiwiki
+wiki](http://ikiwiki.info/shortcuts/), so that future versions of
+ikiwiki will include your shortcut in the standard underlay.
+
+
+# Local stuff
+
+* [[!shortcut name=source_gnumach-1-branch url="http://cvs.savannah.gnu.org/viewvc/gnumach/%S?view=log&root=hurd&pathrev=gnumach-1-branch"]]
+* [[!shortcut name=GNU_Savannah_bug url="http://savannah.gnu.org/bugs/?%s" desc="GNU Savannah bug #%s"]]
+* [[!shortcut name=GNU_Savannah_patch url="http://savannah.gnu.org/patch/?%s" desc="GNU Savannah patch #%s"]]
+* [[!shortcut name=GNU_Savannah_task url="http://savannah.gnu.org/task/?%s" desc="GNU Savannah task #%s"]]
diff --git a/sidebar.mdwn b/sidebar.mdwn
new file mode 100644
index 00000000..d283436b
--- /dev/null
+++ b/sidebar.mdwn
@@ -0,0 +1,39 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+Welcome to... [[!img /logo/boxes-redrawn.png link=/logo]] ... the GNU Hurd!
+
+ * **[[Home|/index]]**
+ * **[[Community]]**
+ * **[[Documentation]]**
+ * *[[FAQ]]*
+ * **[[Getting Help]]**
+ * **[[Open Issues]]**
+
+---
+
+ * **[[Hurd]]**[[!if test="destpage(hurd*)" then="
+ * *[[Hurd/Documentation]]*
+ * *[[hurd/Running]]*"]]
+ * **[[microkernel/Mach]]**[[!if test="destpage(microkernel/mach*)" then="
+ * *[[microkernel/mach/Documentation]]*
+ * *[[GNU Mach|microkernel/mach/gnumach]]*"]]
+ * *[[microkernel/mach/MIG]]*[[!if test="destpage(microkernel/mach/mig*)" then="
+ * [[microkernel/mach/mig/GNU MIG]]"]]
+
+---
+
+ * **[[Debian GNU/Hurd|hurd/running/debian]]**
+ * **[[GNU System|hurd/running/gnu]]**
+
+---
+
+ * **[[Hurd NG|hurd/ng]]**
diff --git a/source_repositories.mdwn b/source_repositories.mdwn
new file mode 100644
index 00000000..41ca37be
--- /dev/null
+++ b/source_repositories.mdwn
@@ -0,0 +1,204 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+[[!toc levels=3]]
+
+# Git repositories on Savannah
+
+<http://git.savannah.gnu.org/cgit/hurd/>
+
+ * [[glibc]]
+ * [[incubator]]
+ * ...
+
+## Branches
+
+Members of the [[Hurd Savannah group|rules/savannah group]] are allowed to create
+branches without formal permission:
+
+ * named `SAVANNAH_LOGIN/BASE_BRANCH[-TOPIC]` for private general-purpose or
+ topic branches, respectively, or
+ * named `BASE_BRANCH-TOPIC` for public topic branches basing on
+ `BASE_BRANCH`.
+
+`TOPIC` shall be a suitable tag describing the branch's main concern. These
+tags can be applied recursively (`TOPIC-SUBTOPIC-SUBSUBTOPIC`).
+
+*private* vs. *public* does, of course, in this scenario not mean visibility,
+but instead authority: *private* branches are those that the user
+`SAVANNAH_LOGIN` has authority over, whereas *public* branches are open for
+every committer to install changes on. The private branches are those that you
+would typically host on your own machine and publish through your own web
+server, but we offer that you can instead do this from the centralized Savannah
+repository, as a number of people don't have an always-accessible web server
+running on their own machines.
+
+Examples:
+
+ * GNU Mach
+
+ * `master` -- the mainline branch
+ * `master-oskit` -- port to OSKit; branched off of `master` at some point
+ * `master-gdb_stubs` -- add support for GDB stubs; branched off of
+ `master` at some point
+
+ * libpthread
+
+ * `master` -- the mainline branch
+ * `master-viengoos` -- port to Viengoos; branched off of `master` at some
+ point
+ * `master-viengoos-on-bare-metal` -- port to Viengoos running on bare
+ metal; branched off of `master-viengoos` at some point
+
+ * unionfs
+
+ * `master` -- the mainline branch
+ * `master-unionmount` -- develop `unionmount` based on `unionfs`' master
+ branch
+
+To give a concrete example, the latter one was created like this:
+
+ $ git clone --no-checkout ssh://git.savannah.gnu.org/srv/git/hurd/unionfs.git
+ $ cd unionfs/
+ $ git checkout -b master-unionmount origin/master
+ $ ...
+ $ git push master-unionmount
+
+### Merging
+
+Merging between Git branches is trivial, at least as long as no conflicts
+arise.
+
+Due to this, you are encouraged to freely make use of separate branches for
+different working topics, as this really faciliates concentrating on one
+specific working topic.
+
+You are encouraged to regularely merge from the respective mainline branches
+(`BASE_BRANCH`; should be `master` in most cases) into your working branches,
+and ensure that your modifications are still fine in the context of new
+mainline changes.
+
+Merging from working branches into the mainline branches will usually be done
+by one of the project administrators, unless negotiated otherwise. For this to
+happen, the copyright of your changes has to be assigned to the Free Software
+Foundation; read about the
+[[copyright assignment_process|rules/savannah group#copyright_assignment]].
+
+It is explicitly encouraged to *merge* changes from working branches into the
+mainline branches (as opposed to *rebase* them on top), as the former mode
+easily allows to determine the context under which a patch has been developed.
+
+## Tags
+
+Equivalent rules apply.
+
+## Behavior
+
+Try to not introduce spurious, unneeded changes, e.g., whitespace changes.
+
+Adhere to the coding conventions that are already used. These are usually the
+[GNU Coding Standards](http://www.gnu.org/prep/standards/html_node/) for stuff
+written by ourselves, including new files, of course.
+
+GNU Mach code is largely based on external code. Don't GNU-ify it, as this
+would make merging external patches unnecessarily difficult.
+
+### Commit messages
+
+We no longer maintain parallel `ChangeLog` and commit messages. When needed,
+the `ChangeLog` files can be created automatically from the commit messages.
+
+Commit messages have this mandatory format:
+
+ One-line summary.
+ Blank line.
+ ChangeLog-like list of changes, but without leading tabs.
+
+The header line of each former `ChangeLog` snippet (DATE NAME EMAIL) is no
+longer to be included in the commit message, and instead the author and
+committer of a change, together with the dates, will be maintained natively by
+Git.
+
+Example:
+
+ commit 3054666a46e0142cacef895c13edb4391435c722
+ Author: Some One <someone@example.com>
+ AuthorDate: Thu Jun 11 15:59:55 2005 +0000
+ Commit: Some One <someone@example.com>
+ CommitDate: Thu Jun 11 15:59:55 2005 +0000
+
+ Frobnicate the foo.
+
+ * frob.c (foo): Frob it.
+ * oldfoo.c [OLD] (oldfoo): Likewise.
+ [OLD_OLD_FOO] (oofoo): Permute every second word with itself, and
+ beginning with the tenth line, every third one also. Pure
+ nonsense.
+
+Read about how to write [GNU-style `ChangeLog`
+messages](http://www.gnu.org/prep/standards/html_node/Change-Logs.html).
+
+Don't waste time writing exhaustive `ChangeLog`-like commit messages for, e.g.,
+debugging stuff that will be removed again before merging your development
+branch into the mainline. Sometimes the one-line summary might already
+suffice. But please do write something.
+
+### Behavior on *private* branches
+
+Even though you are said to be the owner of branches tagged with your
+`SAVANNAH_LOGIN`, it is generally nevertheless good to not do history-rewriting
+stuff and the like (`git rebase` and friends), as others may in turn be basing
+their work on your private branches.
+
+We could establish a branch-tagging policy for branches that others should
+expect their history possibly to be rewritten. This may be useful for branches
+that are only meant for aggregating the changes of (several) development
+branches, like an imaginary `master-proposed_for_general_testing` branch.
+
+
+# Git repositories on flubber
+
+[[flubber|public hurd boxen]] is
+[[configured|public_hurd_boxen/installation/flubber]] in a way so that users
+can publish Git repositories from their home directories. The only thing to do
+is to put an empty `.git/git-daemon-export-ok` (cf. [*git daemon*'s manual
+page](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html)) into
+the repository, or just `git-daemon-export-ok` for
+[*bare*](http://www.kernel.org/pub/software/scm/git/docs/git-init.html)
+repositories.
+
+For example, the [[contributing/web pages]] repository is made available like
+this: `~hurd-web/hurd-web` is a bare repository; there is an empty
+`~hurd-web/hurd-web/git-daemon-export-ok` file. Users can clone the repository
+like this:
+
+ $ git clone git://flubber.bddebian.com/~hurd-web/hurd-web
+
+Another example, [[Thomas Schwinge|tschwinge]] has a checkout of
+[[hurd/libpthread]] in `~tschwinge/tmp/hurd/libpthread/`, the
+`~tschwinge/tmp/hurd/libpthread/.git/git-daemon-export-ok` file exists. If you
+really need to, you can clone it like this:
+
+ $ git clone git://flubber.bddebian.com/~tschwinge/tmp/hurd/libpthread
+
+## List of Interesting Repositories
+
+ * web pages: git://flubber.bddebian.com/~hurd-web/hurd-web
+
+
+# Debian Git repositories
+
+IRC, #hurd, 2010-07-31
+
+ <tschwinge> git-buildpackage is to be used to build these new Debian repositories, I guess?
+ <youpi> well, the Vcs-Git control header is about everything people need to know, I believe :)
+ <youpi> git-buildpackage is just mostly an easy way to build the .orig.tar.Gz from the tag
+ <youpi> http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
diff --git a/source_repositories/glibc.mdwn b/source_repositories/glibc.mdwn
new file mode 100644
index 00000000..fabd7cab
--- /dev/null
+++ b/source_repositories/glibc.mdwn
@@ -0,0 +1,93 @@
+[[!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]]."]]"""]]
+
+There is a repository for maintenance of [[/glibc]] for the Hurd's needs:
+<http://git.savannah.gnu.org/cgit/hurd/glibc.git/>.
+
+This repository uses [[TopGit]].
+
+*A plan for the Hurd-specific glibc repository*, thread
+[begins](http://lists.gnu.org/archive/html/bug-hurd/2010-01/msg00062.html),
+[continues](http://lists.gnu.org/archive/html/bug-hurd/2010-02/msg00021.html).
+
+
+# Usage
+
+## Clone
+
+ $ git init
+ $ git remote add savannah git://git.sv.gnu.org/hurd/glibc.git
+ $ git remote update
+ $ tg remote --populate savannah
+ tg: Remote savannah can now follow TopGit topic branches.
+ tg: Populating local topic branches from remote 'savannah'...
+ From git://git.sv.gnu.org/hurd/glibc
+ * [new branch] refs/top-bases/t/_dl_random -> savannah/top-bases/t/_dl_random
+ * [new branch] refs/top-bases/t/accept4 -> savannah/top-bases/t/accept4
+ [...]
+ * [new branch] refs/top-bases/tschwinge/Roger_Whittaker -> savannah/top-bases/tschwinge/Roger_Whittaker
+ tg: Adding branch t/_dl_random...
+ tg: Adding branch t/accept4...
+ [...]
+ tg: Adding branch tschwinge/Roger_Whittaker...
+ tg: The remote 'savannah' is now the default source of topic branches.
+
+## Use tschwinge's Working Branch
+
+ $ git checkout tschwinge/Roger_Whittaker
+
+## Integrate a New Branch
+
+A new (TopGit) branch has been published upstream:
+
+ $ tg remote --populate savannah
+ tg: Remote savannah can now follow TopGit topic branches.
+ tg: Populating local topic branches from remote 'savannah'...
+ remote: Counting objects: 28, done.
+ remote: Compressing objects: 100% (19/19), done.
+ remote: Total 20 (delta 13), reused 1 (delta 0)
+ Unpacking objects: 100% (20/20), done.
+ From git://git.sv.gnu.org/hurd/glibc
+ * [new branch] t/unwind-resume.c -> savannah/t/unwind-resume.c
+ * [new branch] refs/top-bases/t/unwind-resume.c -> savannah/top-bases/t/unwind-resume.c
+ tg: Skipping branch t/____longjmp_chk: Already exists
+ [...]
+ tg: Skipping branch t/tlsdesc.sym: Already exists
+ tg: Adding branch t/unwind-resume.c...
+ tg: Skipping branch t/verify.h: Already exists
+ tg: Skipping branch tschwinge/Roger_Whittaker: Already exists
+ tg: The remote 'savannah' is now the default source of topic branches.
+
+Make `tschwinge/Roger_Whittaker` (the current branch) depend on it:
+
+ $ tg depend add t/unwind-resume.c
+ [tschwinge/Roger_Whittaker 63f11ff] New TopGit dependency: t/unwind-resume.c
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ tg: Updating base with t/unwind-resume.c changes...
+ Auto-merging .topdeps
+ Auto-merging .topmsg
+ Merge made by recursive.
+ nptl/sysdeps/pthread/Makefile | 12 ++----------
+ sysdeps/gnu/Makefile | 18 ++++++++++++++++--
+ .../pthread => sysdeps/gnu}/rt-unwind-resume.c | 0
+ .../pthread => sysdeps/gnu}/unwind-resume.c | 4 ++--
+ 4 files changed, 20 insertions(+), 14 deletions(-)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)
+ tg: The tschwinge/Roger_Whittaker head is up-to-date wrt. its remote branch.
+ tg: Updating tschwinge/Roger_Whittaker against new base...
+ Merge made by recursive.
+ nptl/sysdeps/pthread/Makefile | 12 ++----------
+ sysdeps/gnu/Makefile | 18 ++++++++++++++++--
+ .../pthread => sysdeps/gnu}/rt-unwind-resume.c | 0
+ .../pthread => sysdeps/gnu}/unwind-resume.c | 4 ++--
+ 4 files changed, 20 insertions(+), 14 deletions(-)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/rt-unwind-resume.c (100%)
+ rename {nptl/sysdeps/pthread => sysdeps/gnu}/unwind-resume.c (93%)
diff --git a/source_repositories/incubator.mdwn b/source_repositories/incubator.mdwn
new file mode 100644
index 00000000..51f64c17
--- /dev/null
+++ b/source_repositories/incubator.mdwn
@@ -0,0 +1,12 @@
+[[!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]]."]]"""]]
+
+There is a repository for *this*, and *that*, and *everything* -- the
+*incubator*: <http://git.savannah.gnu.org/cgit/hurd/incubator.git/>.
diff --git a/tag.mdwn b/tag.mdwn
new file mode 100644
index 00000000..590d5d3a
--- /dev/null
+++ b/tag.mdwn
@@ -0,0 +1,40 @@
+[[!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]]."]]"""]]
+
+The following [[!iki ikiwiki/directive/tag desc=tags]] are actively used at the
+moment:
+
+[[!map
+pages="tag/* and !tag/*/*"
+show=title]]
+
+Most of them should be self-explanatory.
+
+ * *fixed_in_debian*
+
+ This tag is used to tag items that have been fixed in the [[Debian
+ GNU/Hurd|hurd/running/debian]] distribution, but not yet in the upstream
+ sources.
+
+ * *open_issue_porting*
+
+ A list of open issues in porting software to run on GNU/Hurd systems. This
+ list also includes [[hurd/toolchain]]-level items, items that are either
+ already solved in [[Debian GNU/Hurd|hurd/running/debian]] systems (tagged
+ *fixed_in_debian*) or being worked around, so if you're out for working on
+ application-level porting issues, then perusing through the list of
+ [[Debian packages that need porting|hurd/running/debian/porting]] may be
+ better.
+
+ * *stable_URL*
+
+ These pages are tagged as having a *stable URL*. That is, they're linked
+ to from external pages, and their locations should not be changed
+ needlessly.
diff --git a/tag/fixed_in_debian.mdwn b/tag/fixed_in_debian.mdwn
new file mode 100644
index 00000000..b8aeddc8
--- /dev/null
+++ b/tag/fixed_in_debian.mdwn
@@ -0,0 +1,15 @@
+[[!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="fixed_in_debian"]]
+
+[[!map
+pages="tagged(fixed_in_debian)"
+show=title]]
diff --git a/tag/open_issue_documentation.mdwn b/tag/open_issue_documentation.mdwn
new file mode 100644
index 00000000..eb7f87a2
--- /dev/null
+++ b/tag/open_issue_documentation.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_documentation"]]
+
+[[!map
+pages="tagged(open_issue_documentation)"
+show=title]]
diff --git a/tag/open_issue_gcc.mdwn b/tag/open_issue_gcc.mdwn
new file mode 100644
index 00000000..b880d152
--- /dev/null
+++ b/tag/open_issue_gcc.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_gcc"]]
+
+[[!map
+pages="tagged(open_issue_gcc)"
+show=title]]
diff --git a/tag/open_issue_gdb.mdwn b/tag/open_issue_gdb.mdwn
new file mode 100644
index 00000000..02363dd5
--- /dev/null
+++ b/tag/open_issue_gdb.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_gdb"]]
+
+[[!map
+pages="tagged(open_issue_gdb)"
+show=title]]
diff --git a/tag/open_issue_glibc.mdwn b/tag/open_issue_glibc.mdwn
new file mode 100644
index 00000000..e523637a
--- /dev/null
+++ b/tag/open_issue_glibc.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_glibc"]]
+
+[[!map
+pages="tagged(open_issue_glibc)"
+show=title]]
diff --git a/tag/open_issue_gnumach.mdwn b/tag/open_issue_gnumach.mdwn
new file mode 100644
index 00000000..22e49393
--- /dev/null
+++ b/tag/open_issue_gnumach.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_gnumach"]]
+
+[[!map
+pages="tagged(open_issue_gnumach)"
+show=title]]
diff --git a/tag/open_issue_hurd.mdwn b/tag/open_issue_hurd.mdwn
new file mode 100644
index 00000000..d5505f70
--- /dev/null
+++ b/tag/open_issue_hurd.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_hurd"]]
+
+[[!map
+pages="tagged(open_issue_hurd)"
+show=title]]
diff --git a/tag/open_issue_libpthread.mdwn b/tag/open_issue_libpthread.mdwn
new file mode 100644
index 00000000..b4b7723e
--- /dev/null
+++ b/tag/open_issue_libpthread.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_libpthread"]]
+
+[[!map
+pages="tagged(open_issue_libpthread)"
+show=title]]
diff --git a/tag/open_issue_mig.mdwn b/tag/open_issue_mig.mdwn
new file mode 100644
index 00000000..79ef3acb
--- /dev/null
+++ b/tag/open_issue_mig.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_mig"]]
+
+[[!map
+pages="tagged(open_issue_mig)"
+show=title]]
diff --git a/tag/open_issue_porting.mdwn b/tag/open_issue_porting.mdwn
new file mode 100644
index 00000000..0bc33c0d
--- /dev/null
+++ b/tag/open_issue_porting.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_porting"]]
+
+[[!map
+pages="tagged(open_issue_porting)"
+show=title]]
diff --git a/tag/open_issue_viengoos.mdwn b/tag/open_issue_viengoos.mdwn
new file mode 100644
index 00000000..6f564e06
--- /dev/null
+++ b/tag/open_issue_viengoos.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_viengoos"]]
+
+[[!map
+pages="tagged(open_issue_viengoos)"
+show=title]]
diff --git a/tag/open_issue_xen.mdwn b/tag/open_issue_xen.mdwn
new file mode 100644
index 00000000..fbe40652
--- /dev/null
+++ b/tag/open_issue_xen.mdwn
@@ -0,0 +1,15 @@
+[[!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="open_issue_xen"]]
+
+[[!map
+pages="tagged(open_issue_xen)"
+show=title]]
diff --git a/tag/stable_URL.mdwn b/tag/stable_URL.mdwn
new file mode 100644
index 00000000..8b25517e
--- /dev/null
+++ b/tag/stable_URL.mdwn
@@ -0,0 +1,15 @@
+[[!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="stable_URL"]]
+
+[[!map
+pages="tagged(stable_URL)"
+show=title]]
diff --git a/tcb.mdwn b/tcb.mdwn
new file mode 100644
index 00000000..f6018dae
--- /dev/null
+++ b/tcb.mdwn
@@ -0,0 +1,17 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+TCB stands for trusted computed base. Unqualified, the trusted
+computing base referrers to the set of components programs
+must [[trust]] to function correctly. On multiserver systems,
+it is sometimes more appropriate to speak of the trusted computing
+base of a particular program: as components are much less connected,
+one program's trusted computing base may be significantly different
+from another's.
diff --git a/topgit.mdwn b/topgit.mdwn
new file mode 100644
index 00000000..55ff5f54
--- /dev/null
+++ b/topgit.mdwn
@@ -0,0 +1,23 @@
+[[!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="TopGit"]]
+
+<http://repo.or.cz/w/topgit.git>
+
+ * David Bremner: [*A topgit
+ testimonial*](http://www.cs.unb.ca/~bremner/blog/posts/topgit_testimonial/),
+ [*So your topgit patch was merged
+ upstream*](http://www.cs.unb.ca/~bremner/blog/posts/so_your_topgit_patch_was_merged/),
+ [more](http://www.cs.unb.ca/~bremner/tags/topgit/).
+ * Pete Hopkins: [*topgit Means Never Having to Wait for
+ Reviews*](http://blog.grogmaster.com/2008/12/topgit-means-never-having-to-wait-for.html)
+ * Christoph Egger: [*Git repository's and
+ topgit*](http://lists.debian.org/debian-devel-games/2008/11/msg00109.html)
diff --git a/trackers.mdwn b/trackers.mdwn
new file mode 100644
index 00000000..c8fe913e
--- /dev/null
+++ b/trackers.mdwn
@@ -0,0 +1,32 @@
+[[!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]]."]]"""]]
+
+A number of different trackers are available at the [GNU Savannah Hurd
+Group](http://savannah.gnu.org/projects/hurd).
+
+
+# Bugs
+
+<http://savannah.gnu.org/bugs/?group=hurd>
+
+
+# Tasks
+
+<http://savannah.gnu.org/task/?group=hurd>
+
+
+# Patches
+
+<http://savannah.gnu.org/patch/?group=hurd>
+
+
+# Related
+
+ * [[Contact_us]].
diff --git a/trust.mdwn b/trust.mdwn
new file mode 100644
index 00000000..2bf0a9ae
--- /dev/null
+++ b/trust.mdwn
@@ -0,0 +1,25 @@
+[[!meta copyright="Copyright © 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 word trust is used in a number of contexts with different technical meanings.
+Sometimes it is used to confuse, for instance trusted computing is rarely about
+providing users reason to trust that software they are running does not violate
+their intents but about providing a mechanism for a third party to verify
+that software that runs on a remote computer obeys him or her rather than the
+user.
+
+When we say that a program trusts another, we mean that [[correctness]] of the
+former depends on the cooperation of the latter. For instance, when a user runs
+ssh, the user's intention is that all communication is encrypted. In this case,
+the user trusts that the ssh binary respects this intent. In [[Unix]], a program's
+[[tcb]] consists not only of the kernel (and all the drivers,
+file systems and protocol stacks that it contains) but every program running
+under the same UID; it is impossible to protect against
+[[DestructiveInterference]] from programs running under the same UID.
diff --git a/unix.mdwn b/unix.mdwn
new file mode 100644
index 00000000..a927eb64
--- /dev/null
+++ b/unix.mdwn
@@ -0,0 +1,17 @@
+[[!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]]."]]"""]]
+
+# External
+
+ * Wikipedia page about [[!wikipedia UNIX]].
+
+ * [*Standardizing
+ UNIX*](http://www.informit.com/articles/printerfriendly.aspx?p=691503), an
+ article by David Chisnall.
diff --git a/unsorted/AwarenessOfWhatHappens.mdwn b/unsorted/AwarenessOfWhatHappens.mdwn
new file mode 100644
index 00000000..4ba78999
--- /dev/null
+++ b/unsorted/AwarenessOfWhatHappens.mdwn
@@ -0,0 +1,7 @@
+FROM: <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html>
+
+The user must know what the operations are he can perform in the operating system. He must also know about their consequences and relevant side effects, and what the possible results are. At any point where the system can not make the right decision automatically, the user must have the ability to influence the path chosen.
+
+_Awareness means that the user knows what happens._
+
+-- [[TomBachmann]] - 29 Apr 2006
diff --git a/unsorted/BochsEmulator.mdwn b/unsorted/BochsEmulator.mdwn
new file mode 100644
index 00000000..8c9f5cfe
--- /dev/null
+++ b/unsorted/BochsEmulator.mdwn
@@ -0,0 +1,20 @@
+# <a name="Bochs_IA_32_x86_64_Emulator"> Bochs IA-32/x86-64 Emulator </a>
+
+[Bochs](http://bochs.sf.net) is a very cool emulator, similar to Plex86 and the commercial product [[VmWare]] which virtualizes the PC hardware. However, Bochs does not virtualize, it _emulates_ the IA32 on the instruction level. It's currently the best alternative if you want to take the Hurd for a quick test drive without needing to repartition your hard drive or read complicated installation manuals.
+
+* [Debian package](http://packages.qa.debian.org/bochs)
+
+Note that Bochs is quite slow, so installing GNU inside its virtual machine will probably take you a lot of time. There are several pre-installed bochs images available.
+
+## <a name="Images"> Images </a>
+
+* The Bochs project hosts a [preinstalled GNU image](http://sourceforge.net/project/showfiles.php?group_id=12580). It has network, Xfree86 and the console server installed and configured (X has some problems though). If you want to try it out, please read the [[BochsFAQ]] for setting up a GNU guest first.
+* [Another 2GB image](http://www.gnuhurd.org/) distributed in rar format without apologies.
+* Bee has a [bochs version](http://bee.es.gnu.org/) of it's distribution
+
+## <a name="Articles"> Articles </a>
+
+* [Bruno Bonfils wrote an article.](http://www.asyd.net/docs/hurd/bochs-hurd.html)
+* [Julien PUYDT wrote another article on setting up Hurd in Bochs.](http://lists.debian.org/debian-hurd/2003/debian-hurd-200303/msg00065.html)
+ * [Lucas Nussbaum added some details.](http://lists.debian.org/debian-hurd/2004/debian-hurd-200401/msg00078.html)
+* [Marcus Brinkmann shares his experience in running GNU/Hurd on Bochs](http://lists.debian.org/debian-hurd/2004/debian-hurd-200402/msg00057.html). He [mentions qemu](http://lists.debian.org/debian-hurd/2004/debian-hurd-200402/msg00059.html) too, and [PUYDT Julien suggests using /dev/loop0.](http://lists.debian.org/debian-hurd/2004/debian-hurd-200402/msg00064.html)
diff --git a/unsorted/BochsFAQ.mdwn b/unsorted/BochsFAQ.mdwn
new file mode 100644
index 00000000..474bbed5
--- /dev/null
+++ b/unsorted/BochsFAQ.mdwn
@@ -0,0 +1,83 @@
+# <a name="GNU_pre0_3_J2_for_Bochs_mini_FAQ"> </a> GNU pre0.3-J2 for Bochs mini-FAQ
+
+----
+
+## <a name="What_do_you_mean_GNU_the_GNU_Hur"> </a> What do you mean "GNU", the GNU Hurd?
+
+Yes and no. See <http://www.gnu.org/software/hurd/faq.en.html#q1-2>
+
+## <a name="Where_are_"> Where are...? </a>
+
+Latest version of this FAQ: [[Distrib/BochsFAQ]]
+
+Latest GNU image for Bochs: [http://sourceforge.net/project/showfiles.php?group\_id=12580](http://sourceforge.net/project/showfiles.php?group_id=12580)
+
+## <a name="Disk_line_for_bochsrc_"> Disk line for .bochsrc? </a>
+
+for Bochs 2.0 or later:
+
+ ata0-master: type=disk, path="gnu.img", cylinders=1024, heads=16, spt=63
+
+for older versions:
+
+ diskc: file="gnu.img", cyl=1024, heads=16, spt=63
+
+## <a name="My_PATH_and_prompt_are_weird_and"> </a> My PATH and prompt are weird, and X clients fail
+
+The profile is not loaded properly, do it manually with `". /etc/profile"`
+
+## <a name="How_can_i_change_terminals_"> How can i change terminals? </a>
+
+The Mach default console lack have multi-terminal capability, and up 'til recently we recommended the "screen" program. However, the new console server is installed and configured with 6 terminals. You can launch it with the ncursesw driver:
+
+ console -d ncursesw /dev/vcs
+
+Switching is done via `C-w 1` (or 2, 3, ...). you can exit it with `C-w x`
+
+See the original posting to debian-hurd, <http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html>, or [[Hurd/HurdConsole]] for more details.
+
+**_IMPORTANT:_** Note that X doesn't work well while running the console server.
+
+## <a name="Does_X_work_"> Does X work? </a>
+
+Somewhat:
+
+* DRI and speedo modules won't load so they're deactivated.
+* The VESA driver also failed so VGA is being used.
+* more than 8 bpp won't work.
+* for some weird reason the mouse server in `/dev/mouse` doesn't respond, so the mouse is inoperative.
+* GNU is still an unstable OS which makes X crash often on it.
+
+To reconfigure it, see Distrib.Xfree86, or:
+
+ dpkg-reconfigure xserver-xfree86
+
+then apply a patch to fix the mouse section:
+
+ patch /etc/X11/XF86config-4 /root/XF86Config-4.diff
+
+Installed clients are blackbox window manager and rxvt terminal emulator.
+
+## <a name="Is_network_configured_"> Is network configured? </a>
+
+Yes, to change parameters use:
+
+ settrans -apfg /servers/socket/2 /hurd/pfinet [options to pfinet]
+
+See `/hurd/pfinet --help` for details, or the [[Hurd/GetNetworkRunning]] topic.
+
+## <a name="How_do_i_mount_stuff_"> How do i mount stuff? </a>
+
+ settrans -afg <node> /hurd/<translator> <options to translator>
+
+Where `node` is your mount point and `translator` is the filesystem server. Add `-p` to settrans if you want it to stay over reboots (fstab-like)
+
+## <a name="Anything_neat_to_try_"> Anything neat to try? </a>
+
+Yes! instead of `"su"` use `"sush"`, a more flexible version that manages multiple UIDs.
+
+You can also play with userspace filesystems for NFS and FTP in `/hurd/{nfs,ftpfs}` that you can run as user, debug with GDB, etc.
+
+## <a name="More_questions_"> More questions? </a>
+
+Read the FAQ (<http://www.gnu.org/software/hurd/faq.en.html>) for a general overview on the GNU system.
diff --git a/unsorted/BuildingHurdLiveCD.mdwn b/unsorted/BuildingHurdLiveCD.mdwn
new file mode 100644
index 00000000..e2082268
--- /dev/null
+++ b/unsorted/BuildingHurdLiveCD.mdwn
@@ -0,0 +1,70 @@
+# <a name="Recipes_for_bootable_GNU_Mach_Hu"> </a> Recipes for bootable GNU Mach/Hurd Live CD
+
+## <a name="Greg_s_recipe"> Greg's recipe </a>
+
+In my attempts to get a bootable CD for the Hurd here's the recipe I followed, your's will be similar. I needed a grub-0.92, with a patch from <http://alpha.polynum.org/misc/>, and version 1.16 of mkbimage (I don't exactly remember where I got that from).
+
+You can grab a copy of it at <http://sleepingsquirrel.org/hurd/hurdcd.iso.gz>, which is a gzipped bootable \*.iso with the copy of the patched grub and the version of mkbimage I used. Here's the recipe I followed (under linux).
+
+ # mkdir ./2.88floppy
+ # mkdir ./isodir
+ # cp grub/* 2.88floppy/boot/grub/
+ # cp grub/* isodir/boot/grub/
+ # cd 2.88floppy
+ # tar -cf ../floppyimg.tar *
+ # cd ..
+ # mkbimage -f floppyimg.tar -t 2.88
+ # cp 2.88.image isodir/
+ # mkisofs -r -b 2.88.image -c boot.catalog -o hurdcd.iso isodir/
+ # cdrecord -v speed=4 dev=0,0,0 -data hurdcd.iso
+
+That was the recipe for using a floppy image. If you use the `-t hd` switch of `mkbimage`, you'll get an ext2fs El-Torito HD emulation image that can be any size (I've got one here 300+ MB). You can then use `root (hd0,0)` in Grub to boot something. Also, invoking `mkbimage` with no parameters will give you some additional help messages.
+
+-- [[Main/GregBuchholz]] - 05 Nov 2003
+
+## <a name="Another_recipe_for_a_bootable_GN"> </a> Another recipe for a bootable GNU CD
+
+[screenshot](http:///mycelium.afraid.org/Screenshot2.png)
+
+### <a name="What_you_ll_need"> What you'll need </a>
+
+* A [stage2\_eltorito](http://mycelium.dyndns.org/stage2_eltorito) from [grub 0.95](http://www.gnu.org/software/grub)
+* A [base system](http://www.update.uu.se/~ams/gnu/gnu-2004-12-04.tar.bz2)
+* [iso9660fs.static](http:///mycelium.dyndns.org/iso9660fs.static) (this link is bought the farm) or just build your own, it should work with CVS
+
+### <a name="HowTo"> HowTo </a>
+
+ # mkdir iso
+ ..(at this point untar or setup base system)
+ # mkdir -p iso/boot/grub
+ # cp iso9660fs.static iso/hurd
+ # cp stage2_eltorito iso/boot/grub
+ ..(edit iso/boot/grub/grub.conf)
+ # mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
+ -boot-load-size 4 -boot-info-table -o livecd.iso iso/
+
+**_Note:_** The following files must **\_NOT\_** be symlinks!
+
+* `/boot/gnumach`
+* `/hurd/iso9660fs.static`
+* `/hurd/exec`
+* `/lib/ld.so.1`
+
+## <a name="Contents_of_grub_conf"> Contents of grub.conf </a>
+
+ timeout 60
+ default 0
+
+ title GNU/Hurd CD
+ #uppermem 523648 #this may need to be set
+ #root (cd)
+ kernel /boot/gnumach root=device:hd2 #set device to your cdrom device
+ module /hurd/iso9660fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+**_Note:_** The `root (cd)` line may prevent some computers from booting the livecd.
+
+-- [[Main/AndrewResch]] - 22 Feb 2005
diff --git a/unsorted/BuildingOskitMach.mdwn b/unsorted/BuildingOskitMach.mdwn
new file mode 100644
index 00000000..9eee80d3
--- /dev/null
+++ b/unsorted/BuildingOskitMach.mdwn
@@ -0,0 +1,183 @@
+## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach
+
+ <h3><a name="Introduction"> Introduction </a></h3> This is a brief "<nop>HowTO build OSKit-Mach" (a.k.a GNUmach 2.0). It covers everything from getting the latest sources of both the <a href="http://www.cs.utah.edu/flux/oskit/" target="_top">OSKit</a> and the GNUmach kernel, down to building and debugging them. <p> To be able to actually make use of your recently checked out CVS version of the GNUMach kernel &amp;amp; c:o you need a GNU system of <a href="ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz" target="_top">gnu-20020816.tar.gz</a> or later. See [[Distrib/TarballNotesHome]] for more info. </p></nop></td>
+
+## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a>
+
+First you need to checkout the relevant sources. It comes in various flavours and the recommended way is to checkout from CVS.
+
+### <a name="The_OSKit_Sources"> </a> The OSKit Sources
+
+**_Note:_** The [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project is the recommended source today of the OSKit. Its CVS tree holds the official sources and all known patches, plus a few others.
+
+**_Official Sources:_**
+
+* St. Patricks day 2002 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz>
+
+* Valentine's day 2001 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20010214.tar.gz>
+
+**_Official Patches:_**
+
+* Download useful [[OskitPatches]] or on the nearest Debian FTP.
+
+**_Savannah CVS:_**
+
+The recommended document for accessing the Savannah OSKit CVS is <http://savannah.gnu.org/cvs?group=oskit>
+
+The following command should get the sources for you:
+
+ $ export CVS_RSH="ssh"
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/oskit co oskit
+
+Note: if you get a message about RSA/DSA keys, please go check it here: <http://savannah.gnu.org/cvs?group=oskit>
+
+### <a name="GNUmach_amp_Mig_Sources"> </a> GNUmach &amp; Mig Sources
+
+The recommended document for accessing the Hurd CVS on Savannah is at <http://savannah.gnu.org/cvs/?group=hurd>
+
+Remember to set up you environment to use 'ssh' for cvs:
+
+ $ export CVS_RSH="ssh"
+
+Note: if you get a message about RSA/DSA keys when using cvs commands, please go check it here: <http://savannah.gnu.org/cvs?group=hurd>
+
+**_Gnu Mach:_**
+
+All development, apart from critical bug fixes, is done on the upcoming 2.0 release (OSKit/Mach). A potentially confusing point is that the code for OSKit/Mach (as opposed to the 1.X release, aka "GNU Mach") is now on the `TRUNK` of the 'gnumach' CVS module. In the past the trunk was 1.X (GNU Mach) and 2.0 (OSKit/Mach) was a branch.
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co gnumach
+
+In case you have been tracking the oskit-branch and want to move to the current `HEAD` branch you can issue the following instead to update your tree.
+
+ $ cd <YOUR MACH DIR>
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd update -Pd -A
+
+Where `<YOUR MACH DIR>` can be `gnumach`, `oskit-mach`, or similar. The `-A` is what moves you from a branch to the default (in this case HEAD), but without forcing a specific tag. `-P` Prunes your local copy from stale directories and `-d` creates new directories for you.
+
+**_The Hurd servers:_**
+
+In case you want to build the Hurd servers as well, you can check them out with:
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co hurd
+
+**_Inteface generator:_**
+
+See the [[microkernel/mach/MIG]] for more information.
+
+Check it out using
+
+ $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co mig
+
+## <a name="Building"> Building </a>
+
+The recommended versions of GCC are
+
+<dl>
+ <dt> For the OSKit</dt>
+ <dd> GCC 2.95.X </dd>
+ <dt> For GNUmach and <nop>MiG</nop></dt>
+ <dd> GCC 3.2 </dd>
+</dl>
+
+### <a name="The_OSKit"> </a> The OSKit
+
+Do _not_ forget to apply all known [[OskitPatches]] before starting the build! This does not apply if you use the OSKit from [Savannah](http://savannah.gnu.org/).
+
+The attached [[ATTACHURLmodulesx86pc]], or [[ATTACHURLmodules-lightx86pc]], is an example setup, your needs may vary but this one works for standard COTS PC's. Now, how to configure and build the OSKit.
+
+ $ cd oskit-20020317/
+ $ mkdir build
+ $ cd build
+ $ CC=gcc-2.95 \
+ CFLAGS="-g" \
+ ../configure --prefix=/usr/local \
+ --enable-debug \
+ --enable-modulefile=modules-light.x86.pc
+ $ make
+ $ sudo make install
+
+Comment: Barry deFreese
+
+For you newbies like me, I had problems using `modules.x86.pc.full` and `modules.x86.pc`. There seems to be problems with `examples/dyntest`. Make sure you pull down and use the [[ATTACHURLmodules-lightx86pc]].
+
+Comment: Luis Miguel
+
+I needed to apply another patch that is not in CVS yet. The patch is in this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-06/msg00054.html) in the bug-hurd mailing list.
+
+### <a name="Mach_Interface_Generator"> Mach Interface Generator </a>
+
+To build any Mach kernel you need an interface generator, MiG. To be on the safe side, use the CVS version. If you use Debian, you can install package [mig-i386-gnu](http://packages.debian.org/mig-i386-gnu). If you don't use Debian or want to compile MiG by yourself on Linux/\*BSD system, you must first install Mach headers. In Mach directory do:
+
+ $ mkdir build
+ $ cd build
+ $ ../configure --prefix=/usr/local # Default prefix is / !
+ $ sudo make -k install-headers # -k is for ignoring errors
+
+Now you are ready to compile and install MiG (commands are in Mig's source directory):
+
+ $ automake --add-missing # sometimes it's needed
+ $ mkdir build
+ $ cd build
+ $ ../configure
+ $ make
+ $ sudo make install
+
+### <a name="GNUmach_2_0_OSKit_Mach_"> </a> GNUmach 2.0 (OSKit-Mach)
+
+Unlike its half sister, the OSKit-Mach kernel does _not_ need a cross compiler. The regular gcc for your x86 Linux system does just fine. However, you might want to use gcc 3.2 with the latest and greatest CVS version of Mach.
+
+**_Configuring:_**
+
+ $ cd gnumach
+ $ mkdir build
+ $ cd build
+ $ MIG=/usr/local/bin/mig \
+ CC=gcc-3.2 \
+ CFLAGS="-g -O2" \
+ OSKIT_LIBDIR=/usr/local/lib/oskit \
+ ../configure --prefix=/gnu
+
+Comment: Barry deFreese
+
+I updated `CFLAGS` to `CFLAGS="-g -O2"`. Using just `-O` I was getting errors in the `machine_init` function. For newbies like me, the `-g` is only needed if you want to enable debugging. The `-O2` is Oh 2, not Zero 2.
+
+**_Building:_**
+
+Instead of using `make kernel` to build kernel, in OSKit-Mach you have to use <code>make kernel-<var>DRIVERS</var></code>, where <var>DRIVERS</var> is <code><var>DRIVER</var>+<var>DRIVER</var>+...+<var>DRIVER</var></code> (a list of drivers separated by `+`). <var>DRIVER</var> can be one of:
+
+* `ide`
+* `floppy`
+* <code>ethernet\_<var>ETHDRV</var></code> where <var>ETHDRV</var> is taken from `oskit/oskit/dev/linux_ethernet.h`.
+* <code>scsi\_<var>SCSIDRV</var></code> where <var>SCSIDRV</var> is taken from `oskit/oskit/dev/linux_scsi.h`.
+
+Thus, to build a IDE capable kernel with 3Com Vortex Boomerang support you use the following:
+
+ $ make kernel-ide+ethernet_vortex
+ $ sudo make install
+ $ sudo gzip -f /gnu/boot/oskit-mach
+
+If the `make` command complains about missing dependencies, then you haven't passed correct `OSKIT_LIBDIR` variable to the `configure` script. Or you can use the patch below and pass something like `--with-oskit=/usr/local` to `configure`.
+
+Comment: Barry deFreese
+
+If you receive an error like `No rule to make target Kernel-ide...`, there is a patch for an issue with finding the oskit libraries. Then run `configure` on gnumach again with the option `--with-oskit=/path/to/oskit/libraries`.
+
+The patch can be found here: [gnumach-oskit-path.patch](http://www.vis.ethz.ch/~wagi/hurd/gnumach/gnumach-oskit-path.patch) Thanks wagi!!
+
+Don't use both `--with-oskit` and `OSKIT_LIBDIR`. Choose one of these methods.
+
+If you want to use tftp to download the kernel from Grub and don't care about the symbols I recommend either stripping or removing the `--enable-debug` and `-g` statements.
+
+## <a name="Debugging"> Debugging </a>
+
+See the [[Mach/RemoteDebugOskitMach]] page.
+
+## <a name="Attachments"> Attachments </a>
+
+* [[ATTACHURLmodulesx86pc]]: Configures modules to build in OSKit.
+> Compared to 21May04 CVS, this adds SMP but omits the random module which was added to CVS in Jan03.
+
+* [[ATTACHURLmodules-lightx86pc]]: Lighter version of required modules. Used for building GNUmach with OSKit, i.e. OSKit/Mach.
+> Compared to the above config, this omits the Linux, MSDOS,
+>
+> NetBoot, and PXE loader support, bootp support, OSKit on UNIX support, some thread-safe library versions, the address map manager, fsread, fsnamespace/\{fsn,fsn\_r\}, fudp, memdebug, memfs, smp, POSIX threads, svm, uvm, the Simple Process Library, realtime support, FreeBSD devices and code, linux/fs, the UDP library, **the sets of x86 and UNIX example kernels**, the testsuite, and the security server. **The new random module is also not configured.**
diff --git a/unsorted/BuildingOskitMach/modules-light.x86.pc b/unsorted/BuildingOskitMach/modules-light.x86.pc
new file mode 100644
index 00000000..07818cc5
--- /dev/null
+++ b/unsorted/BuildingOskitMach/modules-light.x86.pc
@@ -0,0 +1,236 @@
+##
+## OSKit Module configuration file.
+##
+## Comments are ignored, non-commented words should be
+## OSKit directories to include in the build.
+##
+## Libraries are built in the order defined in this
+## file.
+##
+## Specify this file with the --with-modulesfile=<x>
+## option to configure. By default the file 'modules'
+## in the OSKit source directory is used.
+##
+
+### Always include this module (the header files)
+oskit
+
+### The flask module must be compiled before
+### most of the other modules.
+### It is currently a required module.
+flask
+
+### Builds the documentation (Utah only)
+#doc
+
+
+### --- Required components
+
+### The C Runtime (the magic that calls 'main') (required)
+crt
+
+knit/c
+
+### Various bits of kernel magic (required)
+kern
+
+### List Memory Manager (required)
+lmm
+
+### The Client OS library (required)
+clientos
+
+
+### --- Boot Adaptors
+
+### Build the multiboot compliant boot adaptor
+### Requires that ld support '-format binary' (checked)
+boot/multiboot
+
+### Build the Linux boot adaptor
+### Requires ld support '-oformat binary' (checked)
+#boot/linux
+
+### Build the MSDOS boot adaptor (??)
+## Requires ld support '-oformat msdos' (checked)
+#boot/dos
+
+### Build the BSD boot adaptor
+### Requires some sort of a.out linker (checked)
+#boot/bsd
+
+### The NetBoot Meta-kernel
+#boot/net
+
+### Build the PXE compliant boot loader
+#boot/pxe
+
+### --- OSKit-on-UNIX support libraries.
+#unix
+
+### --- C Libraries
+
+### A minimal standard C library
+libc
+
+### A much more complete standard C library
+posix/sys
+
+### Thread-safe version of the previous
+#posix/sys_r
+
+
+### --- Miscellaneous utility libraries
+
+### Address Map Manager
+#amm
+
+### Library for contacting a bootp server
+#bootp
+
+### Com IIDs library (required for most kernels)
+com
+
+### For groking disk partitions
+diskpart
+
+### Include the Dynamic Packet Filter library
+#dpf/dpf
+
+### Exec library for loading linked executables
+exec
+
+### Read-only access to a number of filesystems
+#fsread
+
+### Filesystem name parsing library
+#fsnamespace/fsn
+
+### Same as above, but multithread safe
+#fsnamespace/fsn_r
+
+### Fake UDP library (Only supports UDP send)
+#fudp
+
+### Include the Hierarchical Packet Fair Queueing module
+#hpfq
+
+### The Memdebug library
+#memdebug
+
+### The memory file system
+#memfs
+
+### SMP support (believed to be broken)
+#smp
+## the SMP example
+#examples/x86/smp ### requires smp
+
+### POSIX threads
+#threads
+
+### Simple Virtual Memory
+#svm
+
+### UVM
+#uvm/uvm
+
+### Simple Process Library
+#uvm/sproc
+### the sproc example
+#examples/x86/sproc ### requires sproc
+
+### --- Startup Library
+
+### Simpler functions for initializing OSKit subsystems
+### NOTE: this drags in almost every other library.
+#startup
+
+
+### --- Devices, Networks and Filesystems
+
+### The device layer glue. Depends on lmm and kern
+### Required for any kernel that uses OSKit devices.
+dev
+
+### Realtime support. Needed for realtime threads and for GPROF.
+#realtime
+
+### Devices and code stolen from FreeBSD
+#freebsd/dev
+#freebsd/net_flask
+#freebsd/net
+#freebsd/libm
+#freebsd/libc
+#freebsd/libc_r
+
+### Include Run-time linker support. This must come after freebsd build
+#rtld
+## The rltd example
+#examples/dyntest ### requires rtld
+
+### Stuff stolen from Linux
+linux/dev
+#linux/fs
+
+### Stuff stolen from NetBSD
+#netbsd/fs
+
+### SVGA video library
+#video/svgalib
+### SVGA-related examples
+#examples/x86/video_svga ### requires video/svgalib
+
+### X11 video library
+#x11/client
+#x11/video
+### X11-related examples
+#examples/x86/video_x11 ### requires x11/video
+
+### The zlib compression library
+#zlib
+
+### The UDP library. More complete than fudp, but not totally complete.
+#udp
+
+### The Utah testbed TMCP communication library and examples
+#tmcp
+#examples/tmcp
+
+### The NetDisk kernel.
+## Requires the zlib compression library.
+## Requires the udp library.
+#netdisk
+
+### --- Scripts and build/debug utilities
+
+### Includes the CPU-oskit-gcc wrapper.
+unsupported
+
+
+### --- Additional stuff that must be at or near the end of the build
+
+
+### Sets of example kernels
+#examples/x86
+#examples/x86/extended
+#examples/x86/threads
+
+### Building the example kernels as host-build binaries with unix-mode
+### emulation. NOTE: These will only be built if you are compiling
+### the OSKit with unixmode support (and on Linux or FreeBSD).
+#examples/unix
+#examples/unix/extended
+#examples/unix/threads
+
+### The OSKit test infrastructure
+#testsuite
+
+### The security server
+#security
+## security server example kernel
+#examples/x86/security ### requires security
+
+### The Mad MPEG audio decoder library and example
+#libmad
+#libmad/minimad
diff --git a/unsorted/BuildingOskitMach/modules.x86.pc b/unsorted/BuildingOskitMach/modules.x86.pc
new file mode 100644
index 00000000..bb27aca3
--- /dev/null
+++ b/unsorted/BuildingOskitMach/modules.x86.pc
@@ -0,0 +1,236 @@
+##
+## OSKit Module configuration file.
+##
+## Comments are ignored, non-commented words should be
+## OSKit directories to include in the build.
+##
+## Libraries are built in the order defined in this
+## file.
+##
+## Specify this file with the --with-modulesfile=<x>
+## option to configure. By default the file 'modules'
+## in the OSKit source directory is used.
+##
+
+### Always include this module (the header files)
+oskit
+
+### The flask module must be compiled before
+### most of the other modules.
+### It is currently a required module.
+flask
+
+### Builds the documentation (Utah only)
+#doc
+
+
+### --- Required components
+
+### The C Runtime (the magic that calls 'main') (required)
+crt
+
+knit/c
+
+### Various bits of kernel magic (required)
+kern
+
+### List Memory Manager (required)
+lmm
+
+### The Client OS library (required)
+clientos
+
+
+### --- Boot Adaptors
+
+### Build the multiboot compliant boot adaptor
+### Requires that ld support '-format binary' (checked)
+boot/multiboot
+
+### Build the Linux boot adaptor
+### Requires ld support '-oformat binary' (checked)
+boot/linux
+
+### Build the MSDOS boot adaptor (??)
+## Requires ld support '-oformat msdos' (checked)
+#boot/dos
+
+### Build the BSD boot adaptor
+### Requires some sort of a.out linker (checked)
+#boot/bsd
+
+### The NetBoot Meta-kernel
+boot/net
+
+### Build the PXE compliant boot loader
+#boot/pxe
+
+### --- OSKit-on-UNIX support libraries.
+unix
+
+### --- C Libraries
+
+### A minimal standard C library
+libc
+
+### A much more complete standard C library
+posix/sys
+
+### Thread-safe version of the previous
+posix/sys_r
+
+
+### --- Miscellaneous utility libraries
+
+### Address Map Manager
+amm
+
+### Library for contacting a bootp server
+bootp
+
+### Com IIDs library (required for most kernels)
+com
+
+### For groking disk partitions
+diskpart
+
+### Include the Dynamic Packet Filter library
+#dpf/dpf
+
+### Exec library for loading linked executables
+exec
+
+### Read-only access to a number of filesystems
+fsread
+
+### Filesystem name parsing library
+fsnamespace/fsn
+
+### Same as above, but multithread safe
+fsnamespace/fsn_r
+
+### Fake UDP library (Only supports UDP send)
+fudp
+
+### Include the Hierarchical Packet Fair Queueing module
+#hpfq
+
+### The Memdebug library
+memdebug
+
+### The memory file system
+memfs
+
+### SMP support (believed to be broken)
+smp
+## the SMP example
+examples/x86/smp ### requires smp
+
+### POSIX threads
+threads
+
+### Simple Virtual Memory
+svm
+
+### UVM
+uvm/uvm
+
+### Simple Process Library
+uvm/sproc
+### the sproc example
+examples/x86/sproc ### requires sproc
+
+### --- Startup Library
+
+### Simpler functions for initializing OSKit subsystems
+### NOTE: this drags in almost every other library.
+startup
+
+
+### --- Devices, Networks and Filesystems
+
+### The device layer glue. Depends on lmm and kern
+### Required for any kernel that uses OSKit devices.
+dev
+
+### Realtime support. Needed for realtime threads and for GPROF.
+realtime
+
+### Devices and code stolen from FreeBSD
+freebsd/dev
+#freebsd/net_flask
+freebsd/net
+freebsd/libm
+freebsd/libc
+freebsd/libc_r
+
+### Include Run-time linker support. This must come after freebsd build
+#rtld
+## The rltd example
+#examples/dyntest ### requires rtld
+
+### Stuff stolen from Linux
+linux/dev
+linux/fs
+
+### Stuff stolen from NetBSD
+netbsd/fs
+
+### SVGA video library
+#video/svgalib
+### SVGA-related examples
+#examples/x86/video_svga ### requires video/svgalib
+
+### X11 video library
+#x11/client
+#x11/video
+### X11-related examples
+#examples/x86/video_x11 ### requires x11/video
+
+### The zlib compression library
+#zlib
+
+### The UDP library. More complete than fudp, but not totally complete.
+udp
+
+### The Utah testbed TMCP communication library and examples
+#tmcp
+#examples/tmcp
+
+### The NetDisk kernel.
+## Requires the zlib compression library.
+## Requires the udp library.
+#netdisk
+
+### --- Scripts and build/debug utilities
+
+### Includes the CPU-oskit-gcc wrapper.
+unsupported
+
+
+### --- Additional stuff that must be at or near the end of the build
+
+
+### Sets of example kernels
+examples/x86
+examples/x86/extended
+examples/x86/threads
+
+### Building the example kernels as host-build binaries with unix-mode
+### emulation. NOTE: These will only be built if you are compiling
+### the OSKit with unixmode support (and on Linux or FreeBSD).
+examples/unix
+examples/unix/extended
+examples/unix/threads
+
+### The OSKit test infrastructure
+testsuite
+
+### The security server
+security
+## security server example kernel
+examples/x86/security ### requires security
+
+### The Mad MPEG audio decoder library and example
+#libmad
+#libmad/minimad
diff --git a/unsorted/CrossHurd.mdwn b/unsorted/CrossHurd.mdwn
new file mode 100644
index 00000000..d33d2a00
--- /dev/null
+++ b/unsorted/CrossHurd.mdwn
@@ -0,0 +1,99 @@
+This will eventually become an installation guide for the Debian crosshurd package (GNU/Hurd cross install only). However, for the time being I am setting it up as a diet version of Hurd/InstalNotes, adapted for crosshurd, adapted for me.
+
+-- [[Main/JoachimNilsson]] - 14 Mar 2004
+
+## <a name="Reserving_partitions"> Reserving partitions </a>
+
+You need a swap and root partition, much like any other UNIX system. Two things to remember:
+
+1. Root partition still &lt;2.0 GiB
+2. Root partition: mke2fs -o hurd -b 4096 -L Carlsberg
+
+From a Debian GNU/Linux installation preparing install of GNU/Hurd on /dev/hdb2 reusing the Linux swap on /dev/hdb4.
+
+ # mke2fs -o hurd -b 4096 -L Carlsberg /dev/hdb2
+
+<div>
+ <center> "Carlsberg. Probably the best beer in the world." </center>
+</div>
+
+## <a name="Bootstrapping"> Bootstrapping </a>
+
+After having installed the Debian crosshurd package you need to mount your newly created Hurd partition.
+
+ mkdir /gnu
+ mount /dev/hdb2 /gnu
+
+Now, simply run the crosshurd program and follow the onscreen directions. **Do** select the usr symlink.
+
+ crosshurd
+
+crosshurd burps a lot of unneeded information on screen and probably fails to install one or two files due to duplicates between GNU and Debian packages. Lets hope this mess is worked out some day.
+
+## <a name="Rebooting"> Rebooting </a>
+
+Before we reboot you must setup a Hurd entry in the menu.lst file of Grub. Do it like this and remember, **no trailing spaces**!
+
+The first two runs (reboots) you must run the Hurd in single-user mode!
+
+ title GNU (kernel GNUmach 1.3)
+ root (hd1,1)
+ kernel /boot/gnumach.gz root=device:hd1s2 -s
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+The notation of Grub, and of the Hurd, can be somewhat bisarre on first sight. Consult the [[InstallNotes]] document and the Grub manual for a thorough explanation.
+
+N.B. the '-s' on the kernel line, it is "single user mode", which you need for the first two reboots.
+
+OK, reboot now.
+
+## <a name="First_steps"> First steps </a>
+
+Set TERM variable and run native-install script.
+
+ export TERM=mach
+ ./native-install
+
+At the end native-install wants you to reboot and run it again. Do so and remember to set the TERM variable as well.
+
+After the second reboot and native-install run you can remove the '-s' in the kernel line above and boot GNU/Hurd as a normal user.
+
+## <a name="Logging_in"> Logging in </a>
+
+Finally, a complete bootstrapped GNU system.
+
+ login root
+
+ export TERM=mach
+
+ nano /etc/fstab
+ [add swap partition /dev/hd1s4]
+
+ nano /etc/ttys
+ [remove all hashes to enable the new Hurd Console]
+
+ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
+
+ dselect
+
+Now, do the old Debian thing of dancing with dselect for a couple of hours.
+
+Reboot and start the new [[Console]]
+
+ login root
+
+ console -d vga -d pc_kbd -d generic_speaker /dev/vcs
+
+Move around just like in Linux console, but with persistent scroll-back buffers for each console.
+
+## <a name="References"> References </a>
+
+* [[InstallNotes]]
+* [[Network]]
+* [[Console]]
diff --git a/unsorted/DebianX.mdwn b/unsorted/DebianX.mdwn
new file mode 100644
index 00000000..6d65a140
--- /dev/null
+++ b/unsorted/DebianX.mdwn
@@ -0,0 +1,116 @@
+# <a name="Setting_up_X_on_Debian_GNU_Hurd"> </a> Setting up X on Debian GNU/Hurd
+
+This is a brief helper on how to setup X-Windows on Debian GNU/Hurd.
+
+Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/Xfree86> but I was making such drastic changes, I didn't want to hack up that page.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[console]] for more details.
+
+You should instruct the Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/cons /dev/vcs
+
+Symbolic links to repeaters should also be created:
+
+ # ln -s /dev/cons/kbd /dev/kbd
+ # ln -s /dev/cons/mouse /dev/mouse
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+You will need several X packages. The `x-window-system-core` brings you most of what you need:
+
+* `xserver-xfree86`
+* `xfonts-base`
+* `xfonts-100dpi`
+* `xfonts-75dpi`
+* `xfonts-scalable`
+* `xbase-clients`
+* `xutils`
+* `rxvt`
+* ... as well as your window manager of choice:
+ * WindowMaker, `wmaker`
+ * FVWM, `fvwm`
+ * Blackbox, `blackbox`
+ * TWM, `twm`
+
+I know that twm and Window Maker work, however, I cannot attest to the other two. Also, Michael Banck has a working package for xfce4 for those of you that are interested. The link for the package is here:
+
+ deb http://people.debian.org/~mbanck/hurd-xfce4/ ./
+
+Thanks for that Michael!!
+
+You will probably need to create a .xsession file for xfce4 with the following command:
+
+ exec /usr/bin/startxfce4 || exec xterm
+
+This will start the xfce4 desktop or dump to xterm if it fails to start.
+
+The recommended way of configuring X is using the `xserver-xfree86` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xfree86
+
+It may be easier to just copy a working configuration from another operating system on the same computer and place it in `/etc/X11/XF86Config-4`, but this is discouraged as you would have to remove some sections by hand.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+**_UPDATE 12/28/2004:_** Speedo is working on mine and is currently running. I do not have DRI enabled however.
+
+### <a name="Edit_XF86Config_4"> Edit XF86Config-4 </a>
+
+Now you have to edit the file manually to ensure that the mouse sections look like this:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Mouse"
+ Driver "mouse"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+You may also enable the Emulate3Buttons option, but nothing else will work.
+
+ Option "Emulate3Buttons" "true"
+
+**_WARNING:_** I cannot verify as of yet whether it was the "Emulate3Buttons" setting or the "ZAxisMapping" setting but I had to disable both in order to be able to move and resize windows.
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run `startx`
+
+However, there are several caveats to be aware of:
+
+* `xterm` does not work correctly; try `rxvt`.
+
+**_UPDATE 12/28/2004_**: xterm works fine for me.
+
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+* GNOME can now be ported with the new pthreads, but is still being worked on. Window Maker, TWM, Blackbox and FVWM all work.
+
+**_WARNING:_** If you get an error about opening the display or a permissions issue, you may need to run the following:
+
+ # dpkg-reconfigure xserver-common
+
+change from "Console Users Only" to "Anybody"
+
+### <a name="Miscellaneous"> Miscellaneous </a>
+
+The dillo web browser does work, though it is not the greatest browser.
+
+For you xchat lovers like me, xchat will compile if you disable the python module. (The python module causes an assertion failure in pthreads if one of you guru's wants to fix and package. **hint,hint**)
+
+Good luck and enjoy!
+
+----
+
+-- [[Main/BarryDeFreese]] - 28 Dec 2004
diff --git a/unsorted/DebianXorg.mdwn b/unsorted/DebianXorg.mdwn
new file mode 100644
index 00000000..a1d77903
--- /dev/null
+++ b/unsorted/DebianXorg.mdwn
@@ -0,0 +1,193 @@
+# <a name="Setting_up_Xorg_on_Debian_GNU_Hu"> </a> Setting up Xorg on Debian GNU/Hurd
+
+This is a brief helper on how to setup Xorg on Debian GNU/Hurd.
+
+Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/DebianX> but I was making such drastic changes, I didn't want to hack up that page.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[console]] for more details.
+
+You should instruct the Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/vcs
+
+Symbolic links to repeaters should also be created:
+
+ # ln -s /dev/cons/kbd /dev/kbd
+ # ln -s /dev/cons/mouse /dev/mouse
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+The `x-window-system-core` package brings you most of what you need for a base, plus you need to choose a window manager:
+
+* WindowMaker, `wmaker`
+* FVWM, `fvwm`
+* Blackbox, `blackbox`
+* TWM, `twm`
+
+I know that Window Maker works, however, I cannot attest to the others. xfce4 might be temporarily broken.
+
+The recommended way of configuring X is using the `xserver-xorg` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xorg
+
+This currently seems to be broken in the Debian package so it may be easier to just copy a working configuration from another operating system on the same computer and place it in `/etc/X11/xorg.conf`. You need to edit the mouse settings by hand according to the below example, though.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+**BDd: I cannot attest to this currently.**
+
+### <a name="Edit_xorg_conf"> Edit xorg.conf </a>
+
+If you managed to get an xorg.conf autogenerated, make sure to have the mouse section read as follows:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+Do not set the "Emulate3Button" or "ZAxisMapping" options, they do not work and break things.
+
+Here is an example of an xorg.conf using VESA at 800x600 that works on my Dell laptop:
+
+ # /etc/X11/xorg.conf (xorg X Window System server configuration file)
+ #
+ # This file was generated by dexconf, the Debian X Configuration tool, using
+ # values from the debconf database.
+ #
+ # Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
+ # (Type "man /etc/X11/xorg.conf" at the shell prompt.)
+ #
+ # This file is automatically updated on xserver-xorg package upgrades *only*
+ # if it has not been modified since the last upgrade of the xserver-xorg
+ # package.
+ #
+ # If you have edited this file but would like it to be automatically updated
+ # again, run the following command:
+ # sudo dpkg-reconfigure -phigh xserver-xorg
+
+ Section "Files"
+ FontPath "/usr/share/X11/fonts/misc"
+ FontPath "/usr/share/X11/fonts/cyrillic"
+ FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
+ FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
+ FontPath "/usr/share/X11/fonts/Type1"
+ FontPath "/usr/share/X11/fonts/CID"
+ FontPath "/usr/share/X11/fonts/100dpi"
+ FontPath "/usr/share/X11/fonts/75dpi"
+ # paths to defoma fonts
+ FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
+ FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
+ EndSection
+
+ Section "Module"
+ Load "GLcore"
+ Load "i2c"
+ Load "bitmap"
+ Load "ddc"
+ Load "extmod"
+ Load "freetype"
+ Load "glx"
+ Load "int10"
+ Load "type1"
+ Load "vbe"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Keyboard"
+ Driver "kbd"
+ Option "CoreKeyboard"
+ Option "XkbRules" "xorg"
+ Option "XkbModel" "pc104"
+ Option "XkbLayout" "us"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Synaptics Touchpad"
+ Driver "synaptics"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/psaux"
+ Option "Protocol" "auto-dev"
+ Option "HorizScrollDelta" "0"
+ EndSection
+
+ Section "Device"
+ Identifier "Videocard0"
+ Driver "vesa"
+ EndSection
+
+ Section "Monitor"
+ Identifier "Monitor0"
+ VendorName "Dell"
+ HorizSync 31.5 - 90.0
+ VertRefresh 59.0 - 85.0
+ Option "DPMS"
+ EndSection
+
+ Section "Screen"
+ Identifier "Screen0"
+ Device "Videocard0"
+ Monitor "Monitor0"
+ DefaultDepth 24
+ SubSection "Display"
+ Depth 1
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 4
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 8
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 15
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 16
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 24
+ Modes "800x600"
+ EndSubSection
+ EndSection
+
+ Section "DRI"
+ Mode 0666
+ EndSection
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run `startx`
+
+However, there are several caveats to be aware of:
+
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+
+**_WARNING:_** If you get an error about opening the display or a permissions issue, you may need to run the following:
+
+ # dpkg-reconfigure x11-common
+
+change from "Console Users Only" to "Anybody"
+
+Good luck and enjoy!
+
+----
+
+-- [[Main/BarryDeFreese]] - 02 Mar 2006
diff --git a/unsorted/DhcpClient.mdwn b/unsorted/DhcpClient.mdwn
new file mode 100644
index 00000000..442f4781
--- /dev/null
+++ b/unsorted/DhcpClient.mdwn
@@ -0,0 +1,42 @@
+# <a name="DHCP_and_the_Hurd"> </a> DHCP and the Hurd
+
+According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway.
+
+[Link to thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html)
+
+The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html).
+
+-- [[Main/ThadeuCascardo]] - 29 Sep 2005
+
+No DHCP client has been ported to the Hurd yet.
+
+[This](http://mail.gnu.org/archive/html/help-hurd/2003-10/msg00016.html) thread on help-hurd has a little more info on what's still needed for DHCP.
+
+-- [[Main/GregBuchholz]] - 09 Oct 2003
+
+Found this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-08/msg00045.html) about DHCP capabilities in the Hurd encouraging.
+
+-- [[Main/GregBuchholz]] - 03 Sep 2003
+
+* Tom Hart began a [discussion ](http://mail.gnu.org/pipermail/help-hurd/2002-October/006643.html) of 14 posts in Oct 2002.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
+
+The beginnings of a DHCP translator is available in the Hurd sources on Savannah: [hurd/trans/pump.c](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd/trans/pump.c?rev=1.3&content-type=text/vnd.viewcvs-markup)
+
+Unfortunately our current TCP/IP stack, the pfinet translator, lacks support for the AF\_PACKET interface as well as sending packets with an IP address of 0.0.0.0.
+
+Grant Bowman on bug-hurd:
+
+ Herbert Xu (Pump maintainer) told me that to operate correctly, pump
+ uses the AF_PACKET interface which is only present in 2.2.
+
+ Anyone else know the status of getting these compiled and functional?
+
+Neal Walfield on bug-hurd replies:
+
+ > Anyone else know the status of getting these compiled and functional?
+
+ We need to be able to send to the DHCP server with ip address 0.0.0.0.
+
+-- [[Main/JoachimNilsson]] - 12 Nov 2002
diff --git a/unsorted/DistributedServers.mdwn b/unsorted/DistributedServers.mdwn
new file mode 100644
index 00000000..cb2dd5bc
--- /dev/null
+++ b/unsorted/DistributedServers.mdwn
@@ -0,0 +1,29 @@
+# <a name="Distributed_Computing"> Distributed Computing </a>
+
+The [[Mach]] micro kernel was originally designed to run on symetric multi-processing (SMP) systems. Later, it was extended to allow for distributed OS support. A group of workstations with Mach can act as a single powerful SMP machine. Thus, Mach is also called a Single System Image (SSI).
+
+The Mach micro kernel provides a good infrastructure for distributed computing, including thread migration, inter-thread communition (both locally and remotely), load balancing and fault-tolerance. The Hurd, using Mach as a foundation, has great potential for distributed computing. Progress toward distributed kernel designs is proceeding within other projects as well. OpenMosix is a related projects for Linux kernels. You can reach it at:
+
+* <http://www.openmosix.org/>
+* <http://openmosix.sourceforge.net/>
+* <http://sourceforge.net/projects/openmosix/>
+
+OpenMosix patches specific Linux kernel versions to make them "distributed-enabled". However, since the Linux kernel is monolithic, patches must be updated with each new version of kernel. That can be extremely difficult due to the pace at which Linux kernels are currently developed.
+
+The Hurd architecture is better suited to distributed computing. Due to Hurd's server structure this is much more easily adapted. Efforts continue to evolve it's design not only on the Mach micro kernel but also work continues on a [[Mach/PortToL4]] micro kernel.
+
+----
+
+## <a name="Document_history"> Document history </a>
+
+Created.
+
+-- [[Main/LaudneyRen]] - 29 Sep 2002
+
+Various grammatical fixes and tidying up.
+
+-- [[Main/JoachimNilsson]] - 29 Oct 2002
+
+Updated for [[Mach]] web, reworded parts for more direct message. Added L4 link.
+
+-- [[Main/GrantBow]] - 11 Jan 2003
diff --git a/unsorted/ExtTwoSize.mdwn b/unsorted/ExtTwoSize.mdwn
new file mode 100644
index 00000000..ec39781f
--- /dev/null
+++ b/unsorted/ExtTwoSize.mdwn
@@ -0,0 +1,27 @@
+## <a name="Ext2_File_system_limitation"> Ext2 File system limitation </a>
+
+This is a very common question. Many people have problems with the partition limit on Ext2 filesystems being very small by current standards. It feels smaller all the time as people have larger disks and often larger filesystems. It's worth mentioning that 64-bit machines (ia64, alpha) will not have this limitation.
+
+Note that, while the official CVS sources still suffer of this problem, recent (as of 2007) Debian GNU Hurd distributions **do not have this limit anymore**. Be happy. [July 2007 from debian-hurd](http://lists.debian.org/debian-hurd/2007/07/msg00087.html)
+
+* From the Hurd FAQ: [partition limit](http://www.gnu.org/software/hurd/faq.en.html#q2-6)
+
+**_Patch:_**
+
+[Release candidate 1](https://savannah.gnu.org/patch/?func=detailitem&item_id=2508) of the patch is uploaded in Savannah.
+
+**_Useful:_**
+
+Discussions on status and how to fix the problem:
+
+* [Febuary 2003](http://lists.debian.org/debian-hurd/2003/debian-hurd-200302/msg00016.html)
+* [December 2002](http://mail.gnu.org/archive/html/bug-hurd/2002-12/msg00041.html)
+* [March 2002 status](http://mail.gnu.org/archive/html/hurd-devel/2002-03/msg00030.html) and a [follow up](http://mail.gnu.org/archive/html/hurd-devel/2002-03/msg00035.html)
+* [Nov 2001 status](http://mail.gnu.org/archive/html/hurd-devel/2001-11/msg00002.html)
+
+**_Maybe Useful:_**
+
+* <http://mail.nl.linux.org/kernel-doc/1999-03/msg00001.html> (This link is broken. Have been unable to fix it. [[MauriceMcCarthy]] 2 Nov 2004.)
+* <http://www.beowulf.org/pipermail/beowulf/2000-March/008708.html>
+
+(Searching Beowulf for '2Gb patch' seems to show this still present in the archive but somehow it is not accessible.)
diff --git a/unsorted/FlashHurd.mdwn b/unsorted/FlashHurd.mdwn
new file mode 100644
index 00000000..a6288afc
--- /dev/null
+++ b/unsorted/FlashHurd.mdwn
@@ -0,0 +1,60 @@
+# <a name="USB_Flash_Memory_GNU_Hurd"> </a> USB Flash Memory GNU/Hurd
+
+It would be nice if we had a bootable [USB flash drive](http://en.wikipedia.org/wiki/USB_key) Hurd like [[DamnSmallLinux]]. It would 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, a bootable Flash Hurd would enable us to have a native installer instead of relying on Linux.
+
+It could be installed in the USB using a [[hurd/running/Live_CD]] (using a script) - this is the Burned version - or directly downloading the iso files from the Internet - Unburned version -. One can use also [qemu] to run the [[hurd/running/Live_CD]] and them use the USB installation script.
+
+Here is an outline of the things that need to be done. Please add your comments and suggestions.
+
+## <a name="Requirements_Outline"> Requirements Outline </a>
+
+### <a name="1_We_need_to_be_able_get_a_bootl"> </a> 1. We need to be able get a bootloader for USBs
+
+This is not much of a problem. I have already been successful (see below) in using [Grub](http://en.wikipedia.org/wiki/GRand%20Unified%20Bootloader) and the El-Torito HD emulation to boot [[GNUmach]] off a CD. There may be some minor tweaking of Grub code necessary to detect which device to use for booting (instead of having the user select their device (hd0,hd1,etc.) from the Grub menu).
+
+Using GRUB's stage2\_eltorito seems to work fine.
+
+### <a name="2_We_need_a_bootstrap_filesystem"> 2. We need a bootstrap filesystem translator </a>
+
+This would be something like a statically linked iso9660fs translator. Compiling a statically linked iso9660fs translator is easy enough, though it doesn't boot. I don't currently know whether this is because the translator was never meant to be a bootstrap filesystem, or if there is a simple bug which has never been flushed out because the translator has never been used at boot time before. I've had trouble debugging this problem because I haven't yet figured out a way to use a remote gdb with gnumach. Theoretically you could use the "boot" command to overcome this problem, but "boot" for me mangles the terminal and exits in different manner than an actual boot.
+
+The iso9660fs translator works great, it just needs to be statically linked.
+
+### <a name="3_We_need_a_ramdisk_to_enable_wr"> 3. We need a ramdisk to enable write access </a>
+
+I think we could fake this with Farid Hajii's [memfs](http://www.fprintf.net/hurd/) translator and writing an ext2 filesystem to it.
+
+From the mem-fs README...
+
+> memfs-1 is a translator that provides a memory-based file of fixed size. This file can, just like bigfile, contain a regular filesystem.
+
+We could set a mem-fs translator anywhere on the CD you needed write access, including having softlinks to the contents of the root directory and chrooting to this new directory.
+
+For a quick and dirty memfs, you can do it right now with the following commands:
+
+ # touch ./ramdisk
+ # touch ./tmpfs
+ # settrans -a ./ramdisk /hurd/storeio -Tcopy zero:50M
+ # /sbin/mke2fs -o hurd -b 4096 -F ./ramdisk
+ # settrans -a tmpfs /hurd/ext2fs.static ./ramdisk
+ # fsysopts --writable ./tmpfs
+ # cd tmpfs
+ # touch somenewfile
+
+Here we use two files ramdisk, and tmpfs that are already created on a readonly file system. For illustration purposes, they are touched beforehand. We run an active storeio translator on the ramdisk file to give us 50MB of RAM to work with, and then we make an ext2 filesystem on it.
+
+At this point we'd could copy the contents of the `/var` directory into the tmpfs, and then symlink `/var` to `/tmpfs/var`. The same goes for all other mutable dirs.
+
+This approach of putting an entire ext2 filesystem in a copy zero'd store has some drawbacks listed [here](http://lists.gnu.org/archive/html/bug-hurd/2000-12/msg00073.html).
+
+Those are the essentials. Here is a list of the things which would be nice to have for a USB Flash Memory.
+
+* Knoppix like script for starting up X and [[GraphicEnvironment]] s ([[FluxBox]], Gnome...)
+* DHCP support for easy network setup
+* Hardware autodetection (Kudzu).
+* Knoppix like script for installing to the hard drive or to bootable USB pendrive .
+* (add your favorite feature here)
+
+Here is a mailing-list [thread](http://lists.debian.org/debian-hurd/2003/debian-hurd-200308/msg00172.html) discussing some of these issues.
+
+-- [[Main/GregBuchholz]] - 21 Oct 2003 -- [[Main/NagromNamreh]] - 29 Jan 2004
diff --git a/unsorted/FlexibilityForUser.mdwn b/unsorted/FlexibilityForUser.mdwn
new file mode 100644
index 00000000..71b05cfd
--- /dev/null
+++ b/unsorted/FlexibilityForUser.mdwn
@@ -0,0 +1,7 @@
+FROM: <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html>
+
+The user must have a range of options available that support him to achieve an arbitrary but well-defined goal that can be stated within the legitimate resources the user controls.
+
+_Flexibility means that the user controls what can happen **with** his resources._
+
+-- [[TomBachmann]] - 29 Apr 2006
diff --git a/unsorted/FunnyHurd.mdwn b/unsorted/FunnyHurd.mdwn
new file mode 100644
index 00000000..1653ec77
--- /dev/null
+++ b/unsorted/FunnyHurd.mdwn
@@ -0,0 +1,39 @@
+## <a name="Fun_stuff_ripped_from_the_Intern"> Fun stuff ripped from the Internet </a>
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <td> %ATTACHURL%/hurd-windows.gif <br /> Hurd Windows, availble from <a href="http://www.hurd.com" target="_top">http://www.hurd.com</a></td>
+ <td> %ATTACHURL%/HurdExchange.gif <br /> Exchange your Hurd at <a href="http://www.thunderinghurd.com" target="_top">http://www.thunderinghurd.com</a></td>
+ </tr>
+ <tr>
+ <td> %ATTACHURL%/HurdCarDeal.jpg <br /> ... and we can of course also offer you a great deal on this -91 Chevy! :-) </td>
+ <td> %ATTACHURL%/HurdLodge.jpg <br /> The many perks of being a Hurd user also includes our own ski lodge! <br /><font size="+2">Hurd House</font><br />
+ <ul>
+ <li>Knotty pine kitchen</li>
+ <li>Spacious kitchen &amp;amp; living room with loft</li>
+ <li>Leather couch and love seat with a TV &amp;amp; VCR</li>
+ <li>Outdoor Jacuzzi</li>
+ <li>Spacious master bedroom/bath upstairs</li>
+ <li>Twin beds in one room / queen bed in another</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td> %ATTACHURL%/HurdMagician.jpg <br /> From <a href="http://www.magicposters.com/buy/h-k.html" target="_top">http://www.magicposters.com/buy/h-k.html</a></td>
+ <td> %ATTACHURL%/CrystalAwards.jpg <br /> "Wow dude, I saw the Debian Swirl logo on last nights <a href="http://www.wif.org/events/crystals.html" target="_top">Crystal Awards</a>!" </td>
+ </tr>
+</table>
+
+----
+
+These images and links are only here to serve as a comic relief to this site. It is **not** the intention to humiliate the people, corporations or organizations behind these factual sites.
+
+If your [company] name or organization is listed here and you do not approve you can remove yourself simply by clicking on the "Edit" button. In the login window that appears you enter _TWikiGuest_ as username and _guest_ as password.
+
+----
+
+### <a name="Comments"> Comments </a>
+
+Created the page.
+
+-- [[Main/JoachimNilsson]] - 09 Nov 2002
diff --git a/unsorted/FunnyHurd/CrystalAwards.jpg b/unsorted/FunnyHurd/CrystalAwards.jpg
new file mode 100644
index 00000000..2daac850
--- /dev/null
+++ b/unsorted/FunnyHurd/CrystalAwards.jpg
Binary files differ
diff --git a/unsorted/FunnyHurd/HurdCarDeal.jpg b/unsorted/FunnyHurd/HurdCarDeal.jpg
new file mode 100644
index 00000000..9f533384
--- /dev/null
+++ b/unsorted/FunnyHurd/HurdCarDeal.jpg
Binary files differ
diff --git a/unsorted/FunnyHurd/HurdExchange.gif b/unsorted/FunnyHurd/HurdExchange.gif
new file mode 100644
index 00000000..bbbb4844
--- /dev/null
+++ b/unsorted/FunnyHurd/HurdExchange.gif
Binary files differ
diff --git a/unsorted/FunnyHurd/HurdLodge.jpg b/unsorted/FunnyHurd/HurdLodge.jpg
new file mode 100644
index 00000000..d13562f5
--- /dev/null
+++ b/unsorted/FunnyHurd/HurdLodge.jpg
Binary files differ
diff --git a/unsorted/FunnyHurd/HurdMagician.jpg b/unsorted/FunnyHurd/HurdMagician.jpg
new file mode 100644
index 00000000..5ef6509a
--- /dev/null
+++ b/unsorted/FunnyHurd/HurdMagician.jpg
Binary files differ
diff --git a/unsorted/FunnyHurd/hurd-windows.gif b/unsorted/FunnyHurd/hurd-windows.gif
new file mode 100644
index 00000000..5ca7dd74
--- /dev/null
+++ b/unsorted/FunnyHurd/hurd-windows.gif
Binary files differ
diff --git a/unsorted/GNUstep.mdwn b/unsorted/GNUstep.mdwn
new file mode 100644
index 00000000..95b2a622
--- /dev/null
+++ b/unsorted/GNUstep.mdwn
@@ -0,0 +1,64 @@
+# <a name="Setting_up_GNUstep_on_the_Hurd"> </a> Setting up GNUstep on the Hurd
+
+GNUstep is not available on the Debian distribution for GNU/Hurd, but it can be built manually. This is, how to do it.
+
+#### <a name="Prerequisites"> Prerequisites </a>
+
+This packages should already be installed (Debian package names in brackets): ffcall (libffcall1, libffcall1-dev), libffi (libffi4), libffi4-dev, openssl (openssl), libtiff (libtiff4), libpng (libpng12-0, libpng3), libjpg (libjpeg62), libxml (libxml1, libxml2, libxml2-dev &amp; dependencies), xslt (libxslt1.1, libxslt1-dev &amp; dependencies), ssl (libssl0.9.8, libssl-dev), libungif4-dev libungif4g, aspell (libaspell15, libaspell-dev, aspell &amp; apspell-[for your language, e. g. en]) windowmaker (wmaker), Objective-C-Compiler (gobjc and depending packages)
+
+#### <a name="Getting_the_sources"> Getting the sources </a>
+
+To do an up-to-date-installation, download the daily snapshot from GNUstep into one new directory and unzip/untar them:
+
+ wget ftp://ftp.gnustep.org/pub/daily-snapshots/core.current.tar.bz2
+
+#### <a name="Building_GNUstep"> </a> Building GNUstep
+
+Everything needed for the GNUstep base system is included into the expanded tarball. This is how to build it:
+
+Do the following installation as root!
+
+ cd core/make
+ ./configure
+ make && make install
+ cd ..
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh (see the dot at the begin!)
+ cd ../base
+ ./configure
+ Edit the file Headers/Additions/GNUstepBase/config.h and add "#define BROKEN_SO_REUSEADDR 1" somewhere
+ make && make install
+ cd ../gui
+ ./configure
+ make && make install
+ cd ../back
+ make && make install
+
+Now, you've built the GNUstep base system. When you want to start a GNUstep application later or want to build one, open a bash shell and enter this command:
+
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
+
+This sets some necessary environment variables.
+
+#### <a name="Building_GNUstep_apps"> </a> Building GNUstep apps
+
+You can find some GNUstep applications here: <http://www.gnustep.org/experience/apps.html>
+
+and here: [http://mediawiki.gnustep.org/index.php/Main\_Page](http://mediawiki.gnustep.org/index.php/Main_Page)
+
+#### <a name="Known_problems"> Known problems </a>
+
+##### <a name="GNUMail"> </a> GNUMail
+
+After starting GNUMail, you can only once get mails from a pop3-server. If you want to fetch mails again, you have to restart it.
+
+##### <a name="GWorkspace_0_8"> GWorkspace 0.8 </a>
+
+GWorkspace 0.8 expects a /etc/mtab file. If you want to use it, you must manually make this file.
+
+Example for a /etc/mtab file:
+
+ /dev/hd0s1 / ext2 rw 1 1
+
+----
+
+-- Thomas Schlesinger - 03 Mar 2006
diff --git a/unsorted/GrantBowHurdPage.mdwn b/unsorted/GrantBowHurdPage.mdwn
new file mode 100644
index 00000000..89af3ada
--- /dev/null
+++ b/unsorted/GrantBowHurdPage.mdwn
@@ -0,0 +1,36 @@
+Here are some notes on my current Hurd activity.
+
+I am also unable to get my PCI NE-2000 clone network card working. The driver loads but no routes are possible and therefore no packets get to the network. This is actually a DE-220 NIC that I started to discuss on hurd-help. Here's the actual change I made to gnumach-20020421/linux/dev/drivers/net/Space.c
+
+ static struct device eth0_dev = {
+ "eth0", 0, 0, 0, 0, 0x240, 10, 0, 0, 0, &eth1_dev, ethif_probe };
+
+Cheers,
+
+-- [[Main/GrantBow]] - 13 May 2002
+
+Booting OSKit-Mach mysteriously works now! Yeah! I didn't even change anything!
+
+My problems now is how to get my second machine's (hd0,2) (/dev/hda3 for linux folks) partitionto bre recognized by Grub. When I try 'root (hd0,2)' grub spits back 'Filesystem type unknown, partition type 0x83'. This is a standard ext2 /boot partition from my test Progeny install. I even removed the partition, added it back, fsck.ext2 and moved the files back. It still doesn't see the -filesystem-. Very strange. This prevents me from using my second machine right now.
+
+If anyone knows more about these items, please add your comments below with your signature.
+
+-- [[Main/GrantBow]] - 16 May 2002
+
+PLEASE read these once. They are worth the effort.
+
+* [How To Ask Questions The Smart Way](http://www.tuxedo.org/~esr/faqs/smart-questions.html)
+
+* [How To Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) \*<http://khazad.dyndns.org/gnunet/>
+
+\*[Lincoln Portrait](http://www.people.virginia.edu/~skd9r/409/portrait.html) transcript - amazingly applicable to open source ideals.
+
+I am working on a page describing the [[Distrib/GNUDebianBuildProcess]].
+
+I also created some very very rough images for use in explaining the Hurd and it's relationship with GNU Mach and Oskit Mach.
+
+-- [[Main/GrantBow]] - 30 May 2002
+
+* [[ATTACHURLdiagramxcf]]: Diagram - Gimp file
+
+* Diagram - PNG file: <br />![diagram.png](%ATTACHURLPATH%/diagram.png)
diff --git a/unsorted/GrantBowHurdPage/diagram.png b/unsorted/GrantBowHurdPage/diagram.png
new file mode 100644
index 00000000..c8b29047
--- /dev/null
+++ b/unsorted/GrantBowHurdPage/diagram.png
Binary files differ
diff --git a/unsorted/GrantBowHurdPage/diagram.xcf b/unsorted/GrantBowHurdPage/diagram.xcf
new file mode 100644
index 00000000..76396410
--- /dev/null
+++ b/unsorted/GrantBowHurdPage/diagram.xcf
Binary files differ
diff --git a/unsorted/HurdDevelopers.mdwn b/unsorted/HurdDevelopers.mdwn
new file mode 100644
index 00000000..1a43a2b8
--- /dev/null
+++ b/unsorted/HurdDevelopers.mdwn
@@ -0,0 +1,120 @@
+Here's an unofficial list of Hurd developers and what they are working on. This is very unofficial.
+
+* [Marcus Brinkmann](http://www.marcus-brinkmann.de) - GNU Hurd Project maintainer, Debian GNU/Hurd Port Manager, fakeroot, oskit console
+* [Thomas Bushnell, BSG](http://www.mit.edu/~tb/) - Primary architect, design issues and debugging help
+* [Roland McGrath](http://www.frob.com), [resum�](http://www.apocalypse.org/pub/u/roland/resume.html) - GLibC, GCC-3.1, fakeroot (with fakeauth and settrans --chroot)
+* Jeff Bailey - turtle autobuilder, gcc-3.1
+* [Igor Khavkine](http://alcor.concordia.ca/~i_khavki/)
+* [Gordon Matzigkeit](http://www.fig.org/gord/)
+
+* Alexandra "[Bunny](http://www.hurd-bunny.tk)" - graphic designer, Hurd promotion
+* Alfred M. Szmidt (ams) -
+* Daniel (Chillywilly) Baumann - GNU Enterprise Application Server, GNU Common C++
+* [[Main/GrantBow]] - TWiki, promotion
+* Jae - fatfs, possibly smbfs
+* [[Main/JoachimNilsson]], [[Hurd/JoachimNilssonHurdPage]] - TWiki, OSKit upgrades (currently ATA-100 patches).
+* [[Main/JamesAMorrison]] - porting, kernel interface cleanups, [hurd-extras](http://savannah.gnu.org/projects/hurdextras/)
+* Neal Walfield - pthreads, documentation, debugging, #hurd admin, log &amp; bot maintainer
+* [[Main/NickRusnov]] - mtab &amp; [[Distrib/PortingIssues]]
+* Niels M�ller - kernel debugging
+* [[Main/OgnyanKulev]] - [[ExtTwoSize]] patch
+* Paul Emsley - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html)
+* Philip Charles - [ISO CD-images](http://www.copyleft.co.nz/hurd.html)
+* Ryan Golbeck - porting.
+* [[Main/SamLauzon]] (Indes) - Installer, Sound(!), Bunny mocking
+* [[Main/SimonLaw]] - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html) and [[Hurd/KernelCousinDebianHurd]]
+* [[Main/WolfgangJ]] - documentation, promotion
+* [[Main/DerekDavies]] - OSKit work
+* [Daniel Wagner](http://www.vis.ethz.ch/~wagi/) (wagi) - [pcmcia support for OSKit](http://savannah.nongnu.org/projects/oskit/)
+
+If we got any names wrong, please accept our apologies.
+
+
+---
+
+<A NAME="contents"><H1>Acknowledgements</H1></A>
+
+<P>We wish a warm ``Thank GNU'' to everybody who has helped in the
+development of the Hurd. Here is a categorized list of people who
+made significant contributions. If we have omitted anybody, we
+apologize... please let us know so that we can update this list!
+
+<DL>
+<DT>Hurd software</DT>
+<DD><DL>
+ <DT>Mark Kettenis</DT>
+ <DD>many GNU C library and Hurd bug fixes and updates</DD>
+ <DT>Miles Bader</DT>
+ <DD>paid by the FSF to help make the Hurd usable as a standalone system,
+ wrote several important translators</DD>
+ <DT>OKUJI Yoshinori</DT>
+ <DD>many gnumach bug fixes and updates</DD>
+ <DT>Roland McGrath</DT>
+ <DD>paid by the FSF to design and implement the GNU C library for the Hurd,
+ as well as many Hurd features, current Hurd C library maintainer</DD>
+ <DT>Thomas Bushnell, BSG (formerly Michael I. Bushnell)</DT>
+ <DD>paid by the FSF as primary architect of the Hurd, current Hurd maintainer</DD>
+ <DT>UCHIYAMA Yasushi</DT>
+ <DD>ported XFree86 to the Hurd</DD>
+ </DL></DD>
+
+<DT>Debian GNU/Hurd</DT>
+<DD><DL>
+ <DT>Gordon Matzigkeit</DT>
+ <DD>paid by the FSF as a liason from GNU to Debian</DD>
+ <DT>Marcus Brinkmann</DT>
+ <DD>bootstrapped the Debian GNU/Hurd base set and many packages, liason
+ from Debian to GNU</DD>
+ <DT>Santiago Vila</DT>
+ <DD>support for cross-compiling Debian packages</DD>
+ </DL></DD>
+
+<DT>Documentation</DT>
+<DD><DL>
+ <DT>Derek Upham</DT>
+ <DD>wrote the original GNU&nbsp;Hurd FAQ</DD>
+ <DT>Gordon Matzigkeit</DT>
+ <DD>reorganized and updated the GNU&nbsp;Hurd Reference Manual for release 0.3</D
+D>
+ <DT>Matthew C. Vernon</DT>
+ <DD>wrote the ``Idiot's Guide'' for getting started with the Hurd</DD>
+ <DT>Matthias Pfisterer</DT>
+ <DD>reorganized and updated the web site in early 1999</DD>
+ <DT>Stephen L. Favor</DT>
+ <DD>current FAQ maintainer</DD>
+ <DT>Trent Fisher</DT>
+ <DD>wrote the original version of the Hurd pages</DD>
+ </DL></DD>
+</DL>
+
+Copyright (C) 1999, 2007 Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
+
+---
+
+Thank GNU to everybody who has contributed to the Hurd's development!
+
+<UL>
+ <LI><A HREF="http://www.rr.iij4u.or.jp/~kkojima/">kaz Kojima</A>
+ ported the Hurd to the <A
+ HREF="http://www.rr.iij4u.or.jp/~kkojima/hurdmips.html">MIPS
+ R3000 and R4000</A> processors.
+
+ <LI><A HREF="http://www-mbi3.kuicr.kyoto-u.ac.jp/~okuji/">
+ OKUJI Yoshinori</A> maintains a set of <A
+ HREF="http://www-mbi3.kuicr.kyoto-u.ac.jp/~okuji/hurd.html">Japanese
+ Hurd pages</A>.
+
+ <LI><A HREF="http://f77.nop.or.jp/">UCHIYAMA Yasushi</A> has ported
+ XFree86 to the Hurd.
+
+</UL>
+
+Copyright (C) 1998 Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.
diff --git a/unsorted/HurdOnL4.mdwn b/unsorted/HurdOnL4.mdwn
new file mode 100644
index 00000000..79e7a714
--- /dev/null
+++ b/unsorted/HurdOnL4.mdwn
@@ -0,0 +1,173 @@
+# <a name="GNU_Hurd_on_L4_wiki"> GNU/Hurd on L4 wiki </a>
+
+## <a name="Introduction"> Introduction </a>
+
+This page is a place for information pertaining to the efforts towards realizing the migration and porting of the [[Hurd]] such that it uses the [L4 Microkernel](http://l4ka.org/). The GNU/Hurd Operating System, sometimes just referred to as the _GNU Operating System_ is a rich and robust collection of programs and utilities which enable you to use your computer to do usefull and or entertaining things. The intent is that most any applicable software package available on the [GNU Website](http://www.gnu.org) (and many others also) will be able to be compiled and run under the resultant operating system.
+
+At this point (06/20/2004) this is not yet possible. Indeed, the preliminary foundations are still being developed. Nevertheless, this is a volunteer created operating system so those with the knowledge, interest, and spare time are encouraged to study and if possible contribute to the project.
+
+In [CVS module <samp>hurd-l4</samp>](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/), there is a [comprehensive list of items that need to be done](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/TODO).
+
+## <a name="Components_of_the_System"> Components of the System </a>
+
+### <a name="The_L4_Microkernel"> The L4 Microkernel </a>
+
+The kernel of an operating system is a fundamental program which provides essential resources from the hardware of the computer to other programs. A kernel typically runs all the time and remains resident in main memory. The amount of functionality and resources which it provides vary tremendously. The [L4 Microkernel](http://l4ka.org/) is an attempt to create a very small high performace core which provides basic memory management, task and context switching, and little else.
+
+### <a name="The_Hurd"> The Hurd </a>
+
+The [Hurd](http://www.gnu.org/software/hurd/hurd.html) is a conglomeration of servers and programs which add additional functionality to a microkernel such that it is capable of utilizing additional hardware resources of the computer. It also provides a compatibility layer such that compiling higher level programs is essentially transparent; i.e. when you write a C program and compile it, you need only include standard headers and libraries and for all intents and purposes your generic program will build and run and you need never resort to unportable coding or access to hardware specific methods.
+
+For a typical user, The Hurd is intended to silently work in the background providing the services and infrastructure which are lacking in the microkernel but are required for higher level programs and libraries to operate.
+
+### <a name="GNU_Programs"> GNU Programs </a>
+
+For the user, this is what is desired: to run [GNU Software](http://www.gnu.org/). These programs provide a full featured, robust, and extremely effective operating system. A L4/Hurd system should be capable of compiling and executing most any software package available from GNU with little or no modification.
+
+Some readers may be familiar with GNU/Linux systems. When GNU/L4 is complete it should highly resemble the functionality of such systems as L4 and Hurd effectively replace the Linux kernel. The bulk of the software should be expected to run much as it does presently under the Linux kernel (or gnumach based GNU/Hurd systems).
+
+## <a name="Preparations"> Preparations </a>
+
+### <a name="Build_System"> Build System </a>
+
+There are no precompiled binaries for Hurd on L4 that I am aware of, so you will need to be able to compile the source code packages in order to experiment with it. While L4Ka will likely build on a variety of compilers and systems, the Hurd may prove troublesome unless it is built using recent GNU compilers and tools.
+
+I recently used [Debian Unstable](http://www.debian.org) (Sarge) with GNU gcc version 3.3, autoconf version 2.50, and automake version 1.8 to build the system with good results, although other similarly equipped systems with a good development environment, such as [Gentoo](http://www.gentoo.org) or [Slackware](http://www.slackware.com) are reported to work fine also.
+
+Generally, I would recommend building the packages using any very up-to-date GNU development system. I'm not going to say that you can't compile them using more exotic platforms, but I wouldn't be overly hopefull about it. I have no idea if Pistachio can be compiled under current gnuMach/Hurd systems it might be interesting to try it.
+
+### <a name="Making_a_Home_for_L4_Hurd"> Making a Home for L4/Hurd </a>
+
+Obviously you want to have a home for this little embryonic operating system. Currently, mine is using about 5M for the binaries and headers. If you want the source to reside with the binaries, then allow perhaps another 50M or so, but this is purely optional.
+
+At the moment, Hurd on L4 can't even see your hard drive, so all you need is a directory on some partition which is visible to the GRUB bootloader. A `/l4hurd` directory on your existing GNU/Linux system is probably fine for now.
+
+Howevever, if you have some spare disk space or an unused partition, you could optionally create a small partition for the system. This is totally unnecessary at the moment because L4/Hurd lacks hard disk drivers right now, but it is an option. Assuming that you have made some partition **X** with linux _fdisk_, set it to type 83 - Linux and use the following command to initialize it with the classic Hurd extensions:
+
+
+
+As noted, this is purely optional, in fact right now you can use any filesystem that GRUB can understand. You can even use TFTP to netboot the system. My current setup takes about 5M for the full install so obviously you don't need much space for this.
+
+### <a name="Boot_Loader"> Boot Loader </a>
+
+Just like regular GNU/Hurd, you need to use [GNU GRUB](http://www.gnu.org/software/grub/), the _GRand Unified Bootloader_ in order to boot the system. Hopefully you already have it installed, in which case adding the commands for L4/Hurd to your `menu.lst` is quite trivial.
+
+If you don't have GRUB installed, then you should probably take some time to get it set up. A good place to look for help is on the regular [Debian GNU/Hurd Installation Page](http://www.debian.org/ports/hurd/hurd-install) at the **3\. The Boot Loader** section.
+
+This is probably a bit superfluous, but you can even display a snazzy little graphic of some type on your GRUB boot menu. Here's a snip from the header of my `menu.lst` which demonstrates how to do this.
+
+ # menu for grub
+ splashimage (hd0,0)/boot/grub/debian.xpm
+ foreground bfbfe7
+ background 3f3f7f
+
+In the above example, my `debian.xpm` is just a 640x480 graphic in xpm format (which you can easily create with GIMP). It does add a bit of pizazz to your boot screen :-)
+
+In fact, I will attach a sample copy of my `menu.lst` here. It has lots of examples for booting a variety of operating systems in it. Remember that my hard drive partitions are unique to my system.
+
+* [[ATTACHURLmenulst]]: Sample GRUB boot menu
+
+## <a name="Building_Hurd_on_L4"> Building Hurd on L4 </a>
+
+### <a name="L4Ka_Pistachio"> L4Ka Pistachio </a>
+
+#### <a name="Getting_the_Sources"> Getting the Sources </a>
+
+I used the latest version of L4Ka, Pistachio version 0.4. It can be obtained from the following website:
+
+[L4Ka Pistachio Home](http://l4ka.org/projects/pistachio/)
+
+#### <a name="Compiling"> Compiling </a>
+
+Pistachio is designed to be compiled in a build directory which is independant from the source directory, so you need to create your build directory after unpacking the tarball. Furthermore, you need to pass a couple of special parameters to the configure program to set it up for use with Hurd. Here is what I did on my ia32 system:
+
+Note: I have my installation set up in `/l4hurd` and I am starting from within the Pistachio source top-level directory.
+
+ $ mkdir build
+ $ cd build
+ Building and installing user-level libraries and servers/applications
+ $ ../user/configure --with-s0-linkbase=0x40000 --prefix=/l4hurd
+ $ make
+ $ make install
+ Building and installing the kernel
+ $ make -C ../kernel BUILDDIR=`pwd`/kernel
+ $ cd kernel
+ $ make menuconfig
+ $ make
+ $ mkdir /l4hurd/boot
+ $ cp ia32-kernel /l4hurd/boot
+
+Hopefully everything worked and there were no problems. As usual, if the build fails then scrutinize the output from `configure` and install any missing libraries or development packages.
+
+### <a name="CVS_l4hurd"> CVS l4hurd </a>
+
+#### <a name="Getting_the_sources"> Getting the sources </a>
+
+ You need to pull the L4 Hurd sources from the CVS tree on Savannah. The CVS access page is [The GNU/Hurd - CVS (module hurd-l4)](http://savannah.gnu.org/cvs/?group=hurd). In a nutshell, the following commands should retrieve the sources for you:
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4
+
+#### <a name="Compiling"> Compiling </a>
+
+Take a look at the README, compiling should be quite simple on any state of the art GNU development system. As per the README, and for my example, you would:
+
+ $ autoreconf -f -i -s
+ $ ./configure --enable-maintainer-mode --prefix=/l4hurd
+ $ make
+ $ make install
+ $ strip physmem/physmem
+
+ $ mkdir /l4hurd/boot
+ $ cp laden/laden /l4hurd/boot
+ $ cp wortel/wortel /l4hurd/boot
+ $ cp physmem/physmem /l4hurd/boot
+
+Currently (2004/08/09), physmem needs to be stripped to to avoid a memory conflict with wortel; this requirement may be fixed in the future.
+
+In my case it was slightly more complicated as Debian uses a wrapper system to enable the use of multiple versions of the GNU Autotools. In this case, the trick is to utilize some environment variables on the command line as follows:
+
+ $ ACLOCAL=aclocal-1.8 AUTOMAKE=automake-1.8 autoreconf -f -i -s
+
+As above, hopefully this will compile cleanly; otherwise, scroll up, read any error messages, and correct them by installing required packages of the proper version. Any bad compilation problems are most likely due to you either missing or using a wrong version of something.
+
+## <a name="Installing"> Installing </a>
+
+The binaries are now installed into `/l4hurd`. All that remains is to add an entry into GRUB's `menu.lst` in order to test it out. Here's an example from my system where I have `/l4hurd` on `/dev/hda9` in my Linux system:
+
+ title GNU Hurd on L4Ka Pistachio 0.4
+ root (hd0,8)
+ kernel /boot/laden -D
+ module /boot/ia32-kernel
+ module /libexec/l4/sigma0
+ module /boot/wortel -D
+ module /boot/physmem -D
+ module /boot/physmem
+ module /boot/physmem
+ module /boot/physmem
+ module /boot/physmem
+
+It might strike you a little odd that there are five physmem modules. This is done because wortel currently (2004/08/09) expects exactly five modules and the other modules (like the task server, auth server, etc.) have not been implemented yet. Therefore the physmem module is used as a dummy module.
+
+## <a name="Booting"> Booting </a>
+
+For me at least, I got some nifty messages and then it dropped into a simple debugging mode. As far as I know, thats all there is right now.
+
+Read, build, learn, code...
+
+--todo: add more here.
+
+## <a name="Experimenting"> Experimenting </a>
+
+Well, thats why you did all of this, certainly not to do anything else. Use that debugger and get experimenting.
+
+--todo: things to do wth the debugger
+
+## <a name="Conclusion"> Conclusion </a>
+
+If you followed these steps, you most likely have built and booted the latest version of Hurd on L4. I would encourage you to subscribe to the mailing list at the following URL and help in the efforts to get this nifty system up to speed:
+
+[l4-hurd mailing list](http://lists.gnu.org/mailman/listinfo/l4-hurd)
+
+And finally, this is a wiki, meaning that **you** have the ability to edit and modify this page. If you want to fix something, add more information, new sub-pages, whatever, feel free to do so. This is a great way to get a doc base up fast and keep it current, so use it like its supposed to be and have fun with Hurd on L4!
+
+-- [[Main/BDouglasHilton]] - 20 Jun 2004
diff --git a/unsorted/HurdOnL4/menu.lst b/unsorted/HurdOnL4/menu.lst
new file mode 100644
index 00000000..3129ea74
--- /dev/null
+++ b/unsorted/HurdOnL4/menu.lst
@@ -0,0 +1,55 @@
+# menu for grub
+splashimage (hd0,0)/boot/grub/debian.xpm
+foreground bfbfe7
+background 3f3f7f
+
+timeout 30
+default 0
+
+title Debian Sid with Linux kernel 2.6.5
+root (hd0,1)
+kernel /vmlinuz root=/dev/hda2 vga=0x318
+
+title Debian Sid with old kernel
+root (hd0,1)
+kernel /vmlinuz.old root=/dev/hda2 vga=9
+
+title Microsoft Windows 2000
+rootnoverify (hd0,3)
+chainloader (hd0,3)+1
+
+title FreeDOS BETA 8.0
+root (hd0,0)
+chainloader +1
+
+title GNU Hurd on L4Ka Pistachio 0.4
+root (hd0,8)
+kernel /boot/laden -D
+module /boot/ia32-kernel
+module /libexec/l4/sigma0
+module /boot/wortel -D
+module /boot/physmem
+
+title Debian GNU/Hurd (gnumach)
+root (hd0,7)
+kernel /boot/kernel.gz root=device:hd0s8
+module /hurd/ext2fs.static --readonly \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+# title Debian GNU/Hurd (oskit-mach)
+# root (hd3,0)
+# kernel /boot/kernel-ide -- root=hd0s1
+# module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T device ${root-device} $(task-create) $(task-resume)
+# module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+# title Debian GNU/Hurd (oskit-mach w/ remote debugging)
+# root (hd3,0)
+# kernel /boot/kernel-ide -d GDB_COM=1 BAUD=9600 -- root=hd0s1
+# module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T device ${root-device} $(task-create) $(task-resume)
+# module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
diff --git a/unsorted/InstallNotes.mdwn b/unsorted/InstallNotes.mdwn
new file mode 100644
index 00000000..f3ac58d1
--- /dev/null
+++ b/unsorted/InstallNotes.mdwn
@@ -0,0 +1,291 @@
+Items of interest during install not mentioned elsewhere include the following. Arranged in the same order as Neal Walfield's [install guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html) - (link is currently broken - see below for current instructions).
+
+**_Currently, [Debian's installation instructions](http://www.debian.org/ports/hurd/hurd-install) are the most up-to-date._**<br /> Note the mirrors mentioned on debian.org have no hurd iso's. The iso's can be found [Here](http://ftp.gnuab.org/pub/gnu.iso)
+
+## <a name="1_Overview_Where_we_are_going"> 1. Overview - Where we are going </a>
+
+There are currently four methods to install GNU
+
+1. Tarball - The current documentation, for the tarball method, are [Debian's installation instructions](http://www.debian.org/ports/hurd/hurd-install), based on the original guide by Neal Walfield. The GNU official [installation page](http://www.gnu.org/software/hurd/install.html) is the canonical reference. See [[Distrib/TarballNotesHome]] for more info.
+2. [[Distrib/BochsEmulator]] is an x86 emulator similar to the propietary [[Distrib/VmWare]] (which is not supported). See the [[Distrib/BochsEmulator]] page for more info. The Bochs project hosts a preinstalled GNU image that is periodicaly updated. You can get the latest one [here](http://sourceforge.net/project/showfiles.php?group_id=12580).
+3. [CD-ROM iso images](http://www.debian.org/ports/hurd/hurd-cd) CD-ROM installs are becoming more and more popular. The CDs are based on the most current tarball at release time. See [[Distrib/CDNotesHome]] for more info.
+4. The [crosshurd](http://packages.debian.org/crosshurd/) Debian package, which can be used instead of a tarball to install the base system. This is the recommended way to proceed.
+
+* References to a `cross-install` script can nowadays be completely ignored by anyone not a maintainer. It is only used when creating a new tarball.
+
+## <a name="2_Real_Estate_or_Finding_A_Home"> 2. Real Estate or Finding A Home </a>
+
+For those who do not happen to have an available partition or an extra hard drive, this can be the longest step. In this case, we will need to repartition the hard drive. One solution is to use GNU's partition editor, Parted. It features not only basic partition editing, but also partition resizing and moving functions. It can be found at <http://www.gnu.org/software/parted>. The manual is quite complete and includes several tutorials. Also there's a frontend called [nparted](http://packages.debian.org/unstable/utils/nparted.html) to simplify usage.
+
+The Hurd can only support partition sizes of up to approximately one gigabyte; anything much larger than this will not work. This limitation is a design decision that was made several years ago in which the file system server maps the entire partition into virtual memory. As the amount of virtual memory available on an ia32 is only four gigabytes of which only two gigabytes are available to the application and, of that, a significant portion is reserved for the code, the stack and the heap, the final, maximum contiguous virtual memory area that is left is generally about one gigabyte. This limitation is scheduled to be remove. Several other items, however, currently have a slightly higher priority.
+
+Having said that, a single one gigabyte partition is more than enough for a working system. Many, however, prefer at least two partitions: one for a root partition and another for a home partition. This latter scheme is highly advised for developers interested in debugging Hurd servers.
+
+The Hurd supports several extensions to the ext2fs file system format. Foremost among these are passive translators and a fourth set of permission bits for unknown users. In order to take advantage of these features, however, the owner of the partition must be set to Hurd. `mke2fs`, unless specifically overridden on the command line, will set the owner to whatever system core it is running on. As the Hurd will diligently respect this setting, we must be careful to set this appropriately or the Hurd may fail in subtle ways. Be aware that even if a file system is owned by a particular system core, others may still use it; they just may not be able to use certain extensions.
+
+To create a file system, we use `mke2fs` and pass it `-o hurd` to designate the Hurd as the owner of the new file system. For instance:
+
+ mke2fs -o hurd /dev/DEVICE
+
+**_Note:_** You may wish to add a `-b 4096` option to `mke2fs` (the default is chosen depending on the size of the partition, and the support for block size 1024 is buggy). The command to check the block size is `tune2fs -l /dev/hda9` under GNU/Linux.
+
+## <a name="3_The_Boot_Loader_Getting_GRUB"> </a> 3. The Boot Loader - Getting GRUB
+
+GRUB is the bootloader of the GNU system, and it's currently the only one that supports the multiboot standard, necessary to boot the Hurd.
+
+A word about GRUB. Unlike traditional boot loaders on the x86, such as LILO, GRUB is very powerful. It has a command line interface, bootp, dummy terminal support and a plethora of other features. In addition, it can boot most any operating system. If you have ever booted an alpha or sparc, you will understand what GRUB can do. Therefore, do not be scared: GRUB is better. You will like it. You will not go back.
+
+To find GRUB, visit <ftp://alpha.gnu.org/gnu/grub>. Here, there is a source tarball and a floppy image. If you choose to download the tarball, it is a normal configure, make and make install. Included is a wonderfully complete manual on how GRUB works. Read it. If, on the other hand, you choose to download the floppy image, it is sufficient to dump it to a floppy disk to get a working GRUB:
+
+ dd if=grub-boot-VERSION.image of=/dev/fd0
+
+You can always install GRUB onto your hard drive at a later date.
+
+For instructions on using GRUB, see either the info documentation or the quick reference notes on this wiki:
+
+* [[GRUB]] - quick reference
+
+## <a name="4_Cross_Install_Cross_Installing"> </a> 4. Cross Install - Cross Installing GNU
+
+The recommended way to cross install the Hurd is by using the [crosshurd](http://packages.debian.org/crosshurd) Debian package. Unfortunately, it's broken right now (2003-10-10), so you'll have to use the old tarball method.
+
+Download the base system `gnu.tar.gz` from <ftp://alpha.gnu.org/gnu/hurd/contrib/robertmh/> .
+
+The tarball is setup to extract everything into the current directory. After mounting the partition and changing to the mount point, we just need to extract the archive. In the following example, we assume that the root partition is mounted on `/gnu`.
+
+ cd /gnu
+ tar --same-owner -xvzpf ~/gnu.tar.gz
+
+**_NOTE:_** This should NOT be confused with the `cross-install` script method. It is only used by maintainers when creating a new tarball.
+
+## <a name="5_Booting_GNU"> </a> 5. Booting GNU
+
+Now things are setup to boot GNU for the first time. Verify that the GRUB boot disk is in the drive and reboot. If all goes well, a GRUB menu will be displayed. Hit c for the GRUB command line.
+
+First, the root file system needs to be set. GRUB uses a partition nomenclature that is a bit different from either GNU or GNU/Linux: both IDE and SCSI drives are named `(hdN)`. `N` is the drive number (zero based) as reported by the BIOS. That is, GRUB makes no distinction between IDE and SCSI disks. The partitions, like the disks, are also indexed numerically from zero: `(hdN,M)`. If this sounds bad, relax: GRUB is also helpful.
+
+To determine on which file system a particular file resides, one method is to use the find command. When issued this command, GRUB searches on each file system for the specified file and prints where is was found. Here we search for the kernel, `/boot/gnumach.gz`.
+
+ grub> find /boot/gnumach.gz
+ (hd0,0)
+
+As we can see, GRUB is indicating that `/boot/gnumach.gz` is on `(hd0,0)`. Thus, we set the root respectively:
+
+ grub> root (hd0,0)
+ Filesystem type is ext2fs, partition type 0x83
+
+Next, GNU Mach needs to be loaded. In addition to loading the binary, at least one option, the root partition, must be specified. This will be used by the Hurd itself. As such, it must be in terms that the Hurd can understand.
+
+GNU Mach labels disks starting at zero. IDE drives are prefixed with hd, while SCSI disks are prefixed with sd. Like GNU/Linux, drives are number by their position on the controller. For instance, the primary master is `hd0` and the secondary slave is `hd3`. Partitions use the BSD slice naming convention, and append `sM` to the drive name to indicate a given partition. Note that `M` is a one, not zero, based index. The slice number is simple to calculate: just increment what you used for GRUB by one.
+
+Since the Hurd has not yet been configured, it must be run in single user mode. Adding a `-s` to the kernel command line is all that is required.
+
+Thus, continuing with the above example and assuming that the first drive in the master on the secondary controller, we would have:
+
+ grub> kernel /boot/gnumach.gz root=device:hd2s1 -s
+ [Multiboot-elf, ...]
+
+NOTE: If after running this command you see GRUB Error 28, according to the [GRUB Troubleshooting](http://www.gnu.org/software/grub/manual/grub.html#Troubleshooting) documentation, you may need to tell grub that you have more memory by using the uppermem command. For example, if you have 256MB of RAM and running **displaymem** within GRUB shows that you have less memory than that, you can type **uppermem 262144** to tell GRUB about the additional memory.
+
+Next, the root file system server and the exec server must be loaded. This is done using GRUB's boot module capability. The parameters are the semantics by which the kernel passes some important values to the servers.
+
+ grub> module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} \
+ $(task-create) $(task-resume)
+
+ [Multiboot-module 0x1c4000, 0x2cfe6a bytes]
+ grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+ [Multiboot-module 0x494000, 0x27afe bytes]
+
+**_Important:_** each module string should be asingle separate line _or_ line wrapped with a backslash at the end of each line. Remember to make sure there are **_no trailing spaces!_** Adding this to GRUB's `menu.lst` file as soon as possible is advised.
+
+Finally, GNU can be booted:
+
+ grub> boot
+
+Sit back and watch the messages. This is actually more important than one might think as there is a bug in GNU Mach whereby hitting a key during the boot process causes the kernel to panic.
+
+If GNU fails to boot, it could be due to shared IRQs: GNU Mach does not play well with these. You can verify your situation by looking at, for instance, the `/proc/interrupts` file under GNU/Linux. Also, as GNU Mach does not support loadable kernel modules, many of the drivers are compiled into the default kernel. If you have old peripherals, this can be a significant problem: a device may respond badly to a probe intended for a different device. Building a new kernel with only the required devices drivers will usually solve this problem. GNU Mach is easily cross compiled. If you are running Debian, try the `gcc-i386-gnu` package.
+
+If this does not help, explore the resources listed at the end of this document. Finally, ask on the appropriate mailing list.
+
+There are some cavaets to the boot process:
+
+* **IMPORTANT!** Remember when first booting into your freshly un-tarred distribution, you must pass the `-s` option to `/boot/gnumach.gz`. Failure to do so means that you won't get single-user mode.
+* **IMPORTANT2!** Add the `--readonly` flag to the file system server in your GRUB `menu.lst` file. This is a work-around to get `fsck` working properly. Don't forget, everything must be on ONE line, or ended with a backslash!
+* **IMPORTANT3!** If you have created the filesystem with a later version of e2fsprogs than the one installed in the tarball, it **might** happen that fsck fails and you can't boot multiuser. The workaround is to copy `/bin/true` into `/sbin/e2fsck` and `/sbin/fsck.ext2`, then boot multiuser and install the latest e2fsprogs.
+
+ title GNU (kernel GNUmach 1.3)
+ root (hdX,Y)
+ kernel /boot/gnumach.gz root=device:hdXs(Y+1)
+ module /hurd/ext2fs.static --readonly \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+Where `hdX,Y` is the appropriate hard disk and partition number, in GRUB format. `hdXs(Y+1)` is the GNUmach format - because Mach partitions start at 1, unlike GRUB partitions that start on 0 (zero).
+
+It is important that each module string is only a single separate line, or by escaping the EOL (end of line) with a back slash. Remember though to make sure there are **_no trailing spaces!_**
+
+**_GRUB floppy and iso images:_** These are available from <http://www.copyleft.co.nz/links.html>. These have been built with the correct strings and only the root and boot partitions names need to be editied.
+
+## <a name="6_Native_Install_Finishing_the_I"> 6. Native Install - Finishing the Installation </a>
+
+Once a prompt comes up, and any time that the the Hurd is in single user mode, it is necessary to set the terminal type:
+
+ export TERM=mach
+
+(Repeat this each time you boot in single user mode)
+
+Be warned that CONTROL-C and family will not work in single user mode.
+
+We can now run the native-install script. This will configure the packages and set up several important translators:
+
+ ./native-install
+
+Right before the script terminates, it will indicate that it needs to be run a second time. Follow its instructions and reboot using the reboot command. Again, go into single user mode.
+
+Now it is advisable to enable swap. The mach kernel dislikes running without swap and is unlikely to last through the installation, especially on systems with little physical RAM. Although you can enable swap later on after running `./native-install` for the second time, turning swap on early increases your probability of getting there.
+
+This will start the default pager, create a device corresponding to the swap partition, and turn swap on on that partition:
+
+ /hurd/mach-defpager
+ cd /dev
+ ./MAKEDEV hdXsY
+ swapon /dev/hdXsY
+ cd /
+
+**IMPORTANT!** When enabling swap please be very sure that the partition really is swap. If you point `swapon` to a data partition it will use that for swap, overwriting any data you may have there.
+
+Now run `./native-install` for the second time and go through a series of prompts.
+
+Next, edit `/etc/fstab` to add the home partition and swap space. By default, `nano` is the only editor installed by the the base distribution (not `ae` nor `vi`). It is very important that swap space be used: the Hurd will be an order of magnitude more stable. Note that the Hurd can transparently share a swap partition with Linux, the kernel, but will happily page to any device including a raw partition such as your home partition.
+
+Here is an example `/etc/fstab` file:
+
+ # <file system> <mount point> <type> <options> <dump> <pass>
+ /dev/hd2s1 / ext2 rw 0 1
+ /dev/hd2s2 /home ext2 rw 0 2
+ /dev/hd2s3 none swap sw 0 0
+
+Remember to create any devices using the `MAKEDEV` command.
+
+When you first boot, your `/home` directory will _not_ be auto-mounted. You must set a passive translator on that node to access that partition. The correct syntax for this is: <br />`settrans -p /home /hurd/ext2fs /dev/hd2s2`
+
+To mount an nfs partition, use the nfs translator. When run as non-root, the translator will connect, for obvious reasons, to the nfs server on a port above 1024. For this to succeed under GNU/Linux, the insecure option must be added to the export line. Here is an example `/etc/exports` file:
+
+ /home 192.168.1.2(rw,insecure)
+
+To mount this from a GNU box:
+
+ settrans -cgap /home /hurd/nfs 192.168.1.1:/home
+
+## <a name="7_Configuration_Making_the_Syste"> 7. Configuration - Making the System Usable </a>
+
+See [[DebianAfterInstall]] for complete, up to date instructions.
+
+* After you install, you'll want to do several _important_ things:
+ * Run `passwd` to give the root user a password. By default, root does not have one.
+ * Run `adduser` to give yourself a user account. _Do not_ use root indiscriminately.
+ * Run `MAKEDEV` to create devices in `/dev` for your hard disk and other required devices.
+ * run `/etc/cron.daily/find` to allow `locate` to function.
+
+* [[GetNetworkRunning]]
+ * Hopefully Mach will recognize your hardware. If it doesn't you have to recompile in most cases.
+ * copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to resolve correctly.
+
+* Prepare system for new packages.
+ * See [[DebianAfterInstall]] for up to date instruction on how to setup apt-get mirrors.
+ * There are some extremely useful cross-platform 'apt' tricks that can be used to get packages when using Debian GNU/Linux (possibly others) for installation on GNU. This is especially useful if your GNUMach doesn't recognize your network card. The steps are covered in the file `/usr/share/doc/apt-doc/offline` which has been used by several Hurd developers successfully.
+ * create an `/etc/apt/apt.conf.offline` like [[AptConfOffline]].
+ * consider setting up a few [[CrossPlatformAliases]] for use under Debian GNU/Linux while the Debian GNU/Hurd partitions are mounted.
+ * select the `apt` method from within dselect.
+
+* [[Xfree86]]
+
+* New packages - Hopefully you are able to get your network working but since the default GNUMach is only configured for a few ethernet cards you may need to recompile your GNUMach to get it working with your network hardward.
+ * Install these extremely useful packages
+ * `dialog` -- Debconf uses this for interactivity. You should install this first to allow you to configure other packages as they are installed.
+ * It's a very good idea to bring your packages up to date by running: `apt-get update && apt-get dist-upgrade`
+ * Some recommended packages
+ * `screen` -- A terminal multiplexer was important because the Hurd didn't have virtual consoles. Now you can have the [[Hurd/HurdConsole]], but screen is still handy.
+ * `anacron` -- good to run cron jobs for a machine that is not on all the time.
+ * `emacs21` -- a powerful editor.
+ * `cvs` -- Concurrent Version System, you'll probably need this soon.
+ * `bzip2, zip, unzip` -- compression tools.
+ * `build-essential` -- preparing to build software.
+ * `gnu-standards` -- GNU coding and package standards.
+
+* Some packages use an erroneous dependency on `libc6-dev`. This is incorrect because libc6 is specific to GNU/Linux. The corresponding package for GNU is `libc0.3-dev`. If you find a package that is uninstallable due to a `libc6[-dev]` dependency, please send a bug report with a patch that fixes it. It is important that you don't hack your package system to workaround such problems, because that way you won't be able to spot them when they arrive. See the [[Distrib/PortingIssues]] for details about the problem and [[Distrib/BtsFiling]] for details on sending bug reports.
+* Edit your `/etc/inetd.conf` and comment out all the services you don't need. Services that probably don't need to be running are `ftp`, `telnet`, `shell`, `login`, and `exec`.
+* There appears to be a bug in `libnss-db` that causes networking to fail. To work around this edit `/etc/nsswitch.conf` and remove the `db` entries. (See <http://www.geocrawler.com/archives/3/333/2001/1/50/4907699/> )
+
+* You may want to check the [[PackageTroubleshooting]] page if you are having trouble installing and making work some Debian packages.
+
+## <a name="8_Final_Words_The_FAQ"> </a> 8. Final Words - The FAQ
+
+* [[FAQ]] - More than frequently asked questions
+
+* [Hurd FAQ](http://web.walfield.org/papers/hurd-faq/)
+
+* [[KnownHurdLimits]] - Limitations of the GNU operating system
+
+## <a name="9_Works_Cited_Referenced_Materia"> 9. Works Cited - Referenced Materials </a>
+
+On Sept 20, 2002 [[Main/DeepakGoel]] (a self-proclaimed newbie) posted a link to his personal [step-by-step installation](http://24.197.159.102/~deego/pub/hurd/install-guide/install.txt). The parent directory has additional material.
+
+Tarball Notes: [[Distrib/TarballNotes20020816]] [[Distrib/TarballNotes20020523]]
+
+CD-ROM Notes: [[Distrib/CDNotesJ2]]
+
+Others who wish to post summaries of their installation experiences are encouraged to do so. The installer methods, package dependencies and file locations frequently do change without warning.
+
+----
+
+## <a name="Licensing"> Licensing </a>
+
+ This work is based on the hard work by [countless Hurd users](http://web.walfield.org/papers/hurd-installation-guide/THANKS), documented and maintained by Neal H. Walfield. See the original for both reference and its licensing at <http://web.walfield.org/papers/hurd-installation-guide/>
+
+The license for Neals work is under the [GNU GPL](http://web.walfield.org/papers/hurd-installation-guide/COPYING). However, in the Hurd Wiki license all content under the GNU FDL. (Unless the topic is mostly code or otherwise stated in the text.)
+
+There are currently issues to be resolved around this matter, as far as I understand at least. Until an agreement can be reached this text, and the unclear status of this topic, will remain. The suggestion is to do something like this:
+
+<dl>
+ <dt>[[InstallGuide]]</dt>
+ <dd> Neals Install Guide in its original form </dd>
+ <dt>[[InstallNotes]]</dt>
+ <dd> Or [[InstallGuideErrata]] with all user input and additions </dd>
+</dl>
+
+There are several obvious issues with this as I can see
+
+1. The [[InstallGuide]] must be kept editable by a select few people to avoid the current situation from repeating itself.
+2. This loops back and kicks us in the butt because then we get:
+ 1. Synchronization problems with the original work
+ 2. Bottle necks: The people with edit access are too busy to synchronize with Neals guide
+ 3. Diverging guides
+3. Annoyed users, we break the tradition of freely editable wiki content and we also have two guides saying different things.
+
+-- [[Main/JoachimNilsson]] - 29 Dec 2002
+
+## <a name="Blame_annotations"> Blame annotations </a>
+
+ -- [[Main/SimonLaw]] - 29 May 2002 <br /> -- [[Main/GrantBow]] - 13 Oct 2002 <br /> -- [[Main/JoachimNilsson]] - 14 Nov 2002 <br /> -- [[Main/RobertMillan]] - 21 Nov 2002 <br />
+
+First effort at straightening out the formatting mess ... added references to Neals' original, which this topic has become heavily based on.
+
+-- [[Main/JoachimNilsson]] - 19 Dec 2002 <br />
+
+Updated to the latest short-comings in the Hurd.
+
+-- [[Main/OgnyanKulev]] - 11 Oct 2003
+
+-- [[Main/TWikiGuest]] - 07 Dec 2003 (<r2q2@rocketmailNOSPAM.com>)
+
+Updated iso information
diff --git a/unsorted/InstallTips.mdwn b/unsorted/InstallTips.mdwn
new file mode 100644
index 00000000..262ec741
--- /dev/null
+++ b/unsorted/InstallTips.mdwn
@@ -0,0 +1,111 @@
+Before reading these instructions, be sure you are familiar with the [[InstallNotes]].
+
+## <a name="1_Setting_up_the_filesystems"> 1. Setting up the filesystems </a>
+
+You will need to boot a linux capable of internet access and creating/mounting ext2 partitions. I recommend [tomsrtbt](http://www.toms.net/rb/) linux which fits nicely onto a floppy and although a bit old will work well.
+
+Once in linux, you will need to create the partitions with fdisk. If you need to reboot, you will be notified. Make sure your partitions are not more than 2gig, or not even close. I learned this the hard way. This is for version 9-17-2004, newer versions should not have this problem.
+
+Assuming your root partition is on the first partition of the primary master run:
+
+ mke2fs -o hurd /dev/hda1
+
+If you do not have enough memory to do this, you will need to create a swap partition using mkswap and enable it with swapon before running mke2fs.
+
+## <a name="2_Getting_online"> 2. Getting online </a>
+
+Now you will need to get online to download the needed base system. To do this check to see if you are already online.
+
+If not, check the network by issuing ifconfig. If you have a device but it is not listed correctly, refer to the documentation on ifconfig to set it correctly. Even if you have dhcp you can usually issue a static ip that is in the correct range. An example may read:
+
+ ifconfig eth0 up 192.168.1.9 netmask 255.255.255.0
+
+Now setup the default gateway replace with your gateway
+
+ route add default gw 192.168.1.1
+
+you may need to issue "route del default" a few times to remove incorrect routings.
+
+Now just edit /etc/resolv.conf and put in your nameserver and you should be set.
+
+## <a name="3_Downloading_the_tar"> 3. Downloading the tar </a>
+
+Mount the filesystem to a directory (/mnt works) and cd to this directory.
+
+Download the latest tar of the debian system <http://eu.hurd.gnuab.org/pub/debian/base/> or another working link, the file will probably be in the format: debian-gnu-hurd-yyyy.mm.dd.tar.gz
+
+use wget for the full path
+
+now assuming tomsrtbt linux issue:
+
+ gzip -d<debian-gnu-hurd-yyyy.mm.dd.tar.gz|tar -xvf -
+
+replacing yyyy.mm.dd appropriately
+
+## <a name="4_Configuring_GRUB"> </a> 4. Configuring GRUB
+
+Download the floppy image of grub with ext2fs support to a temporary directory, it can be found here: <ftp://alpha.gnu.org/gnu/grub/> write it to a blank floppy
+
+ dd if=image of=/dev/fd0
+
+now mount the floppy and copy the files to your partition
+
+ mount /dev/fd0 /fl
+ cd /fl/boot
+ cp -R grub /mnt/boot
+
+you may also wish to put my menu.lst file in your grub directory which can be obtained here <ftp://firethroat.com/hurd/menu.lst> you will need to edit it to include a -s at the end of the line starting with kernel. Be sure modify the partition numbers, my system is using the third partition of the second harddrive.
+
+More detailed samples for GRUB config files can be found at the [[GRUB]] page.
+
+To install grub reboot using the grub floppy and issue:
+
+ root (hd1,2)
+ setup (hd0)
+
+this will use the grub installed on the third partition of the second harddrive and install it to the master boot record of the first hard drive.
+
+Now reboot without the floppy, be sure to use the option -s at the end of the grub line starting with kernel= to start in single user mode.
+
+## <a name="5_Booting_GNU"> </a> 5. Booting GNU
+
+You should have booted the kernel now, check output to see if it detects your network card. My smc card did not work so I switched to a 3com card.
+
+You are now at step 6 of the [[InstallNotes]]. Follow these instructions to complete the installation.
+
+## <a name="6_Final_notes"> 6. Final notes </a>
+
+Be sure to issue
+
+ apt-get update
+ apt-get upgrade
+
+Before running x run the console
+
+ console -d vga -d pc_kbd --repeat=kbd -c /dev/cons /dev/vcs
+
+This forwards the keyboard device so x can use it. It also gives you 6 virtual terminals. I have had problems using it to forward the mouse, the system would lock. To exit issue ctrl+alt+backspace
+
+To get a sample XF86Config-4 issue:
+
+ X -configure
+
+My file is available <ftp://firethroat.com/hurd/XF86Config-4> but it uses a serial mouse. You can use settrans to get mouse input (this is the prefered method) or accessing it directly works.
+
+## <a name="7_Works_Cited_Referenced_Materia"> 7. Works Cited - Referenced Materials </a>
+
+[[InstallNotes]] -- Neal H. Walfield's Install Guide
+
+[Grub Install Guide](http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-natively.html)
+
+[tomsrtbt linux](http://www.toms.net/rb/) a general purpose linux distribution on 1 floppy.
+
+A lot of help in the chat room [[IRC]].
+
+----
+
+## <a name="Licensing"> Licensing </a>
+
+The license for this info work is under the [GNU GPL](http://web.walfield.org/papers/hurd-installation-guide/COPYING). However, in the Hurd Wiki license all content under the GNU FDL. (Unless the topic is mostly code or otherwise stated in the text.)
+
+-- [[Main/SeanDEpagnier]] - 25 Dec 2004
diff --git a/unsorted/InteractiveTranslators.mdwn b/unsorted/InteractiveTranslators.mdwn
new file mode 100644
index 00000000..9a0ca7e2
--- /dev/null
+++ b/unsorted/InteractiveTranslators.mdwn
@@ -0,0 +1,31 @@
+The following text is from mail by Hurd architect Thomas Bushnell:
+
+> Thread moved over to bug-hurd since it's about design and not Debian GNU/Hurd per se. Alfred Szmidt had pointed out that a dpkg installation translator (one where you copy a .deb into a directory to install it into the system) cannot be easily written, because Debian package installation scripts are sometimes interactive.
+>
+> I said that this was a deficiency in the design of the Hurd, and that it would be good to fix it (ultimately) by creating user interaction context widgets which can be passed to servers so that they can safely and securely interact with the user when necessary.
+>
+> Alfred M. Szmidt writes:
+>
+> > I think you mean that it is a shortcoming in the design of things that are not or cannot be interactive, filesystems being one such example. I can see it infront of me: stat() poping up a dialog asking me to do something each time it gets called...
+>
+> No, it's a shortcoming in the design of the Hurd, because many times it **can** be interactive. Of course we don't want stat prompting you ever time it's called, but that's not an excuse for preventing stat from ever prompting you at all. We use all kinds of programs that can be interactive, and needless prompts are bugs, easily fixed.
+>
+> Please, don't lecture me about the Hurd being perfect; it's not. And this is a shortcoming that can someday be fixed, so we shouldn't pretend it's not a problem. It is. A friend at the AI lab once gave the following dream as an example of a well-functioning system:
+>
+> You walk up to the workstation and start a complex memory intensive ray-tracing program. It runs out of memory and swap space on the workstation. A dialog pops up informing you of the situation and giving several options: suspend the job until later, kill it, and so forth. (Notice that Unix and the Hurd both simply kill the process or the system here, because the discovery that swap is gone happens so low down that all context has been lost.)
+>
+> You put a disk in the drive. After putting the disk in, without you doing anything in the dialog, a new option comes up, "I notice you just put a disk in; do you want to use this for additional swap?" You say yes. The process now continues, with part of the swap being on the disk. (Notice that Unix and the Hurd don't make connections like this, having one driver know that something **else** in the system might be waiting for this resource and offering it for use.)
+>
+> In the middle of the task, you hit the button on the drive and out pops the disk. A notifier pops up on the screen, saying that the necessary swap for your process has been removed from the system, and so the job has been suspended until later, and giving you the option of killing it. You say "OK" (that is, you do not say to kill it), and then you log out. (Note that Unix and the Hurd cannot carry on at all in such a case; failure to satisfy a page-in fault results in utter disaster, not clean behavior. Also, neither control carefully which data is paged to which devices, because all interaction context is gone when pageout decisions are being made, so if you have started paging on this disk, you have probably started paging all kinds of essential system services on it too.)
+>
+> A week later, you walk up to a different workstation in the cluster, and pop in your disk. The system says, "I notice you have a suspended job that was using this disk for swap space" and allows you to resume it where you left off. (Notice that this requires close interaction between the workstations in the cluster, combined with more driver-level cleverness.)
+>
+> Now that's a well-functioning system. It requires careful bookkeeping of context, knowledge about how to usefully interact with the user from deep in the bowels of the system, and so forth. The Hurd has the capacity for this kind of thing, because user servers can do arbitrary things, unlike kernel routines in Unix. But we must figure out how to give them all the necessary information about their context.
+>
+> When I designed the filesystem protocols and the structure of the system, I did not consider this kind of flexibility. I had only the simplest kinds of filesystem translators in mind, ones which were just like Unix filesystems but supporting formats like tar and ar in addition to the typical mass-storage types. It was only a little later that I realized union and shadow translators would be a nice thing (and BSD picked up the idea after I explained it at a Boulder BSD conference). Keeping track of who is using which swap space? Now **that** would be clever, and would be very very nice to have.
+>
+> The reason that filesystems do not have user context is because I was not sufficiently far-sighted at the time to realize the full flexibility of the translator concept I had created. Now that we know more about that flexibility, it would be nice to start figuring out how to improve it.
+>
+> Thomas
+
+-- [[Main/OgnyanKulev]] - 21 Mar 2005
diff --git a/unsorted/JoachimNilssonHurdPage.mdwn b/unsorted/JoachimNilssonHurdPage.mdwn
new file mode 100644
index 00000000..163d6845
--- /dev/null
+++ b/unsorted/JoachimNilssonHurdPage.mdwn
@@ -0,0 +1,235 @@
+## <a name="Introduction"> Introduction </a>
+
+This page serves as a simple project page for me. I use it to list my personal Hurd related projects, currently only OSKit related. If you wish to comment on my work, do so in [[TWiki/GoodStyle]], preferably at the bottom of this page.
+
+The OSKit work is based on the St. Patrick's Day release, snapshot 20020317.
+
+These patches are available through the [Savannah OSKit project](http://savannah.gnu.org/projects/oskit/) Hopefully they will also be integrated into the main tree at Utah.
+
+## <a name="Progress"> Progress </a>
+
+**_2005-02-05:_** Sorry, these pages are now dead. It turned out that my spare time actually was limited. I have a family with a second child due in August — so it's unlikely that I'll ever go back to working with these patches. However, I plan on joining the [[HurdOnL4]] project, possibly to help with drivers, since that's what I do at work mostly.
+
+**_2003-04-17:_** I've become a bit distracted lately from my Hurd related projects. My work has consumed a lot of time, as have my personal life (I'm about to become a dad! :). But don't worry, I have been working quietly in the background anyway - the OSKit patches have been integrated into the Savannah OSKit project and a new [[TWiki/GnuSkin]] release has been made.
+
+There is one thing now, only one little thing that I want to have finished before the summer. My Promise ATA-100 controller - support for it in [[Mach/OskitMach]]. Any spare time I find I'll spend on getting that one up and running.
+
+## <a name="Current_Project"> Current Project </a>
+
+I'm working on importing the Linux ATA-100 drivers to the OSKit. Using patches by Linux ATA guy, Andr� Hedrick. [ATA-100 patches](http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.2.20/).
+
+At my help I now have [[Main/OgnyanKulev]], he will test a few ATA-100 cards he has access to.
+
+[[Main/JoachimNilsson]]:
+
+* HighPoint HPT366 ATA-66
+* Promise PDC202XX ATA-100
+
+[[Main/OgnyanKulev]]:
+
+* Promise PDC202XX
+* Intel 82801BA
+* Silicon Image CMD649
+
+### <a name="OSKit_ATA_100_Support"> </a> OSKit - ATA-100 Support
+
+I have used the Linux 2.2.22 patch as the base and added the Linux ide-2.2.20.01102002 patch on top. Integration is now complete, testing have started. An alpha quality release is available below, if you want to help out with testing or be on the bleeding edge of things, please contact me via email.
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.22-ATA (ALPHA) </td>
+ <td> Adds ATA-100/66 capabilities (alpha release) </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22-ATA-alpha.diff.gz" target="_top">patch-oskit-linux-2.2.22-ATA-alpha.diff.gz</a></td>
+ <td align="right"> Jan 3, 2003 </td>
+ </tr>
+</table>
+
+**_Comments:_**
+
+* Progress is slow.
+ * Off-board chipsets seem more difficult ...
+ * PIIX chipset works, tuning included.
+
+----
+
+## <a name="Previous_Projects"> Previous Projects </a>
+
+### <a name="OSKit_New_Linux_NIC_drivers"> </a> OSKit - "New" Linux NIC drivers
+
+"New" means simply to add more of the drivers existing in Linux 2.2.X that don't exist in the OSKit today.
+
+To test any of the work in this project you first need to upgrade the OSKit to Linux 2.2.22 (or later) using my patches below. The first stage deals with network drivers, 10 and 100 Mbps. Gigabit ethernet I have no possibility to test ... so they are **not** included.
+
+I may, at a later date, also include updates to drivers by Donald Becker. See the drivers at <http://www.scyld.com/network/>
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.22-NET </td>
+ <td> Adds more Linux NIC drivers </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22-net.diff.gz" target="_top">patch-oskit-linux-2.2.22-net.diff.gz</a></td>
+ <td align="right"> Dec 26, 2002 </td>
+ </tr>
+</table>
+
+**_Added NICs:_**
+
+* 3Com 3c515
+* D-Link DE-600, DE-620
+* Davicom DM9102(A)/DM9132/DM9801
+* N2k-PCi, NE2000 PCI-based cards
+* PCNet32
+* RealTek RTL8139
+* SiS 900/7016
+* ThunderLAN
+* VIA Rhine
+
+### <a name="OSKit_Upgrade_existing_Linux_dri"> </a> OSKit - Upgrade existing Linux drivers
+
+ The OSKit itslef is currently at Linux version 2.2.12 for most of its drivers. The objective of this project was to upgrade to 2.2.22. I will of course also provide upgrades to upcoming revisions of the 2.2.x series, but they have a low priority right now. Please note:
+
+* The patches are cummulative, i.e., you only need one.
+* The patches only upgrade existing OSKit drivers, they don't add support for new ones. Unlike the corresponding Linux patches.
+
+To build [[Mach/OskitMach]] you also need some other [[Mach/OskitPatches]]. As well as two unofficial GNUmach2 patches. See Daniel Wagners post to bug-hurd, <http://mail.gnu.org/pipermail/bug-hurd/2002-December/011134.html>, or the [[Mach/OskitMachPatches]].
+
+**_Tested NICs:_**
+
+Testbed: Intel AL440LX mobo 128MiB RAM (only 64MiB detected by Grub 0.93).
+
+* Digital Equipment Corp. Etherworks Turbo PCI Controller DE435 - digital Tulip 21040-AA
+* 3Com 3C905B-TXNM Fast Etherlink XL PCI - Parallel Tasking II 3Com 40-0483-004
+* RTL8139
+
+**_Untested NICs:_**
+
+These I have and will test eventually
+
+* Western Digital 10 Mbps ISA - WD8003EBT
+* SMC Ultra 16 ISA
+* NE1000/2000
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ <th bgcolor="#99CCCC"><strong>Verified?</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.13 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.13 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.13.diff.gz" target="_top">patch-oskit-linux-2.2.13.diff.gz</a></td>
+ <td> Oct 27, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.14 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.14 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.14.diff.gz" target="_top">patch-oskit-linux-2.2.14.diff.gz</a></td>
+ <td> Oct 30, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.15 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.15 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.15.diff.gz" target="_top">patch-oskit-linux-2.2.15.diff.gz</a></td>
+ <td> Oct 31, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.16 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.16 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.16.diff.gz" target="_top">patch-oskit-linux-2.2.16.diff.gz</a></td>
+ <td> Oct 31, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.17 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.17 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.17.diff.gz" target="_top">patch-oskit-linux-2.2.17.diff.gz</a></td>
+ <td> Nov 1, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.18 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.18 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.18.diff.gz" target="_top">patch-oskit-linux-2.2.18.diff.gz</a></td>
+ <td> Nov 1, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.19 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.19 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.19.diff.gz" target="_top">patch-oskit-linux-2.2.19.diff.gz</a></td>
+ <td> Nov 4, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.20 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.20 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.20.diff.gz" target="_top">patch-oskit-linux-2.2.20.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.21 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.21 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.21.diff.gz" target="_top">patch-oskit-linux-2.2.21.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.22 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.22 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22.diff.gz" target="_top">patch-oskit-linux-2.2.22.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.23 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.23 </td>
+ <td> [[][patch-oskit-linux-2.2.23.diff.gz]] </td>
+ <td> Not yet </td>
+ <td>   </td>
+ </tr>
+</table>
+
+**_Notes:_**
+
+1. Yes, the patch has been tested using the latest CVS version (HEAD) of GNUmach. Verified means that I have verified that GNUmach can be built, booted successfully (using IDE and various NICs).
+
+## <a name="Future_Work"> Future Work </a>
+
+1. Try to enable GNUmach to use the [[TWiki/FreeBSD]] drivers in the OSKit.
+2. Port a simple DHCP client (udhcp perhaps?).
+3. Enable the sound drivers in the OSKit -- port a useful sound daemon.
+4. SMP support for GNUmach2 - Current OSKit is broken.
+
+### <a name="TWiki_FreeBSD_NIC_drivers_for_GN"> </a> [[TWiki/FreeBSD]] NIC drivers for GNUmach
+
+ I have looked into this a bit. The PCI drivers are initialized from the PCI probe. GNUmach v2 uses the Linux PCI stuff which means the [[TWiki/FreeBSD]] probe will not run - this is probably solved in some ingenious way in the OSKit, maybe the COM interfaces, but I've yet to find out more about that.
+
+----
+
+ Feel free to contact me if you have any comments or suggestions.
+
+-- [[Main/JoachimNilsson]] - Feb 19th 2003
+
+## <a name="Comments"> Comments </a>
+
+Go Joachim! Great work!
+
+-- [[Main/GrantBow]] - 11 Nov 2002
diff --git a/unsorted/JoachimNilssonHurdPage/patch_kit.jpg b/unsorted/JoachimNilssonHurdPage/patch_kit.jpg
new file mode 100644
index 00000000..da5cc147
--- /dev/null
+++ b/unsorted/JoachimNilssonHurdPage/patch_kit.jpg
Binary files differ
diff --git a/unsorted/JoachimNilssonOldStuff.mdwn b/unsorted/JoachimNilssonOldStuff.mdwn
new file mode 100644
index 00000000..30e6b611
--- /dev/null
+++ b/unsorted/JoachimNilssonOldStuff.mdwn
@@ -0,0 +1,32 @@
+## <a name="OSKit_Mach_Troubles"> </a> OSKit-Mach Troubles
+
+* Building OSKit &amp; Mach and optimizations, context SMP: <http://lists.debian.org/debian-hurd/2002/debian-hurd-200203/msg00080.html>
+* OSKit \_\_libc\_multiple\_libcs: <ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01052.html>
+* Enabling OSKit drivers in Mach: <http://lists.debian.org/debian-hurd/2000/debian-hurd-200003/msg00265.html>
+* IDE Bios probe trap on page zero problem: <http://mail.gnu.org/pipermail/bug-hurd/2001-July/004714.html>
+
+* Neal announces oskit-mach binary: <http://lists.debian.org/debian-hurd/2000/debian-hurd-200009/msg00323.html>
+* Neal crashes with OSKit 200009 on 0x104: <http://mail.gnu.org/pipermail/bug-hurd/2000-September/000055.html>
+* Igor crashes on 0x104: <http://mail.gnu.org/pipermail/bug-hurd/2001-July/004714.html>
+
+Mach docs
+
+* wget -m -np <ftp://ftp.inf.tu-dresden.de/pub/os/mach/> (nearly 250M)
+* wget -m -np <ftp://ftp.lip6.fr/pub/mach/> (nearly 2G (e.g. includes oskit))
+* wget -m -np <ftp://ftp.opengroup.org/pub/ri/os/> (About 20-30M)
+* <ftp://ftp.ftp.lip6.fr/pub/mach/cmu/doc/osf/>
+
+# <a name="Links"> Links </a>
+
+Misc. links for my pleasure only.
+
+* [Savannah - GNU CVS](http://savannah.gnu.org)
+* [Gnu/Hurd](http://hurd.gnu.org)
+* [OSKit-mach docs](http://www.etherhogz.org/doc/)
+* "Building OSKit-Mach" the document: <http://mail.gnu.org/pipermail/bug-hurd/2001-September/005266.html>
+* [Walken Hurd hackers guide](http://www.via.ecp.fr/~walken/hurd/) [(mirror)](http://vmlinux.org/crash/mirror/www.via.ecp.fr/)
+* [CMU CS Mach pages](http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html)
+* [Univ. of Utah's Mach 4](http://www.cs.utah.edu/projects/flux/mach4/html/)
+* OSKit [HTML](http://www.cs.utah.edu/flux/oskit/html/oskit-www.html) or [PS.GZ](http://vmlinux.org/joachim/hurd/oskit.ps.gz) manual.
+
+-- [[Main/JoachimNilsson]] - 31 Oct 2002
diff --git a/unsorted/KernelCousinDebianHurd.mdwn b/unsorted/KernelCousinDebianHurd.mdwn
new file mode 100644
index 00000000..1ff8a698
--- /dev/null
+++ b/unsorted/KernelCousinDebianHurd.mdwn
@@ -0,0 +1,3 @@
+[Kernel Traffic](http://www.kerneltraffic.org/) publishes newsletters that track the technical developments of various projects of the Free and Open Source world. [Newsletters for the Hurd development](http://www.kerneltraffic.org/debian-hurd/archives.html) were published, but not anymore.
+
+Updated status. -- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/unsorted/KnownHurdLimits.mdwn b/unsorted/KnownHurdLimits.mdwn
new file mode 100644
index 00000000..51d66b50
--- /dev/null
+++ b/unsorted/KnownHurdLimits.mdwn
@@ -0,0 +1,20 @@
+* ~1.5 GB ext2 file system size limit
+ * The problem is fixed in the Debian GNU/Hurd distribution but not the official sources, see [this email](http://lists.debian.org/debian-hurd/2007/07/msg00087.html)
+ * See [[ExtTwoSize]]
+
+* Many Unsupported Devices.
+ * See [[Mach/HardwareCompatabilityList]]
+
+* Entropy. Mach does not yet gather entropy and thus there are no /dev/random and /dev/urandom nodes.
+ There are needed by OpenSSH.
+ * In progress, see [[translator/random]]
+
+* No DHCP client
+ * promising information [Jan 2005](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html), needs an update
+ * See [[DhcpClient]] - need to update TCP/IP server.
+
+* Missing bits of POSIX
+ * See [[Distrib/SystemAPILimits]]
+
+* Stability issues
+ * [[ZallocPanics]]
diff --git a/unsorted/MakeImage.mdwn b/unsorted/MakeImage.mdwn
new file mode 100644
index 00000000..95b928c4
--- /dev/null
+++ b/unsorted/MakeImage.mdwn
@@ -0,0 +1,60 @@
+## <a name="Make_a_disk_image"> Make a disk image </a>
+
+This is just a reminder to myself currently.
+
+ /bin/dd if=/dev/zero of=gnu.img count=224000
+ /sbin/sfdisk -C 58 -H 16 -S 63 -D gnu.img<<EOT
+ ,,83,*,0,1,1
+
+ EOT
+ losetup -o 32256 /dev/loop0 gnu.img
+ mke2fs -o hurd -L GNU -b 4096 /dev/loop0
+
+## <a name="Install_GNU_Hurd"> </a> Install GNU/Hurd
+
+ mkdir image
+ mount /dev/loop0 image
+ cd image/
+ /usr/share/crosshurd/makehurddir.sh `pwd` i386 gnu
+ cd ..
+ umount image
+ losetup -d /dev/loop0
+
+## <a name="Make_Boot_ISO"> </a> Make Boot ISO
+
+I use this for testing OSKit...
+
+ mkdir -p iso/boot/grub
+ cp /lib/grub/i386-pc/stage2_eltorito iso/boot/grub/
+ cp oskit-mach.gz iso/boot/
+ cat >iso/boot/grub/menu.lst << EOF
+ title GNUmach 2.0 (OSKit-Mach)
+ root (cd)
+ kernel /boot/oskit-mach.gz root=device:hd0s1 --
+ root (hd0,0)
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld-2.3.2.so /hurd/exec $(exec-task=task-create)
+
+ title GNU/Hurd (GNUmach 1.3)
+ root (hd0,0)
+ kernel /boot/gnumach.gz root=device:hd0s1
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ EOF
+ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 \
+ -boot-info-table -o grub.iso iso
+
+## <a name="Booting_Qemu"> Booting Qemu </a>
+
+ qemu -user-net -isa -boot d -cdrom grub.iso -hda gnu.img
+
+The switch `-isa` is for current gnumach.gz on hda.
+
+-- [[Main/JoachimNilsson]] - 11 Apr 2005
diff --git a/unsorted/OskitMach.mdwn b/unsorted/OskitMach.mdwn
new file mode 100644
index 00000000..0f7dfa54
--- /dev/null
+++ b/unsorted/OskitMach.mdwn
@@ -0,0 +1,64 @@
+[[toc ]]
+
+* [[OskitMachStatusList]]: Status and TODO list (<a href="http://packages.debian.org/gnumach" target="_top">deb status</a>) </li>
+* [[OskitMachPatches]]: Bleeding edge patches </li>
+* [[OskitPatches]]: Useful patches for the OSKit </li>
+* [[BuildingOskitMach]]: How to build your own GNUmach kernel </li>
+* [[RemoteDebugOskitMach]]: How to use gdb to remote debug the GNUmach kernel </li>
+
+
+## <a name="About"> About </a>
+
+OSKit-Mach began as a branch of the GNUMach 1.2 kernel, but since the release of GNU Mach 1.3, OSKit-Mach has been merged as the new GNUMach 2.x mainline. The [[history]] page tells a more interesting story including other operating systems who use Mach in their kernels.
+
+GNU Mach 2.0 makes use of the drivers provided by [the OSKit](http://www.cs.utah.edu/flux/oskit/) from [the Flux Research Group](http://www.cs.utah.edu/flux/). The OSKit provided a neat driver base where both [[TWiki/FreeBSD]] and Linux (2.2.12) drivers are made available to [Mach](http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html) and thus the Hurd. However, OSKit isn't maintained anymore.
+
+## <a name="Status"> Status </a>
+
+The OSKit-Mach version of GNUmach is today (2005) more or less defunct. Nobody
+is working on it. Few people ever got it running, and by now there are also
+problems building with recent toolchains. Instead, the Hurd developers now
+concentrate on completely different microkernels (Coyotos being the current
+favourite), as well as on improving the original GNU Mach 1.x codebase. (See
+also [[microkernel/mach/gnumach/projects]].)
+
+The [[mailing lists]], or the [[IRC]] is, like always, the best source of more
+current information.
+
+There also exist other efforts:
+
+* [OSKit and OSKit-Mach PPC Port](http://es.gnu.org/~jemarch/ppc-oskit/) - Maintained by [Jos� Marchesi](mailto:jemarch AT gnu DOT org)
+
+* [OSKit-Mach Alpha Port](http://savannah.gnu.org/projects/gnumach-alpha/). - This work has been integrated into the actual OSkit cvs tree at utah.
+
+## <a name="Building"> Building </a>
+
+First you need to get the latest OSKit release and, preferrably, the latest CVS version of GNUmach. Take a look at the following [tutorial](http://www.etherhogz.org/doc/oskit-mach.html) to get started. Or the locally kept version, [[BuildingOskitMach]].
+
+## <a name="Starting"> Starting </a>
+
+You start Oskit-Mach almost the same way as the old 1.x version of GNUmach. Using [[GRUB]] an entry can look like this:
+
+ title GNUmach 1.90 (CVS)
+ root (hd0,1)
+ kernel /boot/oskit-mach.gz root=device:hd0s2 --
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+_Remember_ to ensure that there are no trailing spaces after the backslashes on the lines above if you copy-paste this into your menu.list file.
+
+## <a name="Bugs"> Bugs </a>
+
+We have bugs, just like any other software product. To get around the more nasty ones you can apply the unofficial patches found on
+
+* [[OskitMachPatches]]
+
+## <a name="Debugging"> Debugging </a>
+
+See Igor Khavkine's, [i\_khavki@alcor.concordiaNOSPAM.ca](mailto:i_khavki@alcor.concordiaNOSPAM.ca), excellent help to [remote debug oskit-mach over a serial line](http://www.etherhogz.org/doc/oskit-boot.txt), or the local [[RemoteDebugOskitMach]].
+
diff --git a/unsorted/OskitMachPatches.mdwn b/unsorted/OskitMachPatches.mdwn
new file mode 100644
index 00000000..c1e1b068
--- /dev/null
+++ b/unsorted/OskitMachPatches.mdwn
@@ -0,0 +1,10 @@
+## <a name="GNUmach2_oskit_mach_Patches"> </a> GNUmach2 (oskit-mach) Patches
+
+The following patches are here for your convenience only. They are probably not accepted yet and should thus only be used by people working on the bleeding edge of ... oh well, use at your own risk. :-)
+
+**_Daniel Wagner:_**
+
+* Fix GNUmach2 panic related to buggy softint handling [[ATTACHURLpatch-gnumach_softint-wagidiffgz]]
+* Eliminate GNUmach2 assertion that triggers a bug [[ATTACHURLpatch-gnumach_assertion-wagidiffgz]]
+
+- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz b/unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz
new file mode 100644
index 00000000..3d57b43a
--- /dev/null
+++ b/unsorted/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz
Binary files differ
diff --git a/unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz b/unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz
new file mode 100644
index 00000000..215706b3
--- /dev/null
+++ b/unsorted/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz
Binary files differ
diff --git a/unsorted/OskitMachStatusList.mdwn b/unsorted/OskitMachStatusList.mdwn
new file mode 100644
index 00000000..f62e0686
--- /dev/null
+++ b/unsorted/OskitMachStatusList.mdwn
@@ -0,0 +1,15 @@
+**NOTE**: As of March 2006, nobody is using or working on OSKit-Mach. Consider below text for historic reference only.
+
+The only thing that is needed before we will switch to the OSKit-Mach variant of GNU Mach is the missing console: OSKit-Mach has no console in the kernel, so we need an implementation in user space. Marcus Brinkmann is writing a console implementation with a client-server design, Unicode support and lots of other goodies. The server is working, the ncurses client is working (which is useful for testing and results in something similar to screen) and the VGA client is the one missing component. A part of the code for it already exists; it will share some code with the ncurses client via a console-client library. After it works, some testing of OSKit-Mach will also be needed.
+
+-- [[Main/WolfgangJ]] - 24 Jul 2002
+
+There was quite a bit of coding and testing in September as described in several [bug-hurd threads](http://mail.gnu.org/pipermail/bug-hurd/2002-September/thread.html).
+
+Unfortunately this work still needs to be ported from GNUmach 1.3 (commonly used today) to GNUmach 2.0 (a.k.a OSKit-Mach).
+
+-- [[Main/GrantBow]] - 07 Oct 2002
+
+There should now exist a working console-client for [[OskitMach]] as well.
+
+-- [[Main/JoachimNilsson]] - 28 Nov 2002
diff --git a/unsorted/OskitMachTest.mdwn b/unsorted/OskitMachTest.mdwn
new file mode 100644
index 00000000..24cf9b6f
--- /dev/null
+++ b/unsorted/OskitMachTest.mdwn
@@ -0,0 +1,24 @@
+# <a name="Proposal_to_change_configure_scr"> </a> Proposal to change configure script for GNUmach 2.0
+
+Here are my proposed changes to the GNU Mach 2.0 configure script, configure.in.
+
+## <a name="_with_oskit_"> --with-oskit\* </a>
+
+The first one is basically what Daniel Wagner once suggested. A way for builders to better provide the path of the OSKit, e.g., `--with-oskit=/my/bisarre/path`.
+
+This patch also contains a minor "fix": detect presence of the OSKit before trying to check for a correct version number of the same. It also updates the required version number to be, at the very least, the 2001 release. This because we need the softirq changes introduced therein.
+
+With the patch a configure line like below is entirely possible on a Debian system with the i386-gnu-mig deb package installed.
+
+ crash@isengard:~/Projects/build/oskit-mach$ ../../oskit-mach/configure --host=i386-gnu \
+ --prefix=/usr/hurd --with-oskit=/usr/hurd
+
+## <a name="Drivers_move_Makefile_gt_configu"> Drivers move Makefile ==&gt; configure </a>
+
+The second patch set, currently worked on, is to move the requested drivers from the Makefile to the configure script in the form of `--enable-freebsd-DRIVER` and `--enable-linux-DRIVER`.
+
+This will remove the current `make kernel-ide-ethernet_tulip` combo and introduce a more common `make kernel` scheme.
+
+-- [[Main/JoachimNilsson]] - 21 Jun 2003
+
+* [[ATTACHURLgnumach2-configure-patch1diff]]: Adds --with-oskit and "fixes" a bug.
diff --git a/unsorted/OskitMachTest/gnumach2-configure-patch1.diff b/unsorted/OskitMachTest/gnumach2-configure-patch1.diff
new file mode 100644
index 00000000..cb8472ad
--- /dev/null
+++ b/unsorted/OskitMachTest/gnumach2-configure-patch1.diff
@@ -0,0 +1,79 @@
+Index: configure.in
+===================================================================
+RCS file: /cvsroot/hurd/gnumach/configure.in,v
+retrieving revision 1.17
+diff -u -r1.17 configure.in
+--- configure.in 6 Mar 2003 03:57:01 -0000 1.17
++++ configure.in 21 Jun 2003 17:04:36 -0000
+@@ -61,6 +61,34 @@
+ [test "x$enableval" = xno ||
+ AC_DEFINE(FPE, 1, [Enable software FPU emulator for machines with no FPU.])])
+
++# Sometimes people don't use traditional places to put the OSKit in.
++# To still be nice we give these people a way of telling us where
++# they have put it.
++AC_ARG_WITH(oskit-includes,
++[ --with-oskit-includes Specify location of oskit headers],[
++CFLAGS="$CFLAGS -I$withval"
++CPPFLAGS="$CPPFLAGS -I$withval"
++ASFLGAS="$ASFLAGS -I$withval"
++])
++
++# These two will overwrite any previous setting of OSKIT_LIBDIR,
++# but since the user has told us to do so we obey.
++AC_ARG_WITH(oskit-libs,
++[ --with-oskit-libs Specify location of oskit libs],[
++LDFLAGS="$LDFLAGS -L$withval"
++OSKIT_LIBDIR="$withval/oskit"
++])
++
++AC_ARG_WITH(oskit,
++[ --with-oskit Specify prefix for oskit files],[
++CFLAGS="$CFLAGS -I$withval/include"
++CPPFLAGS="$CPPFLAGS -I$withval/include"
++ASFLAGS="$ASFLAGS -I$withval/include"
++LDFLAGS="$LDFALGS -I$withval/lib"
++OSKIT_LIBDIR="$withval/lib/oskit"
++])
++AC_SUBST(ASFLAGS)
++
+ #
+ # Programs
+ #
+@@ -76,8 +104,20 @@
+
+ AC_CHECK_PROG(MBCHK, mbchk, mbchk, :)
+
++# Check for Flux Group's OSKit
++# If not in standard paths to CC the user needs to
++# supply a --with-oskit* or we need to evaluate the
++# OSKIT_LIBDIR variable *before* we check for the
++# correct version below.
++AC_CHECK_HEADERS(oskit/version.h,,
++ [AC_MSG_ERROR([cannot find oskit/version.h, where are the OSKit includes?])])
++
+ # Check oskit version.
+-NEEDED_OSKIT_VERSION=19991121
++# 19991121 was the old version we relied on, but since
++# the addition of softirqs to both the OSKit, in version
++# 20010214, and handling therof by Daniel Wagner in
++# GNU Mach, we now rely on 20010214.
++NEEDED_OSKIT_VERSION=20010214
+ AC_REQUIRE_CPP()
+ AC_MSG_CHECKING([for oskit version >= ${NEEDED_OSKIT_VERSION}])
+ AC_CACHE_VAL(gnumach_cv_oskit_version_${NEEDED_OSKIT_VERSION}, [
+Index: Makefile.in
+===================================================================
+RCS file: /cvsroot/hurd/gnumach/Makefile.in,v
+retrieving revision 1.38
+diff -u -r1.38 Makefile.in
+--- Makefile.in 6 Mar 2003 04:06:25 -0000 1.38
++++ Makefile.in 21 Jun 2003 17:04:36 -0000
+@@ -47,6 +47,7 @@
+
+ CFLAGS = @CFLAGS@
+ LDFLAGS = @LDFLAGS@
++ASFLAGS = @ASFLAGS@
+ SMP_LIBS = @SMP_LIBS@
+
+ all:
diff --git a/unsorted/OskitPatches.mdwn b/unsorted/OskitPatches.mdwn
new file mode 100644
index 00000000..b0cb646a
--- /dev/null
+++ b/unsorted/OskitPatches.mdwn
@@ -0,0 +1,63 @@
+## <a name="Flux_OS_Toolkit"> Flux OS Toolkit </a>
+
+[The OSKit](http://www.cs.utah.edu/flux/oskit/) is a framework and a set of libraries for building and extending operating systems developed by [the Flux Project](http://www.cs.utah.edu/flux/).
+
+**_Note:_** All of these patches, and more, are now avilable directly through the [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project. This is also the recommended source today of the OSKit, especially if you want to use it with GNUmach2.
+
+## <a name="OSKit_2001_02_14"> </a> OSKit 2001-02-14
+
+These are extra patches for people who, for some reason, use the 2001 version of the OSKit.
+
+* Patrick Tullman [[ATTACHURLpatch-oskit-097-tullmandiffgz]]
+
+* This patch is necessary to get the `--enable-indirect-osenv` flag to the configure script. The flag is enabled by default for OSKit 2002-03-17 and later. Kevin Kraemer [[ATTACHURLpatch-oskit-097-kkraemerdiffgz]]
+
+## <a name="OSKit_2002_03_17"> </a> OSKit 2002-03-17
+
+**_Critical Patches:_**
+
+Here are the patches critical to get [[OskitMach]] running. These are absolutely essential to get a working Mach kernel. Many of these patches are included with the Debian distribution of the OSKit.
+
+* Igor Khavkine [[ATTACHURLpatch-oskit-097-i_khavkidiffgz]]
+
+* Famous removal of only one line in sbrk-hack.c - needed for people with newer libc's (e.g. Debian Woody) [[ATTACHURLpatch-oskit-097-sbrk_hackdiffgz]]
+
+* Jonathan S. Arney - Important patch to diskpart library. Without it you cannot activate swap in oskit-mach. [[ATTACHURLpatch-oskit-097-jon_arneydiffgz]]
+
+* Richard Kreuter's [patches](http://anduril.rutgers.edu/richard/oskit/) ([announcement](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01560.html)). Needed when your Hurd partition is embedded inside an extended partition created by Windows. The patches also include:
+ * support for extended partitions with lba
+ * support for 16-entry BSD disklabels, as are supported by recent Net- and [[TWiki/FreeBSD]] kernels.
+ * support for the recognition of NetBSD's slice id (169) in the BIOS partition table.
+
+**_Cosmetic Patches:_**
+
+* Kevin Kraemer - Removes annoying debug output from eepro.c driver. [[ATTACHURLpatch-oskit-097-eeprodiffgz]]
+
+* Ognyan Kulev - Reduce warnings when compiling with GCC 3.2. <http://debian.fmi.uni-sofia.bg/~ogi/hurd/oskit/>
+
+**_New Functionality:_**
+
+* [Roland McGrath](http://www.frob.com/) - [i8042 support](http://mail.gnu.org/archive/html/bug-hurd/2002-10/msg00146.html). Thread continues at <http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00110.html>
+
+* Daniel Wagner - PCMCIA support. <http://www.vis.ethz.ch/~wagi/hurd/oskit/> ([instructions](http://www.vis.ethz.ch/~wagi/hurd/oskit/readme.txt))
+
+* [[Main/JoachimNilsson]] - See [[Hurd/JoachimNilssonHurdPage]]
+ * Upgrade to Linux 2.2.22 drivers
+ * More Linux NIC drivers
+ * **_Soon:_** ATA-100 patches (α-release available)
+
+* [[Main/DerekDavies]] - [OSKit Entropy patch](http://www.ddavies.net/oskit-entropy/). A Linux entropy driver, see [bug-hurd posting](http://mail.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) for more information.
+
+----
+
+## <a name="Comments"> Comments </a>
+
+Divided this growing topic into sections. <br /> -- [[Main/JoachimNilsson]] 19 Nov 2002
+
+Updates by [[Main/OgnyanKulev]] -- 19 Nov 2002
+
+All small patches are as attachments now. -- [[Main/OgnyanKulev]] - 16 Dec 2002
+
+Minor updates, also, added Davids Entropy patch -- [[Main/JoachimNilsson]] - 03 Jan 2003
+
+Fixed some gnu mail links -- [[Main/MattGrant]] - 26 Feb 2003
diff --git a/unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz
new file mode 100644
index 00000000..80d94f3f
--- /dev/null
+++ b/unsorted/OskitPatches/patch-oskit-0.97-eepro.diff.gz
Binary files differ
diff --git a/unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz
new file mode 100644
index 00000000..2e322de9
--- /dev/null
+++ b/unsorted/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz
Binary files differ
diff --git a/unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz
new file mode 100644
index 00000000..aaf1475a
--- /dev/null
+++ b/unsorted/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz
Binary files differ
diff --git a/unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz
new file mode 100644
index 00000000..7d75a34e
--- /dev/null
+++ b/unsorted/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz
Binary files differ
diff --git a/unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz b/unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz
new file mode 100644
index 00000000..2fef6632
--- /dev/null
+++ b/unsorted/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz
Binary files differ
diff --git a/unsorted/PortToL4.mdwn b/unsorted/PortToL4.mdwn
new file mode 100644
index 00000000..fb7f0004
--- /dev/null
+++ b/unsorted/PortToL4.mdwn
@@ -0,0 +1,42 @@
+**_The Hurd-L4 port has an [official page](http://www.gnu.org/software/hurd/hurd-l4.html) with more up-to-date information_** -- [[Main/OgnyanKulev]] - 05 Feb 2005
+
+A group of one being led by Neal H. Walfield is working on porting the Hurd to the pistachio version of the L4 microkernel. This second generation microkernel provides a significantly different API than the one offered by the Mach microkernel, a first generation microkernel. One of the primary goals of the project, outside of porting the Hurd to L4, is to reevaluate the current Hurd abstractions and consider how they can be modified to be more general.
+
+I have no web page describing my efforts. There is a mailing list[1].
+
+[1] <http://mail.gnu.org/mailman/listinfo/l4-hurd>
+
+-- Neal Walfield, 18 Sep 2002
+
+Neal noted [1] that there are licensing issues being worked out so no code is yet released. His work was performed in the summer of 2002 at Karlsruhe.
+
+[1] <http://mail.gnu.org/pipermail/l4-hurd/2002-September/000673.html>
+
+-- [[Main/GrantBow]] - 21 Sep 2002
+
+There are several important pages that are of interest for the L4 &amp; hurd communities.
+
+* Main L4 home page - <http://www.l4ka.org/>
+* Hurd on L4 - <http://www.freesoftware.fsf.org/l4hurd/>
+* Hurd on L4 - <http://savannah.gnu.org/projects/l4hurd/>
+* <http://www.informatik.uni-freiburg.de/~ganter/comp/l4-hurd.html>
+
+-- [[Main/GrantBow]] - 22 May 2002
+
+<http://os.inf.tu-dresden.de/fiasco/>
+
+-- [[Main/GrantBow]] - 24 Oct 2002
+
+There was [discussion in October 2002](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000727.html) about the differences between Hurd on Mach and Hurd on L4 with some interesting URLs. In the thread Okuji [responds](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000728.html) confirming his document is two years old and outdated by the directions that Neal is taking in furthering this effort. The URLs in that email might be helpful to those learning more about Hurd and L4 ideas that were considered yet abandoned.
+
+-- [[Main/GrantBow]] - 04 Jan 2003
+
+A "Porting GNU Hurd to L4" website:
+
+* <http://www.gnu.org/software/hurd/l4-hurd.html>
+
+-- [[Main/SebastianGabriel]] - 29 Sep 2003
+
+The only valid L4-Hurd link on <http://hurd.gnu.org> is <http://www.freesoftware.fsf.org/l4hurd/>
+
+-- [[Main/JoachimNilsson]] - 29 Sep 2003
diff --git a/unsorted/PosixSemaphores.mdwn b/unsorted/PosixSemaphores.mdwn
new file mode 100644
index 00000000..be5586bd
--- /dev/null
+++ b/unsorted/PosixSemaphores.mdwn
@@ -0,0 +1,13 @@
+Posix Semaphores are an optional part of pthreads. There is currently an implementation for Neal Walfields libpthread, which is included in the hurd sources tree. This implemention uses a mutex and a condition variable. The implmentation is in the mailing list archives at [ [http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html</a>)](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html).
+
+Neal does not want to use this implementation because it adds the overhead of a condition variable. The condition variable imposes the following penalties: 1 extra spinlock/unlock 1 an extra call to a pthread cleanup function.
+
+The first penalty has virtually no cost because we know that we will never spin trying to get this spin lock because we already have a mutex lock outside the condition variable serializing accesses to the condition variable.
+
+The second may be more of a performance penalty, but it saves reimplmenting the code in pt-cond-signal.c pt-cond-wait.c, and pthread-timedwait.c .
+
+-- [[Main/JamesAMorrison]] - 19 Jan 2003
+
+Moved page to Mach web.
+
+-- [[Main/GrantBow]] - 21 Jan 2003
diff --git a/unsorted/PosixThreads.mdwn b/unsorted/PosixThreads.mdwn
new file mode 100644
index 00000000..f031b56f
--- /dev/null
+++ b/unsorted/PosixThreads.mdwn
@@ -0,0 +1,21 @@
+## <a name="POSIX_Threads_for_the_Hurd"> </a> POSIX Threads for the Hurd
+
+One of the features the Hurd has been lacking up til now is support for POSIX threads, pthreads. It has been the show stopper for porting many useful applications and has sometimes been pointed out as one of the bigger problems with the GNU operating system.
+
+In 2002 however, all this came to an end when Neal Walfield implemented libpthreads for his work on L4 and decided to also make it work on GNUmach.
+
+Information on the library can be found on Neals web site.
+
+* <http://web.walfield.org/pub/people/neal/hurd/libpthread/>
+
+## <a name="Previous_Attempts"> Previous Attempts </a>
+
+Plans to implement pthreads for the Hurd has existed since, at least, 1999. Mark Kettenis [1] began work that was supposed to be useful on Linux as well. His work was continued by Igor Khavikine [2], who implemented most of it. Igor could however not continue his work so it was picked up by Jeroen Dekkers [3] and Ryan Golbeck. Their work can be found on Savannah, <http://savannah.gnu.org/projects/pthreads/>.
+
+1. <http://sources.redhat.com/ml/libc-hacker/1999-08/msg00117.html>
+2. <http://lists.debian.org/debian-hurd/2001/debian-hurd-200102/msg00283.html>
+3. <http://mail.gnu.org/pipermail/l4-hurd/2001-October/000310.html>
+
+----
+
+Initial version -- [[Main/JoachimNilsson]] - 03 Nov 2002
diff --git a/unsorted/RemoteDebugOskitMach.mdwn b/unsorted/RemoteDebugOskitMach.mdwn
new file mode 100644
index 00000000..bb5b9006
--- /dev/null
+++ b/unsorted/RemoteDebugOskitMach.mdwn
@@ -0,0 +1,191 @@
+# <a name="Remote_Debug_GNUmach"> </a> Remote Debug GNUmach
+
+# <a name="Booting_oskit_mach_with_a_serial"> Booting oskit-mach with a serial console </a>
+
+**Original Author:** Igor Khavkine **Last Updated:** Mon Jul 30 17:58:55 EDT 2001
+
+----
+
+## <a name="Introduction"> Introduction </a>
+
+This document now has a wider audience. The OSKit branch of GNUmach has been merged with the main branch, HEAD. Please note that the instructions here are not tested with the latest stable release, GNUmach 1.3.
+
+Here you will find out how to access, build, bootstrap and debug the latest CVS version of the GNUmach kernel (the OSKit based 2.x series of GNUmach).
+
+## <a name="Why_"> Why? </a>
+
+Because it's covenient. If you have a second computer, but not a second monitor or keyboard, you can connect your second box to your main one using null-modem serial cables. Once that is done, you can configure the GRUB bootloader to use the serial port when starting up and boot [GNUmach](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/gnumach/?only_with_tag=HEAD) (a.k.a [[OskitMach]]) without having to switch monitor cables or type blindly at a second keyboard.
+
+Also, [[OskitMach]] supports the GDB remote debugging protocol over a serial line. This way it is now possible to debug the running kernel relatively unobtrusively, because the debugger will not be running on the same machine.
+
+## <a name="How_"> How? </a>
+
+First you need some equipment: two computers, each one should have at least one (two is preferable) free serial port(s) and one (or two) null-modem serial cable(s).
+
+While developing the kernel it might also be a good idea to use grub to get the Mach kernel via tftp from the same server you do the remote debugging and building on. This way you don't need to reboot the target to copy or build a new kernel on its hard drive. See the [[AdvancedGrubUsage]] document for more information on this.
+
+Last you need to follow the instructions given below.
+
+1. The first step is to the get source for oskit-mach and OSKit.
+ Currently the [St. Patrick's day release](ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz), 2002-03-17, of the OSKit is the latest. Get the sources and compile them yourself, compile OSKit with debugging symbols if that is what you need. If you encounter errors while compiling, try removing anything that has to do with `unix` or `examples` from the file `modules.x86.pc`.
+ Then you need to get the sources for oskit-mach version of the GNU Mach kernel, available from the GNU CVS repository[3]. Previously you needed to check out the `gnumach` module with the flag `-roskit-branch`. Today the 2.0 branch of GNU Mach resides on the HEAD branch, so you don't have to provide any specifc branch information to get the correct version. Use the update command with `-rHEAD` to move from the oskit-branch to the HEAD branch.
+ Again now is your chance to compile oskit-mach with debugging symbols.
+ (More detailed instructions can be found in [[BuildingOskitMach]].)
+2. Now you need to setup GRUB on your second box so it accepts input from a serial port while booting up. This is simple to do by adding the following lines to your `menu.lst` file, before any of the menu entries:
+ serial --unit=0 --speed=9600
+ terminal serial
+ Unit refers to the serial port you wish to use (0 is COM1), and speed is optional. For more information see the GRUB documentation.
+3. You need to make sure that your main box has the necessary utilities to communicate with your second box over a serial line. You can use a terminal emulator like _minicom_(1), _seyon_(1), _tip_(1), or a simple serial communication program _cu_(1) which comes with the GNU uucp package. Or if you feel really lazy you can use this hack:
+ stty raw
+ cat > /dev/ttyS1 # in one terminal window
+ cat /dev/ttyS1 # in a second terminal window
+4. Now you have to make sure your computer has an at least partially setup Hurd partition. You can find instructions how to do that here [4,5]. Copy the oskit-mach kernel binary compressed with gzip to `/boot/oskit-mach.gz` and use the following command line[1] to boot it from GRUB:
+ kernel /boot/oskit-mach.gz -h CONS_COM=1 -d GDB_COM=2 BAUD=9600 root=device:hd0s2 --
+<dl>
+ <p>
+ </p>
+ <dt><tt>-h</tt></dt>
+ <dd>use serial console:<ul>
+ <li><tt>CONS_COM=1</tt> (COM1)</li>
+ <li><tt>CONS_COM=2</tt> (COM2)</li>
+ <li><tt>CONS_COM=3</tt> (COM3)</li>
+ <li><tt>CONS_COM=4</tt> (COM4)</li>
+ </ul>
+ </dd>
+ <p>
+ </p>
+ <dt><tt>-d</tt></dt>
+ <dd>enable serial port debugging, optional</dd>
+ <p>
+ </p>
+ <dt><tt>GDB_COM=2</tt></dt>
+ <dd>use a different port other then <tt>CONS_COM</tt>, default is to use the same as <tt>CONS_COM</tt></dd>
+ <p>
+ </p>
+ <dt><tt>BAUD=9600</tt></dt>
+ <dd>use this baud rate, optional, default is 9600</dd>
+ <p>
+ </p>
+ <dt><tt>--</tt></dt>
+ <dd>delimits the arguments passed to the oskit from those to the kernel</dd>
+ <p>
+ </p>
+ <dt><tt>root=device:hd0s2</tt></dt>
+ <dd>tell gnumach which is your root partition, in this case it's <tt>hd0s2</tt></dd>
+ <p>
+ </p>
+</dl>
+5. Now I suggest that you familiarize yourself with [the GDB documentation](http://vmlinux.org/doc/gdb/), especially on remote debugging. If you pass the `-d` boot flag to oskit-mach, then it will automatically insert a breakpoint at main() and wait for further instructions from GDB over the serial line. Here's a simple example of how to attach GDB to a remote target over a serial line:
+ $ script # record the debugging session
+ $ gdb # assume you're in the oskit-mach build dir.
+ (gdb) file kernel
+ (gdb) set remotebaud 9600
+ (gdb) target remote /dev/ttyS1
+ [...gdb attached, blah, blah, blah...]
+ (gdb) break panic
+ (gdb) continue
+ (gdb) continue
+ [...]
+ (gdb) quit
+ $ ^D # finish recording the session
+ This way you can catch any kernel panics (except for the really nasty ones and try to debug them).
+ I've noticed that once Mach is running under GDB, pressing C-c from GDB will not suspend it, this makes it hard to set additional breakpoints after the kernel is running. So optionally you can modify Mach to add a dummy system call that will be used only for setting breakpoints, and make a small program that calls it, you can use it whenever you want to pause the kernel and examine something under GDB. An example of how to do this is attached in Appendix A.
+
+TODO: OSKit overrides interrupts 1 and 3 in kern/x86/gate\_init.c:gate\_init. A patch that skips src-&gt;vector `= 1 || =` 3 have to be prepared and attached to this page. More robust solution is to make OSKit/GNUMach recognize when it's debugged and change vector table accordingly.
+
+Now you're all set to do some serious kernel hacking. I hope more people will take advantage of this opportunity.
+
+## <a name="Appendix_A"> Appendix A </a>
+
+TODO: Move inline diff and code into 2 attached files: one for patching GNU Mach, and one for gdb-break.c.
+
+Apply this patch to oskit-mach to add a dummy system call:
+
+ --- gdb-stub.diff ---
+ Index: kern/syscall_sw.c
+ ===================================================================
+ RCS file: /cvs/gnumach/kern/syscall_sw.c,v
+ retrieving revision 1.1.1.1.2.2
+ diff -u -r1.1.1.1.2.2 syscall_sw.c
+ --- kern/syscall_sw.c 2001/04/05 06:52:47 1.1.1.1.2.2
+ +++ kern/syscall_sw.c 2001/07/30 21:45:14
+ @@ -98,6 +98,8 @@
+ extern kern_return_t syscall_fipc_recv();
+ #endif /* FIPC */
+
+ +/*XXX*/extern kern_return_t gdb_break_stub ();
+ +
+ mach_trap_t mach_trap_table[] = {
+ MACH_TRAP(kern_invalid, 0), /* 0 */ /* Unix */
+ MACH_TRAP(kern_invalid, 0), /* 1 */ /* Unix */
+ @@ -283,7 +285,14 @@
+ MACH_TRAP(kern_invalid, 0), /* 126 */
+ MACH_TRAP(kern_invalid, 0), /* 127 */
+ MACH_TRAP(kern_invalid, 0), /* 128 */
+ - MACH_TRAP(kern_invalid, 0), /* 129 */
+ + MACH_TRAP(gdb_break_stub, 1), /* 129 */
+ };
+
+ +volatile int gdb_break_stub (void *addr) /*XXX*/
+ +{
+ + void *dummy;
+ + dummy = addr;
+ + return 0;
+ +}
+ +
+ int mach_trap_count = (sizeof(mach_trap_table) / sizeof(mach_trap_table[0]));
+ --- end ---
+
+When starting an oskit-mach debug session with GDB set a break point at `gdb_break_stub`. Then use this program to invoke the system call when desired:
+
+ --- gdb-break.c ---
+ /* Compile with: gcc -o gdb-break gdb-break.c gdb-break-stub.S */
+
+ #include <mach.h>
+
+ #include <stdio.h>
+ #include <string.h>
+
+ extern int gdb_break_stub (void *addr);
+
+ int main ()
+ {
+ kern_return_t err;
+
+ err = gdb_break_stub (&main);
+ printf ("result from syscall: %s\n", strerror(err));
+
+ return 0;
+ }
+ --- end ---
+ --- gdb-break-stub.S ---
+ #include <mach/syscall_sw.h>
+
+ kernel_trap(gdb_break_stub,-129,1)
+ --- end ---
+
+## <a name="References"> References </a>
+
+* [1] OSKit documentation, section 1.6.3.
+* [2] <http://www.cs.utah.edu/flux/oskit/>
+* [3] <http://www.gnu.org/software/devel.html>
+* [4] <http://www.walfield.org/papers/hurd-installation-guide/>
+* [5] <http://www.pick.ucam.org/~mcv21/hurd.html>
+
+ vim:ts=8:tw=72:sw=8:
+
+----
+
+This HowTo is (C) Copyright 2001 Igor Khavkine.
+
+Minor additions and grammatical fixups by [[JoachimNilsson]].
+
+-- [[Main/JoachimNilsson]] - 14 May 2002
+
+Additions on booting GNU Mach via TFTP
+
+-- [[Main/JoachimNilsson]] - 13 Jun 2002
+
+Text formatting.
+
+-- [[Main/OgnyanKulev]] - 16 Dec 2002
diff --git a/unsorted/RequirementsForLiveCD.mdwn b/unsorted/RequirementsForLiveCD.mdwn
new file mode 100644
index 00000000..03bd3884
--- /dev/null
+++ b/unsorted/RequirementsForLiveCD.mdwn
@@ -0,0 +1,54 @@
+# <a name="Requirements_for_a_GNU_Hurd_Live"> </a> Requirements for a GNU/Hurd Live CD
+
+Here is an outline of the things that need to be done for producing a Live CD for the Hurd. Please add your comments and suggestions.
+
+## <a name="1_We_need_to_be_able_get_a_bootl"> 1. We need to be able get a bootloader for CDs </a>
+
+This is not much of a problem. I have already been successful (see below) in using [Grub](http://en.wikipedia.org/wiki/GRand Unified Bootloader) and the El-Torito HD emulation to boot [[GNUmach]] off a CD. There may be some minor tweaking of Grub code necessary to detect which device to use for booting (instead of having the user select their device (hd0,hd1,etc.) from the Grub menu).
+
+Using GRUB's stage2\_eltorito seems to work fine.
+
+## <a name="2_We_need_a_bootstrap_filesystem"> 2. We need a bootstrap filesystem translator </a>
+
+This would be something like a statically linked iso9660fs translator. Compiling a statically linked iso9660fs translator is easy enough, though it doesn't boot. I don't currently know whether this is because the translator was never meant to be a bootstrap filesystem, or if there is a simple bug which has never been flushed out because the translator has never been used at boot time before. I've had trouble debugging this problem because I haven't yet figured out a way to use a remote gdb with gnumach. Theoretically you could use the "boot" command to overcome this problem, but "boot" for me mangles the terminal and exits in different manner than an actual boot.
+
+The iso9660fs translator works great, it just needs to be statically linked.
+
+## <a name="3_We_need_a_ramdisk_to_enable_wr"> 3. We need a ramdisk to enable write access </a>
+
+I think we could fake this with Farid Hajii's [memfs](http://www.fprintf.net/hurd/) translator and writing an ext2 filesystem to it.
+
+From the mem-fs README...
+
+> memfs-1 is a translator that provides a memory-based file of fixed size. This file can, just like bigfile, contain a regular filesystem.
+
+We could set a mem-fs translator anywhere on the CD you needed write access, including having softlinks to the contents of the root directory and chrooting to this new directory.
+
+For a quick and dirty memfs, you can do it right now with the following commands:
+
+ # touch ./ramdisk
+ # touch ./tmpfs
+ # settrans -a ./ramdisk /hurd/storeio -Tcopy zero:50M
+ # /sbin/mke2fs -o hurd -b 4096 -F ./ramdisk
+ # settrans -a tmpfs /hurd/ext2fs.static ./ramdisk
+ # fsysopts --writable ./tmpfs
+ # cd tmpfs
+ # touch somenewfile
+
+Here we use two files ramdisk, and tmpfs that are already created on a readonly file system. For illustration purposes, they are touched beforehand. We run an active storeio translator on the ramdisk file to give us 50MB of RAM to work with, and then we make an ext2 filesystem on it.
+
+At this point we'd could copy the contents of the `/var` directory into the tmpfs, and then symlink `/var` to `/tmpfs/var`. The same goes for all other mutable dirs.
+
+This approach of putting an entire ext2 filesystem in a copy zero'd store has some drawbacks listed [here](http://lists.gnu.org/archive/html/bug-hurd/2000-12/msg00073.html).
+
+Those are the essentials. Here is a list of the things which would be nice to have for a Live-CD.
+
+* Knoppix like script for starting up X and [[GraphicEnvironment]] s ([[FluxBox]], Gnome...)
+* DHCP support for easy network setup
+* Hardware autodetection (Kudzu).
+* Knoppix like script for installing to the hard drive or to bootable USB pendrive .
+* (add your favorite feature here)
+
+Here is a mailing-list [thread](http://lists.debian.org/debian-hurd/2003/debian-hurd-200308/msg00172.html) discussing some of these issues.
+
+-- [[Main/GregBuchholz]] - 21 Oct 2003 -- [[Main/NagromNamreh]] - 29 Jan 2004
diff --git a/unsorted/SavannahProjects.mdwn b/unsorted/SavannahProjects.mdwn
new file mode 100644
index 00000000..b1111ed5
--- /dev/null
+++ b/unsorted/SavannahProjects.mdwn
@@ -0,0 +1,14 @@
+[Savannah](http://savannah.gnu.org) was created with a forked version of the software that runs the [SourceForge](http://www.sf.net) site. It is the official [GNU project](http://www.gnu.org/gnu/thegnuproject.html) hosting facility of the [FSF](http://www.fsf.org). Many GNU projects are migrating to use it. Here is a list of projects hosted on Savannah related to the Hurd.
+
+* [Hurd](http://savannah.gnu.org/projects/hurd) - main project CVS repository
+* [HurdExtras](http://savannah.gnu.org/projects/hurdextras) - related projects
+* [wwwHurd](http://savannah.gnu.org/projects/wwwhurd) - webmasters for <http://hurd.gnu.org>
+* [L4Hurd](http://savannah.gnu.org/projects/l4hurd) - OSkit/L4 unofficial porting project
+* [pthreads](http://savannah.gnu.org/projects/pthreads) - porting of thread library for glibc
+* [hurd-iso](http://savannah.gnu.org/projects/hurd-iso) - CD-ROM images
+* [gnumach-alpha](http://savannah.gnu.org/projects/gnumach-alpha) - port for Alpha processor machines
+* [hurd-alpha](http://savannah.gnu.org/projects/hurd-alpha) - provide a working implementation for the Alpha architecture
+* [[Hurd/THUG]] - Toronto Area GNU/Hurd User Group and their [documentation page](http://www.freesoftware.fsf.org/thug/docs.html)
+* [francine](http://savannah.gnu.org/projects/francine) - "secure, colourful and themeable login program"
+
+-- [[Main/GrantBow]] - 13 May 2002
diff --git a/unsorted/SecurityForUser.mdwn b/unsorted/SecurityForUser.mdwn
new file mode 100644
index 00000000..739cc1ca
--- /dev/null
+++ b/unsorted/SecurityForUser.mdwn
@@ -0,0 +1,7 @@
+FROM: <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html>
+
+The user must be sure that his actions have predictable consequences, even in the presence of actively hostile influence. If there is a component in the system that the user can not control, the user must be able to contain its impact, either by simply ignoring it (shielding), or by imposing restrictions (confinement).
+
+_Security means that the user controls what can happen **to** his resources._
+
+-- [[TomBachmann]] - 29 Apr 2006
diff --git a/unsorted/SeenHurd.mdwn b/unsorted/SeenHurd.mdwn
new file mode 100644
index 00000000..92be4224
--- /dev/null
+++ b/unsorted/SeenHurd.mdwn
@@ -0,0 +1,64 @@
+# <a name="Hurd_Sightings"> Hurd Sightings </a>
+
+## <a name="Hurd_People_Sightings"> Hurd People Sightings </a>
+
+<dl>
+ <dt>[[Mailing_lists]]</dt>
+ <dd> Available mailing lists </dd>
+ <dt>[[IRC]]</dt>
+ <dd>
+ </dd>
+ <dt>[[HurdDevelopers]]</dt>
+ <dd> Who's who? </dd>
+ <dt>[[PersonalHurdPages]]</dt>
+ <dd> Users with Hurd wiki pages </dd>
+ <dt>[[UserGroups]]</dt>
+ <dd> Canadian, French &amp;amp; Russian </dd>
+ <dt>[[community/Meetings]]</dt>
+ <dd> Meetings with Hurd developer attendance. </dd>
+ <dt>[[community/Orkut]]</dt>
+ <dd> online "community" of interest - 89 members and counting </dd>
+ <dt>[[community/LiveJournal]]</dt>
+ <dd> online community </dd>
+</dl>
+
+## <a name="Hurd_Press_Sightings"> Hurd Press Sightings </a>
+
+Here's a page for links that specifically talk about the Hurd in some way. See also, [[FunnyHurd]].
+
+### <a name="Searching_the_Word_Hurd_in_Some_"> Searching the Word "Hurd" in Some Famous Sites </a>
+
+* [OSNews.com](http://www.osnews.com/search.php?search=hurd)
+* [Slashdot.org](http://slashdot.org/search.pl?query=hurd)
+* [KernelTrap.org](http://kerneltrap.com/index.php?or=6,16,40)
+* [DebianPlanet.org](http://www.debianplanet.org/module.php?mod=search&edit%5Btype%5D%5Bnode%5D=1&keys=hurd)
+* [Hungarian Unix portal](http://www.hup.hu/modules.php?name=News&new_topic=65) (in Hungarian)
+
+### <a name="Single_Articles"> Single Articles </a>
+
+* [Interview with Hurd developer Marcus Brinkmann](http://portal.wikinerds.org/brinkmann-interview-mar2005) by Wikinerds Portal
+* [A historic first step for the GNU/HURD-L4 microkernel port](http://portal.wikinerds.org/gnu-hurd-l4-first-program) by Wikinerds Portal
+* [Interviews: Linus Torvalds: "Desktop Market has already started"](http://linuxtimes.net/modules.php?name=News&file=article&sid=145), in Linux Times, the viability of the Hurd is discussed a bit.
+* [The Answer Gang 88: Linux Kernel Maintainability: Bees Can't Fly](http://www.linuxgazette.com/issue88/tag/3.html), in Linux Gazette, March 2003, issue 88.
+* [Renaming Linux](http://www.infomaticsonline.co.uk/News/1135403) article on GNU OS (Hurd is a strongly related issue) - Sept 26, 2002
+* GNU's new [GNU/Linux FAQ](http://www.gnu.org/gnu/gnu-linux-faq.html) - Sept 24, 2002
+* [Debian Weekly News](http://www.debian.org/News/weekly/2002/37/) on Sarge &amp; Hurd - Sept 24, 2002
+* Debian Release Manager Anthony Towns [notes on Sarge](http://lists.debian.org/debian-devel-announce-0209/msg00004.html) &amp; Hurd - Sept 28, 2002
+* [New Console](http://www.kerneltrap.org/node.php?id=420) - Kernel Trap, Sept 18, 2002
+* [Radio CSJ](http://pagina.de/radiocsj) 104.5 FM discussions during "error 404" show - [Universidad Cat�olica de Chile](http://www.puc.cl) (Macul, Santiago, Chile), June 2002
+* [New GNU Hurd Kernel Released](http://slashdot.org/article.pl?sid=02/05/30/1547250&mode=nested&tid=117) [_sic_] - Slashdot, May 30, 2002
+* [GNU Mach 1.3 released!](http://www.debianplanet.org/article.php?sid=680&mode=thread&order=0&thold=0) - Debian Planet, May 29, 2002
+* [Running Hurd Under [[Distrib/BochsEmulator]] x86 Emulator](http://www.debianplanet.org/article.php?sid=673&mode=thread&order=0&thold=0) - Debian Planet, May 12, 2002
+* [Hurd-i386 gets new GLibc core](http://www.debianplanet.org/article.php?sid=668&mode=thread&order=0) by Jeff Bailey - Debian Planet, May 3, 2002
+* [IDG](http://www.idg.net/ic_829012_4394_1-3921.html) - IDG, March 11, 2002
+* [Interview with Neal Walfield](http://kerneltrap.org/article.php?sid=375) - Kernel Trap, Nov 12, 2001
+
+### <a name="On_Cover_Pages"> On Cover Pages </a>
+
+* [freeX #4 2000](http://www.cul.de/data/freex42000inh.pdf) (PDF) - _Die andere Systemphilosophie_ auf Marcus Brinkmann
+
+%ATTACHURL%/freex42000cg.jpg
+
+* Linux Magazine France 10
+
+%ATTACHURL%/lmf10\_1999.jpg
diff --git a/unsorted/SeenHurd/lmf10_1999.jpg b/unsorted/SeenHurd/lmf10_1999.jpg
new file mode 100644
index 00000000..85332658
--- /dev/null
+++ b/unsorted/SeenHurd/lmf10_1999.jpg
Binary files differ
diff --git a/unsorted/SerialConsole.mdwn b/unsorted/SerialConsole.mdwn
new file mode 100644
index 00000000..e4e5324d
--- /dev/null
+++ b/unsorted/SerialConsole.mdwn
@@ -0,0 +1,28 @@
+# <a name="Grub"> Grub </a>
+
+To enable serial console support in Grub, you'll need to add a variation of the following to the top of your menu.lst:
+
+ serial --unit=0
+ terminal --timeout=2 serial console
+
+The first line enables the serial console on the first serial port (use --unit=1 to use the second). The second tells Grub to use either the serial console or the vga display on the first one on which input is sensed within two seconds of executing this command. If no input is detected, Grub defaults to the first which in this case is the serial console.
+
+# <a name="Hurd"> Hurd </a>
+
+You'll first need to create a serial port device. Change to /dev and execute the following as root:
+
+ ./MAKEDEV com0
+
+Then add the following to /etc/ttys:
+
+ com0 "/libexec/getty 9600" xterm-color on secure trusted console
+
+runttys won't automatically reread /etc/ttys. You need to send it a SIGHUP.
+
+If you are running your serial console on the second serial port, replace com0 with com1.
+
+# <a name="Using_the_Serial_Port"> Using the Serial Port </a>
+
+minicom is popular but sredird has a more integrated feel.
+
+-- [[NealWalfield]] - 12 Dec 2005
diff --git a/unsorted/Shopping.mdwn b/unsorted/Shopping.mdwn
new file mode 100644
index 00000000..d9806e93
--- /dev/null
+++ b/unsorted/Shopping.mdwn
@@ -0,0 +1,13 @@
+Here are some e-shops from which you can buy stuff: T-Shirts and others. Free Software Foundation Inc. doesn't get percent from these sells.
+
+* [CafePress](http://www.cafeshops.com/hurd)
+
+-- [[Main/OgnyanKulev]] - 11 Feb 2004
+
+Wait, so they are making money off the Hurd and not giving any to the FSF? Uh....
+
+-- [[Main/GrantBow]] - 27 Feb 2004
+
+OK, It was kind a stupid to add this sentence. What about removing it all this sentence?
+
+-- [[Main/OgnyanKulev]] - 27 Feb 2004
diff --git a/unsorted/TestSuites.mdwn b/unsorted/TestSuites.mdwn
new file mode 100644
index 00000000..e268ba8d
--- /dev/null
+++ b/unsorted/TestSuites.mdwn
@@ -0,0 +1,12 @@
+Test suites exist to validate the compliance of software implementations with specific standards. This page is to act as a repository for information about the standards themselves, the test suites that validate software that complies with the standards as well as results &amp; feedback from people who have run these suites.
+
+* IEEE [Posix](http://standards.ieee.org/regauth/posix/index.html) ([Open POSIX Test Suite](http://posixtest.sourceforge.net/))
+* Free Standards Group Linux Standard Base ([LSB](http://www.linuxbase.org/))
+* File Hierarchy Standard ([FHS](http://www.pathname.com/fhs/))
+* [X Desktop Group](http://www.freedesktop.org)
+* The Open Group [Single UNIX specification, version 3](http://www.unix-systems.org/version3/online.html)
+* The Open Group [ Unix 98](http://www.opengroup.org/public/prods/xxm0.htm)
+* The Open Group [Testing Services](http://www.opengroup.org/consortia_services/testing.htm) (with [downloads](http://www.opengroup.org/testing/downloads.html))
+* [Perl](http://www.perl.org)
+
+-- [[Main/NagromNamreh]] - 24 Jan 2004 Added Posix test suite results
diff --git a/unsorted/TestWebMenu/lmf09_1999.jpg b/unsorted/TestWebMenu/lmf09_1999.jpg
new file mode 100644
index 00000000..85332658
--- /dev/null
+++ b/unsorted/TestWebMenu/lmf09_1999.jpg
Binary files differ
diff --git a/unsorted/VmWare.mdwn b/unsorted/VmWare.mdwn
new file mode 100644
index 00000000..6f4c3cba
--- /dev/null
+++ b/unsorted/VmWare.mdwn
@@ -0,0 +1,22 @@
+## <a name="Why_not_vmware_"> Why not vmware? </a>
+
+**_Q:_** GNU won't work in [[VmWare]], it hangs when reaching the Hurd bootstrap.
+
+**_A:_** Note that Vmware is not supported software to run the Hurd on it. Reasons include:
+
+1. Vmware is not [free software](http://www.gnu.org/philosophy/free-sw.html), which is against our philosophy.
+2. Obtaining a licensed copy to debug it costs (at least) $300. (However, the player is "free" as in beer. This doesn't lessen the other concerns, however).
+3. Vmware's sources and specification are not publicly available, which makes debugging tasks really painful.
+4. GNU is not in [Vmware's official supported operating systems page](http://www.vmware.com/support/ws3/doc/ws32_guestos2.html#1034043).
+
+We recommend to use [free](http://www.gnu.org/philosophy/free-sw.html) alternatives, like the [[BochsEmulator]]. Also check QEMU: [[HurdOnQEMU]].
+
+-- [[Main/RobertMillan]] - 23 Jul 2002
+
+I have been able to install Debian/Hurd K2 on [[VmWare]] ...
+
+* [[VmWare]] 3.02 complains a lot about a missing **console** and shows a lot of errors
+ * They can be solved by manually creating the devices
+* I have tried **Bochs 2.0**, Debian/Hurd K2 installs with no problems at all.
+* [[VmWare]] 4.0.0 works fine ... just follow the Hurd install instructions.-- [[TWiki/AndreaSterbini]] - 22 Apr 2003
+* Here using "free" (as in beer) vmware-player 1.0.2.29634 on Gentoo. Hurd K14 installs and runs smoothly, but seems to hang on shutdown. -- [[Main/DeviceRandom]] - 20 Jan 2007
diff --git a/unsorted/WebHome/hurd_sm_mf.png b/unsorted/WebHome/hurd_sm_mf.png
new file mode 100644
index 00000000..26bb78b5
--- /dev/null
+++ b/unsorted/WebHome/hurd_sm_mf.png
Binary files differ
diff --git a/unsorted/XattrHurd.mdwn b/unsorted/XattrHurd.mdwn
new file mode 100644
index 00000000..d3856c1b
--- /dev/null
+++ b/unsorted/XattrHurd.mdwn
@@ -0,0 +1,5 @@
+Roland McGrath has made [Linux support for Hurd's extensions to ext2 via Extended Attributes (xattr) interface](http://lists.gnu.org/archive/html/bug-hurd/2004-02/msg00108.html). This is important because it allows Hurd to be completely cross-installed in Linux.
+
+Michael Banck made some Debian precompiled Linux kernel packages that allow [using this xattr-hurd](http://lists.debian.org/debian-hurd/2004/09/msg00036.html).
+
+-- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/unsorted/Xfree86.mdwn b/unsorted/Xfree86.mdwn
new file mode 100644
index 00000000..6fffff81
--- /dev/null
+++ b/unsorted/Xfree86.mdwn
@@ -0,0 +1,97 @@
+# <a name="Setup_XFree86_in_GNU"> </a> Setup XFree86 in GNU
+
+This is a brief helper on how to setup X-Window on GNU.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[console]] for more details.
+
+First, set up the keyboard translator. Using `/hurd/kbd` and `/hurd/mouse` is not supported. You should instruct Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 --console-node=/dev/cons /dev/vcs
+
+Symbolic links to repeaters should be created too:
+
+ # ln -s /dev/cons/kbd /dev
+ # ln -s /dev/cons/mouse /dev
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+You will need several X packages. The `x-window-system-core` brings you most of what you need:
+
+* `xserver-xfree86`
+* `xfonts-base`
+* `xfonts-100dpi`
+* `xfonts-75dpi`
+* `xfonts-scalable`
+* `xbase-clients`
+* `xutils`
+* `rxvt`
+* ... as well as your window manager of choice:
+ * WindowMaker, `wmaker`
+ * FVWM, `fvwm`
+ * Blackbox, `blackbox`
+ * TWM, `twm`
+
+The recommended way of configuring X is using the `xserver-xfree86` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xfree86
+
+It may be easier to just copy a working configuration from another operation system on the same computer and place it in `/etc/X11/XF86Config-4`, but this is discouraged as you would have to remove some sections by hand.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+### <a name="Edit_XF86Config_4"> Edit XF86Config-4 </a>
+
+Now you have to edit the file manually to ensure that the mouse sections look like this:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Mouse"
+ Driver "mouse"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+You may also enable the Emulate3Buttons option, but nothing else will work.
+
+ Option "Emulate3Buttons" "true"
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run
+
+`startx`
+
+However, there are several caveats to be aware of:
+
+* `xterm` does not work correctly; try `rxvt`.
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+* GNOME can now be ported with the new pthreads, but is still being worked on. [[WindowMaker]], [[TWM]], [[Blackbox]] and [[FVWM]] all work.
+
+### <a name="Graphical_Environment"> Graphical Environment </a>
+
+See [[GNOME]] in Hurd . (?)
+
+----
+
+Created. -- [[Main/RobertMillan]] - 21 Nov 2002
+
+Some text formatting. -- [[Main/OgnyanKulev]] - 05 Dec 2002
+
+Dito. -- [[Main/JoachimNilsson]] - 12 Jan 2003
+
+`/hurd/kbd` is no longer supported. -- [[Main/OgnyanKulev]] - 11 Aug 2004
+
+`/hurd/mouse` is deprecated. -- [[Main/OgnyanKulev]] - 21 Sep 2004
+
+-c /dev/cons is now --console-note=/dev/cons -- Sven 01 May 2005
diff --git a/unsorted/byte-letter.txt b/unsorted/byte-letter.txt
new file mode 100644
index 00000000..20fa61a0
--- /dev/null
+++ b/unsorted/byte-letter.txt
@@ -0,0 +1,25 @@
+Byte magazine published this in the `Letters' section
+of the March '96 issue:
+
+ Where's the GNU Hurd?
+
+ The November 1995 articles "NT Roars
+ on the 604" and "CPU scorecards" were
+ quite welcome. But the Special Report on
+ operating systems did not mention GNU
+ Hurd. This OS is based on the Mach mi-
+ crokernel, and thus it has been essentially
+ ported to a wide variety of hardware plat-
+ forms--nearly as many as NetBSD. To
+ learn more about the Hurd, and especially
+ about its binary portability, visit http://
+ www.cs.pdx.edu/~trent/gnu/hurd/. Con-
+ trary to what you say in the text box "Op-
+ erating-System Research: Dim or Bright
+ Future?" (page 116), microkernel tech-
+ nology has not been exploited to its max-
+ imum capability, as the Hurd philosophy
+ demonstrates.
+
+ Todd Hutchinson
+ jasper@terra.3rdplanet.com
diff --git a/unsorted/changelogs.html b/unsorted/changelogs.html
new file mode 100644
index 00000000..299ef281
--- /dev/null
+++ b/unsorted/changelogs.html
@@ -0,0 +1,107 @@
+[[meta copyright="Copyright © 2001, 2002, 2006, 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]]."]]"""]]
+
+<H3>ChangeLogs</H3>
+<P>
+As the Hurd sources are kept and maintained in a CVS repository that
+is accessible via the web, you can follow the progress of development
+closely. We maintain ChangeLogs, in which we record every change to
+the source code at the time it is committed. The links below lead you
+directly to the ChangeLog files in the Hurd and its associated packages.
+<P>
+If you want to follow the development of the Hurd closely, we suggest
+that you subscribe to the <A
+HREF="http://lists.gnu.org/mailman/listinfo/commit-hurd/">commit-hurd mailing
+list</A> to which notifications about changes to the Hurd source code
+are sent. The <A HREF="/software/hurd/download.html">complete source
+code</A> is also available, of course.
+</P>
+<H4>The Hurd</H4>
+<P>
+The Hurd source tree contains many independent parts, and therefore
+has one ChangeLog for each directory. There is one <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ChangeLog">ChangeLog
+in the main directory</A>, and one in each of the following
+subdirectories:
+</P>
+<UL>
+<LI>Translators and other servers:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/auth/ChangeLog">auth</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/exec/ChangeLog">exec</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ext2fs/ChangeLog">ext2fs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ftpfs/ChangeLog">ftpfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/hostmux/ChangeLog">hostmux</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/init/ChangeLog">init</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/isofs/ChangeLog">isofs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/mach-defpager/ChangeLog">mach-defpager</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/nfs/ChangeLog">nfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/nfsd/ChangeLog">nfsd</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/pfinet/ChangeLog">pfinet</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/pflocal/ChangeLog">pflocal</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/proc/ChangeLog">proc</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/storeio/ChangeLog">storeio</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/term/ChangeLog">term</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/tmpfs/ChangeLog">tmpfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/trans/ChangeLog">trans</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs/ChangeLog">ufs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/usermux/ChangeLog">usermux</A>
+<LI>Utilities:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/benchmarks/ChangeLog">benchmarks</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/boot/ChangeLog">boot</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/bsdfsck/ChangeLog">bsdfsck</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/fstests/ChangeLog">fstests</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/sutils/ChangeLog">sutils</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs-fsck/ChangeLog">ufs-fsck</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/ufs-utils/ChangeLog">ufs-utils</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/utils/ChangeLog">utils</A>
+<LI>Boot code and system programs:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/login/ChangeLog">login</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/config/ChangeLog">config</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/daemons/ChangeLog">daemons</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/serverboot/ChangeLog">serverboot</A>
+<LI>Release scripts and packaging:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/debian/ChangeLog">debian</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/release/ChangeLog">release</A>
+<LI>Documentation:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/doc/ChangeLog">doc</A>
+<LI>Interface definitions:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/hurd/ChangeLog">hurd</A>
+<LI>Support libraries:
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libdiskfs/ChangeLog">libdiskfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libfshelp/ChangeLog">libfshelp</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libftpconn/ChangeLog">libftpconn</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libhurdbugaddr/ChangeLog">libhurdbugaddr</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libihash/ChangeLog">libihash</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libiohelp/ChangeLog">libiohelp</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libnetfs/ChangeLog">libnetfs</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libpager/ChangeLog">libpager</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libpipe/ChangeLog">libpipe</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libports/ChangeLog">libports</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libps/ChangeLog">libps</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libshouldbeinlibc/ChangeLog">libshouldbeinlibc</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libstore/ChangeLog">libstore</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libthreads/ChangeLog">libthreads</A>,
+<A HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/hurd/libtrivfs/ChangeLog">libtrivfs</A>
+</UL>
+<H4>GNU&nbsp;Mach</H4>
+The <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog">GNU
+Mach ChangeLog</A> covers all changes to GNU&nbsp;Mach and <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog?rev=1.128.2">GNU
+Mach 1 branch ChangeLog</A> those on the <SAMP>gnumach-1-branch</SAMP>.
+Changes before March 1997 are listed in <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog.0">ChangeLog.0</A>
+and <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/gnumach/ChangeLog.00">ChangeLog.00</A>.
+<H4>MIG</H4>
+The <A
+HREF="http://cvs.savannah.gnu.org/viewcvs/~checkout~/hurd/mig/ChangeLog">MIG ChangeLog</A>
+covers all changes to MIG.
diff --git a/unsorted/hurd-fs-org b/unsorted/hurd-fs-org
new file mode 100644
index 00000000..ba515623
--- /dev/null
+++ b/unsorted/hurd-fs-org
@@ -0,0 +1,219 @@
+From: mib@duality.gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 13 Aug 1995 22:31:18 GMT
+Organization: Free Software Foundation, Cambridge, MA
+In-reply-to: Rick Niles's message of 13 Aug 1995 16:20:29 GMT
+
+In article <40l8od$ia9@news4.digex.net> Rick Niles <niles@axp745.gsfc.nasa.gov>
+ writes:
+
+ Is there a conflict between the GNU Filesystem Structure and
+ the Linux Filesystem Structure (FSSTND)?
+
+What you point out is the trivial difference; there are significant
+lossages in FSSTND, such as the absence of libexec...
+
+ I've heard on this newsgroup that the GNU std. is to elminate
+ the use of /usr. So:
+
+ I guess the first question is: Is this true?
+
+Yes.
+
+ If it is how do you answer those who say the root part. should
+ be small and only enough to boot the system? And
+ the rest of the system should be on a separate part. (/usr)
+
+In GNU the directory /bin will be an amalgam of several directories;
+this well be done by the use of a translator in the Hurd. (It will be
+similar to BSD shadow filesystems.)
+
+So we have no need to confuse users by putting binaries in two
+different places. We can put different binaries in different physical
+locations without either forcing them to appear in different places or
+creating a forest of symlinks.
+
+But the FSSTND's arguments are bogus even for Unixoid systems which do
+force differently located files to have different directory names:
+
+ o It is often mounted from very small media. For example, many Linux
+ users install and recover systems by mounting root off a RAM disk,
+ which is copied from a single 1.44M or 1.2M floppy disk.
+
+This is a non-issue. Obviously a floppy can only have a small number
+of files, but that's totally irrelevant in deciding what should be on
+root on a fully loaded system.
+
+ o The root filesystem has many system-specific configuration files in
+ it. Possible examples include a kernel that is specific to the
+ system, a different hostname, etc. This means that the root
+ filesystem isn't always shareable between networked systems.
+ Keeping it small on networked systems minimizes the amount of space
+ lost on servers to unshareable files. It also allows workstations
+ with smaller local hard drives.
+
+It should be possible to require only the etc directory to be
+per-system; there is no reason that bin and such should be non-shared
+at all.
+
+ o While you may have the root filesystem on a large partition, and
+ may be able to fill it to your heart's content, there will be
+ people with smaller partitions. If you have more files installed,
+ you may find incompatibilities with other systems using root
+ filesystems on smaller partitions. If you are a developer then you
+ may be turning your assumption into a problem for a large number of
+ users.
+
+This is totally incoherent, as far as I can tell. If someone can tell
+me what it means, then maybe I could help. What sort of
+incompatibilities are expected?
+
+Michael
+
+
+
+From: gord@enci.ucalgary.ca (Gord Matzigkeit)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 14 Aug 1995 18:55:20 -0600
+In-reply-to: mib@duality.gnu.ai.mit.edu's message of 13 Aug 1995 22:31:18 GMT
+
+-----BEGIN PGP SIGNED MESSAGE-----
+
+Hi!
+
+>>>>> "mib" == Michael I Bushnell, p/BSG <mib@duality.gnu.ai.mit.edu> writes:
+
+ mib> In article <40l8od$ia9@news4.digex.net> Rick Niles
+ mib> <niles@axp745.gsfc.nasa.gov> writes:
+[hack & slice]
+
+ >> If it is how do you answer those who say the root
+ >> part. should be small and only enough to boot the system? And
+ >> the rest of the system should be on a separate part. (/usr)
+
+ mib> In GNU the directory /bin will be an amalgam of several
+ mib> directories; this well be done by the use of a translator in the
+ mib> Hurd. (It will be similar to BSD shadow filesystems.)
+
+This is what I figured... my reply didn't get posted to USENET,
+though, because our NNTP server has been down for the last day or two.
+
+ mib> So we have no need to confuse users by putting binaries in two
+ mib> different places. We can put different binaries in different
+ mib> physical locations without either forcing them to appear in
+ mib> different places or creating a forest of symlinks.
+
+This is grand! One of my ideas that I mentioned to Rick was that I'm
+currently using depot, and I see that the GNU union/shadowfs could
+replace that.
+
+What depot does is manages symlinks for a "software environment" (a
+more restricted version of what you have described).
+
+The way I think I'll be setting up my Hurd machine is to have all the
+physical disks mounted under "/disk", each containing a fragment of
+the filesystem.
+
+Now, my only concerns are:
+
+1) control files, as far as determining precedence, and what can and
+cannot be shadowed (for collision resolution), and what is just
+auxilliary info (like CVS directories in the site package, which
+should not be mapped onto the software environment)
+
+2) packages. Is there some slick way to divide the filesystem into
+"package pieces", like depot does?
+
+One suggestion to get (2), is that I could create an intermediate
+directory, say "/package", that would be the union of various mounted
+physical disks (under /disk), and would contain things like:
+
+emacs-19.30/bin
+emacs-19.30/lib...
+gcc-2.7.3/bin...
+fileutils-5.8/man...
+site/sbin/useful_perl_script
+
+et al. Then I would unionfs all the directories in the /package dir
+onto the root filesystem.
+
+This would have most of the advantages I'm getting from depot, namely,
+the ability to specify different precedences on different machines,
+so that I can try out emacs-19.31 on one workstation without
+disrupting the others.
+
+Is there a better way to do this? I do like the idea of three
+different hierarchies for files (under /disk, where I can see what is
+on each server; under /package, where I can see what is in each
+package; the GNU standard dirs, where I actually use the files), but I
+am hoping that there is something more elegant. Hmm. Maybe not.
+
+ mib> It should be possible to require only the etc directory to be
+ mib> per-system; there is no reason that bin and such should be
+ mib> non-shared at all.
+
+This is one point (for security), that would mandate the use of config
+files, so that the unionfs doesn't map /etc/some_important_file from
+another server.
+
+This is yet another thing that I'm looking forward to. Thanks. ;)
+
+- --Gordon
+
+- --
+Gordon Matzigkeit | Heck, it was only a TOASTER... lighten up!
+gord@enci.ucalgary.ca | PGP mail preferred... finger me for my key.
+Keyprint: D5 66 08 E0 4D F4 D7 7B 8A C8 8A 9C 7F 39 25 A7 - ID 339ABEB9
+
+
+-----BEGIN PGP SIGNATURE-----
+Version: 2.6.2
+Comment: Processed by Mailcrypt 3.3, an Emacs/PGP interface
+
+iQCVAwUBMC/wcyFsfCEzmr65AQHubwP7BGVHqs9ACB8hFUqDdF2oWu/lLq1hW/Oa
+qra2ZfcKfIZq9hIM4tLRJ0qCaiOVm5MGLgH7Yax+ZyOPb4K0fCObzk1XY5b0enhV
+9SR70UZ7Qm7MXj+PFCp5lxvrNiaFXMbil0EN5FQEvH9kUp0ed1NWcaXGqTK6gezm
+YBUumt2Zadk=
+=6f2c
+-----END PGP SIGNATURE-----
+
+
+
+
+From: mib@duality.gnu.ai.mit.edu (Michael I. Bushnell, p/BSG)
+Newsgroups: gnu.misc.discuss
+Subject: Re: GNU vs. Linux FSSTND conflict?
+Date: 16 Aug 1995 14:43:47 GMT
+In-reply-to: gord@enci.ucalgary.ca's message of 14 Aug 1995 18:55:20 -0600
+
+In article <npka8gj893.fsf@enci.ucalgary.ca> gord@enci.ucalgary.ca (Gord Matzig
+keit) writes:
+
+ The way I think I'll be setting up my Hurd machine is to have all the
+ physical disks mounted under "/disk", each containing a fragment of
+ the filesystem.
+
+Our idea is to do something roughly like this.
+
+ 1) control files, as far as determining precedence, and what can and
+ cannot be shadowed (for collision resolution), and what is just
+ auxilliary info (like CVS directories in the site package, which
+ should not be mapped onto the software environment)
+
+Yes, the relevant translator will support a *rich* set of semantics
+for this kind of things specified by a control file.
+
+ 2) packages. Is there some slick way to divide the filesystem into
+ "package pieces", like depot does?
+
+We're going to do this; rms and I have worked out a usable scheme that
+meets all the necessary goals.
+
+The physical location of files has to be reflected by sharing rules
+(see the GNU makefile standards); users have to be able to see all the
+files relevant to a particular program easily; programs have to be
+easily de-installed. We have a scheme that meets these three.
+
+Michael
diff --git a/unsorted/hurd-migr b/unsorted/hurd-migr
new file mode 100644
index 00000000..ce36c86c
--- /dev/null
+++ b/unsorted/hurd-migr
@@ -0,0 +1,141 @@
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!swrinde!howland.reston.ans.net!E
+U.net!Germany.EU.net!netmbx.de!sietec.de!news!jh
+From: jh@poseidon.sietec.de (Jochen Roger Hayek)
+Newsgroups: gnu.misc.discuss
+Subject: HURD & migration facilities
+Date: 24 Oct 1994 15:12:34 GMT
+Organization: Sietec Systemtechnik, Berlin
+Lines: 16
+Distribution: world
+Message-ID: <JH.94Oct24161234@poseidon.sietec.de>
+Reply-To: Jochen.Roger.Hayek@sietec.de
+NNTP-Posting-Host: sunmiet3.sietec.de
+
+I read an article from acm's sigops vol. 28, number 4 this weekend, having the
+title:
+
+ a brief survey of systems providing
+ process or object migration facilities
+ by Mark Nuttall
+
+I found it very instructive.
+
+I think process / object migration should be considered for HURD, too,
+and it's important to look at that before supporting / emulating
+UNIX's fork and inherited open file descriptors,
+because those features might get contradictory if not carefully designed.
+
+Regards esp. to the HURD folks
+
+JH
+
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!sgiblab!spool.mu.edu!bloom-beacon.mit.ed
+u!ai-lab!life.ai.mit.edu!mib
+From: mib@churchy.gnu.ai.mit.edu (Michael I Bushnell)
+Newsgroups: gnu.misc.discuss
+Subject: Re: HURD & migration facilities
+Date: 24 Oct 1994 18:10:25 GMT
+Organization: Free Software Foundation, Cambridge, MA
+Lines: 27
+Distribution: world
+Message-ID: <MIB.94Oct24141025@churchy.gnu.ai.mit.edu>
+References: <JH.94Oct24161234@poseidon.sietec.de>
+NNTP-Posting-Host: churchy.gnu.ai.mit.edu
+In-reply-to: jh@poseidon.sietec.de's message of 24 Oct 1994 15:12:34
+ GMT
+
+In article <JH.94Oct24161234@poseidon.sietec.de> jh@poseidon.sietec.de (Jochen
+Roger Hayek) writes:
+
+ I think process / object migration should be considered for HURD, too,
+ and it's important to look at that before supporting / emulating
+ UNIX's fork and inherited open file descriptors,
+ because those features might get contradictory if not carefully designed.
+
+Process migration is not a problem for the Hurd--it's a problem for
+Mach. If a Mach task can be correctly migrated, then there is no
+problem.
+
+However, I want to do more than that with the Hurd; I want to have a
+collection of machines (I think I'll call it a ``Collective'') appear
+as a single machine. (Shades of amoeba here.)
+
+This is the first (and harder) task--making a single global space of
+pids, etc.
+
+The second (and easier) task is migration.
+
+ -mib
+--
++1 617 623 3248 (H) | En arche en ho logos,
++1 617 253 8568 (W) -+- kai ho logos en pros ton theon,
+1105 Broadway | kai theos en ho logos.
+Somerville, MA 02144 | Kai ho logos sarx egeneto,
+mib@gnu.ai.mit.edu | kai eskenosen en hemin.
+
+Newsgroups: gnu.misc.discuss
+Path: usenet.ee.pdx.edu!cs.uoregon.edu!reuter.cse.ogi.edu!psgrain!agora!hermes.
+rdrop.com!erich
+From: erich@uruk.org (Erich Boleyn)
+Subject: Re: HURD & migration facilities
+Sender: news@agora.rdrop.com (David Greenman)
+Nntp-Posting-Host: uruk.org
+Organization: RainDrop Laboratories
+Message-ID: <ERICH.94Oct29093537@uruk.org>
+References: <JH.94Oct24161234@poseidon.sietec.de>
+ <MIB.94Oct24141025@churchy.gnu.ai.mit.edu>
+In-Reply-To: mib@churchy.gnu.ai.mit.edu's message of 24 Oct 1994 18:10:25 GMT
+Date: Sat, 29 Oct 1994 16:35:37 GMT
+Lines: 50
+
+
+In article <MIB.94Oct24141025@churchy.gnu.ai.mit.edu> mib@churchy.gnu.ai.mit.ed
+u (Michael I Bushnell) writes:
+
+ Process migration is not a problem for the Hurd--it's a problem for
+ Mach. If a Mach task can be correctly migrated, then there is no
+ problem.
+
+ However, I want to do more than that with the Hurd; I want to have a
+ collection of machines (I think I'll call it a ``Collective'') appear
+ as a single machine. (Shades of amoeba here.)
+
+Great! (I think we talked about this before...)
+
+ This is the first (and harder) task--making a single global space of
+ pids, etc.
+
+This point seems somewhat questionable. Maybe we're thinking about
+the same idea in the long run, but I don't think that migrating
+data about the whole system around would be very useful...
+I mean, you still want a very large collective to work, though it
+could well get bogged down by the details of huge amounts of info.
+
+I think a more optimal (and more practical) approach would be to:
+
+Create a model of a "user context" that keeps track across multiple
+machines what resources and programs a user is working with.
+
+There would also be publically known "services" that would be advertised.
+Note that "advertising" is a specific activity that is usually not
+performed, unless one desires to do so.
+
+Anything else is really of little or no concern except to a local group of
+machines (for resource-balancing issues). So machines would automatically
+keep in touch with other nearby machines, but it would be modulated by
+distance.
+
+The big question is this (and for that matter, other models) is that
+of authentication in some kind of reasonably reliable manner.
+
+ The second (and easier) task is migration.
+
+Agreed.
+
+Erich
+
+--
+Erich Stefan Boleyn \ Mad Genius wanna-be, CyberMuffin
+Mathematician, Software Engineer \ slavering computer nerd
+Internet E-mail: <erich@uruk.org> \ "Forget Artificial Intelligence,
+Motto: "I'll live forever or die trying" \ I want the real thing!"
diff --git a/user.mdwn b/user.mdwn
new file mode 100644
index 00000000..9c965af2
--- /dev/null
+++ b/user.mdwn
@@ -0,0 +1,21 @@
+[[!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="User Pages"]]
+
+[[!inline
+pages=none
+show=-1
+feeds=no
+actions=yes
+rootpage="user" postformtext="Add a new user page titled:"]]
+
+[[!map pages="user/* and !user/*/*"
+show=title]]
diff --git a/user/arnuld.mdwn b/user/arnuld.mdwn
new file mode 100644
index 00000000..1f913a2b
--- /dev/null
+++ b/user/arnuld.mdwn
@@ -0,0 +1,34 @@
+# arnuld @ Hurd-Wiki
+
+## General
+
+* Name: arnuld uttre
+* Email: arnuld (at) ippimail (dot) com
+* Country: India
+* Homepage: <http://www.lispmachine.wordpress.com>
+
+
+
+## Education
+
+* B.Sc. (with Comp. App) - Panjab Univeristy, Chandigarh
+
+
+
+## Professional
+
+* I was a Salesman (sold Financial Products) for 2 years
+
+
+
+## Future Plans
+
+* I am learning skills to get myself into Central-Cabinet of Government of India. India is the 2nd
+ biggest developing economy and hence lots of Software companies will grow here. RMS is working
+ hard in this field to spread free software but he dealing with effects rather than the cause. He
+ is not the one who decides what the software policy of some company will be, only Government can
+ create rules and regulations and push the methods of creating software and for that one needs to be
+ in a pretty much higher position in politics. I will go there and do it.
+
+* Yes, I want to learn Jeet-Kuan-Do. I love it as much as I love the copyleft but only one thing can
+ happen: I will be either in politics or a Martial-Arts expert.
diff --git a/user/flaviocruz.mdwn b/user/flaviocruz.mdwn
new file mode 100644
index 00000000..c4d3db69
--- /dev/null
+++ b/user/flaviocruz.mdwn
@@ -0,0 +1,124 @@
+[[!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]]."]]"""]]
+
+Name: Flávio Cruz
+
+Email: flaviocruz at gmail dot com
+
+Some [Hurd stuff](http://opensvn.csie.org/leic/hurd/)
+
+And code: [cl-hurd](http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=clisp)
+
+## Summer session
+
+Creating an extensible translator library in lisp using the mig generated stubs.
+
+### What's done
+
+- The library for writing translators is mostly written.
+- This library is intended to implement virtual filesystems. Examples are: translators were data is located in a local file (like zipfs, tarfs, rarfs, ...), single file translators (that do content filtering, output of a command, etc), network based filesystems (ftpfs, httpfs, ...), proxy filesystems (like hostmux, usermux, etc..)
+- It's possible to specialize the basic translator library and implement new translator classes. This is done using CLOS.
+- There is a tree-translator class that makes the managing of a node tree very easy, doing all the work for us, through a simple directory API and implementing the directory callbacks for us.
+- There is a simple example (something like zipfs) translator that can expose the directories and file contents of a ZIP file.
+- More translator examples include:
+ - /dev/null translator.
+ - /dev/zero translator.
+ - translator that creates a symlink node.
+ - tmpfs like translator.
+ - a translator that does proxying between clients and the underlying translator returning all data in upper-case.
+ - a translator that watches for changes in a file describing the file system structure.
+ - an IRC translator.
+ - a categorizer translator: creates a virtual directory containing files listed in a file, each file is categorized with a script. For example, a script can output the music author (in an mp3 file) and then all files will be categorized by author.
+- Translator options (manipulated through fsysopts) have a simple and easy to use API.
+- All the Mach port manipulation API is available.
+- It's possible to send and receive messages. Simple example:
+<pre>
+ (let* ((spec-mixed (make-message-spec :fields '(:string :integer :char :string :integer :real)))
+ (msg-mixed (make-message :spec spec-mixed))
+ (port (port-allocate :right-receive)))
+ (send-message msg-mixed :remote port :data (list "abc" 42 #\b "cba" 314 3.14))
+ (receive-message msg-mixed :source port) ; This returns T on success.
+ (get-message msg-mixed))) ; Returns '("abc" 42 #\b "cba" 314 3.14)
+</pre>
+- New message types (like :string, :integer) can be implemented, providing a powerful extension mechanism.
+- Creation of symlinks and symlink path resolution.
+- Creation of character/block devices, fifos and sockets.
+- Patch that opens stdin + stdout to /dev/null.
+- Project has been separated into 5 ASDF installable systems:
+ - hurd-common
+ - mach
+ - hurd
+ - hurd-translator
+ - tree-translator
+- Test cases are now written.
+
+
+### What needs to be done
+
+- Fix fsys-getroot (block happens in trivfs based translators, when they do RPC's to me when I call fsys_getroot to them) and fetch-root (for passive translators).
+- Make the library multithreaded (blocked by the pthread conversion project and the unavailable thread support in CLISP)
+- Use the socket stubs?
+- More documentation
+
+
+### Project dependencies
+
+- CLISP
+- [CFFI](http://common-lisp.net/project/cffi/) (apt-get installable)
+- [Flexi streams](http://www.weitz.de/flexi-streams/) (apt-get installable)
+- [Trivial garbage](http://www.cliki.net/trivial-garbage) (not in debian repositories)
+- [cl-zip](http://common-lisp.net/project/zip/) (only needed for the zip translator)
+- [cl-irc](http://common-lisp.net/project/cl-irc/) (for the irc translator)
+
+
+## To do
+
+### Documentation
+- Manually Bootstrapping a Translator
+
+### Translation
+- Translate the Hurd website to Portuguese?
+
+## Completed tasks
+
+### Patches
+- http://alioth.debian.org/tracker/index.php?group_id=30628&atid=410472
+ - libsvg patch accepted.
+- Adapted glibc patch (http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/0009-2007-07-22-version-of-init-first.c_vs._GCC_4.1.patch.patch)
+ - http://opensvn.csie.org/leic/hurd/patches/glibc-init-first.patch
+- Patch to remove some GNUMach IPC warnings and minor cleanup:
+ - http://opensvn.csie.org/leic/hurd/patches/gnumach-ipc-warnings.patch
+- Website patches that correct some encountered typos:
+ - http://opensvn.csie.org/leic/hurd/patches/hurd-talk-typo.patch
+
+### Documentation read
+
+- GNU/Hurd User's Guide, an introduction to the important concepts and software of the GNU system, written for new users, AKA "GNUbies."
+- Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG.
+- The Hurd, a presentation by Marcus Brinkmann.
+- The Hurd Hacking Guide.
+- The GNU Mach Reference Manual
+- The GNU Hurd Reference Manual
+- The Unofficial GNU Mach IPC beginner's guide
+- Mach IPC without MIG
+- CFFI User's Manual
+
+### Before selection
+
+- Uptime program in C and Lisp using CFFI.
+- Hello translator.
+
+## Misc
+
+### Lisp implementations that run on Hurd
+
+- Clisp
+- ECL
+- ?
diff --git a/user/jkoenig.mdwn b/user/jkoenig.mdwn
new file mode 100644
index 00000000..247d61cb
--- /dev/null
+++ b/user/jkoenig.mdwn
@@ -0,0 +1,358 @@
+[[!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 Debian-Installer
+
+My [proposal](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig)
+to work on porting d-i on Hurd
+as a [Google Summer of Code](http://code.google.com/soc/) student
+has been accepted by the Debian project.
+
+I will be keeping track of my progress on this page.
+
+### Links
+
+ * [Modified packages](http://jk.fr.eu.org/debian/unstable)
+ * [Latest images](http://jk.fr.eu.org/debian/hurd-installer)
+ * [Debian bugs](http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=jk@jk.fr.eu.org&tag=gsoc2010)
+ * [BusyBox port](http://lists.debian.org/debian-bsd/2010/05/msg00048.html)
+ * [GNU Mach initrd](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html)
+
+### Roadmap
+
+* **mach**: initrd support
+ * (./) preliminary patch posted and self-built (2010-06-12)
+ * adjustments will be needed (postponed)
+ * consider the alternatives discussed on bug-hurd (postponed)
+
+* **glibc**: fix `mkdir("/")` which returned `EINVAL`
+ * (./) eglibc 2.11.2-1 includes a quick fix by youpi (2010-06-15)
+ * (./) more complete patch posted to bug-hurd,
+ since other calls return incorrect errors under some circumstances
+ (2010-06-16)
+ * more work on it will be needed to make it fix the whole thing
+ (postponed)
+
+* (./) **partman** (2010-06-23)
+ * (./) add hurd-i386 to
+ `partman-partitioning/lib/disk-label.sh`
+ (2010-06-16, commited by youpi on 2010-06-23)
+ * (./) short-circuit
+ `partman-basicfilesystems/init.d/kernelmodules_basicfilesystems`
+ (2010-06-16)
+ * (./) partman-auto recipes:
+ make the default filesystem os-dependent
+ when it has not been preseeded (ie. the *seen* flag is clear)
+ * (./) force 4k blocks and 128 bytes inodes
+ * (./) submit patches to bugs.debian.org
+ ([[!debbug 586870]] and [[!debbug 586871]])
+ * (./) rebuild with responsible version numbers and upload to my repository
+
+* (./) **libparted** (2010-06-23)
+ * (./) fix device paths ([[!debbug 586696]])
+ * (./) fix crash on exit for part:* stores ([[!debbug 586682]])
+
+* **hurd-udeb** (2010-06-23)
+ * (./) rebuild with the hack suggested by youpi for qemu network configuration
+ * (./) fix mount to accept `-o defaults`
+ * cleanup, ask youpi to commit
+
+* reloading the partition table (2010-06-25)
+ * User-space part stores
+ * (./) hurd-udeb now uses `part:N:device:X` for partition devices
+ (2010-06-23)
+ * (./) it also provides /lib/partman/commit.d/??hurd\_reloadpart,
+ which basically does `settrans -ag /dev/[hs]d*`.
+ (2010-06-24)
+ * Kernel-based partition devices
+ * (./) Mach's drivers from Linux support reloading partitions.
+ With help from youpi this has been made available through a
+ device\_set\_status() call.
+ * (./) make libparted use it
+ * Reminder:
+ I should file a bug against libparted with the patch sometime.
+
+* (./) The `/servers/exec` issue (2010-06-26)
+ * Due to /servers being inexistant,
+ the bootstrap ext2fs could not register the initial exec server,
+ meaning that non-bootstrap filesystems used a different one
+ (started from the passive translator),
+ which for some reason died on shell scripts, making them stall.
+ * Adding the `/servers` directory to hurd-udeb fixed it,
+ as well as the /hurd/proc issue
+ (failed to be run by init the first time around).
+ * Reminder: report the non-bootstrap exec servers failure on scripts.
+
+* (./) **base-installer**: (2010-06-26)
+ * Work around non-existant /proc/mounts.
+ * Firmlink /servers into /target after debootstrap
+ to make the network available.
+
+* (./) **grub-installer**
+ * (./) add hurd support (2010-06-27)
+ * /!\ grub-legacy still needs to be tested
+ * submit changes as a Debian bug
+
+**Milestone (2010-06-28):
+installer kindof works, with documented manual intervention required**
+
+* (./) Sort out the situation with dev node creation (2010-07-07):
+ * Devices and servers used to be set up by debootstrap;
+ the hurd package would add some missing nodes.
+ * New strategy implemented in hurd and debootstrap:
+ * debootstrap uses active firmlinks into the host system
+ for the target system's /dev and /servers.
+ * the hurd package now include a `setup-translators` script,
+ which is used to register the passive translators by the installer's
+ `/libexec/runsystem` and hurd's postinst script.
+
+* **busybox**: submit upstream and to [[!debbug 323670]]
+ (waiting for upstream to review)
+ * (./) I have mentioned my work on the upstream mailing list,
+ * (./) merge the recent changes from upstream,
+ notably to the build system.
+ (2010-06-23)
+ * (./) ask upstream for review and merge
+ (2010-06-25)
+ * (./) sent as patches as requested
+ (2010-07-08)
+ * backport any additional changes onto the debian branch
+ * hijack [[!debbug 323670]] and submit my patches
+
+* **aptitude**:
+ * Currently broken on hurd-i386:
+ [[!debpkg gtest]] fails to build because of a segfault in one of the test
+ cases, [[!debpkg google-mock]] and hence [[!debpkg aptitude]] are missing
+ it as a build-dep.
+ The older package is not installable anymore because it's linked against
+ an older version of libept, which has been removed.
+ * (./) I bypassed the tests and uploaded the 3 packages to my repository
+ (2010-07-08)
+ * The segfault will have to be sorted out. (postponed)
+
+* (./) "Fix" the swap situation. (2010-07-08)
+ * The device\_close() libstore patch
+ had the unfortunate effect of making swapon fail,
+ since the device it activates has to be kept open.
+ * add options for MAKEDEV and setup-devices
+ to use the libparted stores
+ * disable youpi's patch
+ * make partman-basicfilesystems re-create the device
+ as a kernel partition, which is needed for swapon
+
+* (./) netcfg-static: port to hurd (2010-07-09)
+ * There was some amount of hurd support already
+ (namely, activating the interface by replacing the socket translator)
+ * However, this code started an active translator with
+ di\_exec\_shell\_log("settrans -a ...),
+ which stalled as a consequence of it capturing libdi's pipe
+ as its standard output.
+ * Network devices must be probed by trying to open Mach devices
+ with predetermined names (currently eth%d, wl%d),
+ because getifaddrs() does not seem to work on Hurd.
+ * /!\ netcfg, and configuring the installed system, postponed.
+
+* **procps** 3.2.7-11 (current hurd-i386 version) has [[!debbug 546888]]
+ * (./) Submit [[!debbug 588677]] and upload the result to my repository.
+ (2010-07-11)
+
+* (./) Set up a Debian mirror with modified packages for installation
+ * the [mirror](http://jk.fr.eu.org/debian/hurd-install/mirror)
+ is now up and running (2010-07-06)
+ * hacked the image build script to include its public key in
+ debian-archive-keyring at image build time (2010-07-08)
+ * Apparently debootstrap does not handle multiple versions very well.
+ Fix by using dpkg-scan{package,sources} rather than apt-ftparchive
+ to create index files.
+ (2010-07-10)
+ * Use the override files from ftp.debian.org,
+ to avoid debootstrap grabbing inappropriate packages.
+ * Changed them to make [[!debpkg ifupdown]],
+ [[!debpkg dhcp3-client]] and [[!debpkg dhcp3-client]] priority extra,
+ because they're uninstallable at the moment.
+ (2010-07-12)
+
+* (./) Put together a "jk-archive-keyring" package,
+ so that the mirror is authenticated in the target system as well.
+ (2010-07-12)
+
+* (./) Fix grub for user-space partitions (2010-07-16)
+ * grub-probe detects the whole device rather than the partition
+ as the device behind /boot/grub.
+ Consequently, grub-install fails.
+ * One approach would be to replace /dev/hd* by kernel devices
+ for file systems as well as for swap partitions.
+ > {X} this makes the installer crash,
+ > possibly due to cache coherency issue between hdX and hdXsY.
+
+ * (./) GRUB2 kern/emu/getroot.c
+ [patched](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00059.html)
+ to support part stores.
+
+* (./) Fix finish-install to skip `finish-install.d/90console` on Hurd
+ (2010-07-17)
+
+* (./) Avoid starting unnecessary /dev translators in a burst (2010-07-20)
+ * Use debootstrap use the extracted /usr/lib/hurd/setup-translators
+ to create device and server nodes in /target,
+ then firmlink the whole /target/dev and /target/servers
+ to the outer system.
+ * Make hurd.postinst not touch them on initial install.
+
+* (./) Fix mach-defpager for file and part stores on larger devices
+ * Use DEVICE\_GET\_RECORDS instead of DEVICE\_GET\_SIZE, which overflows an int
+ (2010-07-22)
+
+**Milestone (2010-07-22):
+installer works but it's still somewhat ugly and broken**
+
+* (./) Ship the UTF-8 font for the hurd console
+ (2010-07-22)
+ * Upload a version of bogl with youpi's patch for Hurd.
+ (see [[!debbug 589987]])
+ * Fix the hurd console for fonts with 16 pixels wide glyphs
+ (ie. handle the 8-wide glyph in there correclty)
+ * Support double-width glyphs (2010-07-24)
+ * {X} However the reduced font can't be loaded yet,
+ so make installer/build/Makefile
+ ship the whole `/usr/src/unifont.bgf`
+ as `/usr/share/hurd/vga-system.bgf`.
+
+* (./) Make the installer used the extended capabilities of the Hurd console
+ (2010-07-23)
+ * Set an UTF-8 locale in `/lib/debian-installer.d/S41term-hurd`.
+ * localechooser: set the language display level to 3
+ when using the hurd console.
+
+* (./) **busybox**: cross-platform package uploaded to experimental
+ (2010-08-03?)
+ * Aurelien Jarno updated the packaging to busybox 1.17.1,
+ fixed a whole lot of bugs,
+ and uploaded a new package with both our changes;
+ * most patches adopted upstream, and included in the new package;
+ * (u)mount/swaponoff ported to kFreeBSD;
+ * per-OS configuration overrides.
+
+* (./) Update custom packages to the latest versions
+ and send updated patches to the BTS
+ (2010-08-11)
+ * updated partman-base to choose a default filesystem in debian/rules
+ rather than at runtime,
+ as suggested by Aurelien Jarno in [[!debbug 586870]]
+ * patch submitted for debian-installer-utils
+ ([[!debbug 592684]]).
+ * patch submitted for locale-chooser
+ ([[!debbug 592690]]).
+ * debootstrap, grub-installer and finish-install not yet submitted,
+ since the details may still change.
+
+* (./) **partman-target**: fix fstab creation
+ (2010-08-11)
+ * See [[!debbug 592671]]
+ * debian/rules: set `partman/mount_style` to `traditional` on Hurd.
+ * finish.d/create\_fstab\_header: add a Hurd case.
+
+* **rootskel**: FTBFS on Hurd and other quirks
+ (to be fixed very soon)
+
+* **d-i/installer/build**: (expected soon)
+ * publish the patch I use
+ * sort out the changes suitable for inclusion
+ and ask youpi and/or debian-boot@l.d.o to commit them
+
+* call for testing and fix the bugs
+
+* Bug in setup-translators/MAKEDEV:
+ permissions are broken for nodes re-created through `MAKEDEV -k`,
+ because MAKEDEV's chmod/chown reaches the pre-existing translator
+ * Maybe settrans could be made to accept -o/--owner and
+ -p/--perm, to set the permissions for the underlying node?
+
+* Silence the "no kernel" warning somehow.
+
+* Investigate the wget/libc/pfinet/whatever bug which corrupts Packages.gz,
+ see the IRC log for 2010-07-23, around 1am UTC+0200
+
+* Try to resolve problems with udebs which are uninstallable on hurd-i386,
+ such as installation-locale and partman-whatever.
+
+* Provide `/proc/cmdline -> 2/cmdline`, or something.
+
+* Prepare a NMU for genext2fs (which is orphaned),
+ and ask youpi to sponsor the upload.
+
+* **busybox**: port
+ * fix stty/stat/ipcs on kFreeBSD,
+ * generally port more stuff,
+ * *ip* is needed (maybe) for network configuration,
+ * *mount*, *swaponoff* can be from hurd-udeb for now,
+ though the kFreeBSD people will need them
+
+* **partman**: further adjustments
+ * partman-base: handle /dev/hd?s* in lib/base.h
+ * hide irrelevant mount options? (sync, relatime)
+
+* Network configuration on the installed system.
+ This includes porting ifupdown and isc-dhcp-client,
+ which are currently uninstallable on hurd-i386.
+* Also, better DHCP support during and after installation
+
+* improve the [initrd situation](FIXME: link to bug-hurd post):
+ ajust the ramdisk support in Mach,
+ use tmpfs if possible.
+
+* mklibs{,-copy}:
+ test library reduction,
+ make it copy the ld.so -> ld.so.1 symlink.
+
+* hurd console fonts
+
+**Milestone (expected 2010-07-19):
+it works great and it's beautiful**
+
+* test, fix, document
+* support more types of installation images
+* give a shot at the graphical installer if time permits
+* integrate wireless drivers with netcfg
+* see how [[zhengda]]'s work on DDE could be integrated
+* etc..
+
+### Mostly done
+
+#### Week 1 (2010-05-24)
+
+* genext2fs: patches submitted, [[!debbug 562999]]
+ which add support for all block sizes and choosing them at runtime.
+* busybox: started porting the upstream and Debian package to Hurd and FreeBSD
+* rebuilding hurd-udeb from the pkg-hurd version
+ and adding a ld.so link to the initrd
+ fixes the exec translator crashing on startup.
+ (BTW would there be a mean to detect this from the libdiskfs bootstrap code
+ and report it ?)
+
+#### Week 2 (2010-05-31 to 2010-06-06)
+
+* *busybox*: patches [posted](http://lists.debian.org/debian-bsd/2010/05/msg00048.html).
+* *libdebian-installer4*: [[!debbug 584538]]
+* started working on mach initrd support
+* the installation images could boot into the main-menu
+ with the following changes:
+ * rebuild hurd-udeb from with the latest pkg-hurd patches
+ * use busybox from my osports-debian branch (see link above)
+ * tweak the d-i image build scripts
+ * the symlink /lib/ld.so -> ld.so.1 needs to be created somehow
+ (youpi mentionned it being the job of libc0.3-udeb I think)
+ * fix the poll() issue in libdebian-installer
+ (patch to be submitted soon),
+ also there is some hurd doxygen short-circuiting stuff
+ there which does not apply any more and prevents is to build.
+ * feed the initrd as a hard drive in qemu
+ (with some more space added to avoid it from becoming full)
+
diff --git a/user/kam.mdwn b/user/kam.mdwn
new file mode 100644
index 00000000..8ee68866
--- /dev/null
+++ b/user/kam.mdwn
@@ -0,0 +1,152 @@
+[[!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="Karim Allah Ahmed"]]
+
+<karim.allah.ahmed@gmail.com>
+
+Egypt.
+
+---
+
+#GSoC: 2010 Project
+Goal:
+
+---
+#Roadmap
+
+##Progress
+
+###Preparation Phase:
+
+Understanding how gnumach ticks [ at least the parts related to the project ]
+
+---
+
+####28th of April - 5th of May:
+
+* Reading the paging in code in gnumach.
+* Reading the libpager code, and the multipage patch.
+* Reading the translators code, only the part implementing the external pager interface.
+
+####5th of May - 12th of May:
+
+* Reading the paging out code in gnumach.
+* Understanding IPC in gnumach and reading some code.
+* Reading "[gnu_src]/kern/sched_prim.c"
+
+####12th of May - 19th of May:
+
+* Finishing the leftover code in some of the previous phases.
+* Building a big and a more clear picture of how gnumach ticks [ wiring things together ].
+
+####19th of May - 23th of May:
+
+* Off [College related-activities].
+
+---
+
+###Coding Phase:
+
+Stage 1:
+
+####24th of May - 26th of May:
+
+* Read the freeBSD multipages implementation.
+* Basic Modifications of gnumach's code.
+* err.. scratch this step. It's easier to work on porting OSF Mach's implementation of multi-pages.
+
+####26th of May - 28th of May:
+
+* (./) port OSF Mach's clustered pagein during 'page faults' ( [src]/vm/vm_fault.c )
+* (./) port "cluster_size" attribute of memory objects from OSF Mach.
+* (./) port "behavior" attribute of vm_map entries from OSF Mach.
+
+####29th of May - 2nd of June:
+
+* Off ( Oral Exams )
+
+####2nd of May - 4th of June:
+
+* Finish the port of the previous phase.
+
+---
+
+####4th of June - 4th of July:
+
+* Off ( Final Exams ).
+
+---
+
+Stage 2:
+
+####5th of July - 7th of July:
+
+* (./) Add "cluster_size" attribute to Neal Walfield's patch for the pager library.
+
+---
+
+Stage 3:
+
+####8th of July - 15th of July:
+
+* (./) Patch the diskfs library to use the new pager library API.
+* (./) Patch the ext2fs disk paging related routines to use the new pager library API.
+
+
+####16th of July - 19th of July:
+
+* Testing the current patches.
+* Stuck in compiling code ( http://30.media.tumblr.com/tumblr_l5ie1bb2u91qbjipvo1_500.jpg ) , so I started reading some documentation meanwhile ( [0] , [1] ).
+
+---
+
+Stage 4:
+
+####19th of July - 31th of June:
+
+* Check OSF Mach's mach-defpager.
+* Patch (or port OSF Mach's default pager) HURD's mach-defpager to use the new gnumach's RPCs.
+
+---
+
+Stage 5:
+
+####1st of August - 10th of August:
+
+* Testing the ported translators.
+* Fixing the boot bit-mapped memory allocator patch.
+
+---
+
+Stage 1:
+
+* clustered_paging.diff patch http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00024.html
+
+TODO:
+
+* Update the headers of the modified files in GNU Mach to reflect the fact that they were ported from OSF Mach.
+
+* Implement posix_madvise(), posix_fadvise, and readahead() in glibc.
+
+* Update the documentation of GNU Mach with the new interfaces.
+
+* (./) Revise and finish the code related to default_memory_manager management in GNU Mach. [done]
+
+* Port the vm_page "clustered" attribute. [ to mark that the page wasn't requested but was paged-in as part of the cluster ].
+
+
+---
+
+
+# Readings
+
+[0] http://www.nongnu.org/ext2-doc/ext2.html
+[1] http://kerneltrap.org/node/452
diff --git a/user/madhusudancs.mdwn b/user/madhusudancs.mdwn
new file mode 100644
index 00000000..903b0964
--- /dev/null
+++ b/user/madhusudancs.mdwn
@@ -0,0 +1,395 @@
+[[!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="GNU/Linux compatible procfs"]]
+
+[[!toc]]
+----
+
+ Project Name
+----
+
+GNU/Linux compatible procfs pseudo-filesystem
+
+------
+
+ Project Description
+----
+I wish to provide a sophisticated procfs pseudo-filesystem to “the Hurd”. An implementation of /proc pseudo-filesystem already exists in hurdextras repository. After skimming through the code it is clear that it needs a lot
+of rework and tuning. Experiences from GNU/Linux have proven procfs to be a very useful facility in implementing
+many of the process management tools. So the goal of this project is to rework on the existing procfs on “the Hurd”
+so that its not only reliable and robust but also more importantly it is fully compatible with the GNU/Linux procfs.
+The project thus aims at making the GNU/Linux process management tools like top, sysctl, kill,
+skill, nice, snice, pgrep, free, tload, uptime, fuser, killall, pidof, pstree, etc., to run out of the box.
+
+------
+
+ Mentor
+----
+
+Olaf Buddenhagen
+
+------
+
+ Project Schedule
+----
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;Initial preparation and migration (Community Bonding Period: has already started – May 25th)
+
+ This phase involves improving my translator programming skills by gaining
+ hands-on experience in it and becoming well versed in it. I will also go
+ through the Hurd code to understand its architecture in depth and will read
+ documentations related to obtaining process related information in Hurd.
+ This phase also involves the migration of existing procfs to use libnetfs.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;Analysis and Design (May 26th – June 11th )
+
+ This phase involves the analysis of previous migration. Also involves
+ interacting with the mentor, the Hurd community and other people involved
+ in development of ps. tools to draw the exact design of the proposed procfs
+ including the algorithms required for coding.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. &nbsp;Coding Stage I (June 12th – June 22nd )
+
+ Finishing up the migration to libnetfs based on the finalized design and
+ making necessary changes to the existing procfs. Coding up to
+ /proc/<pid>/exe in the features list.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;Coding Stage II (June 23rd – July 13th)
+
+ Involves coding of the features from /proc/<pid>/environ, up to
+ /proc/<pid>/maps. These contain most of the information required for ps.
+ tools and hence form the heart of the project. Will be completed by
+ mid-term evaluation deadline.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. &nbsp;Coding Stage III (July 14th – July 26th )
+
+ Coding the rest of the features in the list including any necessary
+ features that may be added in the analysis phase.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6. &nbsp;Final Testing and evaluation (July 27th – August 8th )
+
+ Closely interacting with the community and requesting them to help me
+ in overall testing and reviewing and making changes as per their
+ suggestions. Also involves testing with the ps. tools and consolidating
+ the documentation.
+
+#####&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. &nbsp;Packaging and Wrap-up (August 9th - August 18th )
+
+ Final phase of testing and fixing remaining bugs. Working with the
+ community to merge the project with the CVS HEAD of Hurd. Documentation
+ reviews, making necessary changes as per the suggestions and wrapping
+ up the documentation.
+
+------
+
+ Deliverables
+----
+
+1. /proc filesystem that uses libnetfs. Using this library makes it easier for implementing a large set of functionalities and hence makes the implementation robust.
+2. The core GNU/Linux compatible /proc filesystem with functionalities to support and provide information for ps. tools like procps, psmisc etc.
+
+Non-code deliverables include an exhaustive Documentation. This documents the code of the Hurd's procfs which explains in detail the implementation of each of the functionalities of procfs implemented
+during the course of this project.
+
+------
+
+ Code Repository
+----
+
+[http://github.com/madhusudancs/procfs/tree/master](http://github.com/madhusudancs/procfs/tree/master)
+
+Clone URL: [git://github.com/madhusudancs/procfs.git](git://github.com/madhusudancs/procfs.git)
+
+------
+
+ Progress
+----
+
+1. Packages Ported: [http://www.madhusudancs.info/parted-hurdi386 parted-1.7.1]
+2. Packages Porting in progress: autogen_1:5.9.4-1. Error installing texlive-bin. Error tracked to some post installation scripts of texlive-bin. Problem seems to be in fmutil. Trying to debug.
+3. Have to start coding libnetfs skeleton for procfs translator.
+
+**Target for next week**
+
+ Task To be completed by Status Now
+
+ 1. Finish Defining the necessary netfs call backs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Completed
+ 2. Create Directories for each process with pid directory name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Completed
+ 3. Create stat file for each process within this directory and<br/>
+ put atleast 1 information into it&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31-05-2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In Progress
+
+**Documentations Read/Reading**
+
+1. [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) (Have Concentrated mainly on Translator part)
+2. [Linux Kernel Implementation of procfs](http://users.sosdg.org/~qiyong/lxr/source/Documentation/filesystems/proc.txt)
+
+**Code Being Read**
+
+1. libps
+2. libnetfs
+3. [procfs implementation in Linux kernel](http://users.sosdg.org/~qiyong/lxr/source/fs/proc/)
+4. ftpfs (In Hurd main)
+5. cvsfs (In Hurd extras)
+6. xmlfs (In Hurd extras)
+7. httpfs (In Hurd extras)
+8. gopherfs (In Hurd extras)
+9. libfuse (In Hurd extras)
+10. procfs (libtrivfs based, In Hurd extras)
+
+------
+
+ Post Mid-Term Road Map
+----
+
+
+####Already Implemented
+
+#####File - /proc/&lt;PID&gt;/stat
+
+* pid
+
+* comm
+
+* state
+
+* ppid
+
+* pgrp
+
+* session
+
+* tty_nr
+
+* tpgid
+
+* minflt
+> The number of minor faults the process has made which have not required loading a memory page
+> from disk.
+
+* majflt
+> The number of major faults the process has made which have required loading a memory page from
+> disk.
+
+* utime
+> The number of jiffies that this process has been scheduled in user mode.
+
+* stime
+> The number of jiffies that this process has been scheduled in kernel mode.
+
+* priority
+> The standard nice value, plus fifteen. The value is never negative in the kernel.
+
+* num_threads
+> Number of threads in this process.
+
+* starttime
+> The time in jiffies the process started after system boot.
+
+* vsize
+> Virtual memory size in bytes.
+
+* rss
+> Resident Set Size: number of pages the process has in real memory, minus 3 for administrative
+> purposes. This is just the pages which count towards text, data, or stack space. This does not
+> include pages which have not been demand-loaded in, or which are swapped out.
+
+* itrealvalue
+> The time in jiffies before the next SIGALRM is sent to the process due to an interval timer.
+
+* nswap
+> Number of pages swapped (not maintained).
+
+* cnswap
+> Cumulative nswap for child processes (not maintained).
+
+* flags
+> PF_* fields defined in (Not Linux compatible, but nearly says the something Linux says)
+
+* nice
+> The nice value ranges from 19 to -19.
+
+* cutime
+> The number of jiffies that this process’s waited-for children have been scheduled in user
+> mode.
+
+* cstime
+> The number of jiffies that this process’s waited-for children have been scheduled in kernel mode.
+
+#####File - /proc/&lt;PID&gt;/statm
+
+* size
+> total program size
+
+* resident
+> resident set size
+
+* lib
+> library
+
+* dt
+> dirty pages
+
+####I already know the where the information is exactly available.
+
+#####Other Per-PID Files
+
+#####* /proc/&lt;PID&gt;/exe
+
+#####* /proc/&lt;PID&gt;/environ
+
+#####Non Per-PID Files
+
+#####* /proc/version
+
+
+####I know where the information is available roughly, but need to look in detail to extract the exact information.
+
+* cminflt
+> The number of minor faults that the process’s waited-for children have made.
+
+* cmajflt
+> The number of major faults that the process’s waited-for children have made.
+
+* signal
+> The bitmap of pending signals.
+
+* blocked
+> The bitmap of blocked signals.
+
+* sigignore
+> The bitmap of ignored signals.
+
+* sigcatch
+> The bitmap of caught signals.
+
+* policy
+> Scheduling policy.
+
+#####File - /proc/&lt;PID&gt;/statm
+
+* text
+> text (code)
+
+#####Other Per-PID Files
+
+#####* /proc/&lt;PID&gt;/cwd
+
+####The information may be available, but needs to be searched to know where it will be.
+
+#####File - /proc/&lt;PID&gt;/stat
+
+* rlim
+> Current limit in bytes on the rss of the process (usually 4294967295 on i386).
+
+* startcode
+> The address above which program text can run.
+
+* endcode
+> The address below which program text can run.
+
+* startstack
+> The address of the start of the stack.
+
+* kstkesp
+> The current value of esp (stack pointer), as found in the kernel stack page for the process.
+
+* kstkeip
+> The current EIP (instruction pointer).
+
+* exit_signal
+> Signal to be sent to parent when we die.
+
+#####File - /proc/&lt;PID&gt;/statm
+
+* share
+> shared pages
+
+* data
+> data/stack
+
+#####Other Per-PID File
+
+#####* /proc/&lt;PID&gt;/root
+
+#####Non Per-PID Files
+
+#####* /proc/stat
+
+#####* /proc/meminfo
+
+####I fear information may not be available.
+
+#####File - /proc/&lt;PID&gt;/stat
+
+* wchan
+> This is the "channel" in which the process is waiting. It is the address of a system call, and
+> can be looked up in a namelist if you need a textual name. (If you have an up-to-date
+> /etc/psdatabase,
+
+* processor
+> CPU number last executed on.
+
+* rt_priority
+> Real-time scheduling priority
+
+* delayacct_blkio_ticks
+> Aggregated block I/O delays, measured in clock ticks (centiseconds).
+
+
+###Newly added to Roadmap(but these were the original goals of the project)
+
+#### procps tools need to be ported so that they run on top of the procfs
+
+> ##### pgrep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
+> ##### pkill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
+> ##### killall&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
+> ##### pstree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
+> ##### top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (except per-PID shared memory field, and non per-PID caches and buffers field)
+> ##### free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (Ditto from above)
+> ##### htop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Mostly Done (Ditto again)
+> ##### watch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;Done
+> ##### tload&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;I think it is done. (Need someone to test it)
+> ##### libgtop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;In progress
+> ##### gnome-system-moitor&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;In progress
+
+
+
+------
+
+ Code Updates
+----
+
+1. May, 14, 2008
+2. May, 18, 2008
+3. May, 28, 2008
+4. June, 1, 2008
+5. June, 2, 2008
+6. June, 4, 2008
+7. June, 5, 2008 (3 commits, 00:30 HRS, 02:30 HRS, 11:15HRS, all in IST)
+8. June, 9, 2008
+9. June, 19, 2008 (Targets 1 and 2 successfully accomplished. Duration between the commits became inevitably longer because of the large amount of time spent on debugging the code.)
+
+------
+
+ Contact Details
+----
+
+Name : Madhusudan.C.S
+
+Email : [madhusudancs@gmail.com](mailto:madhusudancs@gmail.com)
+
+Blog : [http://www.madhusudancs.info](http://www.madhusudancs.info/)
+
+Detailed proposal: [http://www.madhusudancs.info/gnu-hurd-procfs-proposal](http://www.madhusudancs.info/gnu-hurd-procfs-proposal)
+
+Google Summer of Code Site Link: [Abstract](http://code.google.com/soc/2008/hurd/appinfo.html?csaid=D2E9266819D2EEF9)
+
+
diff --git a/user/pochu.mdwn b/user/pochu.mdwn
new file mode 100644
index 00000000..18e90de3
--- /dev/null
+++ b/user/pochu.mdwn
@@ -0,0 +1,136 @@
+[[!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]]."]]"""]]
+
+# Emilio Pozuelo Monfort
+
+Email: pochu27@gmail.com
+
+---
+
+# GSoC 2010: Hurd: Fix Compatibility Problems Exposed by Testsuites
+
+Mentor: Carl Fredrik Hammar
+
+## Abstract
+
+This project will consist of identifiying some projects' test suite
+failures when executed on GNU/Hurd, debugging them, and if they are
+truly GNU/Hurd issues (and not problems in the projects themselves),
+fixing them.
+
+## Timeline
+* July 18th: GLib finished.
+* July 22nd: coreutils finished.
+* July 25th: All Perl failures investigated.
+* August 5th: Perl finished.
+* August 8th: All Python failures investigated.
+* August 16th: Python finished.
+* August 16th: Firm 'pencils down' date
+
+## TODO
+* Investigate why coreutils' nice test fails.
+* Analyze Perl's testsuite failures.
+
+## Documentation
+* [Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG](http://www.gnu.org/software/hurd/hurd-paper.html)
+* [The Hurd, a presentation by Marcus Brinkmann](http://www.gnu.org/software/hurd/hurd-talk.html)
+* [The Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html)
+* [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps)
+
+## Log
+
+### July 26th - August 1st
+* Tested /dev/fd/N patches and sent them for review.
+* Finished SCM_RIGHTS patch. Created a minimal testcase without using
+ glibc to demonstrate the socket_send/recv failure with non-socket
+ fds. Sent the testcase and the patch for review.
+* Investigated cp issues with O_NOFOLLOW & O_NOTRANS. Sent a mail to
+ bug-hurd explaining both issues and possible solutions.
+
+### July 19th - July 25th
+* Initial SCM_RIGHTS implementation. Seems to work when sending pipes, but
+ fails miserably when sending fds from an open syscall. No idea why yet.
+* Fixed memleaks in sendmsg() while implementing SCM_RIGHTS. Patch accepted
+ upstream.
+* Had to build glibc thrice because the system crashed and the fs was totally
+ corrupted. I'll build stuff in a separate partition as suggested from now on.
+ Doesn't help. It turns out the issue seems to be with kvm, or at least it's
+ only reproducible for me there. I've switched to VirtualBox and there are no
+ filesystem issues there.
+* Addressed comments in the /dev/fd/N patches. Need to test them (when I can
+ build glibc and Hurd without the system crashing).
+
+### July 14th - July 18th
+* Catched up with email.
+* Prepared a patch to implement getsockopt(fd, SOL_SOCKET, SO_TYPE, ...).
+ Patch committed to Hurd.
+* Addressed comments in the /dev/fd/N patches and resent them.
+* Investigated another glib's unix-fd failure: passing fds over a socket using
+ sendmsg() doesn't dup them. Created a minimal testcase. Prepared a preliminary
+ patch, needs testing and fixing.
+
+### May 26 - July 13th
+* Copyright assignment on file.
+* Studied a lot to finish my BSc.
+* Got the linkat patch (Savannah #29655) committed upstream.
+
+### May 19 - May 26
+* Read [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps)
+* Worked on bug 28934. Send [patches](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00108.html) for review.
+* Requested GNU libc copyright papers to the FSF again since they didn't arrive the first time.
+
+### May 12 - May 19
+* Read http://www.gnu.org/software/hurd/hurd-talk.html
+* Half read http://www.gnu.org/software/hurd/hacking-guide/hhg.html
+* Read many Hurd interfaces (fs.defs, auth.defs, fsys.defs, io.defs,
+ password.defs).
+
+### May 5 - May 12
+* Read http://www.gnu.org/software/hurd/hurd-paper.html
+* Improved the linkat() patch
+* Fixed the issues mentioned in bug 28934, but after doing so I realized
+ that wouldn't work well. The only good solution is to pass file_name
+ from execve() to the exec server, so we need new RPCs.
+
+### April 28 - May 5
+* Submitted a talk proposal on Hurd with Michael Banck for DebConf
+* Sent request to assign copyright to the FSF for Hurd/Mach/libc
+
+### Before April 28
+* Investigated the glib's gtester problem and tracked it down:
+ [bug 28934](https://savannah.gnu.org/bugs/?28934). Prepared a patch
+ but it's not good.
+* [glib's garray test timeouts on Hurd](https://bugzilla.gnome.org/show_bug.cgi?id=568760).
+ The tests passes if the timeout is increased. The current upstream timeout
+ (10s) is quite small (it fails on many Debian builds for some Linux arches).
+ However on Hurd it needs a very big time it seems (like more than 100s).
+ Maybe do an allocation benchmarch?
+* Investigated glib's unix-fd test failure: getsockopt() isn't implemented
+ on Hurd. Need to implement it in hurd/pflocal/socket.c.
+* Investigated coreutils' ln EIEIO, with Samuel's help. linkat() is buggy.
+ Reported as [bug 29655](https://savannah.gnu.org/bugs/?29655). Prepared a
+ patch for it.
+* Investigated coreutils' cp EACCES. Test case: 'mkfifo a && cp -R --copy-contents a b'.
+ Problem is that O_NOFOLLOW adds O_NOTRANS.
+
+## Midterm Evaluation
+### Accomplished
+* Assigned copyright to the FSF.
+* Read many documentation and source code.
+* /dev/fd/N bug fixed
+* Prepared a patch for getsockopt()
+* Fixed linkat() problems.
+* Investigated bug with O_NOFOLLOW & O_NOTRANS (needs more work).
+* Investigated a glib test failure (garray). Not a Hurd issue.
+### Downtime
+* Studied a lot to finish my BSc. Didn't work on Hurd for a month because of
+ that, so that's why I couldn't make a lot of progress (this was known in
+ advance, although in the end the downtime was a bit larger than expected).
+* There's no expected downtime from now on.
diff --git a/user/samuelthibault.mdwn b/user/samuelthibault.mdwn
new file mode 100644
index 00000000..b0eab46d
--- /dev/null
+++ b/user/samuelthibault.mdwn
@@ -0,0 +1,3 @@
+* Name: Samuel Thibault
+* Email: <samuel.thibault@ens-lyon.org>
+* Country: France
diff --git a/user/scolobb.mdwn b/user/scolobb.mdwn
new file mode 100644
index 00000000..017936e5
--- /dev/null
+++ b/user/scolobb.mdwn
@@ -0,0 +1,364 @@
+[[!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]]."]]"""]]
+
+
+Sergiu Ivanov
+
+Mail: <mailto:unlimitedscolobb@gmail.com>
+
+# Current Activity
+
+I am currently busy finishing the university semester, this is why I
+am rather passive.
+
+## Roadmap
+
+* **Build `nsmux` under the Hurd tree** -- **antrik** has been urging
+ me to do this for a long time, so I definitely have to give it a
+ try.
+
+* **Try Thomas's `nsmux-notify` branch** -- To support his stance
+ against including `nsmux` in the Hurd source tree, Thomas added to
+ `nsmux` the ability to listen to port notification (as I understand
+ it). I have to try that, too.
+
+* **Make proxy nodes go away when the proxied translator goes away**
+ -- This should be done by listening to notifications on the ports to
+ the proxied translators. A similar functionality is already
+ implemented in `unionmount`, but it was decided that `nsmux` should
+ use standard notification interfaces, as opposed to the custom
+ demuxer and handler implemented in `unionmount`.
+
+* **Don't attach anonymous translators** -- There is no special point
+ in attaching anonymous (formerly known as dynamic) translators to
+ specific nodes. Keeping them orphan should simplify the design of
+ `nsmux` by eliminating the need for shadow nodes, whose main purpose
+ was to serve as virtual locations to attach translators to.
+
+* **Setup a list of nodes proxying static translators** -- This list
+ is needed when for the filter, which should also be able to go down
+ the static translator stack, not only the stack of anonymous
+ translators.
+
+* **Cleanup `nsmux`** -- When I was writing `nsmux` my acquaintance
+ with good coding and code formatting practices was very basic, which
+ resulted in messy and sometimes ugly code.
+
+* **Implement recursive propagation of translators down directories**
+ -- This task was planned long ago and is fascinating, but I won't be
+ working on it in the near future.
+
+---
+
+# Google Summer of Code: 2009 Project
+
+**Unionmount**: The goal of this project is to make it possible to set
+translators in unionmount mode, which means that the filesystem
+published by the mounted translator will get merged with the directory
+tree of the node the translator is mounted onto.
+
+For documentation, see [[hurd/translator/unionmount]].
+
+At the Final Evaluation, this project was given a passing evaluation
+by **antrik**. This means that the union-mount functionality is
+working and has been tested normally to collaborate with
+`eth-multiplexer`.
+
+---
+
+## Roadmap
+
+### DONE
+
+(Dates in brackets show the completion date)
+
+* **Make `unionfs` build.** *(24 May)* For reasons unknown to me,
+ `unionfs` Makefile was configured to search for include files from
+ under `$(prefix)/include`, while `$(prefix)` was never
+ defined. Setting `$(prefix)` to `/usr` solved the problem.
+
+* **Change the command line parsing in `unionfs` to comply with the
+ requirements of `unionmount`.** *(25 May)* Although the core
+ functionality of `unionmount` heavily relies on `unionfs`, the
+ command line interface of these two programs is completely
+ different: `unionfs` operates on directories, the list of which is
+ explicitly specified, while `unionmount` *always* merges the
+ underlying filesystem and the filesystem published by the
+ mountee. Therefore, options like `--add`, `--remove`, `--underlying`
+ (specific to `unionfs`) make little sense in `unionmount`
+ context. These options have been removed. Also, `unionmount` must be
+ able to pass some switches to the mountee, which means that it
+ should stop parsing the command line arguments immediately after
+ having encountered the path to the mountee (very similar to how
+ `settrans` works). This functionality has also been implemented.
+
+* **Make `unionmount` capable of starting the mountee.** *(28 May)*
+ The idea behind implementation of this goal is that `unionmount`
+ should provide a proxy node on which to set the mountee. The main
+ issue about this goal was the fact that the mountee *cannot* be
+ started during the initialization of `unionmount`, because in this
+ phase `unionmount` is not capable of responding to RPCs, while many
+ translators try to `io_stat` their underlying node or do other
+ interesting things on startup. The solution to this problem is,
+ obviously, *lazy* startup, i.e. the mountee is started at the first
+ attempt to access (via `dir_lookup` or `dir_readdir`) the merged
+ filesystem published by `unionmount`.
+
+* **Include the filesystem published by the mountee in the list of
+ merged filesystems.** *(1 Jun)* `unionfs` operates on a list of
+ ports to the underlying filesystems, therefore, to finish the
+ unionmount functionality, I had to include the port to the mountee
+ in this list.
+
+* **Learn Texinfo.** *(Jun 4)* In order to produce canonical
+ documentation I had to learn the Texinfo documentation format.
+
+* **Write documentation for `unionmount`.** *(Jun 5)* The basic
+ unionmount functionality being finished, it has to be documented
+ properly, lest it should lag behind and remain unfinished
+ eventually.
+
+* **Write documentation for `unionfs`.** *(Jun 5)* `unionfs` is not
+ exactly well-documented at the moment, the only help being provided
+ by the comments in the sources. The goal is to write a more coherent
+ documentation.
+
+* **Start with a clean unionfs and implement the `--mount` argument**
+ *(11 Jun)* It was suggested to implement the union mount
+ functionality first, instead of doing some partial adaptation of
+ `unionfs` to `unionmount` and leaving the complete adaptation for
+ the future.
+
+* **Compile GNU/Hurd from source to be able to study
+ eth-multiplexer.** *(16 Jun)* On my way to getting a working
+ instance of eth-multiplexer I learnt how I could compile GNU/Hurd in
+ a Debian GNU/Hurd system.
+
+* **Setup the `devnode`--`eth-multiplexer`--`pfinet chain`.** *(30
+ Jun)* Due to the fact that I was trying to build everything using
+ `gcc-4.3`, I got strange behaviour of pfinet and spend a week trying
+ to figure out the reason.
+
+* **Try to start the mountee during initialization of `unionfs`** *(4
+ Jul)* Initially the mountee was started at the first lookup. Now it
+ is started immediately after initialization of `unionmount`.
+
+* **Fix the patches in `--mount` option series** *(5 Jul)* The patches
+ have been reviewed by **antrik**. I corrected them and posted them
+ to the ML for final reviews.
+
+* **Orphan the mountee after starting it** *(7 Jul)* Orphaning the
+ mountee after starting it up seems to be a nice work-around for the
+ necessity of keeping a proxy node in unionmount in simple
+ use-cases. It is possible that this functionality will provided as a
+ separate patch (without inclusion in master) should it turn out that
+ orphaning the mountee is a bad idea.
+
+* **Decide which RPCs should be forwarded to the mountee and how this
+ should happen** *(10 Jul)* This is the primary requirement in being
+ able to proxy the control port of `unionmount`.
+
+* **Fix the patches the have already been commented on** *(14 Jul)*
+ The new patches I have submitted have been reviewed; also, the older
+ patches have been reviewed again, which required correcting them.
+
+* **Add the `--no-mount` option** *(14 Jul)* Using the `--no-mount`
+ and `--mount` options, the user can decide whether unionmount should
+ be completely transparent (i.e. most control-port RPCs forwarded to
+ the mountee) or not.
+
+* **Make `unionmount` go away when the mountee goes away** *(14 Jul)*
+ `unionmount` makes sense only while the mountee is running, so it
+ has to go away as soon as the mountee has been shut down for some
+ reason.
+
+* **Proxy the control port of `unionmount`** *(14 Jul)* For
+ `unionmount` to become transparent, most of the RPCs invoked on the
+ its control port should be forwarded to the mountee.
+
+* **Fix adding filesystems to `unionmount`** *(16 Jul)* `settrans -a
+ foo unionfs -a <dir> -u -t <translator>` worked, but `settrans -a
+ foo unionfs -u -t <translator> -a <dir>` didn't. The problem was
+ that in a series of rebase operations I accidentally left the
+ "Orphan the mountee" commit out and the problem appeared when the
+ `start_mountee` function tried to attach the mountee. Of course,
+ this is not the definite solution, since I don't know why should the
+ attempt to attach the mountee work in the former case and fail in
+ the latter, but I will leave the investigation for some future time.
+
+* **Create the patch for supplying the mountee with a port to the
+ underlying node of unionfs** *(17 Jul)* Such functionality makes
+ `unionmount` even more transparent.
+
+* **Try to make `eth-multiplexer` work with static instances of
+ `devnode`** *(3 Aug)* A static `devnode` translator is a `devnode`
+ translator which is told to use the eth-multiplexer's pseudo master
+ device port via the "-M" option. Technically it looks like
+ `settrans -a <node> devnode -M <dir> <device-name>`, where `<dir>`
+ is the node on which eth-multiplexer is running.
+
+ The problem was in the fact that the root node of `eth-multiplexer`
+ was not treated completely similarly as other nodes; specifically no
+ device port was created for it. Minor modifications to some
+ conditions solved the problem.
+
+* **Add the `MASTER` node to `eth-multiplexer`** *(5 Aug)* The
+ `MASTER` node, published by eth-multiplexer, allows creating any
+ number of virtual devices. This node is mainly accessed by static
+ instances of `devnode` to setup their corresponding virtual devices.
+
+* **Add support for priorities** *(6 Aug)* Now the mountee's
+ filesystem can be configured to "lie" beneath other filesystems.
+
+* **Use `unionmount` to merge the virtual filesystem of
+ `eth-multiplexer` with its underlying filesystem** *(7 Aug)*
+ `eth-multiplexer` can is unionmounted to "lie beneath" it's
+ underlying filesystem. If, for example, the multiplexer is
+ unionmounted on `veth/`, the user can both set (static) `devnode`
+ translator on the nodes shown in `veth/` and belonging to the
+ underlying filesystem and create normal virtual multiplexer devices
+ by accessing any node (not present in the underlying filesystem) and
+ opening a device using the port to the node as a pseudo device port.
+
+* **Rename the `MASTER` node into `.MASTER`** (7 Aug) This name seems
+ more natural for a special-purpose node.
+
+* **Set the stat information for `eth-multiplexer` nodes in
+ `netfs_validate_stat`** (9 Aug) In the initial version the stat
+ information was set up properly only at device creation. Before
+ that the stat information was copied from the underlying node, which
+ baffled `unionmount`. Now the stat information is setup in
+ `netfs_validate_stat`.
+
+* **Supply the mountee with the real root.** *(14 Aug)* Since the
+ mountee is *not attached* to its underlying node, it is okay to
+ supply it with the real root node of `unionfs`. The mountee's
+ filesystem will not obscure the `unionfs`'s one because the mountee
+ is *not attached* to the root node.
+
+---
+
+# Google Summer of Code: 2008 Project: Namespace-based translator selection
+
+---
+
+## Current Task
+
+Write the filesystem proxy for namespace-based translator selection (*nsmux*).
+
+The code is at <http://github.com/scolobb/nsmux/tree/master>.
+
+---
+
+###Did this week
+
+* Modified the node cache so that it maintains shadow nodes alive.
+
+###Plans for the next week
+
+* Implement the shutting down of translator stacks when *nsmux* is asked to go away (in case **antrik** considers that necessary).
+
+* Make *nsmux* provide the access to the translator stack of the real node, in case a translator (mainly, a filter) should ask for its underlying node to be opened in O_NOTRANS mode.
+
+---
+
+###Current Status
+
+####DONE:
+
+* The skeleton which mirrors the filesystem.
+
+* Provide proxy nodes (modify the standard version of netfs_S_dir_lookup).
+
+####TODO:
+
+* Create the generic filtering translator.
+
+* Create the translator '0' (providing the untranslated version of the
+ node).
+
+* Create the "recursive wrappers" for one-node translators.
+
+* Create special translators for the main proxy so that its functionality
+ should be complete.
+
+* Implement sharing of dynamic translator stacks where possible.
+
+* Make dynamic translators go away as soon as they are not required.
+
+* Refine the skeleton in several places so that it should become faster
+ and more reliable.
+
+* Kill bugs.
+
+* Integrate nsmux upstream.
+
+* Solve the libtrivfs stacking issue.
+
+* Patch libnetfs (it does not support file_get_translator_cntl, for
+ instance).
+
+---
+
+###Progress
+
+####8: Fri Sep 19:
+
+> Modified the ncache so that it now maintains shadow nodes (and directory nodes too, it is a side effect at the moment) alive.
+
+####7: Sat Aug 30 - Fri Sep 5:
+
+> Added the code for shutting down dynamic translator stacks.
+
+####6: Mon Aug 4 - Fri Aug 29:
+
+> Implemented the proxy nodes.
+
+####5: Thu Jul 24 - Thu Jul 24:
+
+> Created a *libnetfs*-based one-node translator, working exactly like the *libtrivfs*-based translator I had written before; the former, however, can be included in a translator stack.
+
+####4: Tue Jul 22 - Thu Jul 24:
+
+> Attempted to make a *libtrivfs*-based translator to be able to be stacked upon itself (to be able to receive a translator on top of itself, more exactly); attempted to borrow some code from *libnetfs* but this didn't bring any results.
+
+####3: Sun Jul 20 - Tue Jul 22:
+
+> Implemented the possibility to propagate a translator on all files belonging to a directory 'dir' in the request of the type 'dir,,x/'.
+
+####2: Thu Jul 17 - Fri Jul 18:
+
+> Extended the lookup code in *nsmux* to allow for looking up nodes like 'file,,x' and added the possibility to escape the double-comma in the following way: ',,,'.
+
+####1: Mon Jul 12 - Tue Jul 13:
+
+> Implemented a simple *libtrivfs*-based translator to test the lookup code for *nsmux*.
+
+####0: Sat Jul 12 - Sat Jul 12:
+
+> Made small changes to the code of *filterfs* to fit the needs of *nsmux*.
+
+---
+
+## Completed Tasks
+
+####2: Sat May 3 - Fri Jul 17:
+
+> Write a translator that should filter the contents of the directory it is set on according to some property. The property can be an arbitrary command.
+
+> The code is at <http://github.com/scolobb/filterfs/tree/master>.
+
+####1: Mon Apr 28 - Wed Apr 30:
+
+> Wrote a Python extension module in C for retreiving the uptime. The module is based on the code of *w*.
+
+####0: Sun Apr 27:
+
+> Followed the code of *dmesgd* (<http://www.bddebian.com/junk/dmesgd/>) kindly offered by **bddebian** and rewrote it from scratch as a tutorial.
diff --git a/user/stesie.mdwn b/user/stesie.mdwn
new file mode 100644
index 00000000..7bed0ed5
--- /dev/null
+++ b/user/stesie.mdwn
@@ -0,0 +1,4 @@
+* Name: Stefan Siegl
+* Email: <stesie@brokenpipe.de>
+* Country: Germany
+* Homepage: <http://www.brokenpipe.de/> \ No newline at end of file
diff --git a/user/tschwinge.mdwn b/user/tschwinge.mdwn
new file mode 100644
index 00000000..2c75292b
--- /dev/null
+++ b/user/tschwinge.mdwn
@@ -0,0 +1,17 @@
+[[!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="Thomas Schwinge"]]
+
+<tschwinge@gnu.org>
+
+Germany
+
+<http://www.thomas.schwinge.homeip.net/>
diff --git a/user/vincentvikram.mdwn b/user/vincentvikram.mdwn
new file mode 100644
index 00000000..875b6311
--- /dev/null
+++ b/user/vincentvikram.mdwn
@@ -0,0 +1,14 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+* Name: Vikram Vincent
+* Email: vincentvikram@swatantra.org OR vincentvikram@gmail.com
+* Country: India
+* Web resource: <http://www.swatantra.org>
diff --git a/user/zhengda.mdwn b/user/zhengda.mdwn
new file mode 100644
index 00000000..0c3b26bb
--- /dev/null
+++ b/user/zhengda.mdwn
@@ -0,0 +1,132 @@
+# Zheng Da
+
+Email: zhengda1936 at gmail dot com
+
+---
+
+#Project: Porting DDE to Hurd.
+
+##The goal:
+porting DDE developed by DROPS to the Hurd, and it will still run in the user space.
+
+##Introduction
+The introduction of DDE/DDEKit can be found in [here](http://wiki.tudos.org/DDE/DDEKit) and more information can be found [here](http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html). DDE/DDEKit is a library, and it should be compiled with the code of Linux or FreeBSD drivers. DDE Linux26 is still under development and it can now support network and block devices (but doesn't support SCSI).
+
+##The current status
+Currently a few NIC cards work now. I tested pcnet32, e100, e1000, ne2k-pci and rtl8139 in VMWare and Qemu. But the DDE e100 driver cannot work for some e100 cards as currently DDE doesn't support firmware. Someone also reported sis900 cannot work, unfortunately, I cannot test it myself. I appreciate if someone can try some other NIC drivers and give me some feedbback. Please run DDE with GNUMach in the [master-user_level_drivers](http://git.savannah.gnu.org/cgit/hurd/gnumach.git/) branch.
+
+## My work
+I separate DDE Linux26 to 2 parts: libddekit and libdde_linux26. I also provide a library called libmachdev on the top of the Linux code to provide the Mach device interface, so it is easy for the user to compile a Linux driver and run it in the Hurd. The latest code can be found in the dde branch of the incubator repository.
+
+There is a minor problem when we compile a Linux driver. Linux drivers use jiffies to measure time. Unfortunately, Mach doesn't provide it, so whenever we need it, we need to calculate it by ourselves. I decide to provide a macro to calculate it for the sake of performance and the cost is that the source code of Linux drivers has to include ddekit/timer.h.
+
+## Build and run DDE drivers
+
+To build a Linux driver with DDE Linux, we need libddekit, libdde_linux26, libmachdev and libhurd-slab. libddekit and libmachdev use the same Makefile system as other Hurd components but libdde_linux26 does not, so we have to build libdde_linux26 in its source file directory. DDE drivers use the same makefile system as libdde_linux26 and thus we need to build them in their source file directories as well.
+
+The repository has all DDE drivers I have tested, but in case you want to try other drivers, the easiest way is to use dde_pcnet32 as a template. The directory of dde_pcnet32 has Makefile, Makeconf.local, default.ld, pcnet32.c and main.c. If we need to build a new driver file, we only need to replace pcnet32.c with the new file and change Makefile accordingly. You also need to change DDEKITLIBDIR, DDEKITINCDIR, DDE26LIBDIR and OBJ_BASE in Makeconf.local to indicate the path to ddekit and dde_linux26.
+
+When all parts are ready, we can start to build DDE drivers now. In case someone hasn't installed libpciaccess, please install it first. We first build libddekit, libdde-slab, then libdde_linux26, then libmachdev and at last the DDE driver. It's better to install libddekit, libdde-slab and libmachdev to the system, so libdde_linux26 and the DDE driver find the library files and header files.
+
+To run a DDE NIC driver: It is better to disable the corresponding kernel drivers in GNU Mach. For example, if we use the pcnet card, we'd better disable lance and pcnet32 drivers in gnumach. DDE requires the pfinet with modification during my GSoC project in 2008 and that pfinet requires libpcap-dev (this pfinet is also in the dde branch).
+
+settrans -acfg pcnet32 hurd/dde_pcnet32/dde_pcnet32
+
+settrans -acfg /dev/eth0 hurd/devnode/devnode eth0 -M pcnet32
+
+settrans -acfg /servers/socket/2 hurd/pfinet/pfinet -i /dev/eth0 -a 172.16.172.10 -g 172.16.172.2 -m 255.255.255.0
+
+---
+
+#Project: Network virtualization for subhurds etc.
+
+The [code](http://www.assembla.com/spaces/VNetHurd/trac_subversion_tool). The [[howto]] shows the instructions of setting up the virtual network in hurd and subhurd.
+
+
+## The design and the implementation
+
+### The requirements:
+* to implement a mechanism which help pfinet servers communicate with each other. For example, if pfinet 1 has IP A and pfinet 2 has IP B, the packet sent by pfinet 1 with destination address IP B should be received by pfinet 2.
+* Sub-hurd should be able to use this mechanism to communicate with each other.
+* Meanwhile this mechanism should allow non-privileged the user to start his own pfinet.
+
+
+### The possible approach is to use the multiplexer and the filter.
+The multiplexer's roles are:
+
+1. to create some virtual network interface, so pfinet can send packets to it.
+2. to receive the packet from pfinet, and forward the packet to other pfinets in hurd
+3. or forward the packet to the real network device in the kernel and send it to the network.
+
+A filter translator is needed to enforce the policies between the interface and the pfinet server. For example, the filter can control which packets can be delivered to the pfinet server, and which packets can be sent to the network interface. The filter can also guard the network traffic and drop illegal packets (forged by some malicious users) from pfinet or some other programs.
+
+
+### To create a virtual network interface:
+* Implement the RPC interface defined in device.defs.
+* The multiplexer works as a translator and other programs can get the port to it by calling file_name_port().
+* Other programs can use this port as a master device port to open the virtual interface.
+
+
+### The routing inside the multiplexer:
+* when the multiplexer gets a packet, it forwards it to every interface.
+* BPF is ported to the multiplexer. BPF delivers the packet to the right pfinet (according to the filter set by the pfinet) just as the BPF in Mach does.
+* All packets are forwarded to the interface which the multiplexer sits on.
+
+
+### The implementation of the filter translator:
+* The filter works as a proxy, forwarding the packet between the interface and the pfinet server.
+* BPF is also ported to the filter translator. There are two filers in the translator, one for outgoing packets, the other for incoming packets.
+* Only one pfinet can connect to the translator at a time.
+
+## TODO
+### Coding
+
+ - merge BPF rules from the filter translator and the multiplexer
+
+## Completed tasks
+
+### Coding
+
+The patch of glibc (pfinet server overriding) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc).
+
+The patch of pfinet (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aWqYwYATKr3BBOab7jnrAJ/download/patch%20of%20pfinet%201%20(to%20use%20the%20virtual%20interface)).
+
+The patch of pfinet (fix pfinet to use the proper filter rule) is [here](http://www.assembla.com/spaces/VNetHurd/documents/besb-qATKr3AIxab7jnrAJ/download/patch%20of%20pfinet%202%20(to%20add%20an%20IP%20filter)).
+
+The patch of pfinet (set the mach device in the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/bEovN6ATKr3B8uab7jnrAJ/download/patch%20of%20pfinet%203%20(to%20set%20the%20mach%20device%20into%20the%20promiscuous%20mode)).
+
+The patch of boot (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/cWkeEixHar3AdKab7jnrAJ/download/A%20patch%20of%20boot).
+
+The patch of gnumach (set the network device into the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach).
+
+the multiplexer:
+
+- Create multiple virtual network interfaces.
+- Port BPF to the multiplexer.
+- Finish the routing among the pfinet servers.
+
+the filter translator:
+
+- Forward the packet between the interface and the pfinet server.
+- Filter the packet.
+
+the proxy of the proc server:
+
+- Forward all requests from the process to its proc server.
+- The proxy doesn't do any real work except returning the host private port and the master device port of the proxy (shown as an example).
+
+the devnode translator:
+
+- Create a device file to help open the network device.
+
+### Documentation Read
+
+
+- [A Programmer's Guide to the Mach System Calls](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machsys.doc)
+- [Meet Mach](http://www.stepwise.com/Articles/Technical/MeetMach.html) by James Scott
+- [A Programmer's Guide to the Mach User Environment](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.doc), the MIG part
+- Part of The GNU Mach Reference Manual and The GNU Hurd Reference Manual
+- The Hurd, a presentation by Marcus Brinkmann
+- Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG.
+- GNU/Hurd User's Guide
+- The Hurd Hacking Guide
diff --git a/user/zhengda/howto.mdwn b/user/zhengda/howto.mdwn
new file mode 100644
index 00000000..1258ffed
--- /dev/null
+++ b/user/zhengda/howto.mdwn
@@ -0,0 +1,90 @@
+[[!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]]."]]"""]]
+
+
+This document briefly introduces how to set up the virtual network and connect the subhurd with the main hurd.
+
+
+### 1. Set up the virtual network.
+
+####1.1 Patch and install GNU Hurd, GNU Mach and the GNU C library.
+
+Step 1: Get the Hurd and compile it.
+
+ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r zhengda-soc2008-virt-branch hurd
+
+
+Step 2: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach) on the GNU Mach.
+
+In order to connect the virtual network created in hurd with the external network, we need this patch. It enables the Hurd to set the Mach device into the promiscuous mode, so the real device can accept the packet that goes to the virtual device in hurd.
+(This step is optional if we are only interested in creating a internal virtual network.)
+
+Step 3: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc) on glibc.
+
+This patch enables the user to override the default socket server by using the environment variables SOCK_SERV_DIR or SOCK_SERV_%d (%d is the domain of the socket server).
+
+
+#### 1.2 Set up the Hurd components to build the virtual network.
+
+In this section, I show how to create two virtual interfaces and run three pfinet servers. I assume that the source code of Hurd is in /root/hurd.
+
+Step 4: create the network device file in /dev with devnode.
+The network device file is used to help other translators open the device.
+
+ # settrans -acfg /dev/eth0 /root/hurd/devnode/devnode eth0
+
+Step 5: create the virtual network device with eth-multiplexer.
+
+eth-multiplexer is responsible to create the virtual network device and dispatch the packet to the right clients that connect to the virtual device. It also connects the virtual network and the external network. Eth-multiplexer of the current version is a netfs translator and can create virtual devices and the device files dynamically, according to the request from the client.
+
+ # settrans -acfg /root/multiplexer /root/hurd/eth-multiplexer/eth-multiplexer -i /dev/eth0
+
+Step 6: setup the filter translator eth-filter on the network device. This step is optional.
+
+eth-filter is used by the user to force the traffic policy on the network device.
+
+ # settrans -acfg /dev/fveth0 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth0 -S 192.168.8.0/24 -R 192.168.8.0/24
+ # settrans -acfg /dev/fveth1 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth1 -S 192.168.8.0/24 -R 192.168.8.0/24
+
+Step 7: setup the pfinet server on the virtual network device.
+
+ # settrans -afgc /root/socket0/2 /root/hurd/pfinet/pfinet -i /dev/fveth0 -a 192.168.8.10 -g 192.168.8.1 -m 255.255.255.0
+ # settrans -afgc /root/socket1/2 /root/hurd/pfinet/pfinet -i /dev/fveth1 -a 192.168.8.11 -g 192.168.8.1 -m 255.255.255.0
+
+
+#### 1.3 Run the command with the customized pfinet server.
+
+Step 8: Set environment variables to use the customized pfinet server.
+
+The environment variable of SOCK_SERV_DIR is used to override all socket servers and SOCK_SERV_%d to override a specific socket server. %d after SOCK_SERV_ is the domain of the protocol that the socket server supports. The environment variable SOCK_SERV_%d has the higher priority than SOCK_SERV_DIR.
+
+ # export SOCK_SERV_2=/root/socket1/2
+
+If the modified glibc isn't installed as the system default C library, set LD_LIBRARY_PATH environment.
+
+ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/of/glibc
+
+We can run any command now, for example, ping.
+
+A SHELL script is provided to run all translators I mentioned automatically: http://www.assembla.com/spaces/VNetHurd/documents/c2W71ABser3AIxab7jnrAJ/download/runmultiplexer. To use this script, the user must specify the source of the hurd tree (the default value is /root/hurd) and the path of the servers (the default value is /root) where they should be created. This script is only used to test all translators I mentioned above and shows all steps to set up the virtual network.
+
+
+### 2. Connect the subhurd with the main hurd.
+
+In the main hurd, we still need to do Step 1-8.
+We run subhurd,
+
+ # /root/hurd/boot/boot -m eth0=/dev/fveth0 -m eth1=/dev/fveth1 servers.boot /dev/hd1s1
+
+In the subhurd, we do Step 1, 4, 8.
+Step 4: # settrans -acfg /dev/veth0 /root/hurd/devnode/devnode -d veth0
+Step 7: # settrans -afgc /servers/socket/2 /root/hurd/pfinet/pfinet -i /dev/veth0 -a 192.168.8.20 -g 192.168.8.1 -m 255.255.255.0
+
+Now we can communicate from the subhurd with any pfinet server of the main Hurd that runs in the virtual network.
diff --git a/virtualization.mdwn b/virtualization.mdwn
new file mode 100644
index 00000000..52131c12
--- /dev/null
+++ b/virtualization.mdwn
@@ -0,0 +1,18 @@
+[[!meta copyright="Copyright © 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]]."]]"""]]
+
+# External
+
+ * Wikipedia page about [[!wikipedia Virtualization]].
+
+
+# See Also
+
+ * [[Emulation]].