diff options
47 files changed, 793 insertions, 302 deletions
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.mdwn b/community/meetings.mdwn index 1713ce3a..e136cbee 100644 --- a/community/meetings.mdwn +++ b/community/meetings.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 @@ -13,6 +13,9 @@ License|/fdl]]."]]"""]] # Upcoming + * [[FOSDEM_2015]] + + # Past * [[FOSDEM_2014]] diff --git a/community/meetings/fosdem_2010.mdwn b/community/meetings/fosdem_2010.mdwn index 9def3c1c..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 @@ -75,12 +75,23 @@ 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). +At this very place, Olaf will be giving two presentations: + + * {{$olaf_hurd1}} + + * {{$olaf_hurd2}} There'll be further GNU folks around; [Mini GNU Hackers Meeting at FOSDEM Brussels 2010](http://www.gnu.org/ghm/2010/fosdem/). + +[[!ymlfront data=""" + +olaf_hurd1: + + "[*Why is Anyone Still Working on the GNU Hurd?*](http://fosdem.org/2010/schedule/events/altos_hurd) (Sun., 10:30, Alt-OS Developer Room)" + +olaf_hurd2: + + "[*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)." + +"""]] diff --git a/community/meetings/fosdem_2013.mdwn b/community/meetings/fosdem_2013.mdwn index 2d55e76b..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 @@ -61,3 +61,11 @@ http://people.debian.org/~sthibault/hurd-i386/2013-02-02-fosdem.pdf Duration: 50m + +[[!ymlfront data=""" + +thibault_hurd: + + "presentation by Samuel Thibault: [*The GNU/Hurd architecture, nifty features, and latest news*](https://archive.fosdem.org/2013/schedule/event/hurd_microkernel/) ([slides](http://people.debian.org/~sthibault/hurd-i386/2013-02-02-fosdem.pdf))" + +"""]] diff --git a/community/meetings/fosdem_2014.mdwn b/community/meetings/fosdem_2014.mdwn index b2eef9d9..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 @@ -34,12 +34,12 @@ Bruxelles. <https://fosdem.org/2014/schedule/track/microkernel_based_operating_systems/> -## GNU/Hurd DDE userland device drivers (Samuel Thibault) + * {{$thibault_hurd}} -<https://fosdem.org/2014/schedule/event/07_uk_dde_on_hurd/> +[[!ymlfront data=""" -Slides: -http://people.debian.org/~sthibault/hurd-i386/2013-02-02-fosdem.pdf +thibault_hurd: -Bad-quality preview of the video: -http://video.fosdem.org/2014/H2214/Sunday/GNUHurd_DDE_userland_device_drivers.webm + "presentation by Samuel Thibault: [GNU/Hurd DDE userland device drivers](https://fosdem.org/2014/schedule/event/07_uk_dde_on_hurd/) ([slides](http://people.debian.org/~sthibault/hurd-i386/2013-02-02-fosdem.pdf), [video](http://video.fosdem.org/2014/H2214/Sunday/GNUHurd_DDE_userland_device_drivers.webm))" + +"""]] diff --git a/community/meetings/fosdem_2015.mdwn b/community/meetings/fosdem_2015.mdwn new file mode 100644 index 00000000..03c2009d --- /dev/null +++ b/community/meetings/fosdem_2015.mdwn @@ -0,0 +1,47 @@ +[[!meta copyright="Copyright © 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 +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-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 2015"]] + +<http://fosdem.org/2015> + +FOSDEM will take place on January 31st/February 1st at the Université Libre de +Bruxelles. + + +# Who and When + +[[!table class="table_style_1" data=""" +"Name","Attending","Arrival","Return" +"Ludovic Courtès","yes","Friday afternoon","Sunday, ~17:00" +"Manolis Ragkousis","yes","Friday, 11:00","Monday ~12:00" +"Samuel Thibault","yes","Saturday, 09:23 BRU","Sunday, 20:14 BRU" +"[[Thomas Schwinge|tschwinge]]","yes","Friday, 08:00, BRU","Sunday, 20:15, BRU" +"""]] + + +# Microkernels devroom + +[[!message-id desc="Announcement and CfP" +"8EB88D29-62CD-405A-B41A-5A15269312D9@ksyslabs.org"]]. + +<https://fosdem.org/2015/schedule/track/microkernels/> + + + * {{$thibault_hurd}} + +[[!ymlfront data=""" + +thibault_hurd: + + "presentation by Samuel Thibault: [*Along the GNU Hurd RPC way -- A starting guide to contributing to the GNU Hurd*](https://fosdem.org/2015/schedule/event/hurd/) ([slides](https://fosdem.org/2015/schedule/event/hurd/attachments/slides/684/export/events/attachments/hurd/slides/684/2015_02_01_fosdem.pdf))" + +"""]] diff --git a/contributing.mdwn b/contributing.mdwn index 7451c49b..67b84590 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, -2014 Free Software Foundation, Inc."]] +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 @@ -68,6 +68,9 @@ concepts|microkernel/mach/concepts]], [[Hurd's concepts|hurd/concepts]], the *[[hurd/critique]]*. Until you can understand and do the basic exercises listed there, you won't be able to significantly contribute to the Hurd. +You can also have a look at the +[starting guide talk](https://fosdem.org/2015/schedule/event/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 @@ -80,7 +83,10 @@ Here is a list of small hacks, which can serve as entries into the Hurd code for people who would like to dive into the code but just lack a "somewhere to begin with". -* Some translators do not support [[hurd/fsysopts]]. +* Add `UTIME_NOW` and `UTIME_OMIT`. It is a matter of taking the BSD values, add the `#define`s to the proper header, and implement the support in `*_S_file_utimes` functions. + See also [[!debbug 762677]]. +* Some translators do not support [[hurd/fsysopts]], i.e. support for the +file_get_fs_options and fsys_set_options RPCs. * Extend `device_read`/`device_write` into supporting > 2TiB disk sizes. * Make the Hurd [[hurd/console]]'s configuration use [[xkb layout/variant instead of keymap|hurd/console/discussion]]. * Add a [[futex kernel trap|microkernel/mach/gnumach/interface#futex]] to GNU Mach. @@ -93,10 +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. -* Add `/proc/$pid/maps`. `vminfo` already has this kind of information, it's a matter of making procfs do the same. [[!GNU_Savannah_bug 32770]] * 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]]. @@ -104,6 +106,8 @@ Look at `[glibc]/hurd/lookup-retry.c` for how [[`FS_RETRY_MAGICAL` 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 5ab08bfb..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]] @@ -72,6 +84,33 @@ Documentation for... # Presentations +## 2015 + + * FOSDEM: {{$community/meetings/fosdem_2015#thibault_hurd}} + +## 2014 + + * FOSDEM: {{$community/meetings/fosdem_2014#thibault_hurd}} + +## 2013 + + * GNU Hackers Meeting in Paris: {{$community/meetings/ghm2013#thibault_hurd}} + + * FOSDEM: {{$community/meetings/fosdem_2013#thibault_hurd}} + +## 2011 + + * GNU Hackers Meeting in Paris: {{$community/meetings/ghm2011#thibault_hurd}} + +## 2010 + + * GNU Hackers Meeting in the Hague: {{$community/meetings/ghm2010#walfield_hurd}} + + * Debconf 10: {{$community/meetings/debconf10#banck_hurd}} + + * Fosdem 2010: {{$community/meetings/fosdem_2010#olaf_hurd1}} + * Fosdem 2010: {{$community/meetings/fosdem_2010#olaf_hurd2}} + ## 2004 * 2004-07-02 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/fsck.mdwn b/faq/fsck.mdwn new file mode 100644 index 00000000..b50d6953 --- /dev/null +++ b/faq/fsck.mdwn @@ -0,0 +1,24 @@ +[[!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]]."]]"""]] + +[[!tag faq/open_issues]] + +[[!meta title="fsck shows a lot of errors"]] + +Quite a few of them are actually benign: + + /dev/hd0s1: Deleted inode 95849 has zero dtime. FIXED. + +see [[open_issues/ext2fs_dtime]] + + /dev/hd0s1: i_file_acl_hi for inode 81872 (/proc) is 32, shoud be 0. + +see [[open_issues/e2fsck_i_file_acl_hi]] 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/libfuse.mdwn b/hurd/libfuse.mdwn index 28125dd9..0c76645a 100644 --- a/hurd/libfuse.mdwn +++ b/hurd/libfuse.mdwn @@ -25,7 +25,7 @@ etc. * lowlevel API not implemented * Options handling (`fuse_parse_cmdline` and `fuse_opt_*`) not implemented * CUSE lowlevel not supported (compatibility level 29) -* Supports up to the compatibility level 25 (while current libfuse 2.9.x provides 26) +* Supports the compatibility level 25 and 26, up to libfuse 2.6.x * File I/O is quite slow. diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn index bdf9def2..2f13813a 100644 --- a/hurd/networking.mdwn +++ b/hurd/networking.mdwn @@ -9,11 +9,18 @@ Sections, no 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. +For each supported `PF_*` protocol family (domain), there is a file `/servers/socket/N` +where `N` is the numeric value for the `PF_*` symbol. libc's `socket()`, +`socketpair()` and friends use `_hurd_socket_server` to open them: the latter +computes the `/servers/socket/N` path, then opens it with `__file_name_lookup`, +and returns the result. Since those paths are translated (see showtrans on +`/servers/socket/N`), it's a port to a translator which is returned. Right now +[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX` or `AF_UNIX`) `N=1`, +[[`PF_INET`|translator/pfinet]] (a.k.a `AF_INET`) `N=2` and +[[`PF_INET6`|translator/pfinet/ipv6]] (a.k.a `AF_INET6`) `N=26` are supported. + +In case of problems to find out which server is called rpctrace can be of use: +search for the output `dir_lookup ("servers/socket/N" ...)` 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 diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn index c4c864f7..66c6ae28 100644 --- a/hurd/porting/guidelines.mdwn +++ b/hurd/porting/guidelines.mdwn @@ -305,7 +305,13 @@ We could easily provide it; ## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a> -We should actually provide it. +We don't really have a minimum value. We could define it to 4096 (or ~16, which +is our actual minimum), but most applications making use of `PTHREAD_STACK_MIN` +would just crash with such a value. + +The application knows way better than the OS which stack size it needs and have +its own hint about the stack size, and thus use `PTHREAD_STACK_MIN` only as a +minimum, not as a hint. ## <a name="types"> `linux/types.h` or `asm/types.h` </a> diff --git a/hurd/running.mdwn b/hurd/running.mdwn index b3caf21a..7653b387 100644 --- a/hurd/running.mdwn +++ b/hurd/running.mdwn @@ -20,6 +20,7 @@ There are several different ways to run a GNU/Hurd system: * [[cloud]] - In the "cloud": OpenStack * [[chroots|chroot]] need a couple of tricks to work properly. * [[VirtualBox]] - In VirtualBox +* [[https://github.com/bbesim/vagrant_GNU-debian-hurd_basebox]] - On Vagrant * [[vmware]] (**non-free!**) * [[FAQ]] diff --git a/hurd/running/chroot.mdwn b/hurd/running/chroot.mdwn index 38bab04e..699f05a1 100644 --- a/hurd/running/chroot.mdwn +++ b/hurd/running/chroot.mdwn @@ -13,8 +13,7 @@ This documents the currently-needed tricks to successfully build a # Preparation -For proper translator startup, the chroot storage needs to be handled by a -separate translator, for instance: +It can be a good idea to put the chroot on a separate translator, for instance: # dd [...] < /dev/zero > storage # mke2fs storage @@ -45,3 +44,4 @@ programs inside the chroot need to be able to access them: # settrans -kp chroot/dev /hurd/firmlink /dev # settrans chroot/tmp /hurd/firmlink /tmp # settrans -c chroot/var/lib/dbus /hurd/firmlink /var/lib/dbus + # settrans -c chroot/run/dbus /hurd/firmlink /run/dbus 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/nix.mdwn b/hurd/running/nix.mdwn index 68052948..b77404a4 100644 --- a/hurd/running/nix.mdwn +++ b/hurd/running/nix.mdwn @@ -47,7 +47,7 @@ Nix, and because of that, it uses per-package installation directories under Guix -# <a href="guix">Guix</a> +# <a name="guix">Guix</a> ## <http://www.gnu.org/software/guix/> diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn index d20b84b1..0c8e0ae8 100644 --- a/hurd/running/qemu/networking.mdwn +++ b/hurd/running/qemu/networking.mdwn @@ -21,7 +21,7 @@ Netmask is 255.255.255.0 You can setup the pfinet translator with the command - $ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0 + $ settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0 Configure nameserver in /etc/resolve.conf diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn index 81826e00..ccb359cb 100644 --- a/hurd/translator/pfinet/ipv6.mdwn +++ b/hurd/translator/pfinet/ipv6.mdwn @@ -35,20 +35,20 @@ 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 + -i /dev/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 + -i /dev/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 ↩ + -i /dev/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 ↩ + -i /dev/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 diff --git a/media_appearances.mdwn b/media_appearances.mdwn index 2f8df76c..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 @@ -16,6 +16,20 @@ A lot of stuff is missing here. [[!toc levels=2]] +# 2015 + +## February + + * FOSDEM: {{$community/meetings/fosdem_2015#thibault_hurd}} + + +# 2014 + +## February + + * FOSDEM: {{$community/meetings/fosdem_2014#thibault_hurd}} + + # 2013 @@ -88,6 +102,8 @@ A lot of stuff is missing here. ## February + * FOSDEM: {{$community/meetings/fosdem_2013#thibault_hurd}} + * *[GNU/Hurd Plans For A Future With USB, SATA, 64-Bit](http://www.phoronix.com/scan.php?page=news_item&px=MTI5ODM)*, Phoronix, Michael Larabel, 2013-02-10 @@ -185,6 +201,11 @@ A lot of stuff is missing here. # 2010 +## February + + * FOSDEM 2010: {{$community/meetings/fosdem_2010#olaf_hurd1}} + + * FOSDEM 2010: {{$community/meetings/fosdem_2010#olaf_hurd2}} ## August 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/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn index cf02471d..c5c592b7 100644 --- a/microkernel/mach/gnumach/debugging.mdwn +++ b/microkernel/mach/gnumach/debugging.mdwn @@ -65,9 +65,12 @@ Another interesting feature is watching a variable, by using watch 0x123400 -and then type continue, to let Mach continue execution. The debugger will be entered again on any change in that variable. The watch is implemented in hardware, so it does not disturb or slow down execution at all. +and then type continue, to let Mach continue execution. The debugger will be entered again on any change in that variable. The watch is implemented in hardware, so it does not disturb or slow down execution at all. The same can be achieved programmatically, e.g. using + struct db_watchpoint watch = { .task = NULL, .loaddr= 0x40e, .hiaddr = 0x40e+2, .link = NULL}; + db_set_hw_watchpoint(&watch, 0); + # GDB in QEMU When you're [[running_a_system_in_QEMU|hurd/running/qemu]] you can directly diff --git a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn index 32e712c9..460c8aba 100644 --- a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn +++ b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn @@ -96,6 +96,11 @@ on the hardware devices they support. [[hurd/DDE]] provides more up-to-date network device drivers, based on Linux 2.6.29 code, running as user-space processes. +# BIOS32 Service Directory + +GNU Mach is not yet compatible with mmconfig, and PCI access requires the presence of the BIOS32 Service Directory. +You can check for its presence by running a Linux 32 bits kernel with the kernel parameter "pci=bios" and checking if PCI devices work. + # User Success Reports These boards are known to work. Gnumach/Hurd has been installed and run on these board successfully. @@ -115,7 +120,7 @@ These boards are known to work. Gnumach/Hurd has been installed and run on these 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. +The present Debian GNU/Hurd installer itself runs on Hurd, so failure on the installer may mean that the hardware is uncompatible with Hurd. * 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. 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/_san.mdwn b/open_issues/_san.mdwn index fad53727..5e6c8796 100644 --- a/open_issues/_san.mdwn +++ b/open_issues/_san.mdwn @@ -23,7 +23,7 @@ as: GNU Tools Cauldron 2012. <http://code.google.com/p/address-sanitizer/>. * Memory Sanitizer, an detector of uninitialized reads (MSan; - `-fsanitize=memory) + `-fsanitize=memory`) <http://code.google.com/p/memory-sanitizer/> diff --git a/open_issues/blkrrpart_ioctl.mdwn b/open_issues/blkrrpart_ioctl.mdwn deleted file mode 100644 index b3a91bfb..00000000 --- a/open_issues/blkrrpart_ioctl.mdwn +++ /dev/null @@ -1,32 +0,0 @@ -[[!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/e2fsck_i_file_acl_hi.mdwn b/open_issues/e2fsck_i_file_acl_hi.mdwn index d03b733c..d891ac6e 100644 --- a/open_issues/e2fsck_i_file_acl_hi.mdwn +++ b/open_issues/e2fsck_i_file_acl_hi.mdwn @@ -36,3 +36,5 @@ IRC, unknown channel, unknown date. This is due to an erroneous read/write from e2fsck, see <http://sourceforge.net/tracker/?func=detail&aid=3379227&group_id=2406&atid=102406>. + +See [[!debbug 760275]] diff --git a/open_issues/ext2fs_dtime.mdwn b/open_issues/ext2fs_dtime.mdwn new file mode 100644 index 00000000..5cb5fb7b --- /dev/null +++ b/open_issues/ext2fs_dtime.mdwn @@ -0,0 +1,21 @@ +[[!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]]."]]"""]] + +[[!tag open_issue_hurd]] + + /dev/hd0s1: Deleted inode 95849 has zero dtime. FIXED. + +This is actually sorta benign. What typically happens is that one upgrades e.g. +a library, and there are still some processes using it (e.g. because it's libc). +The library file is thus kept on the filesystem, so as to be able to load parts +of it on demand. The file is thus marked as deleted, but the deletion hasn't +been effective yet, thus dtime being zero. e2fsck notices this and finishes +deleting the file. To really fix this, we would probably have to really unmount +the filesystem. diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index 6c14fdd4..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 @@ -843,22 +843,6 @@ min on coulomb.SCHWINGE. <http://gcc.gnu.org/install/test.html> -Testing on GNU/Hurd is blocked on -[[fork_mach_port_mod_refs_ekern_urefs_owerflow]]. - -TODO. On GNU/Hurd, it is advisable to reboot after having built and installed -GCC, before running the testsuite, as otherwise there seems to be a tendency -that the system crashes during the `gcc.c-torture/compile/limits-structnest.c` -tests, which are rather memory hungry, see [[!message-id -"87bol6aixd.fsf@schwinge.name"]]. Likewise, it also seems advisable to add -further reboots in between, that is, separate `make check`'s `check-host` into -several separate runs, and then one for `check-target` (see -`[build]/Makefile:do-check`, `[build]/gcc/Makefile:CHECK_TARGETS`), as -otherwise there seems to be a tendency for the system crashing sooner or later. -(Running `check-host` accumulates to something like 44 hours worth of -forking/execing of GCC and testcases.) On GNU/Linux we run it in one go, so -that we'll catch any fundamental rearrangements of/additions to the testsuites. - kepler.SCHWINGE: $ make -k check 2>&1 | tee log_test @@ -911,6 +895,9 @@ coulomb.SCHWINGE. ## Analysis + A lot of the failures are due to gcc's unwind support not knowing about signal trampoline on GNU/Hurd, this is a TODO. + + $ toolchain/logs/process gcc test * PTYs diff --git a/open_issues/gnumach_PCI_access.mdwn b/open_issues/gnumach_PCI_access.mdwn new file mode 100644 index 00000000..dc099563 --- /dev/null +++ b/open_issues/gnumach_PCI_access.mdwn @@ -0,0 +1,18 @@ +[[!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]]."]]"""]] + +Currently, GNU Mach requires the presence of the BIOS32 Service Directory for PCI access. +The other possible methods are direct access, which is somewhat dangerous and using mmconfig, the preferred default in Linux. +Direct access is already supported, but only used if BIOS32 is present for safety reasons. +The relevant Linux code could be adapted and reused. + + +[[!tag open_issue_gnumach]] + 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/kvm.mdwn b/open_issues/kvm.mdwn index 6dfffc9a..327f97ca 100644 --- a/open_issues/kvm.mdwn +++ b/open_issues/kvm.mdwn @@ -23,3 +23,15 @@ with Virtualbox. <pochu> ok, ty 2010-07-31, GNU Mach commit 039176372b4271f370ef38eb2ee5d43923a5b28b. + +# KVM-on-KVM (nested KVM) + +This seems sluggish like hell. jenkins.debian.net suffers badly from it: it +takes like an hour to complete the "Loading additional components" step. + +It's actually slower than just running qemu-on-KVM. + +This doesn't happen with Linux L2 guests. + +Date: Tue, 11 Nov 2014 +https://www.mail-archive.com/kvm@vger.kernel.org/msg109570.html 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/perl.mdwn b/open_issues/perl.mdwn index 48343e3e..62d29ac1 100644 --- a/open_issues/perl.mdwn +++ b/open_issues/perl.mdwn @@ -24,6 +24,18 @@ features. There is a [[!FF_project 264]][[!tag bounty]] on this task. +# Bugs in perl + +There is a bug in perl's putenv which makes it interact badly with fakeroot-tcp and fakeroot-sysv (not fakeroot-hurd), this shows up as this + + *** glibc detected *** /usr/bin/perl: free(): invalid pointer: 0x01026000 *** + +See http://rt.perl.org/rt3/Ticket/Display.html?id=91452 for details + +A workaround is to do this before building packages calling perl inside fakeroot: + +export FAKEROOTUID=0 FAKEROOTEUID=0 FAKEROOTSUID=0 FAKEROOTFUID=0 FAKEROOTGID=0 FAKEROOTEGID=0 FAKEROOTSGID=0 FAKEROOTFGID=0 + --- diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn new file mode 100644 index 00000000..05c7eea4 --- /dev/null +++ b/open_issues/problematic_packages.mdwn @@ -0,0 +1,32 @@ +[[!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 +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-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="Problematic packages"]] + +[[!tag open_issue_gnumach open_issue_hurd]] + +This page lists the few packages whose build makes the Debian buildd box crash as of 2014, November 1st: + +* Kill pfinet + + * nbd + * socklog + +* Kill the session + + * idzebra + * ruby-hiredis + * libxs + +* Out of memory + + * php-yac + * gnu-smalltalk + * globus-gram-job-manager diff --git a/open_issues/procfs_umount.mdwn b/open_issues/procfs_umount.mdwn new file mode 100644 index 00000000..f31467df --- /dev/null +++ b/open_issues/procfs_umount.mdwn @@ -0,0 +1,24 @@ +[[!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]]."]]"""]] + +[[!tag open_issue_hurd]] + +As soon as one has accessed /proc/mounts, /proc can't be umount: + + # settrans -ga /proc + settrans: /proc: Device or resource busy + +This is because mtab is still mounted on /proc/mounts: + + # settrans -ga /proc/mounts + # settrans -ga /proc + +settrans -R is supposed to be doing this, but unfortunately this is not +implemented yet in libnetfs, see #ifdef NOTYET in netfs_shutdown. 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/virtualization/fakeroot.mdwn b/open_issues/virtualization/fakeroot.mdwn index 88a18a93..441d5c13 100644 --- a/open_issues/virtualization/fakeroot.mdwn +++ b/open_issues/virtualization/fakeroot.mdwn @@ -1324,3 +1324,7 @@ License|/fdl]]."]]"""]] <braunr> it happens (rarely) when directly using ext2 <braunr> and more often through fakeroot <braunr> i didn't take the time to investigate + +## youpi + + the daily script of debian-installer uses the -s / -i options of fakeroot. How could we manage to implement them? diff --git a/open_issues/virtualization/networking.mdwn b/open_issues/virtualization/networking.mdwn index f8bda063..122f21ab 100644 --- a/open_issues/virtualization/networking.mdwn +++ b/open_issues/virtualization/networking.mdwn @@ -34,48 +34,34 @@ Collection about stuff that is relevant for *virtualization* and *networking*. [[community/meetings/GHM2013]]. - -## IRC, freenode, #hurd, 2013-08-23 - - <youpi> good news - <youpi> with a couple small patches, openvpn does work as joe user - - -## IRC, freenode, #hurd, 2013-08-30 - - <youpi> it's really cool that openvpn ended up working completely the day - before :) - - -## IRC, freenode, #hurd, 2013-09-03 - - <_d3f> Hey guys, how did you get openvpn working on the Hurd? just curious - as I saw it in the GHM video - <_d3f> no one here who has a clue how to get *vpn working on the Hurd? - <braunr> _d3f: youpi did it - <braunr> i don't know the details - <_d3f> okay, I will question him when I see him around, thx. Do you know if - it was a lot of work to get the tun device working? Because I would like - to use tinc on the Hurd. - <braunr> _d3f: a bit but not that much either - <_d3f> braunr: well, okay. Do you know if the source of his 'port' is - online, I haven't found it :/ - <braunr> it should be soon - - -## IRC, freenode, #hurd, 2013-09-04 - - <_d3f> youpi: you are the guy who has brought openvpn to the hurd, right? I - would like to know how you got the tun/tap thing working as I would like - to use tinc on it. :) - <youpi> _d3f: essentially no modification of openvpn iirc - <youpi> just tell it to open the tun node created by pfinet - <youpi> and read/write it - <youpi> i.e. the existing generic code in place in openvpn - <_d3f> I will have a look at it, somekind tinc builds with the linux - specific device.c but I wasn't able to exchange keys. I will have a look - at the device handling again and try to get the pfinet tun node used. - +OpenVPN can use pfinet's tun as it is, and be configured completely as joe user, +as shown below. Note that the tun0 node name has to begin with "tun", so pfinet +knows it's a tun. + + $ mkdir -p $HOME/servers/socket + $ touch $HOME/servers/tun0 + $ settrans -ca $HOME/servers/socket/2 /hurd/pfinet $HOME/servers/tun0 -a 10.0.0.1 -p 10.0.0.2 + $ cat vpn.conf + client + dev tun + dev-node /home/samy/servers/tun0 + ... + $ openvpn --config vpn.conf --verb 5 + ... + +So we let openvpn running, and now we can make applications use the pfinet +TCP/IP stack started above: the remap command below starts a new shell, where +it redirects /servers/socket/2 (where the system TCP/IP stack resides) onto +$HOME/servers/socket/2 (where the new TCP/IP stack resides). + + $ remap /servers/socket/2 $HOME/servers/socket/2 + $ wget www.gnu.org + +Ideally openvpn would be made to setup pfinet itself, but at least for now it +can be configured by hand like that. + +It would probably be possible to make pfinet able to produce a tap too, would +need some code. ## IRC, freenode, #hurd, 2013-09-07 @@ -98,3 +84,5 @@ Collection about stuff that is relevant for *virtualization* and *networking*. <d3f> yeah I know, I talked to him as I am tring to get tinc working on the Hurd (tinc builds by now). I will give him a shot about creating the "tun" device + +tun has indeed nothing to do with devnode and netdde, it's pfinet which creates it, as documented above. diff --git a/open_issues/wine.mdwn b/open_issues/wine.mdwn index 842442f1..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 @@ -174,3 +174,9 @@ allocation. There is kernel support for this,* however. <Andre_H> gnu_srs1: well, the stable branch is called stable because not everything get's there :)7 <Andre_H> gnu_srs1: the PATH_MAX patch needs more thinking... + +## IRC, freenode, #hurd, 2015-02-09 + + <Andre_H> since Wine 1.7.28 it runs quite well on Gnu/Hurd - wiki.winehq.org/Hurd + <Andre_H> ( https://source.winehq.org/git/wine.git/commitdiff/6d50cfcac28f84e07777fc10874887356832102e ) + 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."""]] |