diff options
Diffstat (limited to 'microkernel/mach/gnumach')
-rw-r--r-- | microkernel/mach/gnumach/building.mdwn | 98 | ||||
-rw-r--r-- | microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn | 61 | ||||
-rw-r--r-- | microkernel/mach/gnumach/hardwarecompatibilitylist/discussion.mdwn | 4 | ||||
-rw-r--r-- | microkernel/mach/gnumach/ports.mdwn | 18 | ||||
-rw-r--r-- | microkernel/mach/gnumach/revivalproject.mdwn | 51 |
5 files changed, 232 insertions, 0 deletions
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn new file mode 100644 index 00000000..a85490e2 --- /dev/null +++ b/microkernel/mach/gnumach/building.mdwn @@ -0,0 +1,98 @@ +# <a name="Building_GNUMach_GNU_Mach_from_S"> </a> Building [[GNUMach]] from Source + +If you want to build the [[GNUMach]] kernel yourself instead of just using a pre-built binary, follow these instructions. + +The unpacked source tree is around 20 MiB, and the build tree (with all drivers enabled) is around 50 MiB. + +## <a name="Getting_the_Source_Code"> Getting the Source Code </a> + +### <a name="Developers_s_rcs"> Developers's rcs </a> + +See [here](http://www.gnu.org/software/hurd/gnumach-download.html#cvs). + + $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r gnumach-1-branch gnumach + +(Most probably you want to get hold of the _GNU Mach 1 branch_ and not the trunk, which is also what we've done above.) + +You then have to create the automatically generatable files: + + $ ( cd gnumach && autoreconf --install ) + +### <a name="What_Debian_is_currently_using"> What Debian is currently using </a> + +See [here](http://packages.debian.net/source/unstable/gnumach). + + $ apt-get source gnumach + +Please see [[Distrib/DebianFAQ]] before using _apt-get source_. + +## <a name="Preparing_for_the_Build"> Preparing for the Build </a> + +### <a name="_on_Debian_systems"> ... on Debian systems </a> + +Building GNU Mach requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source gnumach package: + + # apt-get install build-essential fakeroot + # apt-get build-dep gnumach + +### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a> + +Apart from the case that you only want to install GNU Mach's header files (see below), building GNU Mach requires you to have the Mach Interface Generator installed. See [[building_MIG|mig/Building]] about how to do that, then come back here. + +Additionally, building GNU Mach requires a C compiler, a standard C library and your favourite flavor of awk (gawk) and GNU make. + +## <a name="Building_and_Installing"> Building and Installing </a> + +### <a name="_Debian_deb_files"> ... Debian _.deb_ files </a> + +Change into the directory with the downloaded / unpacked _gnumach_ sources, e.g. + + $ cd gnumach-20050801 + +Start the build process with + + $ dpkg-buildpackage -us -uc -b -rfakeroot + +[[GNUMach]] is now building. To use the new kernel, you must install the resulting _.deb_ package which is located one directory above the build directory and has a similar name as the build directory, e.g. + + # dpkg -i ../gnumach_20050801-4_hurd-i386.deb + +You can now reboot your computer and enjoy the new kernel. + +### <a name="_TODO_"> [TODO] </a> + +GNU Mach should be built in a separate directory: + + $ mkdir gnumach-build + $ cd gnumach-build + +Find the path to your GNU Mach sources (_[...]/gnumach-1-branch_) and configure it: + + $ [...]/gnumach-1-branch/configure [TODO] + +Build the kernel image: + + $ make gnumach.gz + +Optionally run the (tiny) test suite: + + $ make check + +You can then install and use _gnumach.gz_. + +[TODO.] + +### <a name="Installing_only_the_Header_Files"> Installing only the Header Files </a> + +GNU Mach should be built in a separate directory: + + $ mkdir gnumach-build + $ cd gnumach-build + +Find the path to your GNU Mach sources (_[...]/gnumach-1-branch_) and configure it: + + $ [...]/gnumach-1-branch/configure --prefix= + +Install the header files into e.g. _~/gnu/include/_: + + $ make DESTDIR=~/gnu install-data diff --git a/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn b/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn new file mode 100644 index 00000000..c3f59af1 --- /dev/null +++ b/microkernel/mach/gnumach/hardwarecompatibilitylist.mdwn @@ -0,0 +1,61 @@ +[[license text=""" +Copyright © 2007 Free Software Foundation, Inc. + +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.txt]]. + +By contributing to this page, you agree to assign copyright for your +contribution to the Free Software Foundation. The Free Software Foundation +promises to always use either a verbatim copying license or a free +documentation license when publishing your contribution. We grant you back all +your rights under copyright, including the rights to copy, modify, and +redistribute your contributions. +"""]] + +# CPU Architecture + +GNU Mach current only supports the `x86` architecture. `amd64` should -- in +theory -- as well work fine in `32-bit` compatibility mode, however in practice +there are problems with the chipsets used for such processors, so that booting +on such a system won't succeed. + +Support for running GNU Mach (and a complete GNU/Hurd system) in a +[Xen](http://www.cl.cam.ac.uk/research/srg/netos/xen/) `domU` (again on `x86` +only) is [[being_worked_on|Hurd/xen]]. + +# Memory + +GNU Mach will use a maximum of 1 GiB of RAM. If your system has more, +the surplus will silently be ignored. (In past times, this would hinder GNU +Mach from booting at all, but this has been fixed, so you no longer need to +apply GRUB's `uppermem` directive.) + +# Video Cards + +Debian distributes a version of [X.org](http://x.org/). If your video card driver +depends on a special kernel interface such as that provided by +the `agpgart` kernel module for the Linux kernel, then your video +card will only be supported by the VESA driver. + +# Sound + +No sound cards are supported at this time. + +# USB + +USB is not support at this time. + +# Storage + +IDE drives are known to work. +SATA drives work in compatibility mode. <!-- Sure? --[[tschwinge]] --> + +# Device Drivers + +[GNU Mach Reference Manual, +Configuration](http://www.gnu.org/software/hurd/gnumach-doc/Configuration.html) +contains a list of device drivers that are included in GNU Mach and elaborates +on the hardware devices they support. diff --git a/microkernel/mach/gnumach/hardwarecompatibilitylist/discussion.mdwn b/microkernel/mach/gnumach/hardwarecompatibilitylist/discussion.mdwn new file mode 100644 index 00000000..69ca3190 --- /dev/null +++ b/microkernel/mach/gnumach/hardwarecompatibilitylist/discussion.mdwn @@ -0,0 +1,4 @@ +Further information may still be found on +<http://www.nongnu.org/thug/gnumach_hardware.html> +and could perhaps be incorporated into that page. +--[[tschwinge]] diff --git a/microkernel/mach/gnumach/ports.mdwn b/microkernel/mach/gnumach/ports.mdwn new file mode 100644 index 00000000..9c9e5515 --- /dev/null +++ b/microkernel/mach/gnumach/ports.mdwn @@ -0,0 +1,18 @@ +[[license text=""" +Copyright © 2007 Free Software Foundation, Inc. + +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.txt]]. + +By contributing to this page, you agree to assign copyright for your +contribution to the Free Software Foundation. The Free Software Foundation +promises to always use either a verbatim copying license or a free +documentation license when publishing your contribution. We grant you back all +your rights under copyright, including the rights to copy, modify, and +redistribute your contributions. +"""]] + +* [PowerPC](http://www.pjbruin.dds.nl/hurd/) diff --git a/microkernel/mach/gnumach/revivalproject.mdwn b/microkernel/mach/gnumach/revivalproject.mdwn new file mode 100644 index 00000000..b04b695f --- /dev/null +++ b/microkernel/mach/gnumach/revivalproject.mdwn @@ -0,0 +1,51 @@ +## <a name="GNU_Mach_Revival_Project"> </a> GNU Mach Revival Project + +This page is a place to keep track of all those things that we need to improve in GNU Mach, so that it is a reliable microkernel for The Hurd, both in terms of stability and performance. If you find anything missing here, please feel free to add a entry with a short description. + +If you want to help with any of the task (thanks!), please send a mail to the mailing list <http://www.gnu.org/software/hurd/help.html#TOCmail> stating what task you wish to work on, so that no duplicate efforts end up. + +**_Task List_** + +* Clean up the Code. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (abeaumont)_, _Pedro J. Ruiz Lopez (holzplatten)_, _Matheus Morais (xsun)_, _We need **YOU** here!_) + * Remove all dead files from the GNU Mach source tree. + * Restructure the tree in a sane way. + * Remove dead functions/variables/etc from source files. + * Rewrite ugly code. + +* Update the core architecture and drivers. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (abeaumont)_, _Sergio Lopez (koro)_, _Pedro J. Ruiz Lopez (holzplatten)_, _We need **YOU** here!_) + * Check what NetBSD, FreeBSD and Linux do with their host specific code (i486, PPC, Sparc, ...). And if it might be wise to take that and use it in GNU Mach. There is no need to worry about purely internal API's, but the external ones shouldn't require any major changes. + * Write a list of all functions provided by the host dependant code in GNU Mach that gets used in the non-host specific code (kernel, IPC and VM). + * Once we have decided what the new internal API should look like, make a list of the new API and the old one, and try to make things as compatible as possible, but not at the expense of anything. + +* Implement Migrating Threads. (Assigned to: _Sergio Lopez (koro)_) + * Migrating Threads (MT) could improve IPC performance and making easier the work of the scheduler. For more information, check this <http://www.usenix.org/publications/library/proceedings/sf94/ford.html> + +* Improve the external pagers interface. (Assigned to: _We need **YOU** here!_) + * Making this interface synchronous should improve I/O performance significantly, without (almost) any drawbacks (we also get some advantage from MT's). + * Implement more paging eviction policies, so they fit better with usual behaviour of the pagers. + * Implement resource accounting for external pagers. + +* VM. (Assigned to: _We need **YOU** here!_) + * Put it on user level (?) + * Clean up the mess. + * Provide a fast way to read/write from/to a memory object. + * Simplify/normalise the code. + +* Simplify the IPC Semantics. (Assigned to: _We need **YOU** here!_) + * There are a lot of things in GNU Mach's IPC that we don't need. Track down those things, and get rid of them without requiring many changes in the Hurd (the changes will affect MiG, but that is OK). + +* Temporary mappings for Client-Server memory transfers. (Assigned to: _We need **YOU** here!_) + * Extend Mach's IPC to provide some kind of object which can represent a range of memory that can temporarily be mapped into the servers address space for sending/receiving data. This would allow us to avoid excessive memory copies. + * Find a new way to work with unaligned memory. + +* GDB remote debugging support (Assigned to: _Alfred M. Szmidt (ams)_) + * Implement support for GDB debugging via serial line and/or network. Maybe this can be done together with the host-specific work above. + +**_Wish List_** + +* Interface for userspace non-critical drivers. +* Sound Support ;-) +* WLAN support (ipw2200) with WEP/WPA +* ACPI support + +-- [[Main/SergioLopez]] - 20 Dec 2005 (Corrections by Alfred M. Szmidt) |