summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.templates/autotag.tmpl2
-rw-r--r--community/gsoc/project_ideas.mdwn6
-rw-r--r--community/gsoc/project_ideas/driver_glue_code.mdwn36
-rw-r--r--community/gsoc/project_ideas/dtrace.mdwn11
-rw-r--r--community/gsoc/project_ideas/file_locking.mdwn13
-rw-r--r--community/gsoc/project_ideas/sound.mdwn12
-rw-r--r--community/gsoc/project_ideas/tcp_ip_stack.mdwn5
-rw-r--r--community/gsoc/project_ideas/xattr.mdwn15
-rw-r--r--config_edittemplate/open_issue_page.mdwn2
-rw-r--r--config_edittemplate/regular_page.mdwn2
-rw-r--r--contributing.mdwn9
-rw-r--r--contributing/web_pages/news/skeleton.mdwn2
-rw-r--r--copyright.mdwn2
-rw-r--r--faq/64-bit.mdwn6
-rw-r--r--faq/no_login.mdwn21
-rw-r--r--glibc/startup.mdwn51
-rw-r--r--hurd/glibc.mdwn21
-rw-r--r--hurd/subhurd.mdwn65
-rw-r--r--open_issues/64-bit_port.mdwn19
-rw-r--r--open_issues/problematic_packages.mdwn3
-rw-r--r--user/danialbehzadi.mdwn13
21 files changed, 229 insertions, 87 deletions
diff --git a/.templates/autotag.tmpl b/.templates/autotag.tmpl
index 4f8d1bcf..d0a58f93 100644
--- a/.templates/autotag.tmpl
+++ b/.templates/autotag.tmpl
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
diff --git a/community/gsoc/project_ideas.mdwn b/community/gsoc/project_ideas.mdwn
index 4993b01f..6475b9a5 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, 2015,
-2016 Free Software Foundation, Inc."]]
+2016, 2017, 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -100,14 +100,11 @@ 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
community/gsoc/project_ideas/gdb
community/gsoc/project_ideas/tcp_ip_stack
community/gsoc/project_ideas/nfs
- community/gsoc/project_ideas/sound
community/gsoc/project_ideas/disk_io_performance
community/gsoc/project_ideas/gnumach_cleanup
community/gsoc/project_ideas/xmlfs
@@ -124,7 +121,6 @@ project_ideas:
community/gsoc/project_ideas/testing_framework
community/gsoc/project_ideas/libcap
community/gsoc/project_ideas/valgrind
- community/gsoc/project_ideas/dtrace
community/gsoc/project_ideas/libdiskfs_locking"
"""]]
diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn
index 0f921590..1771756e 100644
--- a/community/gsoc/project_ideas/driver_glue_code.mdwn
+++ b/community/gsoc/project_ideas/driver_glue_code.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2016 Free Software
-Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2011, 2016, 2017, 2018 Free
+Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -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.
<!-- should probably provide separate task descriptions for each... -->
@@ -69,13 +68,4 @@ 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...)
-
----
-
-
-# 2016-02-14, Justus Winter
-
-`s/dde/rump/g` of course.
+Exercise: Install and run the current rumpkernel library (librump0) and the corresponding mplayer, get it to run.
diff --git a/community/gsoc/project_ideas/dtrace.mdwn b/community/gsoc/project_ideas/dtrace.mdwn
index 6261c03e..f7aeb6e8 100644
--- a/community/gsoc/project_ideas/dtrace.mdwn
+++ b/community/gsoc/project_ideas/dtrace.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2008, 2009, 2011 Free Software Foundation,
+[[!meta copyright="Copyright © 2008, 2009, 2011, 2018 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -13,6 +13,13 @@ License|/fdl]]."]]"""]]
[[!tag open_issue_gnumach]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
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
@@ -57,6 +64,4 @@ the student will have to get familiar with GNU Mach.
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
index ebb322f1..a368a7a8 100644
--- a/community/gsoc/project_ideas/file_locking.mdwn
+++ b/community/gsoc/project_ideas/file_locking.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2012, 2014 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2012, 2014, 2018 Free Software
+Foundation, 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,6 +11,13 @@ License|/fdl]]."]]"""]]
[[!meta title="Fix and Complete File Locking Support"]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
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.
@@ -26,8 +33,6 @@ 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.
diff --git a/community/gsoc/project_ideas/sound.mdwn b/community/gsoc/project_ideas/sound.mdwn
index 8411831b..1a33ae2c 100644
--- a/community/gsoc/project_ideas/sound.mdwn
+++ b/community/gsoc/project_ideas/sound.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2018 Free Software Foundation,
+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,6 +11,13 @@ is included in the section entitled
[[!meta title="Sound Support"]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project."""]]
+
+
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
@@ -31,8 +39,6 @@ to come up with an appropriate design.
Another option would be to evaluate whether a driver that is completely running
in user-space is feasible. <!-- TODO. Elaborate. -->
-Possible mentors: Samuel Thibault (youpi)
-
Exercise: This project requires kernel (driver framework) hacking as well as
some Hurd server hacking; so the exercise should involve either of these, or
even both. You could for example port some newer driver to run in the existing
diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
index 331336ac..f86dcf72 100644
--- a/community/gsoc/project_ideas/tcp_ip_stack.mdwn
+++ b/community/gsoc/project_ideas/tcp_ip_stack.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2017 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -34,7 +35,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
diff --git a/community/gsoc/project_ideas/xattr.mdwn b/community/gsoc/project_ideas/xattr.mdwn
index 8e1a532b..f35498fe 100644
--- a/community/gsoc/project_ideas/xattr.mdwn
+++ b/community/gsoc/project_ideas/xattr.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2009, 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2009, 2016, 2018 Free Software Foundation,
+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,6 +11,13 @@ is included in the section entitled
[[!meta title="Implement xattr Support"]]
+[[!template id=highlight text="""/!\ Obsolete /!\
+
+---
+
+This is no longer valid as a Google Summer of Code project; it's done."""]]
+
+
Extended attributes (xattr) are a standardized, generic method for storing
additional metadata along with a file (inode). Most modern UNIX filesystems
support xattrs.
@@ -40,8 +48,3 @@ 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.
diff --git a/config_edittemplate/open_issue_page.mdwn b/config_edittemplate/open_issue_page.mdwn
index 5bcdcaec..e7574c0c 100644
--- a/config_edittemplate/open_issue_page.mdwn
+++ b/config_edittemplate/open_issue_page.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
diff --git a/config_edittemplate/regular_page.mdwn b/config_edittemplate/regular_page.mdwn
index d65945d2..dcbe6b71 100644
--- a/config_edittemplate/regular_page.mdwn
+++ b/config_edittemplate/regular_page.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
diff --git a/contributing.mdwn b/contributing.mdwn
index 222291c0..9736e18d 100644
--- a/contributing.mdwn
+++ b/contributing.mdwn
@@ -1,5 +1,5 @@
[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
-2014, 2015, 2016 Free Software Foundation, Inc."]]
+2014, 2015, 2016, 2017, 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -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 <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.
@@ -181,14 +178,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.
diff --git a/contributing/web_pages/news/skeleton.mdwn b/contributing/web_pages/news/skeleton.mdwn
index 4f1a37dd..529509a9 100644
--- a/contributing/web_pages/news/skeleton.mdwn
+++ b/contributing/web_pages/news/skeleton.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2018 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
diff --git a/copyright.mdwn b/copyright.mdwn
index c1fb70c9..39854057 100644
--- a/copyright.mdwn
+++ b/copyright.mdwn
@@ -1,2 +1,2 @@
Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-2013, 2014, 2015, 2016 The Contributing Authors
+2013, 2014, 2015, 2016, 2017, 2018 The Contributing Authors
diff --git a/faq/64-bit.mdwn b/faq/64-bit.mdwn
index 1c75e1dc..1da375ba 100644
--- a/faq/64-bit.mdwn
+++ b/faq/64-bit.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2013, 2016 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2013, 2016, 2017, 2018 Free Software Foundation,
+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 +16,8 @@ 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|open_issues/64-bit_port]] 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.
diff --git a/faq/no_login.mdwn b/faq/no_login.mdwn
new file mode 100644
index 00000000..330652c8
--- /dev/null
+++ b/faq/no_login.mdwn
@@ -0,0 +1,21 @@
+[[!meta copyright="Copyright © 2017, 2018 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no 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.
diff --git a/glibc/startup.mdwn b/glibc/startup.mdwn
index ac7cdde6..9a7a3de2 100644
--- a/glibc/startup.mdwn
+++ b/glibc/startup.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2011, 2014, 2016 Free Software Foundation,
+[[!meta copyright="Copyright © 2011, 2014, 2016, 2018 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -21,6 +21,55 @@ 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` (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` 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` calls `init_array_start` functions
+ * back to `__libc_start_main`, it calls 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` (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` 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` (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` 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` (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` calls `init_array_start` functions
+ * back to `__libc_start_main`, it calls application's `main`, then `exit`.
+
# IRC, freenode, #hurd, 2013-12-31
<youpi> braunr: btw, after patching glibc and trying installing it, do you
diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn
index 39bfed62..271c0c6d 100644
--- a/hurd/glibc.mdwn
+++ b/hurd/glibc.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2018 Free Software
+Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -17,3 +17,20 @@ For information about how the glibc integrates into the system, see sections
[[Hurd-specific_API]].
[[Debugging_glibc|debugging/glibc]].
+
+
+# Cross-building
+
+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.
diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn
index 7b6cad67..df640565 100644
--- a/hurd/subhurd.mdwn
+++ b/hurd/subhurd.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2013, 2014, 2016 Free
-Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2013, 2014, 2016, 2017
+Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -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
-
- <gnu_srs> Never dared to try a subhurd, any link to the howto?
- <teythoon> 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
- <teythoon> gnu_srs: and you need a separate filesystem translator (i.e. not
- /) for that
- <teythoon> the easiest way is to add another virtual disk to you qemu setup
- <braunr> use the qemu image directly
- <braunr> simplest way to set up a subhurd
- <braunr> just change fstab from the host before the first boot to avoid
- making the subhurd use the same hd0 drive as the host
- <teythoon> braunr: nice idea :)
-
-
## Booting
If you are using a recent version of the Hurd (>= 0.9), then you can
diff --git a/open_issues/64-bit_port.mdwn b/open_issues/64-bit_port.mdwn
index 74758085..8658f1b7 100644
--- a/open_issues/64-bit_port.mdwn
+++ b/open_issues/64-bit_port.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2016 Free Software
+[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2016, 2017 Free Software
Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -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
<youpi> it'd be really good to have a 64bit kernel, no need to care about
diff --git a/open_issues/problematic_packages.mdwn b/open_issues/problematic_packages.mdwn
index 1ce81c66..8fe06495 100644
--- a/open_issues/problematic_packages.mdwn
+++ b/open_issues/problematic_packages.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2014, 2015, 2016 Free Software Foundation,
+[[!meta copyright="Copyright © 2014, 2015, 2016, 2017 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -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
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: <dani.behzi@ubuntucom>
+* Country: Iran