From c97dfa409ee3f10a234afb86a99957aba860fff7 Mon Sep 17 00:00:00 2001 From: andijh92 Date: Tue, 20 Dec 2016 15:03:11 +0100 Subject: added link to free online course and free textbook --- documentation.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation.mdwn b/documentation.mdwn index 263be828..bfdaa839 100644 --- a/documentation.mdwn +++ b/documentation.mdwn @@ -25,8 +25,8 @@ architecture. Yes, really. ## Operating Systems Basics -Books. Etc. - +You can find good free, self-paced online courses about operating systems on . +A free textbook about operating systems is called [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). ## GNU/Hurd System Architecture -- cgit v1.2.3 From 7ba459c0b33ffeeed97a28f80b6843e877743401 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 3 Jan 2017 00:54:43 +0100 Subject: emacs25 poses the same problem --- open_issues/problematic_packages.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 444350f0..43957d72 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -36,6 +36,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a * ext2fs gets stuck * emacs24 + * emacs25 * loops and eats memory -- cgit v1.2.3 From f34256be2efd81617071141539ef394bb3779c8e Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 3 Jan 2017 09:48:22 +0100 Subject: llvm 3.7 fixed --- open_issues/problematic_packages.mdwn | 4 ---- 1 file changed, 4 deletions(-) diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 43957d72..51084a5c 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -29,10 +29,6 @@ This page lists the few packages whose build makes the Debian buildd box crash a * icedove -* box gets stuck - - * llvm-toolchain-3.7 - * ext2fs gets stuck * emacs24 -- cgit v1.2.3 From aafcfe33268cc037a078344f09d022d81b0fd514 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 5 Jan 2017 13:21:00 +0100 Subject: icedove doesn't pose problem any more --- open_issues/problematic_packages.mdwn | 4 ---- 1 file changed, 4 deletions(-) diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 51084a5c..1ce81c66 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -25,10 +25,6 @@ This page lists the few packages whose build makes the Debian buildd box crash a * rsyslog -* breaks ext2fs - - * icedove - * ext2fs gets stuck * emacs24 -- cgit v1.2.3 From 0369f6b32f957c134c635eca73dc634eb36ceff8 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 6 Jan 2017 00:23:24 +0100 Subject: there is usually no qemu-kvm binary any more, just kvm --- contributing.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributing.mdwn b/contributing.mdwn index 31d56783..957dff46 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -180,7 +180,7 @@ I'll have to think about it some more. * Install qemu-kvm via your distros packages. * Download the [qemu image](http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz): `wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz` * Unpack it: `tar xf debian-hurd.img.tar.gz` -* Run it: `qemu-kvm -m 512 -drive cache=writeback,file=debian-hurd.img` # Optionally use `--curses` to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster). See also: [kvm FAQ](http://www.linux-kvm.org/page/FAQ). +* Run it: `kvm -m 512 -drive cache=writeback,file=debian-hurd.img` # Optionally use `--curses` to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster). See also: [kvm FAQ](http://www.linux-kvm.org/page/FAQ). * login as root * `apt-get update` * `apt-get install -y git mercurial emacs vim` -- cgit v1.2.3 From 42adf4af1750df4dc2fef94e1963530d7cf937cd Mon Sep 17 00:00:00 2001 From: "https://launchpad.net/~dani.behzi" Date: Wed, 18 Jan 2017 11:11:12 +0100 Subject: --- user/danialbehzadi.mdwn | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 user/danialbehzadi.mdwn diff --git a/user/danialbehzadi.mdwn b/user/danialbehzadi.mdwn new file mode 100644 index 00000000..eb7c5e67 --- /dev/null +++ b/user/danialbehzadi.mdwn @@ -0,0 +1,13 @@ +[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +* Name: Danial Behzadi +* Email: +* Country: Iran -- cgit v1.2.3 From 59bc716e9161119e598314d6019f7689461c3005 Mon Sep 17 00:00:00 2001 From: "https://launchpad.net/~dani.behzi" Date: Wed, 18 Jan 2017 11:11:49 +0100 Subject: --- user/danialbehzadi.mdwn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/user/danialbehzadi.mdwn b/user/danialbehzadi.mdwn index eb7c5e67..d0de0dad 100644 --- a/user/danialbehzadi.mdwn +++ b/user/danialbehzadi.mdwn @@ -11,3 +11,19 @@ License|/fdl]]."]]"""]] * Name: Danial Behzadi * Email: * Country: Iran + + + +[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +* Name: Danial Behzadi +* Email: +* Country: Iran -- cgit v1.2.3 From 33c67870f1f860b80d76932467a01f2fbb9ee47c Mon Sep 17 00:00:00 2001 From: "https://launchpad.net/~dani.behzi" Date: Wed, 18 Jan 2017 11:12:14 +0100 Subject: --- user/danialbehzadi.mdwn | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/user/danialbehzadi.mdwn b/user/danialbehzadi.mdwn index d0de0dad..eb7c5e67 100644 --- a/user/danialbehzadi.mdwn +++ b/user/danialbehzadi.mdwn @@ -11,19 +11,3 @@ License|/fdl]]."]]"""]] * Name: Danial Behzadi * Email: * Country: Iran - - - -[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -* Name: Danial Behzadi -* Email: -* Country: Iran -- cgit v1.2.3 From 84a6ede01b232fbc5c364aaa68bf276af0110f79 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 2 Feb 2017 01:19:57 +0100 Subject: Add /dev/rtc TODO --- contributing.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/contributing.mdwn b/contributing.mdwn index 957dff46..222291c0 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -113,6 +113,7 @@ lookups|hurd/interface/dir_lookup]] work. * Fix chmod on fifos: mkfifo foo ; sudo chmod g+w foo * Strengthen httpfs: it should append '/' to URL automatically, it should not fallback index.html itself, etc. probably a lot more small easy issues. * Fix `O_NOATIME`, see +* Add a /dev/rtc device ## Porting Packages -- cgit v1.2.3 From 371a782cd09a6f0c7f9f99cf336351635c6fa7c9 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 21 Feb 2017 12:50:59 +0100 Subject: Drop physical memory management project it was basically done by Richard --- community/gsoc/project_ideas.mdwn | 1 - .../project_ideas/physical_memory_management.mdwn | 51 ---------------------- 2 files changed, 52 deletions(-) delete mode 100644 community/gsoc/project_ideas/physical_memory_management.mdwn diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index 7338d57b..4993b01f 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -102,7 +102,6 @@ project_ideas: community/gsoc/project_ideas/package_manager community/gsoc/project_ideas/xattr community/gsoc/project_ideas/driver_glue_code - community/gsoc/project_ideas/physical_memory_management community/gsoc/project_ideas/language_bindings community/gsoc/project_ideas/file_locking community/gsoc/project_ideas/gdb diff --git a/community/gsoc/project_ideas/physical_memory_management.mdwn b/community/gsoc/project_ideas/physical_memory_management.mdwn deleted file mode 100644 index 1bb6a760..00000000 --- a/community/gsoc/project_ideas/physical_memory_management.mdwn +++ /dev/null @@ -1,51 +0,0 @@ -[[!meta copyright="Copyright © 2015, 2016 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover 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 : - - * - - * - - * - -Possible mentors: Richard Braun -- cgit v1.2.3 From a6844c659acd25e913b1d20e48610765352bd10e Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 21 Feb 2017 13:20:29 +0100 Subject: Drop xattr project idea, it's done --- community/gsoc/project_ideas.mdwn | 1 - community/gsoc/project_ideas/xattr.mdwn | 47 --------------------------------- 2 files changed, 48 deletions(-) delete mode 100644 community/gsoc/project_ideas/xattr.mdwn diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index 4993b01f..c17b06f9 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -100,7 +100,6 @@ project_ideas: "community/gsoc/project_ideas/virtualization community/gsoc/project_ideas/secure_chroot community/gsoc/project_ideas/package_manager - community/gsoc/project_ideas/xattr community/gsoc/project_ideas/driver_glue_code community/gsoc/project_ideas/language_bindings community/gsoc/project_ideas/file_locking diff --git a/community/gsoc/project_ideas/xattr.mdwn b/community/gsoc/project_ideas/xattr.mdwn deleted file mode 100644 index 8e1a532b..00000000 --- a/community/gsoc/project_ideas/xattr.mdwn +++ /dev/null @@ -1,47 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2016 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -[[!meta title="Implement xattr Support"]] - -Extended attributes (xattr) are a standardized, generic method for storing -additional metadata along with a file (inode). Most modern UNIX filesystems -support xattrs. - -In general, xattrs should be used sparingly, as they are less transparent than -data stored as explicit file contents; however, there are some cases where they -really make sense. The Hurd's variant of ext2 presently uses some additional -fields in the inode to store Hurd-specific metadata: most notable passive -translator settings. As these fields are Hurd-specific, they can't be accessed -by the standard methods from Linux for example, so it's not possible to fully -work with a Hurd filesystem on GNU/Linux (copy, backup etc.); and also, even -when on Hurd, only tools that explicitly support the Hurd-specific information -can handle them. - -Using extended attributes instead of custom fields for the Hurd-specific -information would be very helpful. - -The most important goal of this project thus is to make the Hurd ext2fs server -able to store and read the Hurd-specific information with extended attributes -instead of the custom fields, so it become accessible from other systems. Being -able to access the information through the standard xattr API instead of -Hurd-specific calls is also desirable. (And in turn requires implementing the -generic xattr API first, which can be useful for other purposes as well.) - -Completing this project will require digging into some parts of the Hurd, but -it should be quite doable without previous Hurd experience. Some experience -with xattrs might help a bit, but shouldn't be really necessary either. - -Some previous work on xattr support is [[available|open_issues/xattr]], and -might serve as a starting point. - -Possible mentors: Justus Winter (teythoon), Samuel Thibault (youpi) - -Exercise: Implement support for different inode sizes (other than 128 bytes) in -Hurd's ext2fs. -- cgit v1.2.3 From 4f15828febdea054993b2c21f62530c17ce3adea Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 22 Feb 2017 21:30:01 +0100 Subject: Update gsoc ideas --- community/gsoc/project_ideas.mdwn | 1 - community/gsoc/project_ideas/driver_glue_code.mdwn | 27 ++++------ community/gsoc/project_ideas/dtrace.mdwn | 62 ---------------------- community/gsoc/project_ideas/file_locking.mdwn | 42 --------------- community/gsoc/project_ideas/sound.mdwn | 42 --------------- community/gsoc/project_ideas/sound/discussion.mdwn | 47 ---------------- community/gsoc/project_ideas/tcp_ip_stack.mdwn | 2 +- 7 files changed, 12 insertions(+), 211 deletions(-) delete mode 100644 community/gsoc/project_ideas/dtrace.mdwn delete mode 100644 community/gsoc/project_ideas/file_locking.mdwn delete mode 100644 community/gsoc/project_ideas/sound.mdwn delete mode 100644 community/gsoc/project_ideas/sound/discussion.mdwn diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn index c17b06f9..6ab38823 100644 --- a/community/gsoc/project_ideas.mdwn +++ b/community/gsoc/project_ideas.mdwn @@ -102,7 +102,6 @@ project_ideas: community/gsoc/project_ideas/package_manager community/gsoc/project_ideas/driver_glue_code community/gsoc/project_ideas/language_bindings - community/gsoc/project_ideas/file_locking community/gsoc/project_ideas/gdb community/gsoc/project_ideas/tcp_ip_stack community/gsoc/project_ideas/nfs diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn index 0f921590..c1850d21 100644 --- a/community/gsoc/project_ideas/driver_glue_code.mdwn +++ b/community/gsoc/project_ideas/driver_glue_code.mdwn @@ -27,22 +27,24 @@ This is [[!GNU_Savannah_task 5488]]. [[open issues/user-space device drivers]]. [[open issues/device drivers and io systems]]. -The most promising approach for getting newer drivers seems to be [[DDE]]: +The most promising approach for getting newer drivers seems to be the Rump kernel: it already does the hard work of providing an environment where the foreign drivers can run, and offers the additional benefit of being externally maintained. -DDE also offers the necessary facilities +Rump also offers the necessary facilities for running all drivers in separate userspace processes, which is more desirable than drivers running in the microkernel. -[[Zheng Da|zhengda]] has already done considerable work on this. +Robert Millan worked on a port of the Rump kernel, which allowed to run a sound +driver in userland. This work now needs to be extended. + +[[Zheng Da|zhengda]] has already done considerable work on a similar approach, using [[DDE]] The basic framework for using DDE in the Hurd is present, and network card drivers are already working very well. However, this work isn't fully integrated in the Hurd yet. The additional kernel interfaces that were created for this -are still prototypes, and will need to be reworked. -Also, there is no build system for automatically compiling -all Linux network card drivers in one go. +are still prototypes, and will need to be reworked. This environment can be +reused and polished for Rump. Other types of drivers are missing so far. Support for IDE drivers has been partially implemented, @@ -51,13 +53,10 @@ To fully replace the old in-kernel drivers, further infrastructure will be necessary to make userspace disk drivers usable for the root filesystem. -Some other subsystems are missing or incomplete in DDE itself, -and will require additional work that is not specific to the Hurd implementation. - The goal of this task is to fix at least one of the mentioned major shortcomings: rework the kernel interfaces; -provide a streamlined build system for the drivers; -finish IDE support; +polish the rumpkernel changes; +componentize the rumpkernel elements for sound; or implement support for some other subsystem. @@ -69,13 +68,9 @@ such as memory management for example. Possible mentors: Justus Winter (teythoon), Samuel Thibault (youpi) -Exercise: Get one of the not yet integrated Linux network card drivers to work. -(Note: This should be straightforward, -once you have the framework properly built and set up...) +Exercise: Install and run the current rumpkernel library (librump0) and the corresponding mplayer, get it to run. --- # 2016-02-14, Justus Winter - -`s/dde/rump/g` of course. diff --git a/community/gsoc/project_ideas/dtrace.mdwn b/community/gsoc/project_ideas/dtrace.mdwn deleted file mode 100644 index 6261c03e..00000000 --- a/community/gsoc/project_ideas/dtrace.mdwn +++ /dev/null @@ -1,62 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2011 Free Software Foundation, -Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta title="Kernel Instrumentation"]] - -[[!tag open_issue_gnumach]] - -One of the main problems of the current Hurd implementation is very poor -[[open_issues/performance]]. While we have a bunch of ideas what could cause the performance -problems, these are mostly just guesses. Better understanding what really -causes bad performance is necessary to improve the situation. - -For that, we need tools for performance measurements. While all kinds of more -or less specific [[open_issues/profiling]] tools could be conceived, the most promising and -generic approach seems to be a framework for logging certain events in the -running system (both in the microkernel and in the Hurd servers). This would -allow checking how much time is spent in certain modules, how often certain -situations occur, how things interact, etc. It could also prove helpful in -debugging some issues that are otherwise hard to find because of complex -interactions. - -The most popular kernel instrumentation framework is Sun's dtrace, -originally written for Solaris, -but also adopted by some other systems. -However, the GPL-incompatible license means it can't be used in Linux, -and thus Linux developers created their own frameworks instead: -first [[SystemTap]], and now [[LTTng]]. - -In 2008, Andrei Barbu did initial work on kernel probes for the Hurd. -However, not all of his patches got merged, -because some turned out not to be fully functional. -Also, he didn't get around to work on userspace probes, -nor on a nice frontend for writing test scripts employing the probes. - -The goal of this project is to make the instrumentation framework -more usable and complete, -and to better integrate it in the Hurd. -For that, the student will have to work -on some real profiling and/or debugging tasks, -and fix any shortcomings he encounters in the framework. - -This is a pretty involved task. -Previous experience with low-level programming is a must; -and it also requires a good grasp on interactions in complex systems. - -To work on this project, -the student will have to get familiar with GNU Mach. -(The microkernel employed by the Hurd.) -Some understanding of other aspects of the Hurd will also be required, -depending on the exact nature of the profiling/debugging performed. - -Possible mentors: Samuel Thibault (youpi) - -Exercise: Use the existing probes to perform some simple measurement. diff --git a/community/gsoc/project_ideas/file_locking.mdwn b/community/gsoc/project_ideas/file_locking.mdwn deleted file mode 100644 index ebb322f1..00000000 --- a/community/gsoc/project_ideas/file_locking.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2012, 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]]."]]"""]] - -[[!meta title="Fix and Complete File Locking Support"]] - -Over the years, [[UNIX]] has acquired a host of different file locking mechanisms. -Some of them work on the Hurd, while others are buggy or only partially -implemented. This breaks many applications. - -The goal is to make all file locking mechanisms work properly. This requires -finding all existing shortcomings (through systematic testing and/or checking -for known issues in the bug tracker and mailing list archives), and fixing -them. The biggest missing feature is record locking, i.e. the lockf variant, -which needs a complete implementation. - -This task will require digging into parts of the code to understand how file -locking works on the Hurd. Only general programming skills are required. - -A preliminary patch is [[!GNU_Savannah_patch 332 desc="available"]]. - -Possible mentors: Samuel Thibault (youpi) - -Exercise: Find one of the existing issues, either by looking at the task/bug -filed on [[open_issues/file_locking]], on -trackers on savannah, or by trying things out yourself; and take a go at it. -Note though that most of these issues are probably not trivial -- it's quite -likely that you won't be able to actually fix any of them in the time available -during the application process. However, you might be able to spot something -else that could be improved while looking into this. - -If after trying for a while you haven't found anything easy enough to improve -in the locking-related code, talk to us about some alternative exercise task. -Perhaps you actually find something you could do while looking through the bug -tracker or trying stuff yourself in search of locking issues :-) diff --git a/community/gsoc/project_ideas/sound.mdwn b/community/gsoc/project_ideas/sound.mdwn deleted file mode 100644 index 8411831b..00000000 --- a/community/gsoc/project_ideas/sound.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -[[!meta title="Sound Support"]] - -The Hurd presently has no sound support. Fixing this, [[!GNU_Savannah_task -5485]], requires two steps: the first is to port some other kernel's drivers to -[[GNU_Mach|microkernel/mach/gnumach]] so we can get access to actual sound -hardware. The second is to implement a userspace server ([[hurd/translator]]), -that implements an interface on top of the kernel device that can be used by -applications -- probably OSS or maybe ALSA. - -Completing this task requires porting at least one driver (e.g. from Linux) for -a popular piece of sound hardware, and the basic userspace server. For the -driver part, previous experience with programming kernel drivers is strongly -advisable. The userspace part requires some knowledge about programming Hurd -translators, but shouldn't be too hard. - -Once the basic support is working, it's up to the student to use the remaining -time for porting more drivers, or implementing a more sophisticated userspace -infrastructure. The latter requires good understanding of the Hurd philosophy, -to come up with an appropriate design. - -Another option would be to evaluate whether a driver that is completely running -in user-space is feasible. - -Possible mentors: Samuel Thibault (youpi) - -Exercise: This project requires kernel (driver framework) hacking as well as -some Hurd server hacking; so the exercise should involve either of these, or -even both. You could for example port some newer driver to run in the existing -framework (see the [[device_driver|driver_glue_code]] project description), or -try to make some fix(es) to the [unfinished random device -implementation](http://savannah.gnu.org/patch/?6088) created by Michael -Casadevall. diff --git a/community/gsoc/project_ideas/sound/discussion.mdwn b/community/gsoc/project_ideas/sound/discussion.mdwn deleted file mode 100644 index 4a95eb62..00000000 --- a/community/gsoc/project_ideas/sound/discussion.mdwn +++ /dev/null @@ -1,47 +0,0 @@ -[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!taglink open_issue_documentation]]: update [[sound]] page. - - -# IRC, freenode, #hurd, 2013-09-01 - - I'm new to the hurd but I'd love to learn enough to work on sound - support. - - http://darnassus.sceen.net/~hurd-web/community/gsoc/project_ideas/sound/ - says drivers should be ported to GNU Mach as a first step. - Is this information still current or should the existing Linux - driver be wrapped with DDE instead? - if i recall correctly dde is currently only being used for - network drivers. i'm not sure how much work would be involved for sound - or usb - - -## IRC, freenode, #hurd, 2013-09-02 - - The sound support proposal - (http://darnassus.sceen.net/~hurd-web/community/gsoc/project_ideas/sound/) - recommends porting some other kernel's sound driver to GNU Mach. Is this - still current or should DDE be used instead? - rekado: dde or anything userspace-based is generally preferred - rekado: both are about porting some other kernel's sound driver - dde is preferred yes - This email says that sound drivers are already partly working with - DDE: http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html - So, should I just try to get some ALSA kernel parts to compile - with DDE? - well, what is missing is also the dde←→hurd glue - rekado: there is also a problem with pci arbitration - pinotree: I assumed DDEKit works with the hurd and we could use - any DDE/ glue code with it - * rekado looks up pci arbitration - only for networking atm - ah, I see. diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn index 331336ac..6410dee0 100644 --- a/community/gsoc/project_ideas/tcp_ip_stack.mdwn +++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn @@ -34,7 +34,7 @@ make such a split later on feasible. This is [[!GNU_Savannah_task 5469]]. -Possible mentors: zhengda +Possible mentors: youpi Exercise: You could try making some improvement to the existing pfinet implementation; or you could work towards running some existing userspace -- cgit v1.2.3 From e667d67ef97336cb7e592ccb63858c2d7946dde8 Mon Sep 17 00:00:00 2001 From: "https://me.yahoo.com/a/GG2t2e1p1YAW0Uusq929UxV1x5V7BRc_7vY7Pds-#e94c0" Date: Mon, 27 Feb 2017 12:39:33 +0100 Subject: --- hurd.mdwn | 108 -------------------------------------------------------------- 1 file changed, 108 deletions(-) diff --git a/hurd.mdwn b/hurd.mdwn index 14e1ea95..8b137891 100644 --- a/hurd.mdwn +++ b/hurd.mdwn @@ -1,109 +1 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -2009, 2010, 2011, 2013, 2015, 2016 Free Software Foundation, Inc."]] -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -The GNU Hurd is under active development. Because of that, there is no -*stable* version. We mainly distribute the Hurd sources through -[[Git|source_repositories]]. The latest release is [[GNU Hurd -0.9|news/2016-12-18-releases]]. - -Although it is possible to bootstrap the GNU/Hurd system from the sources by -cross-compiling and installing the system software and the basic applications, -this is a difficult process. It is not recommended that you do this. Instead, -you should get a binary distribution of the GNU/Hurd, which comes with all the -GNU software precompiled and an installation routine which is easy to use. - -The Debian project has commited to provide such a binary distribution. -[[Debian_GNU/Hurd|running/debian]] is currently under development and available -in the *unstable* branch of the Debian archive. - ---- - -[[!toc]] - -# Introduction - -* [[What_Is_the_GNU_Hurd]] - A Brief Description -* [[Advantages]]. And [[challenges]]. -* [[History]] - * [[history/Port_to_another_microkernel]] -* [[Logo]] -* [[Status]] -* [[Translation]] - Localized sites about the Hurd -* [[Donate]] -* [[SeenHurd]] - Media references -* [[Shopping]] - Hurd Gear -* [[FunnyHurd]] - From a different Herd -* [[FAQ]] - -# Understanding - -* Introductory Material - * [[Documentation]] - * [Gaël Le Mignot](http://kilobug.free.fr/hurd/pres-en/slides/slides.html) - * [Neal Walfield](http://kerneltrap.org/node/5) -* Architecture - * [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]] by Thomas Bushnell, BSG. - * Marcus Brinkmann's [revisit](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html) - * Jonathan S. Shapiro [comments](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html) - * [[Critique]] - Analysis - * [[Hurd_Hacking_Guide]] -* [[Concepts]] - -# Using - -* [[Running]] -* [[running/Distrib]] -- Distributions -* [[Public_Hurd_Boxen]] -* [[Neighborhurd]]s and [[Subhurd]]s -* [[DDE]] -- Device Driver Environment - -## Common Problems - -* [[GNUstep]] -* [[XattrHurd]]: Setting translators under GNU/Linux -* [[SerialConsole]]: Setting up a serial console. - -# Contributing - -* [[Contributing]] - -* [[Open Issues|tag/open_issue_hurd]] - -# Developer References - -* [[Coding_Style]] -* [[Rules]] -* [[Trackers]] -* [[Building]] -* [[Toolchain]] - * [[glibc]] -* RPC [[Interface]]s -* Libraries - * [[libpager]] - * [[libports]] - * [[libstore]] - * [[libchannel]] - * [[libtrivfs]] - * [[libnetfs]] -- short introductory material - * [[libdiskfs]] - * [[libihash]] - * [[libpthread]] - * [[libfshelp]] - * [[libps]] -* In-development Libraries - * [[libfuse]] -* Discontinued Libraries - * [[libthreads]] -* [[IO_Path]] -* [[Porting]] -* [[Debugging]] -* [[Networking]] -* [[Console]] -- cgit v1.2.3 From 300038bec104687cf63288054418ebe9ff73da38 Mon Sep 17 00:00:00 2001 From: "https://me.yahoo.com/a/GG2t2e1p1YAW0Uusq929UxV1x5V7BRc_7vY7Pds-#e94c0" Date: Mon, 27 Feb 2017 12:40:51 +0100 Subject: --- ikiwiki/formatting.mdwn | 1 + 1 file changed, 1 insertion(+) create mode 100644 ikiwiki/formatting.mdwn diff --git a/ikiwiki/formatting.mdwn b/ikiwiki/formatting.mdwn new file mode 100644 index 00000000..20e29b14 --- /dev/null +++ b/ikiwiki/formatting.mdwn @@ -0,0 +1 @@ +::1 -- cgit v1.2.3 From fdaeb030dbb45153c643345443ae7f05e680a662 Mon Sep 17 00:00:00 2001 From: "https://me.yahoo.com/a/GG2t2e1p1YAW0Uusq929UxV1x5V7BRc_7vY7Pds-#e94c0" Date: Mon, 27 Feb 2017 12:42:49 +0100 Subject: --- irc.mdwn | 70 +--------------------------------------------------------------- 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/irc.mdwn b/irc.mdwn index b90aa680..adcf3cef 100644 --- a/irc.mdwn +++ b/irc.mdwn @@ -1,69 +1 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, -2010, 2011, 2012, 2013 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta title="IRC"]] - -There are some IRC channels where Hurd topics are discussed. - -Everybody is welcome to join and participate in the discussions, but please -respect the below guidelines if you want to participate. - -Please try to stay on topic. We're not interested in Emacs vs. vi discussions, -we don't want to hear why you think that the GNU project sucks, or what your -favorite GNU/Linux distribution is. - -[[!inline pages=faq/asking_questions raw=yes feeds=no]] - -Sometimes providing a log or some other excerpt of text can -help solve a problem or answer a question. Do not paste -the log in the channel itself if it's more than a few lines. Instead use a -[paste bin](http://paste.debian.net). - - - -# Regular Meetings - -Starting in early 2008, there have been regular IRC meetings held between the -(now former) [[Google Summer of Code|community/gsoc]] students and their -mentors. These meetings turned out to considerably help student-mentor -interactions, and other developers regularely took part, too. -For this reason, we decided to continue having these meetings, even if it's not -currently Google Summer of Code time. -Currently, the meetings take place in the **`#hurd` channel every -Thursday at 19:00 UTC** and are open to any interested party. So, -everyone, take your chance to chat with GNU Hurd developers! - - -# Channels - -## Freenode - -`irc.freenode.net`, - - * `#hurd`, the official GNU Hurd IRC channel. Some of the Hurd developers - and users hang out there. [Logs](http://richtlijn.be/~larstiq/hurd/). - - * `#hurdfr`, the French chapter. - - * `#archhurd`, [[hurd/running/Arch_Hurd]]. - [Logs](http://files.archhurd.org/irclogs). - - -## OFTC - -`irc.oftc.net`, - - * `#debian-hurd`, [[Debian GNU/Hurd|hurd/running/debian]]. - - -# Related - - * [[Contact_us]]. +\\ -- cgit v1.2.3 From ecf2a7a7a7acbdc235c0737c4c45b0dee2af9c32 Mon Sep 17 00:00:00 2001 From: "https://me.yahoo.com/a/GG2t2e1p1YAW0Uusq929UxV1x5V7BRc_7vY7Pds-#e94c0" Date: Mon, 27 Feb 2017 12:43:44 +0100 Subject: --- hurd/running/gnu.mdwn | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn index ae34a7c3..8337712e 100644 --- a/hurd/running/gnu.mdwn +++ b/hurd/running/gnu.mdwn @@ -1,20 +1 @@ -# The GNU Operating System - -The GNU Operating System, or GNU System as it is more commonly known, will be a -complete [[Unix]]-like operating system composed entirely of [free -software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU -System is one of the goals of the [GNU Project](http://www.gnu.org/), which was -[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by -[Richard Stallman](http://www.stallman.org/). - - -## Resources - - * [[mailing_lists/gnu-system-discuss]] mailing list - - -## Download - - * Extended GNU distribution - - As of 2013-01, the latest image provided there is from 2006. +// -- cgit v1.2.3 From 504fd1f10c8a40575e10b707203c9686452212ea Mon Sep 17 00:00:00 2001 From: "https://me.yahoo.com/a/GG2t2e1p1YAW0Uusq929UxV1x5V7BRc_7vY7Pds-#e94c0" Date: Mon, 27 Feb 2017 12:44:46 +0100 Subject: --- logo.mdwn | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/logo.mdwn b/logo.mdwn index aae80561..20e29b14 100644 --- a/logo.mdwn +++ b/logo.mdwn @@ -1,25 +1 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -The famous *Hurd Boxes* logo is available at -. - - -On some lonely Wednesday, Colin Leitner and [[Thomas_Schwinge|tschwinge]] -converted these four boxes from the [original METAFONT -sources](http://www.gnu.org/graphics/hurd.mf) to -[[hand-written_SVG_code|boxes-redrawn.svg]]. - -[[!img boxes-redrawn.png]] - - -This symbol is also being used as a favicon for this web site. - -[[!img /favicon.ico]] +::1 -- cgit v1.2.3 From abb2bc5c707e4ac2ad09c3fca3ff04ef658ae03e Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:05:01 +0100 Subject: detail a bit more what's left --- open_issues/64-bit_port.mdwn | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/open_issues/64-bit_port.mdwn b/open_issues/64-bit_port.mdwn index 74758085..dea6dd78 100644 --- a/open_issues/64-bit_port.mdwn +++ b/open_issues/64-bit_port.mdwn @@ -12,10 +12,25 @@ License|/fdl]]."]]"""]] [[!tag open_issue_gnumach open_issue_mig]] There is a `master-x86_64` GNU Mach branch. As of 2012-11-20, it only supports -the [[microkernel/mach/gnumach/ports/Xen]] platform. +the [[microkernel/mach/gnumach/ports/Xen]] platform for now. + +What is left for initial support (32-on-64) is + + * adding 64bit boot support from grub + * implement 32/64 RPC compatibility for RPCs served by kernel. See http://lists.gnu.org/archive/html/bug-hurd/2012-04/msg00000.html +For pure 64bit support, we need to + + * add 64bit definitions in binutils + * add 64bit definitions in gcc + * implement 64bit variants of code in glibc/sysdeps/mach/i386 and glibc/sysdeps/mach/hurd/i386 + * implement 64bit variants of code in libpthread/sysdeps/i386, libpthread/sysdeps/mach/i386, libpthread/sysdeps/mach/hurd/i386 + * fetch from Linux 64bit variant of code in ./pfinet/linux-src/arch/i386 and ./pfinet/linux-src/include/asm-i386 + * define the mig ABI + * bootstrap a distrib, e.g. Debian hurd-amd64 (see https://jenkins.debian.net/view/rebootstrap/job/rebootstrap_hurd-amd64_gcc7/ ) + # IRC, freenode, #hurd, 2011-10-16 it'd be really good to have a 64bit kernel, no need to care about -- cgit v1.2.3 From 7debed2d5ee4f4bea1be77cc27ebfaaf4b2f5a42 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:06:21 +0100 Subject: Revert "" This reverts commit 504fd1f10c8a40575e10b707203c9686452212ea. --- logo.mdwn | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/logo.mdwn b/logo.mdwn index 20e29b14..aae80561 100644 --- a/logo.mdwn +++ b/logo.mdwn @@ -1 +1,25 @@ -::1 +[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +The famous *Hurd Boxes* logo is available at +. + + +On some lonely Wednesday, Colin Leitner and [[Thomas_Schwinge|tschwinge]] +converted these four boxes from the [original METAFONT +sources](http://www.gnu.org/graphics/hurd.mf) to +[[hand-written_SVG_code|boxes-redrawn.svg]]. + +[[!img boxes-redrawn.png]] + + +This symbol is also being used as a favicon for this web site. + +[[!img /favicon.ico]] -- cgit v1.2.3 From 42403b9cbb1ad7e000b82fdd8a435e4d00463519 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:06:30 +0100 Subject: Revert "" This reverts commit ecf2a7a7a7acbdc235c0737c4c45b0dee2af9c32. --- hurd/running/gnu.mdwn | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn index 8337712e..ae34a7c3 100644 --- a/hurd/running/gnu.mdwn +++ b/hurd/running/gnu.mdwn @@ -1 +1,20 @@ -// +# The GNU Operating System + +The GNU Operating System, or GNU System as it is more commonly known, will be a +complete [[Unix]]-like operating system composed entirely of [free +software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU +System is one of the goals of the [GNU Project](http://www.gnu.org/), which was +[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by +[Richard Stallman](http://www.stallman.org/). + + +## Resources + + * [[mailing_lists/gnu-system-discuss]] mailing list + + +## Download + + * Extended GNU distribution + + As of 2013-01, the latest image provided there is from 2006. -- cgit v1.2.3 From 6e4ea5db2d066179a4d718f3785b217598c46ece Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:06:33 +0100 Subject: Revert "" This reverts commit fdaeb030dbb45153c643345443ae7f05e680a662. --- irc.mdwn | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/irc.mdwn b/irc.mdwn index adcf3cef..b90aa680 100644 --- a/irc.mdwn +++ b/irc.mdwn @@ -1 +1,69 @@ -\\ +[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, +2010, 2011, 2012, 2013 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="IRC"]] + +There are some IRC channels where Hurd topics are discussed. + +Everybody is welcome to join and participate in the discussions, but please +respect the below guidelines if you want to participate. + +Please try to stay on topic. We're not interested in Emacs vs. vi discussions, +we don't want to hear why you think that the GNU project sucks, or what your +favorite GNU/Linux distribution is. + +[[!inline pages=faq/asking_questions raw=yes feeds=no]] + +Sometimes providing a log or some other excerpt of text can +help solve a problem or answer a question. Do not paste +the log in the channel itself if it's more than a few lines. Instead use a +[paste bin](http://paste.debian.net). + + + +# Regular Meetings + +Starting in early 2008, there have been regular IRC meetings held between the +(now former) [[Google Summer of Code|community/gsoc]] students and their +mentors. These meetings turned out to considerably help student-mentor +interactions, and other developers regularely took part, too. +For this reason, we decided to continue having these meetings, even if it's not +currently Google Summer of Code time. +Currently, the meetings take place in the **`#hurd` channel every +Thursday at 19:00 UTC** and are open to any interested party. So, +everyone, take your chance to chat with GNU Hurd developers! + + +# Channels + +## Freenode + +`irc.freenode.net`, + + * `#hurd`, the official GNU Hurd IRC channel. Some of the Hurd developers + and users hang out there. [Logs](http://richtlijn.be/~larstiq/hurd/). + + * `#hurdfr`, the French chapter. + + * `#archhurd`, [[hurd/running/Arch_Hurd]]. + [Logs](http://files.archhurd.org/irclogs). + + +## OFTC + +`irc.oftc.net`, + + * `#debian-hurd`, [[Debian GNU/Hurd|hurd/running/debian]]. + + +# Related + + * [[Contact_us]]. -- cgit v1.2.3 From a3e24e1a749d5cb0324d2741bacb11c5e970cdea Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:06:37 +0100 Subject: Revert "" This reverts commit 300038bec104687cf63288054418ebe9ff73da38. --- ikiwiki/formatting.mdwn | 1 - 1 file changed, 1 deletion(-) delete mode 100644 ikiwiki/formatting.mdwn diff --git a/ikiwiki/formatting.mdwn b/ikiwiki/formatting.mdwn deleted file mode 100644 index 20e29b14..00000000 --- a/ikiwiki/formatting.mdwn +++ /dev/null @@ -1 +0,0 @@ -::1 -- cgit v1.2.3 From 49bc374207e79dbdd42f1d1b8648b6aad057a3ad Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 17:06:42 +0100 Subject: Revert "" This reverts commit e667d67ef97336cb7e592ccb63858c2d7946dde8. --- hurd.mdwn | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/hurd.mdwn b/hurd.mdwn index 8b137891..14e1ea95 100644 --- a/hurd.mdwn +++ b/hurd.mdwn @@ -1 +1,109 @@ +[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +2009, 2010, 2011, 2013, 2015, 2016 Free Software Foundation, Inc."]] +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +The GNU Hurd is under active development. Because of that, there is no +*stable* version. We mainly distribute the Hurd sources through +[[Git|source_repositories]]. The latest release is [[GNU Hurd +0.9|news/2016-12-18-releases]]. + +Although it is possible to bootstrap the GNU/Hurd system from the sources by +cross-compiling and installing the system software and the basic applications, +this is a difficult process. It is not recommended that you do this. Instead, +you should get a binary distribution of the GNU/Hurd, which comes with all the +GNU software precompiled and an installation routine which is easy to use. + +The Debian project has commited to provide such a binary distribution. +[[Debian_GNU/Hurd|running/debian]] is currently under development and available +in the *unstable* branch of the Debian archive. + +--- + +[[!toc]] + +# Introduction + +* [[What_Is_the_GNU_Hurd]] - A Brief Description +* [[Advantages]]. And [[challenges]]. +* [[History]] + * [[history/Port_to_another_microkernel]] +* [[Logo]] +* [[Status]] +* [[Translation]] - Localized sites about the Hurd +* [[Donate]] +* [[SeenHurd]] - Media references +* [[Shopping]] - Hurd Gear +* [[FunnyHurd]] - From a different Herd +* [[FAQ]] + +# Understanding + +* Introductory Material + * [[Documentation]] + * [Gaël Le Mignot](http://kilobug.free.fr/hurd/pres-en/slides/slides.html) + * [Neal Walfield](http://kerneltrap.org/node/5) +* Architecture + * [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]] by Thomas Bushnell, BSG. + * Marcus Brinkmann's [revisit](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html) + * Jonathan S. Shapiro [comments](http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html) + * [[Critique]] - Analysis + * [[Hurd_Hacking_Guide]] +* [[Concepts]] + +# Using + +* [[Running]] +* [[running/Distrib]] -- Distributions +* [[Public_Hurd_Boxen]] +* [[Neighborhurd]]s and [[Subhurd]]s +* [[DDE]] -- Device Driver Environment + +## Common Problems + +* [[GNUstep]] +* [[XattrHurd]]: Setting translators under GNU/Linux +* [[SerialConsole]]: Setting up a serial console. + +# Contributing + +* [[Contributing]] + +* [[Open Issues|tag/open_issue_hurd]] + +# Developer References + +* [[Coding_Style]] +* [[Rules]] +* [[Trackers]] +* [[Building]] +* [[Toolchain]] + * [[glibc]] +* RPC [[Interface]]s +* Libraries + * [[libpager]] + * [[libports]] + * [[libstore]] + * [[libchannel]] + * [[libtrivfs]] + * [[libnetfs]] -- short introductory material + * [[libdiskfs]] + * [[libihash]] + * [[libpthread]] + * [[libfshelp]] + * [[libps]] +* In-development Libraries + * [[libfuse]] +* Discontinued Libraries + * [[libthreads]] +* [[IO_Path]] +* [[Porting]] +* [[Debugging]] +* [[Networking]] +* [[Console]] -- cgit v1.2.3 From 7a4a1d57599d86519baf71b7e9726ecbcb94bcd8 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 28 Feb 2017 18:24:17 +0100 Subject: document ssh port forwarding --- contributing.mdwn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contributing.mdwn b/contributing.mdwn index 222291c0..8eb2db90 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -181,14 +181,16 @@ I'll have to think about it some more. * Install qemu-kvm via your distros packages. * Download the [qemu image](http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz): `wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz` * Unpack it: `tar xf debian-hurd.img.tar.gz` -* Run it: `kvm -m 512 -drive cache=writeback,file=debian-hurd.img` # Optionally use `--curses` to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster). See also: [kvm FAQ](http://www.linux-kvm.org/page/FAQ). +* Run it: `kvm -m 512 -drive cache=writeback,file=debian-hurd.img -redir tcp:2222::22` # Optionally use `--curses` to keep your keyboard layout. If need be modprobe kvm_amd, kvm intel and kvm to get kvm support (which is much, much faster). See also: [kvm FAQ](http://www.linux-kvm.org/page/FAQ). * login as root +* set a root password with `passwd` * `apt-get update` * `apt-get install -y git mercurial emacs vim` * `apt-get build-dep -y hurd gnumach` * `git clone git://git.sv.gnu.org/hurd/hurd.git` * `git clone git://git.sv.gnu.org/hurd/gnumach.git` * `git clone git://git.sv.gnu.org/hurd/incubator.git` +* You can connect through ssh with `ssh root@localhost -p 2222` * Get more from the [repo list](http://git.savannah.gnu.org/cgit/hurd/). * Read the docs on these pages. * Start hacking. -- cgit v1.2.3 From 88dcf24ea9783f2b92d84142b0f7daff3a5f3750 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Fri, 3 Mar 2017 19:48:55 +0100 Subject: Describe how to use existing images for subhurds --- hurd/subhurd.mdwn | 61 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn index 7b6cad67..f04e0f5a 100644 --- a/hurd/subhurd.mdwn +++ b/hurd/subhurd.mdwn @@ -27,12 +27,47 @@ requires a privileged subhurd. # Howto -## Preparing +## Quick hack: Use an existing image -To run a subhurd, you need an additional partition with an installed Hurd -system. In principle, you can also use your main partition in read-only mode; -but this obviously will create severe limitations. Usually, you will want a -complete independent system. +You can download a Debian/Hurd image +[[here|https://people.debian.org/~sthibault/hurd-i386/]] and directly +boot it: + + $ wget --no-check-certificate https://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.gz + $ gunzip debian-hurd.img.gz + $ boot --kernel-command-line="fastboot root=pseudo-root" -T typed part:1:file:debian-hurd.img + +The 'fastboot' is necessary to skip the filesystem check which fails +because the image assumes the root filesystem to be /etc/hd0s1. Once +booted, you can correct this: + + root@debian:~# settrans -c /dev/pseudo-root /hurd/storeio pseudo-root + root@debian:~# echo /dev/pseudo-root / ext2 defaults 0 1 >/etc/fstab + root@debian:~# halt + +From now on, `boot -T typed part:1:file:debian-hurd.img` should suffice. + +## Preparing your own image + +To run a subhurd, you need an additional partition (or a file) with an +installed Hurd system. In principle, you can also use your main +partition in read-only mode; but this obviously will create severe +limitations. Usually, you will want a complete independent system. + +The following instructions assume that the system is installed on +`/dev/hd0s1`. You can use any partition instead, or in fact just a +simple file created e.g. using dd. + +### Creating a file used as root filesystem for the Subhurd + +To create a file `my.image` of size 2 gigabytes, do + + $ dd if=/dev/zero of=my.image bs=1M count=1 seek=2000 + +(Note that it is currently problematic to create files larger than 2 +gigabytes this way.) + +### Using debootstrap The system for the subhurd is a normal Hurd installation, which could just as well run standalone. You can use any of the various possible installation @@ -45,22 +80,6 @@ debootstrap as root: debootstrap sid mnt/ http://httpredir.debian.org/debian settrans -fga mnt -### IRC, freenode, #hurd, 2013-09-15 - - Never dared to try a subhurd, any link to the howto? - gnu_srs: I followed - http://www.gnu.org/software/hurd/hurd/subhurd.html though using crosshurd - didn't work for me, I just used debootstrap - gnu_srs: and you need a separate filesystem translator (i.e. not - /) for that - the easiest way is to add another virtual disk to you qemu setup - use the qemu image directly - simplest way to set up a subhurd - just change fstab from the host before the first boot to avoid - making the subhurd use the same hd0 drive as the host - braunr: nice idea :) - - ## Booting If you are using a recent version of the Hurd (>= 0.9), then you can -- cgit v1.2.3 From c4275e65811deeeb9a6b645f2e616fa8645af4cd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 4 Sep 2017 08:44:49 +0200 Subject: mention the mach branch names --- faq/64-bit.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/64-bit.mdwn b/faq/64-bit.mdwn index 1c75e1dc..08cbd985 100644 --- a/faq/64-bit.mdwn +++ b/faq/64-bit.mdwn @@ -15,7 +15,7 @@ License|/fdl]]."]]"""]] There are currently no plan for 64-bit userland, but there are plans for 64-bit kernelland with 32-bit userland, which will notably permit to efficiently make use of more than 2 GiB memory and provide 4 GiB userland addressing space. -Work on this is currently in branches for GNU Mach. +Work on this is currently in the master-x86_64 and port-amd64 branches for GNU Mach. That being said, you can always run a 32-bit version on a 64-bit machine, it just works, processes are just limited to a couple GiB available memory. -- cgit v1.2.3 From 6bb2027b7894ee4c386610a32dba937bae2555af Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 22 Oct 2017 20:57:26 +0200 Subject: qt-at-spi poses problem too --- open_issues/problematic_packages.mdwn | 1 + 1 file changed, 1 insertion(+) diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn index 1ce81c66..b6051f6a 100644 --- a/open_issues/problematic_packages.mdwn +++ b/open_issues/problematic_packages.mdwn @@ -20,6 +20,7 @@ This page lists the few packages whose build makes the Debian buildd box crash a * ruby-hiredis * subversion testsuite * socket-wrapper + * qt-at-spi * breaks cron -- cgit v1.2.3 From 6209e44f1ec639953c63ac1e4f410ae7f9395f09 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 4 Dec 2017 02:12:23 +0100 Subject: No login common issue --- faq/no_login.mdwn | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 faq/no_login.mdwn diff --git a/faq/no_login.mdwn b/faq/no_login.mdwn new file mode 100644 index 00000000..bdb940e9 --- /dev/null +++ b/faq/no_login.mdwn @@ -0,0 +1,21 @@ +[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no 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="help, I can't even log in"]] + +If logging in doesn't work, e.g. you enter a username, and it doesn't even +prompt for a password, but directly say "Invalid password", you probably have +some translators which got deconfigured for some reason. You can try to reboot in emergency mode, and run + + dpkg-reconfigure hurd + +to reinstall translators. -- cgit v1.2.3 From be148a809bc03e02431fe192a93b2a6ea62c2984 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 24 Jan 2018 02:04:22 +0100 Subject: notes about cross-building glibc easily --- hurd/glibc.mdwn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn index 39bfed62..1389afa1 100644 --- a/hurd/glibc.mdwn +++ b/hurd/glibc.mdwn @@ -17,3 +17,19 @@ For information about how the glibc integrates into the system, see sections [[Hurd-specific_API]]. [[Debugging_glibc|debugging/glibc]]. + +## Cross-building glibc from Linux. + +The long-term goal is to get build-many-glibcs.py to be able to cross-compile +glibc. This should be working as per the following: + + mkdir -p /tmp/build/src + cp -a /usr/src/glibc /tmp/build/src/ + unset CFLAGS + /tmp/build/src/glibc/scripts/build-many-glibcs.py /tmp/build checkout binutils-2.29 gcc-7.1.0 + /tmp/build/src/glibc/scripts/build-many-glibcs.py /tmp/build host-libraries + /tmp/build/src/glibc/scripts/build-many-glibcs.py /tmp/build compilers i686-gnu + /tmp/build/src/glibc/scripts/build-many-glibcs.py /tmp/build glibcs i686-gnu + +Ideally the master branch builds that way. As of January 2018 the goal is first +to get the sthibaul/hurd-builds branch building. -- cgit v1.2.3 From 693e1b8b4e2e56cfc8a85998738f9b5fc4b1f96d Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 3 Feb 2018 15:52:51 +0100 Subject: /proc/self is done --- contributing.mdwn | 3 --- 1 file changed, 3 deletions(-) diff --git a/contributing.mdwn b/contributing.mdwn index 8eb2db90..e303dd58 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -103,9 +103,6 @@ part:1:file:/home/samy/tmp/foo`). This would be libnetfs-based. * Write [[virtio drivers for KVM|open_issues/virtio#KVM]]. * 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]]. -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 * Improve our [[FUSE library|hurd/libfuse]]. * Add a relatime or lazytime option to ext2fs. -- cgit v1.2.3 From 6ecd152e7e262fd9511e3f739a6305e3050ebf0f Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 16 Mar 2018 23:49:14 +0100 Subject: document the libc startup dance --- glibc/startup.mdwn | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/glibc/startup.mdwn b/glibc/startup.mdwn index ac7cdde6..9e1137f5 100644 --- a/glibc/startup.mdwn +++ b/glibc/startup.mdwn @@ -21,6 +21,44 @@ is quite hairy on GNU Hurd systems. * [[!message-id "871xc9qv6y.wl@ulysses.g10code.de"]] +# How libc startup in a process works + +## Statically-linked program + + * The ELF headers points program start at `_start`. + * `_start` (sysdeps/mach/hurd/i386/static-start.S) calls `_hurd_stack_setup` + * `_hurd_stack_setup` (sysdeps/mach/hurd/i386/init-first.c) calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. + * `_hurd_stack_setup` (sysdeps/mach/hurd/i386/init-first.c) calls `_hurd_startup`. + * `_hurd_startup` (hurd/hurdstartup.c) gets hurdish information from servers and calls its `main` parameter. + * the `main` parameter was actually `doinit`, which mangles the stack and calls `doinit1` which calls `init`. + * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. + * `init1` checks the new stack, calls `_hurd_init` (hurd/hurdinit.c) + * `_hurd_init` initializes initial ports, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * We are back to `_start`, which jumps to `_start1` which is the normal libc startup which calls `__libc_start_main` + * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit, an initialization function given as parameter, then calls application's `main`, then `exit`. + +## dynamically-linked program + + * dl.so ELF headers point its start at `_start`. + * `_start` (sysdeps/i386/dl-machine.h) calls `_dl_start`. + * `_dl_start` (elf/rtld.c) initializes `bootstrap_map`, calls `_dl_start_final` + * `_dl_start_final` calls `_dl_sysdep_start`. + * `_dl_sysdep_start` calls `__mach_init` to initialize enough to run RPCs, then calls `_hurd_startup`. + * `_hurd_startup` (hurd/hurdstartup.c) gets hurdish information from servers and calls its `main` parameter. + * the `main` parameter was actually `go`, which calls `dl_main`. + * `dl_main` (elf/rtld.c) interprets ld.so parameters, loads the binary and libraries, calls `_dl_allocate_tls_init`. + * we are back to `go`, which branches to `_dl_start_user`. + * `_dl_start_user` (./sysdeps/i386/dl-machine.h) runs `RTLD_START_SPECIAL_INIT` (sysdeps/mach/hurd/i386/dl-machine.h) which calls `_dl_init_first`. + * `_dl_init_first` calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. + * `_dl_init_first` calls `init`. + * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. + * `init1` checks the new stack, calls `_hurd_init` (hurd/hurdinit.c) + * `_hurd_init` initializes initial ports, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * we are back to `_dl_start_user`, which calls `_dl_init` (elf/dl-init.c) which calls application initializers. + * `_dl_start_user` jumps to the application's entry point, `_start` + * `_start` (sysdeps/i386/start.S) calls `__libc_start_main` + * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit, an initialization function given as parameter, then calls application's `main`, then `exit`. + # IRC, freenode, #hurd, 2013-12-31 braunr: btw, after patching glibc and trying installing it, do you -- cgit v1.2.3 From 9fb5b9c57cbc8420a1207574c4d969d90794fb7b Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 17 Mar 2018 00:40:51 +0100 Subject: add initialization details --- glibc/startup.mdwn | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/glibc/startup.mdwn b/glibc/startup.mdwn index 9e1137f5..0fe15b3b 100644 --- a/glibc/startup.mdwn +++ b/glibc/startup.mdwn @@ -35,7 +35,13 @@ is quite hairy on GNU Hurd systems. * `init1` checks the new stack, calls `_hurd_init` (hurd/hurdinit.c) * `_hurd_init` initializes initial ports, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). * We are back to `_start`, which jumps to `_start1` which is the normal libc startup which calls `__libc_start_main` - * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit, an initialization function given as parameter, then calls application's `main`, then `exit`. + * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit + * `__libc_start_main` calls initialization function given as parameter `__libc_csu_init`, + * `__libc_csu_init` (csu/elf-init.c) calls `preinit_array_start` functions + * `__libc_csu_init` calls `_init` + * `_init` (sysdeps/i386/crti.S) calls `PREINIT_FUNCTION`, (actually libpthread on Linux, `__gmon_start__` on hurd) + * back to `__libc_csu_init` (csu/elf-init.c) calls `init_array_start` functions + * back to `__libc_start_main`, it calls calls application's `main`, then `exit`. ## dynamically-linked program @@ -57,7 +63,12 @@ is quite hairy on GNU Hurd systems. * we are back to `_dl_start_user`, which calls `_dl_init` (elf/dl-init.c) which calls application initializers. * `_dl_start_user` jumps to the application's entry point, `_start` * `_start` (sysdeps/i386/start.S) calls `__libc_start_main` - * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit, an initialization function given as parameter, then calls application's `main`, then `exit`. + * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, atexit, + * `__libc_start_main` calls initialization function given as parameter `__libc_csu_init`, + * `__libc_csu_init` calls `_init` + * `_init` (sysdeps/i386/crti.S) calls `PREINIT_FUNCTION`, (actually libpthread on Linux, `__gmon_start__` on hurd) + * back to `__libc_csu_init` (csu/elf-init.c) calls `init_array_start` functions + * back to `__libc_start_main`, it calls application's `main`, then `exit`. # IRC, freenode, #hurd, 2013-12-31 -- cgit v1.2.3 From 8026152efb84ec1ef45f0023ebff69654b92dadd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 17 Mar 2018 01:35:16 +0100 Subject: Note where the signals thread is created --- glibc/startup.mdwn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/glibc/startup.mdwn b/glibc/startup.mdwn index 0fe15b3b..67d66c1b 100644 --- a/glibc/startup.mdwn +++ b/glibc/startup.mdwn @@ -32,8 +32,8 @@ is quite hairy on GNU Hurd systems. * `_hurd_startup` (hurd/hurdstartup.c) gets hurdish information from servers and calls its `main` parameter. * the `main` parameter was actually `doinit`, which mangles the stack and calls `doinit1` which calls `init`. * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. - * `init1` checks the new stack, calls `_hurd_init` (hurd/hurdinit.c) - * `_hurd_init` initializes initial ports, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * `init1` gets the Hurd block, calls `_hurd_init` (hurd/hurdinit.c) on it + * `_hurd_init` initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). * We are back to `_start`, which jumps to `_start1` which is the normal libc startup which calls `__libc_start_main` * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit * `__libc_start_main` calls initialization function given as parameter `__libc_csu_init`, @@ -56,10 +56,10 @@ is quite hairy on GNU Hurd systems. * we are back to `go`, which branches to `_dl_start_user`. * `_dl_start_user` (./sysdeps/i386/dl-machine.h) runs `RTLD_START_SPECIAL_INIT` (sysdeps/mach/hurd/i386/dl-machine.h) which calls `_dl_init_first`. * `_dl_init_first` calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. - * `_dl_init_first` calls `init`. + * `_dl_init_first` (sysdeps/mach/hurd/i386/init-first.c) calls `init`. * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. - * `init1` checks the new stack, calls `_hurd_init` (hurd/hurdinit.c) - * `_hurd_init` initializes initial ports, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * `init1` gets the Hurd block, calls `_hurd_init` (hurd/hurdinit.c) on it + * `_hurd_init` initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). * we are back to `_dl_start_user`, which calls `_dl_init` (elf/dl-init.c) which calls application initializers. * `_dl_start_user` jumps to the application's entry point, `_start` * `_start` (sysdeps/i386/start.S) calls `__libc_start_main` -- cgit v1.2.3 From 96dba7ef358153dd1a608ab45f52226d08d62e3c Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 21 Apr 2018 13:17:29 +0200 Subject: rearrange filenames --- glibc/startup.mdwn | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/glibc/startup.mdwn b/glibc/startup.mdwn index 67d66c1b..7c3f3d5a 100644 --- a/glibc/startup.mdwn +++ b/glibc/startup.mdwn @@ -30,17 +30,17 @@ is quite hairy on GNU Hurd systems. * `_hurd_stack_setup` (sysdeps/mach/hurd/i386/init-first.c) calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. * `_hurd_stack_setup` (sysdeps/mach/hurd/i386/init-first.c) calls `_hurd_startup`. * `_hurd_startup` (hurd/hurdstartup.c) gets hurdish information from servers and calls its `main` parameter. - * the `main` parameter was actually `doinit`, which mangles the stack and calls `doinit1` which calls `init`. + * the `main` parameter was actually `doinit` (in sysdeps/mach/hurd/i386/init-first.c), which mangles the stack and calls `doinit1` which calls `init`. * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. - * `init1` gets the Hurd block, calls `_hurd_init` (hurd/hurdinit.c) on it - * `_hurd_init` initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * `init1` gets the Hurd block, calls `_hurd_init` on it + * `_hurd_init` (hurd/hurdinit.c) initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). * We are back to `_start`, which jumps to `_start1` which is the normal libc startup which calls `__libc_start_main` * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, tls, libpthread, atexit * `__libc_start_main` calls initialization function given as parameter `__libc_csu_init`, * `__libc_csu_init` (csu/elf-init.c) calls `preinit_array_start` functions * `__libc_csu_init` calls `_init` * `_init` (sysdeps/i386/crti.S) calls `PREINIT_FUNCTION`, (actually libpthread on Linux, `__gmon_start__` on hurd) - * back to `__libc_csu_init` (csu/elf-init.c) calls `init_array_start` functions + * back to `__libc_csu_init` calls `init_array_start` functions * back to `__libc_start_main`, it calls calls application's `main`, then `exit`. ## dynamically-linked program @@ -49,25 +49,25 @@ is quite hairy on GNU Hurd systems. * `_start` (sysdeps/i386/dl-machine.h) calls `_dl_start`. * `_dl_start` (elf/rtld.c) initializes `bootstrap_map`, calls `_dl_start_final` * `_dl_start_final` calls `_dl_sysdep_start`. - * `_dl_sysdep_start` calls `__mach_init` to initialize enough to run RPCs, then calls `_hurd_startup`. + * `_dl_sysdep_start` (sysdeps/mach/hurd/dl-sysdep.c) calls `__mach_init` to initialize enough to run RPCs, then calls `_hurd_startup`. * `_hurd_startup` (hurd/hurdstartup.c) gets hurdish information from servers and calls its `main` parameter. - * the `main` parameter was actually `go`, which calls `dl_main`. + * the `main` parameter was actually `go` inside `_dl_sysdep_start`, which calls `dl_main`. * `dl_main` (elf/rtld.c) interprets ld.so parameters, loads the binary and libraries, calls `_dl_allocate_tls_init`. * we are back to `go`, which branches to `_dl_start_user`. * `_dl_start_user` (./sysdeps/i386/dl-machine.h) runs `RTLD_START_SPECIAL_INIT` (sysdeps/mach/hurd/i386/dl-machine.h) which calls `_dl_init_first`. - * `_dl_init_first` calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. - * `_dl_init_first` (sysdeps/mach/hurd/i386/init-first.c) calls `init`. + * `_dl_init_first` (sysdeps/mach/hurd/i386/init-first.c) calls `first_init` which calls `__mach_init` to initialize enough to run RPCs, then runs the `_hurd_preinit_hook` hooks, which initialize global variables of libc. + * `_dl_init_first` calls `init`. * `init` sets threadvars, tries to initialize threads (and perhaps switches to the new stack) and gets to call `init1`. - * `init1` gets the Hurd block, calls `_hurd_init` (hurd/hurdinit.c) on it - * `_hurd_init` initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). + * `init1` gets the Hurd block, calls `_hurd_init` on it + * `_hurd_init` (hurd/hurdinit.c) initializes initial ports, starts the signal thread, runs the `_hurd_subinit` hooks (`init_dtable` hurd/dtable.c notably initializes the FD table and the `_hurd_fd_subinit` hooks, which notably checks `std*`). * we are back to `_dl_start_user`, which calls `_dl_init` (elf/dl-init.c) which calls application initializers. * `_dl_start_user` jumps to the application's entry point, `_start` * `_start` (sysdeps/i386/start.S) calls `__libc_start_main` * `__libc_start_main` (actually called `LIBC_START_MAIN` in csu/libc-start.c) initializes libc, atexit, * `__libc_start_main` calls initialization function given as parameter `__libc_csu_init`, - * `__libc_csu_init` calls `_init` + * `__libc_csu_init` (csu/elf-init.c) calls `_init` * `_init` (sysdeps/i386/crti.S) calls `PREINIT_FUNCTION`, (actually libpthread on Linux, `__gmon_start__` on hurd) - * back to `__libc_csu_init` (csu/elf-init.c) calls `init_array_start` functions + * back to `__libc_csu_init` calls `init_array_start` functions * back to `__libc_start_main`, it calls application's `main`, then `exit`. # IRC, freenode, #hurd, 2013-12-31 -- cgit v1.2.3