diff options
28 files changed, 429 insertions, 206 deletions
diff --git a/advantages.mdwn b/advantages.mdwn index cb77fd1a..94e64c33 100644 --- a/advantages.mdwn +++ b/advantages.mdwn @@ -11,8 +11,7 @@ License|/fdl]]."]]"""]] [[!tag stable_URL]] -The GNU Hurd has a number of enticing features: -It is a free software and anybody can do changes to it for learning purposes. +The GNU Hurd has a number of enticing features: It's free software, so anybody can use, modify, and redistribute it under the terms of the [[GNU General Public License (GPL)|GPL]]. diff --git a/community/gsoc.mdwn b/community/gsoc.mdwn index 5a373014..8bba2ae9 100644 --- a/community/gsoc.mdwn +++ b/community/gsoc.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free +[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -12,18 +12,17 @@ License|/fdl]]."]]"""]] [[!meta title="Google Summer of Code"]] <!-- -The Google Summer of Code 2013 is over. Chances are that we will again be -participating in 2014, stay tuned. +The Google Summer of Code 2014 is over. Chances are that we will again be +participating in 2015, stay tuned. --> We're in! The GNU Hurd project is again participating in the [Google Summer of Code](http://www.google-melange.com/) under the [GNU umbrella](http://www.gnu.org/software/soc-projects/). -Per the [Google Summer of Code 2014 Program -Timeline](http://www.google-melange.com/gsoc/events/google/gsoc2014), on -Monday, from 2014-03-10 to 2014-03-21, it's the *student application period*, -which +Per the [Google Summer of Code 2015 Program +Timeline](http://www.google-melange.com/gsoc/events/google/gsoc2015), +from 2015-03-16 to 2015-03-27, it's the *student application period*, which is plenty of time for preparing and discussing your applications -- but please don't wait to the last minute! @@ -74,6 +73,7 @@ discussing with our GNU peers about how to split these up among all the GNU subprojects. --> + # Possible projects We have a list of [[project_ideas]], and students are likewise encouraged to @@ -99,6 +99,7 @@ with Hurd development, even outside of the GSoC context. Please don't hesitate to contact us regarding mentoring even if it's not GSoC time at the moment, or if you aren't a student anyway. + # History In 2006 and [[2007]], we participated in GSoC under the umbrella of the GNU @@ -107,4 +108,4 @@ participated on our own, instead of as a suborganization of the GNU project. Read about our five students' success on the [[2008]] page. In the next years, we again participated under the GNU umbrella with one slot in [[2009]], three in [[2010]], one in [[2011]], two in [[2012]], three in [[2013]] (one GNU, one -GCC, one Debian). +GCC, one Debian), one in [[2014]]. diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index 262ead82..643a4240 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free -Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -97,7 +97,8 @@ All project ideas inlined: project_ideas: - "community/gsoc/project_ideas/language_bindings + "community/gsoc/project_ideas/physical_memory_management + community/gsoc/project_ideas/language_bindings community/gsoc/project_ideas/virtualization community/gsoc/project_ideas/file_locking community/gsoc/project_ideas/gdb @@ -105,7 +106,6 @@ project_ideas: community/gsoc/project_ideas/nfs community/gsoc/project_ideas/sound community/gsoc/project_ideas/disk_io_performance - community/gsoc/project_ideas/vm_tuning community/gsoc/project_ideas/gnumach_cleanup community/gsoc/project_ideas/xmlfs community/gsoc/project_ideas/unionfs_boot diff --git a/community/gsoc/project_ideas/physical_memory_management.mdwn b/community/gsoc/project_ideas/physical_memory_management.mdwn new file mode 100644 index 00000000..2baa7a90 --- /dev/null +++ b/community/gsoc/project_ideas/physical_memory_management.mdwn @@ -0,0 +1,51 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-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="Physical memory management"]] + +GNU Mach is currently suffering from severe limitations caused by the way +it manages physical memory. For example, since it requires pages to be mapped +in kernel space in order to be used, the maximum amount of usable physical +memory is currently around 800MB (or 1.8GB if a 2/2 split is set). And +because the page allocator is unable to easily return blocks of contiguous +pages, the kernel has to use virtual memory to provide contiguity. +But the kernel virtual space is separate from the direct mapping of +physical memory, so the larger it is, the less physical pages available. +The size of the kernel space is currently around 200MB, with around 100MB +for kernel objects. This small size prevents the system from achieving +scalability, since a panic occurs when the kernel is unable to allocate +a kernel object such as a port. In addition, the kernel uses mainly tables +to store IPC rights. When a table is full, it is enlarged through a kernel +specific version of realloc(). When a file system starts managing many +files (e.g. because some of their content is cached in physical memory), +these tables can get big enough to make realloc() fail because of +fragmentation. + +The goal of this project is to make as much physical memory available as +possible for both the kernel and applications, by rewriting the page +allocator into a buddy allocator to support contiguous block allocations, +using it directly instead of virtual memory as the backend of the slab +allocator for kernel objects, and, if time allows it, transform IPC right +tables (e.g. into radix trees) and get rid of realloc(). + +This project requires a good understanding of virtual memory (both physical +mappings at the MMU level and virtual mappings at the VM level), and strong +skills in C programming. Note that some work has already been done in the +X15 project about this, and can be reused as a reference. + +Useful links : + + * <https://www.sceen.net/mapping-physical-memory-directly/> + + * <http://git.sceen.net/rbraun/x15.git/> + + * <http://git.sceen.net/rbraun/librbraun.git/blob/HEAD:/rdxtree.h> + +Possible mentors: Richard Braun diff --git a/community/meetings/fosdem_2010.mdwn b/community/meetings/fosdem_2010.mdwn index e42ff1fd..0ef53979 100644 --- a/community/meetings/fosdem_2010.mdwn +++ b/community/meetings/fosdem_2010.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010 Free Software +[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable diff --git a/community/meetings/fosdem_2013.mdwn b/community/meetings/fosdem_2013.mdwn index 4fafc895..5cbae067 100644 --- a/community/meetings/fosdem_2013.mdwn +++ b/community/meetings/fosdem_2013.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2012, 2013, 2014 Free Software Foundation, +[[!meta copyright="Copyright © 2012, 2013, 2014, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable diff --git a/community/meetings/fosdem_2014.mdwn b/community/meetings/fosdem_2014.mdwn index c5a7d5ba..b68a907d 100644 --- a/community/meetings/fosdem_2014.mdwn +++ b/community/meetings/fosdem_2014.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2012, 2013, 2014 Free Software Foundation, +[[!meta copyright="Copyright © 2012, 2013, 2014, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable diff --git a/contributing.mdwn b/contributing.mdwn index baa182fb..67b84590 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -99,9 +99,6 @@ which exposes the partitions of the disk image, using parted, and the parted-based storeio (`settrans -c foos1 /hurd/storeio -T typed part:1:file:/home/samy/tmp/foo`). This would be libnetfs-based. * Write [[virtio drivers for KVM|open_issues/virtio#KVM]]. -* Port valgrind. There is a whole -[[GSoC proposal|community/gsoc/project_ideas/valgrind]] about this, but the -basic port could be small. * Move the [[mount/umount|open_issues/glibc#mount]] logic from `utils/{,u}mount.c` into [[glibc]]. * Fix [[`/proc/self`|hurd/translator/procfs/jkoenig/discussion#self]]. @@ -110,6 +107,7 @@ lookups|hurd/interface/dir_lookup]] work. * Add a tool to trace system calls, by using gnumach's Syscall-Emulation, see <http://www.gnu.org/software/hurd/gnumach-doc/Syscall-Emulation.html> * Improve our [[FUSE library|hurd/libfuse]]. * Add a relatime or lazytime option to ext2fs. +* Fix our [[open_issues/symlink_translator]]. <a name="porting"></a> ## Porting Packages diff --git a/documentation.mdwn b/documentation.mdwn index 7f652e70..f2c30737 100644 --- a/documentation.mdwn +++ b/documentation.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2008, 2010, 2011 Free Software Foundation, +[[!meta copyright="Copyright © 2008, 2010, 2011, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -52,6 +52,11 @@ text="*[[shapiro\_capintro\_1999|capability]]*: system architecture. +# Quick overview + +You may want to start reading a [[quick overview|overview]] of how the GNU/Hurd system +starts, and thus how it is structured. + # FAQ [[FAQ]] @@ -59,7 +64,14 @@ text="*[[shapiro\_capintro\_1999|capability]]*: # Specific Components -Documentation for... +The GNU/Hurd system is composed of the Hurd servers running on top of the +GNU Mach microkernel. Mach only handles scheduling tasks and threads, memory +management, and message passing. Mig is used to abstract RPCs on top of Mach's +message passing. Eventually, the Hurd servers and Unix processes discuss with +each other using these RPCs. + +Depending on your background, you may want to start reading the documentation +from userlandish interfaces (Hurd) or from the micro kernel itself (Mach). * [[GNU_Hurd|hurd/documentation]] diff --git a/faq/drivers.mdwn b/faq/drivers.mdwn index 57ed7ea9..50bd4542 100644 --- a/faq/drivers.mdwn +++ b/faq/drivers.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2009, 2013 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2009, 2013, 2015 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -10,18 +11,18 @@ License|/fdl]]."]]"""]] [[!tag faq/support faq/_important]] -[[!meta title="What drivers does GNU/Hurd have?"]] +[[!meta title="what hardware is supported? What drivers does GNU/Hurd have?"]] + +Currently, for disks Mach integrates old drivers from Linux through some +[[community/gsoc/project_ideas/driver_glue_code]], which provide +IDE disk support, and we have an AHCI driver which provides [[SATA +support|faq/sata_disk_drives]]. For network boards, we use the [[DDE]] toolkit +to run linux 2.6.32 drivers in userland processes, which provides both long-term +support for new hardware and safety against driver bugs. Note however that we +have of course not tested all drivers, we obviously don't even have all kinds of +hardware. So we can not promise that they will all work. What probably +works for sure is what we usually use: the rtl8139 and e1000 drivers for +instance. Firmware loading is not implemented yet. -Currently, for disks Mach integrates drivers from Linux 2.0 through some -[[community/gsoc/project_ideas/driver_glue_code]]. As it's very old, that -limits hardware support a lot, of course. For network boards, we use the -[[DDE]] toolkit to run linux 2.6.32 drivers in userland processes, -which provides both long-term support for new hardware and safety against driver -bugs. Firmware loading is however not implemented yet. [[microkernel/mach/gnumach/ports/Xen]] is also supported, both blkfront and netfront. - -Note however that we have of course not tested all drivers, we obviously don't -even have all kinds of hardware. So we can not promise that they will all -work. What probably works for sure is what we usually use: the rtl8139 or e1000 -drivers for instance. diff --git a/faq/libpthread_dlopen.mdwn b/faq/libpthread_dlopen.mdwn index 94d091a4..3b365fad 100644 --- a/faq/libpthread_dlopen.mdwn +++ b/faq/libpthread_dlopen.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2013, 2014 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2013, 2014, 2015 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -14,12 +15,13 @@ License|/fdl]]."]]"""]] Some applications don't themselves link against libpthread, but then load plugins which do link against libpthread. This means internally switching from -single-threading to multi-threading, which is [[not yet -supported|open_issues/libpthread_dlopen]] by our [[/libpthread]], and results -in errors such as: +single-threading to multi-threading, which is only supported since libc0.3 +2.19-16~2. Previously, it would result in errors such as: ./pthread/../sysdeps/generic/pt-mutex-timedlock.c:70: __pthread_mutex_timedlock_internal: Assertion `__pthread_threads' failed. -This can be worked around by making the application link against libpthread (i.e. not only the plugin, but also the main binary), or without recompiling by explicitly pre-loading libpthread, for example: +This could be worked around by making the application link against libpthread (i.e. not only the plugin, but also the main binary), or without recompiling by explicitly pre-loading libpthread, for example: $ LD_PRELOAD=/lib/i386-gnu/libpthread.so.0.3 [application] + +But it should now be gone, simply upgrade libc0.3. diff --git a/hurd-paper.html b/hurd-paper.html index 880f5fca..272b7178 100644 --- a/hurd-paper.html +++ b/hurd-paper.html @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 1996, 1997, 1998, 2007, 2008, 2009 Free Software -Foundation, Inc."]] +[[!meta copyright="Copyright © 1996, 1997, 1998, 2007, 2008, 2009, 2015 Free +Software Foundation, Inc."]] [[!meta license="Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved."]] @@ -21,7 +21,9 @@ The design and implementation of the Hurd is being lead by Michael Bushnell, with assistance from Richard Stallman, Roland McGrath, Jan Brittenson, and others. +<a name=design> <H2>Part 1: A More Usable Approach to OS Design</H2> +</a> <P> The fundamental purpose of an operating system (OS) is to enable a variety of programs to share a single computer efficiently and productively. @@ -148,7 +150,9 @@ None of the remaining services carry any special status; not the network implementation, the filesystems, the program execution mechanism (including setuid), or any others. +<a name=translator> <H3>The Translator Mechanism</H3> +</a> <P> The Hurd uses Mach ports primarily as methods for communicating between users and servers. @@ -324,7 +328,9 @@ those semantics to allow users to improve, bypass, or replace them. <H2>Part 2: A Look at Some of the Hurd's Beasts</H2> +<a name=auth> <H3>The Authentication Server</H3> +</a> <P> One of the Hurd's more central servers is the authentication server. Each @@ -363,7 +369,9 @@ 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.) +<a name=proc> <H3>The Process Server</H3> +</a> <P> The process server acts as an information categorization repository. There @@ -419,7 +427,9 @@ 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. +<a name=ftpfs> <H3>Transparent FTP</H3> +</a> <P> Transparent FTP is an intriguing idea whose time has come. The popular @@ -429,7 +439,8 @@ 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. +doubtless change with experience [Note: since the writing of this, ftpfs was +implemented and works as described here] <P> In a BSD kernel, a transparent FTP filesystem would be no harder to write than in the Hurd. @@ -492,7 +503,9 @@ 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. +<a name=fs> <H3>Filesystems</H3> +</a> <P> Ordinary filesystems are also being implemented. The initial release of the @@ -529,7 +542,9 @@ deficiencies. There will also be various ``little'' filesystems, such as the MS-DOS filesystem, to help people move files between GNU and other OSs. +<a name=term> <H3>Terminals</H3> +</a> <P> An I/O server will provide the terminal semantics of Posix. The GNU C @@ -574,7 +589,9 @@ Instead they will be using the underlying Mach device ports for terminals, which support moving large amounts of data efficiently. +<a name=exec> <H3>Executing Programs</H3> +</a> <P> The implementation of the <CODE>execve</CODE> diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn index ec19e90b..944b5c98 100644 --- a/hurd/documentation.mdwn +++ b/hurd/documentation.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -2009, 2011, 2012 Free Software Foundation, Inc."]] +2009, 2011, 2012, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -20,9 +20,24 @@ is included in the section entitled * [[*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. + overview by Thomas Bushnell, BSG, notably: + + * [[The design|/hurd-paper#design]] + * [[Translators|/hurd-paper#translator]] + * [[The auth translator|/hurd-paper#auth]] + * [[The proc translator|/hurd-paper#proc]] + * [[The exec translator|/hurd-paper#exec]] + * [[The ftpfs translator|/hurd-paper#ftpfs]] + + * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann, notably: + + * [[How to get a port?|/hurd-talk#how]] + * [[Pathname resolution example|/hurd-talk#pat]] + * [[Mapping the POSIX Interface|/hurd-talk#map]] + * [[Active vs Passive|/hurd-talk#act]] + * [[Authentication|/hurd-talk#aut]] + * [[Password Server|/hurd-talk#pas]] + * [[Process Server|/hurd-talk#pro]] * The *[[translator_primer]]*. diff --git a/hurd/running/debian/dhcp.mdwn b/hurd/running/debian/dhcp.mdwn index 8846769a..aa9adfd9 100644 --- a/hurd/running/debian/dhcp.mdwn +++ b/hurd/running/debian/dhcp.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2011, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -11,20 +11,6 @@ License|/fdl]]."]]"""]] [[!tag open_issue_porting]] -In order to use DHCP, you need to install the `ifupdown` and `isc-dhcp-client` -packages, and manually create the following symbolic link: - - # ln -s ../rcS.d/S10networking /etc/rc.boot/ - -During execution at boot time, the `S10networking` script will emit some error -messages while trying to configure the loopback interface. These are not -fatal. - -Debian GNU/Hurd doesn't currently execute Debian standard `/etc/rcS.d/*` boot -scripts, but has its own `/libexec/rc` script -- which integrates scripts from -`/etc/rc.boot/` instead. - - # Open Issues * [[!debbug 616290]] diff --git a/hurd/running/debian/discussion.mdwn b/hurd/running/debian/discussion.mdwn deleted file mode 100644 index 8b137891..00000000 --- a/hurd/running/debian/discussion.mdwn +++ /dev/null @@ -1 +0,0 @@ - diff --git a/hurd/status/discussion.mdwn b/hurd/status/discussion.mdwn deleted file mode 100644 index a479268f..00000000 --- a/hurd/status/discussion.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta copyright="Copyright © 2014 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no 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/media_appearances.mdwn b/media_appearances.mdwn index d4b764e5..ccd0c3db 100644 --- a/media_appearances.mdwn +++ b/media_appearances.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2011, 2012, 2013 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010, 2011, 2012, 2013, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this diff --git a/microkernel/mach/gnumach/boot_trace.mdwn b/microkernel/mach/gnumach/boot_trace.mdwn index ea999a9b..e2de4a28 100644 --- a/microkernel/mach/gnumach/boot_trace.mdwn +++ b/microkernel/mach/gnumach/boot_trace.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2011, 2013 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2011, 2013, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -11,190 +11,187 @@ License|/fdl]]."]]"""]] `if NCPUS > 1` stuff is not being considered so far. +grub starts the execution at boot\_entry -> i386/i386at/boothdr.S: \_start +> i386/i386at/boothdr.S: boot\_entry: sets up C environment, i.e. sets up a basic stack and clears BSS, fixes ifunc. -> i386/i386at/boothdr.S: boot\_entry +> i386/i386at/model\_dep.c: c\_boot\_entry: gets multiboot parameters ->> i386/i386at/model\_dep.c: c\_boot\_entry +>> i386/i386at/boothdr.S: discover\_x86\_cpu\_type: detect processor type ->>> i386/i386at/boothdr.S: discover\_x86\_cpu\_type +>> i386/i386at/model\_dep.c: i386at\_init: initialize PC-specific stuff ->>> i386/i386at/model\_dep.c: i386at\_init +>>> i386/i386/pic.c: picinit: initialize 8259 PIC ->>>> i386/i386/pic.c: picinit +>>> i386/i386at/model\_dep.c: mem\_size\_init: compute memory size ->>>> i386/i386at/model\_dep.c: mem\_size\_init +>>> i386/intel/pmap.c: pmap\_bootstrap: initialize x86 page table ->>>> i386/intel/pmap.c: pmap\_bootstrap +>>> i386/i386/gdt.c: gdt\_init: initialize x86 segmentation ->>>> i386/i386/gdt.c: gdt\_init +>>> i386/i386/idt.c: idt\_init: initialize x86 traps ->>>> i386/i386/idt.c: idt\_init +>>> i386/i386at/int\_init.c: int\_init: initialize PC interrupts ->>>> i386/i386at/int\_init.c: int\_init +>>> i386/i386/ldt.c: ldt\_init: initialize x86 segmentation ->>>> i386/i386/ldt.c: ldt\_init +>>> i386/i386/ktss.c: ktss\_init: initialize x86 task switching ->>>> i386/i386/ktss.c: ktss\_init +>> kern/startup.c: setup\_main: set up non-hardware specific stuff ->>> kern/startup.c: setup\_main +>>> kern/debug.c: panic\_init: initialize panic data ->>>> kern/debug.c: panic\_init +>>> kern/printf.c: printf\_init: initialize printf ->>>> kern/printf.c: printf\_init +>>> kern/sched\_prim.c: sched\_init: initialize scheduler ->>>> kern/sched\_prim.c: sched\_init +>>>> kern/processor.c: pset\_sys\_bootstrap: initialize processor sets ->>>>> kern/sched\_prim.c: wait\_queue\_init +>>>> kern/ast.c: ast\_init: initialize Asychronous System Traps ->>>>> kern/processor.c: pset\_sys\_bootstrap +>>> vm/vm\_init.c: vm\_mem\_bootstrap: initialize virtual memory ->>>>> kern/ast.c: ast\_init +>>>> vm/vm\_resident.c: vm\_page\_bootstrap: turn physical pages into virtually allocatable pages ->>>> vm/vm\_init.c: vm\_mem\_bootstrap +>>>>> vm/vm\_resident.c: pmap\_startup: initialize pages ->>>>> vm/vm\_resident.c: vm\_page\_bootstrap +>>>> kern/slab.c: slab\_bootstrap: early-initialize SLAB ->>>>>> vm/vm\_resident.c: pmap\_startup +>>>> vm/vm\_object.c: vm\_object\_bootstrap: initialize VM object management ->>>>> kern/zalloc.c: zone\_bootstrap +>>>>> vm/vm\_external.c: vm\_external\_module\_initialize: initialize VM external object management ->>>>> vm/vm\_object.c: vm\_object\_bootstrap +>>>> vm/vm\_map.c: vm\_map\_init: initialize VM maps ->>>>>> vm/vm\_external.c: vm\_external\_module\_initialize +>>>> vm/vm\_kern.c: kmem\_init: initialize kernel's virtual memory ->>>>> vm/vm\_map.c: vm\_map\_init +>>>> i386/intel/pmap.c: pmap\_init: initialize remainder of x86 page table ->>>>> vm/vm\_kern.c: kmem\_init +>>>> kern/slab.c: slab\_init: initialize remainder of SLAB ->>>>> i386/intel/pmap.c: pmap\_init +>>>> kern/kalloc.c: kalloc\_init: initialize kallocator ->>>>> kern/zalloc.c: zone\_init +>>>> vm/vm\_fault.c: vm\_fault\_init: initialize VM fault management ->>>>> kern/kalloc.c: kalloc\_init +>>>> vm/vm\_resident.c: vm\_page\_module\_init: initialize remainder of virtual memory ->>>>> vm/vm\_fault.c: vm\_fault\_init +>>>> vm/memory\_object.c: memory\_manager\_default\_init: initialize remainder of VM object management ->>>>> vm/vm\_resident.c: vm\_page\_module\_init +>>> ipc/ipc\_init.c: ipc\_bootstrap: initialize IPC ->>>>> vm/memory\_object.c: memory\_manager\_default\_init +>>>> ipc/ipc\_table.c: ipc\_table\_init: initialize IPC tables ->>>> ipc/ipc\_init.c: ipc\_bootstrap +>>>> ipc/ipc\_notify.c: ipc\_notify\_init: initialize IPC notification ->>>>> ipc/ipc\_table.c: ipc\_table\_init +>>>> ipc/ipc\_hash.c: ipc\_hash\_init: initialize IPC reverse hash table ->>>>> ipc/ipc\_notify.c: ipc\_notify\_init +>>>> ipc/ipc\_marequest.c: ipc\_marequest\_init: initialize msg-accepted request ->>>>> ipc/ipc\_hash.c: ipc\_hash\_init +>>> vm/vm\_init.c: vm\_mem\_init: finish initializing VM ->>>>> ipc/ipc\_marequest.c: ipc\_marequest\_init +>>>> vm/vm\_object.c: vm\_object\_init: finish initializing kernel object ->>>> vm/vm\_init.c: vm\_mem\_init +>>>> vm/memory\_object\_proxy: memory\_object\_proxy\_init: initialize memory object proxy ->>>>> vm/vm\_object.c: vm\_object\_init +>>> ipc/ipc\_init.c: ipc\_init: finish initializing IPC ->>>> ipc/ipc\_init.c: ipc\_init +>>>> kern/ipc\_host.c: ipc\_host\_init: initialize host IPC ->>>>> kern/ipc\_host.c: ipc\_host\_init +>>>>> kern/ipc\_host.c: ipc\_pset\_init: initialize processor sets ports ->>>>>> kern/ipc\_host.c: ipc\_pset\_init +>>>>> kern/ipc\_host.c: ipc\_processor\_init: initialize processor ports ->>>>>> kern/ipc\_host.c: ipc\_pset\_enable +>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL: activate kernel page table ->>>>>> kern/ipc\_host.c: ipc\_processor\_init +>>> kern/timer.c: init\_timers: initialize timers ->>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL +>>> kern/mach\_clock.c: init\_timeout: initialize timeout ->>>> kern/timer.c: init\_timers +>>> kern/xpr.c: xprbootstrap: initialize xpr buffer ->>>> kern/mach\_clock.c: init\_timeout +>>> kern/time\_stamp.c: timestamp\_init: initialize tick ->>>> kern/xpr.c: xprbootstrap +>>> kern/mach\_clock.c: [[mapable\_time\_init|interface/device/time]] ->>>> kern/time\_stamp.c: timestamp\_init +>>> i386/i386at/model\_dep.c: machine\_init: initialize x86 machine ->>>> kern/mach\_clock.c: [[mapable\_time\_init|interface/device/time]] +>>>> device/cons.c: cninit: initialize console ->>>> i386/i386at/model\_dep.c: machine\_init +>>>> i386/i386/fpu.c: init\_fpu: initialize 8087 FPU ->>>>> device/cons.c: cninit +>>>> linux/dev/init/main.c: linux\_init: initialize linux drivers ->>>>> i386/i386/fpu.c: init\_fpu +>>>>> linux/dev/arch/i386/kernel/irq.c: init\_IRQ: initialize IRQs ->>>>> linux/dev/init/main.c: linux\_init +>>>>>> linux/dev/arch/i386/kernel/irq.c: reserve\_mach\_irqs: register IRQs to mach ->>>>>> linux/dev/arch/i386/kernel/irq.c: init\_IRQ +>>>>> linux/dev/kernel/sched.c: linux\_sched\_init: initialize dumb scheduler ->>>>>>> linux/dev/arch/i386/kernel/irq.c: reserve\_mach\_irqs +>>>>> linux/dev/init/main.c: calibrate\_delay: calibrate delay loop ->>>>>> linux/dev/kernel/sched.c: linux\_sched\_init +>>>>> linux/dev/glue/kmem.c: linux\_kmem\_init: initialize memory management ->>>>>> linux/dev/init/main.c: calibrate\_delay +>>>>> linux/src/drivers/pci/pci.c: pci\_init: initialize PCI bus ->>>>>> linux/dev/glue/kmem.c: linux\_kmem\_init +>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_init: call PCI BIOS32 initialization ->>>>>> linux/src/drivers/pci/pci.c: pci\_init +>>>>>> linux/src/drivers/pci/pci.c: scan\_bus: enumerate PCI devices ->>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_init +>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_fixup: apply platform-specific fixes ->>>>>>> linux/src/drivers/pci/pci.c: scan\_bus +>>>>> linux/dev/glue/net.c: linux\_net\_emulation\_init: initialize network glue ->>>>>>> linux/src/arch/i386/kernel/bios32.c: pcibios\_fixup +>>>>> linux/dev/drivers/block/genhd.c: device\_setup: initialize block devices ->>>>>> linux/dev/glue/net.c: linux\_net\_emulation\_init +>>>>>> linux/dev/glue/block.c: blk\_dev\_init: initialize linux block devices ->>>>>> linux/dev/drivers/block/genhd.c: device\_setup +>>>>>>> linux/src/drivers/block/ide.c: ide\_init: initialize IDE driver ->>>>>>> linux/dev/glue/block.c: blk\_dev\_init +>>>>>>> linux/dev/drivers/block/floppy.c: floppy\_init: initialize floppy driver ->>>>>>>> linux/src/drivers/block/ide.c: ide\_init +>>>>>> linux/src/drivers/scsi/scsi.c: scsi\_dev\_init: initialize SCSI drivers ->>>>>>>> linux/dev/drivers/block/floppy.c: floppy\_init +>>>>>> linux/dev/net/core/dev.c: net\_dev\_init: initialize network drivers ->>>>>>> linux/src/drivers/scsi/scsi.c: scsi\_dev\_init +>>>>> linux/pcmcia-cs/glue/pcmcia.c: pcmcia\_init: initialize PCMCIA drivers ->>>>>>> linux/dev/net/core/dev.c: net\_dev\_init +>>>> i386/i386at/autoconf.c: probeio: probe mach-managed devices (com, lpr) ->>>>>> linux/pcmcia-cs/glue/pcmcia.c: pcmcia\_init +>>>> i386/i386at/model\_dep.c: inittodr: get RTC time ->>>>> i386/i386at/autoconf.c: probeio +>>>> i386/intel/pmap.c: pmap\_unmap\_page\_zero: unmap address 0 ->>>>> i386/i386at/model\_dep.c: inittodr +>>>> kern/mach\_clock.c: mapable\_time\_init: initialize mappable time ->>>>> i386/intel/pmap.c: pmap\_unmap\_page\_zero +>>> kern/task.c: task\_init: initialize gnuamch atsk ->>>> kern/task.c: task\_init +>>>> kern/syscall\_emulation.c: eml\_init: initialize user space emulation code ->>>>> kern/syscall\_emulation.c: eml\_init +>>> kern/thread.c: thread\_init: initialize thread management ->>>> kern/thread.c: thread\_init +>>>> i386/i386/pcb.c: pcb\_module\_init: initialize PCB management ->>>>> i386/i386/pcb.c: pcb\_module\_init +>>>>> i386/i386/fpu.c: fpu\_module\_init: initialize FPU management ->>>>>> i386/i386/fpu.c: fpu\_module\_init +>>> kern/thread\_swap.c: swapper\_init: initialize thread swapper ->>>>>> i386/i386/iopb.c: iopb\_init +>>> kern/sched\_prim.c: recompute\_priorities: initial priorities computation ->>>> kern/thread\_swap.c: swapper\_init +>>> kern/mach\_factor.c: compute\_mach\_factor: initial mach factor computation ->>>> kern/sched\_prim.c: recompute\_priorities +>>> kern/startup.c: thread\_start: create initial kernel thread ->>>> kern/mach\_factor.c: compute\_mach\_factor +>>> kern/startup.c: cpu\_launch\_first\_thread: start first user thread ->>>> kern/startup.c: start\_kernel\_threads +>>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL: activate kernel page table -[...] - ->>>> kern/startup.c: cpu\_launch\_first\_thread - ->>>>> i386/i386at/model\_dep.c: startrtclock +>>>> i386/i386at/model\_dep.c: startrtclock: start clock ->>>>>> i386/i386/pit.c: clkstart +>>>>> i386/i386/pit.c: clkstart: start 8254 PIT ->>>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL +>>>> i386/intel/pmap.h: PMAP\_ACTIVATE\_KERNEL: activate user page table ->>>>> i386/i386/pcb.c: load\_context +>>>> i386/i386/pcb.c: load\_context: load first context [...] @@ -224,7 +221,7 @@ License|/fdl]]."]]"""]] >> [...] ->> vm\_pageout +>> vm\_pageout: run the paging out daemon >> Does not return. diff --git a/faq/off.mdwn b/news/2015-03-20-gsoc.mdwn index 4777d066..143865f4 100644 --- a/faq/off.mdwn +++ b/news/2015-03-20-gsoc.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2010, 2013 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -8,11 +8,8 @@ Sections, no 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 faq/running]] +[[!meta date="2015-03-20 08:30 UTC"]] -[[!meta title="how am I supposed to shut my Hurd system down?"]] - -[[!tag open_issue_gnumach]] -GNU Mach does not have APM or ACPI support, so it will just stop with -`In tight loop: hit ctl-alt-del to reboot`, and you can switch off the -system. +The **Google Summer of Code 2015** is on! If you're a student, consider +applying for a GNU Hurd project -- details to be found on our +[[community/GSoC]] and [[community/gsoc/project_ideas]] pages. diff --git a/open_issues/ext2fs_dtime.mdwn b/open_issues/ext2fs_dtime.mdwn index 592f1525..5cb5fb7b 100644 --- a/open_issues/ext2fs_dtime.mdwn +++ b/open_issues/ext2fs_dtime.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2010, 2012 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2014 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index a2a67632..19056b5c 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 -Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this diff --git a/open_issues/kill_setuid.mdwn b/open_issues/kill_setuid.mdwn new file mode 100644 index 00000000..047dceda --- /dev/null +++ b/open_issues/kill_setuid.mdwn @@ -0,0 +1,49 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no 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]] + +http://bugs.debian.org/413326 + +The X server does not terminate when the user X session is finished. This is due +to xinit not being able to kill the setuid Xorg. + +On the sending side, glibc does: + + err = HURD_MSGPORT_RPC (__proc_getmsgport (proc, pid, &msgport), + (taskerr = __proc_pid2task (proc, pid, + &refport)) ? + __proc_getsidport (proc, &refport) : 0, 1, + kill_port (msgport, refport)); + } + +I.e. asks proc for the task port, and if that fails, asks proc for the +session port, then it sends the signal. + +It happens that since the target got setuid'ed, the proc server had set it +owned by root, and hence (rightfully) refuses to return the task port through +pid2task. As a result only proc_getsidport() works, but that will be accepted +by the receiving side only for some signals. + +POSIX says + +« + For a process to have permission to send a signal to a process designated + by pid, unless the sending process has appropriate privileges, the real or + effective user ID of the sending process shall match the real or saved + set-user-ID of the receiving process. +» + +And indeed Xorg keeps the original user uid as real uid, so that xinit can kill +it when the session is finished. + +We probably need to implement another reference port that the killer can send to +the killee. It may be useful for some other operations that users can do on the +setuid processes they have started. diff --git a/open_issues/libpthread_dlopen.mdwn b/open_issues/libpthread_dlopen.mdwn index a825fdff..9e127841 100644 --- a/open_issues/libpthread_dlopen.mdwn +++ b/open_issues/libpthread_dlopen.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2011, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -15,6 +15,15 @@ License|/fdl]]."]]"""]] # [[FAQ entry|faq/libpthread_dlopen]] +Some applications don't themselves link against libpthread, but then load +plugins which do link against libpthread. This means internally switching from +single-threading to multi-threading, which is only supported since libc0.3 +2.19-16~2. Previously, it would result in errors such as: + + ./pthread/../sysdeps/generic/pt-mutex-timedlock.c:70: __pthread_mutex_timedlock_internal: Assertion `__pthread_threads' failed. + +*This is now fixed as of libc0.3 2.19-16~2.* + # IRC, freenode, #hurd, 2010-01-24 <pinotree> youpi: hm, thought about the pthread/stubs issue w/ dlopen'ed diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 700e3d71..05c7eea4 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2014 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2014, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -29,3 +29,4 @@ This page lists the few packages whose build makes the Debian buildd box crash a * php-yac * gnu-smalltalk + * globus-gram-job-manager diff --git a/open_issues/symlink_translator.mdwn b/open_issues/symlink_translator.mdwn new file mode 100644 index 00000000..80ce7f0e --- /dev/null +++ b/open_issues/symlink_translator.mdwn @@ -0,0 +1,24 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no 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]] + +The /hurd/symlink translator does not work as expected: + + % settrans -ca broken /hurd/symlink missing + % file broken + broken: empty + +Here is the expected behavior, as implemented by the short-cut logic +in lib*fs: + + % ln -s missing broken_symlink + % file broken_symlink + broken_symlink: broken symbolic link to missing diff --git a/open_issues/wine.mdwn b/open_issues/wine.mdwn index ea91e5a6..6d48fda0 100644 --- a/open_issues/wine.mdwn +++ b/open_issues/wine.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2011, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010, 2011, 2013, 2014, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this diff --git a/overview.mdwn b/overview.mdwn new file mode 100644 index 00000000..11d9382b --- /dev/null +++ b/overview.mdwn @@ -0,0 +1,89 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no 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 provides an quick overview of how the GNU/Hurd system starts, and thus how +it is structured. + +# Grub + +The GNU/Hurd system uses multiboot, and thus usually booted from grub, which +loads into memory the GNU Mach kernel, the ext2fs server (see later), and the +exec server (see later). It then gives hand to GNU Mach, passing ext2fs and exec +as payloads. + +# GNU Mach + +GNU Mach initializes a basic console, and tasks, memory management and +interprocess communication (details can be read on +[[microkernel/mach/gnumach/boot_trace]]). It also initializes drivers for +disk. It then creates two tasks for the ext2fs and exec servers. + +# ext2fs + +ext2fs is given as a parameter the name of the device of the root filesystem. It +opens it through the GNU Mach disk driver, and mounts the filesystem found on +it. When it is ready, it can start booting the system by starting the "startup", +"proc", and "auth" servers. It does so by using the "exec" server already loaded +by GNU Mach. We then have a posixish environment, ext2fs gives hand to +"startup". + +# exec + +"exec" handles loading binaries into processes. Details are available in +[[Thomas' overview|/hurd-paper#exec]]. + +# proc + +Proc knows about processes: what pid they have, passing signals, managing tty +sessions, etc. Details are available in [[Thomas' overview|/hurd-paper#proc]] +and [[Marcus' presentation|/hurd-talk#pro]]. + +# auth + +Auth knows about identities: uid, gid, etc. Details are available in +[[Thomas' overview|/hurd-paper#auth]] and +[[Marcus' presentation|/hurd-talk#aut]]. + +# startup + +"startup" is the unixish system starting point: it basically runs /sbin/init, at +which point we end up with the standard Unix boot up. + +# netdde / pfinet + +At some point of the boot process, networking will have to be configured. This +is done by starting "pfinet", the TCP/IP stack, from /servers/socket/2, which +itself starts the network device driver server, "netdde", from /dev/netdde. + +# everydaylife + +Normal processes use glibc to interact with the system. Depending on the kind of +call, glibc will perform RPCs with the various servers mentioned above: opening +files will trigger RPCs with ext2fs, calling getpid() and such will trigger RPCs +with proc, calling getuid() and such will trigger RPCs with auth, opening a +network socket will trigger RPCs with pfinet. Details are available in [[the RPC page|/hurd/rpc]] + +One can read the [[details how reading a file happens|hurd/io_path]]. + +# how translators get started + +There are three ways translators get started: + +* exec, startup, proc, auth are explictly started during the boot as explained +above. +* some file of the filesystem have a *passive translator* record, i.e. it is +recorded in the filesystem that when you open the file, it actually starts a +translator which provides the content. For instance, */dev/null* is actually a +translator which eats your data and produces no data. +* one can manually start a translator and bind it on a file of the +filesystem. It will stay there until getting killed or the system is +restarted. For instance, one may want to temporarily mount an ISO image. + +Details are available in [[Marcus' presentation|/hurd-talk#act]]. diff --git a/sidebar.mdwn b/sidebar.mdwn index a5daebe5..1a45bb36 100644 --- a/sidebar.mdwn +++ b/sidebar.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 -Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -15,7 +15,7 @@ Welcome to... [[!img /logo/boxes-redrawn.png link=/logo]] ... the GNU Hurd! --- -The **Google Summer of Code 2014** is on! If you're a student, consider +The **Google Summer of Code 2015** is on! If you're a student, consider applying for a GNU Hurd project -- details to be found on our [[community/GSoC]] and [[community/gsoc/project_ideas]] pages."""]] |