diff options
-rw-r--r-- | .templates/autotag.tmpl | 2 | ||||
-rw-r--r-- | community/gsoc/project_ideas.mdwn | 2 | ||||
-rw-r--r-- | community/gsoc/project_ideas/driver_glue_code.mdwn | 11 | ||||
-rw-r--r-- | community/gsoc/project_ideas/physical_memory_management.mdwn | 58 | ||||
-rw-r--r-- | community/gsoc/project_ideas/tcp_ip_stack.mdwn | 3 | ||||
-rw-r--r-- | community/gsoc/project_ideas/xattr.mdwn | 50 | ||||
-rw-r--r-- | config_edittemplate/open_issue_page.mdwn | 2 | ||||
-rw-r--r-- | config_edittemplate/regular_page.mdwn | 2 | ||||
-rw-r--r-- | contributing.mdwn | 9 | ||||
-rw-r--r-- | contributing/web_pages/news/skeleton.mdwn | 2 | ||||
-rw-r--r-- | copyright.mdwn | 2 | ||||
-rw-r--r-- | faq/64-bit.mdwn | 6 | ||||
-rw-r--r-- | faq/no_login.mdwn | 21 | ||||
-rw-r--r-- | glibc/startup.mdwn | 51 | ||||
-rw-r--r-- | hurd/glibc.mdwn | 21 | ||||
-rw-r--r-- | hurd/subhurd.mdwn | 65 | ||||
-rw-r--r-- | open_issues/64-bit_port.mdwn | 19 | ||||
-rw-r--r-- | open_issues/problematic_packages.mdwn | 3 | ||||
-rw-r--r-- | user/danialbehzadi.mdwn | 13 |
19 files changed, 291 insertions, 51 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 714f37da..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, 2018 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 diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn b/community/gsoc/project_ideas/driver_glue_code.mdwn index c1850d21..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,7 +27,7 @@ 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 the Rump kernel: +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. @@ -69,8 +69,3 @@ such as memory management for example. Possible mentors: Justus Winter (teythoon), Samuel Thibault (youpi) Exercise: Install and run the current rumpkernel library (librump0) and the corresponding mplayer, get it to run. - ---- - - -# 2016-02-14, Justus Winter diff --git a/community/gsoc/project_ideas/physical_memory_management.mdwn b/community/gsoc/project_ideas/physical_memory_management.mdwn new file mode 100644 index 00000000..af360507 --- /dev/null +++ b/community/gsoc/project_ideas/physical_memory_management.mdwn @@ -0,0 +1,58 @@ +[[!meta copyright="Copyright © 2015, 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 +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-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"]] + +[[!template id=highlight text="""/!\ Obsolete /!\ + +--- + +This is no longer valid as a Google Summer of Code project; it was basically +done by Richard."""]] + + +GNU Mach is currently suffering from severe limitations caused by the way +it manages physical memory. For example, since it requires pages to be mapped +in kernel space in order to be used, the maximum amount of usable physical +memory is currently around 800MB (or 1.8GB if a 2/2 split is set). And +because the page allocator is unable to easily return blocks of contiguous +pages, the kernel has to use virtual memory to provide contiguity. +But the kernel virtual space is separate from the direct mapping of +physical memory, so the larger it is, the less physical pages available. +The size of the kernel space is currently around 200MB, with around 100MB +for kernel objects. This small size prevents the system from achieving +scalability, since a panic occurs when the kernel is unable to allocate +a kernel object such as a port. In addition, the kernel uses mainly tables +to store IPC rights. When a table is full, it is enlarged through a kernel +specific version of realloc(). When a file system starts managing many +files (e.g. because some of their content is cached in physical memory), +these tables can get big enough to make realloc() fail because of +fragmentation. + +The goal of this project is to make as much physical memory available as +possible for both the kernel and applications, by rewriting the page +allocator into a buddy allocator to support contiguous block allocations, +using it directly instead of virtual memory as the backend of the slab +allocator for kernel objects, and, if time allows it, transform IPC right +tables (e.g. into radix trees) and get rid of realloc(). + +This project requires a good understanding of virtual memory (both physical +mappings at the MMU level and virtual mappings at the VM level), and strong +skills in C programming. Note that some work has already been done in the +X15 project about this, and can be reused as a reference. + +Useful links : + + * <https://www.sceen.net/mapping-physical-memory-directly/> + + * <http://git.sceen.net/rbraun/x15.git/> + + * <https://git.sceen.net/rbraun/librbraun.git/plain/rdxtree.h> diff --git a/community/gsoc/project_ideas/tcp_ip_stack.mdwn b/community/gsoc/project_ideas/tcp_ip_stack.mdwn index 6410dee0..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 diff --git a/community/gsoc/project_ideas/xattr.mdwn b/community/gsoc/project_ideas/xattr.mdwn new file mode 100644 index 00000000..f35498fe --- /dev/null +++ b/community/gsoc/project_ideas/xattr.mdwn @@ -0,0 +1,50 @@ +[[!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 +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-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"]] + +[[!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. + +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. 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 |