diff options
68 files changed, 1313 insertions, 895 deletions
diff --git a/Distrib.mdwn b/Distrib.mdwn index d2797d8d..1300a850 100644 --- a/Distrib.mdwn +++ b/Distrib.mdwn @@ -1,92 +1,41 @@ -Jon: We need a better logo for this page - ever since the Gentoo and Bee movements got involved I've been thingking about fixing this logo, but I haven't had any time. Suggestions, gfx donations? -- [[Main/JoachimNilsson]] - 30 Jun 2004 - -# <a name="Getting_Your_GNU_Hurd_Running"> </a> Getting Your GNU/Hurd Running - -This web is about the distribution of software: where and how to get it. - -<h2><a name="Distributions"> Distributions </a></h2> -<p><nop></nop></p> -<h3><a name="Debian_nbsp_http_www_debian_org_"> </a> Debian <a href="http://www.debian.org/ports/hurd/" target="_top">GNU/Hurd port</a>: </h3> -<p> Official page about the Debian distribution of the GNU/Hurd system. Some additional notes are at [[DebianStatus]]. </p> -<ul> -<li><a href="http://people.debian.org/~mbanck/talks/hurd_lt2004/html/" target="_top">Presentation "Debian GNU/Hurd" by Michael Banck, <nop>LinuxTag 2004 Karlsruhe</nop></a></li> -</ul> -<p> -</p> -<ul> -<li><a href="http://www.numenor.art.pl/balrog/hurd/" target="_top">A disk image with an installation of the Debian distribution of GNU/Hurd</a></li> -</ul> -<p> -</p> -<ul> -<li>[[DebianFAQ]]</li> -</ul> -<p> -</p> -<ul> -<li>[[DebianAfterInstall]] -- Do this to get networking, new console and X </li> -</ul> -<p> -</p> -<dl> -<dt><a href="http://hurd.rustedhalo.net/" target="_top">Gentoo-Hurd</a></dt> -<dd> Unofficial port to Gentoo &amp; the portage system. It was <a href="http://forums.gentoo.org/viewtopic.php?t=41939&postdays=0&postorder=asc&start=0" target="_top">announced</a> March 17, 2003 in the Gentoo forums. There's a #gentoo-irc channel similar to [[Hurd/HurdIRC]]. At present (May 2005), there's no activity and Eric Olinger has not the time to maintain this distri. </dd> -</dl> -<p> -</p> -<dl> -<dt><a href="http://bee.es.gnu.org/" target="_top">Bee GNU/Hurd</a></dt> -<dd> Castellano distribution, pkgsrc package based. [[BochsEmulator]] image available too. They have their own <a href="http://es.gnu.org/cgi-bin/beewiki.pl?Wiki_Bee_GNU" target="_top">wiki</a> and a <a href="http://bee.es.gnu.org/?p=mail&l=en" target="_top">mail list</a> (no archive). </dd> -</dl> -<p> -</p> -<dl> -<dt> Some ISOs</dt> -<dd><a href="http://www.gnuab.org/qui-som" target="_top">GNUAB</a> has some images and packages available at <a href="http://ftp.gnuab.org" target="_top">http://ftp.gnuab.org</a> for the unreleased (not unstable) Debian distro </dd> -</dl> -<p> -</p> -<dl> -<dt>[[GnuOS]]</dt> -<dd> distribution is in discussion &amp; pre-planning phase </dd> -</dl> -<p><nop></nop></p> -<h2><a name="General"> General </a></h2> -<p> -</p> -<dl> -<dt><a href="http://lists.debian.org/debian-hurd/2002/debian-hurd-200210/msg00035.html" target="_top">Welcome Note</a></dt> -<dd> Introduction to GNU and the Hurd sent monthly to <nop>Help-Hurd@gnu.org. </nop></dd> -</dl> -<p> -</p> -<dl> -<dt>[[SoftwareLicensing]]</dt> -<dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has it's DFSG guidelines. Other distributions will need to address these same issues. </dd> -</dl> -<p> -</p> -<dl> -<dt>[[FrequentlyAskedQuestions]]</dt> -<dd> It's good to read it before asking questions. </dd> -</dl> -<p> -</p> -<dl> -<dt>[[GnuDebianRelationship]]</dt> -<dd> How does the GNU/Debian relationship work? </dd> -</dl> -<p> -</p> -<dl> +# Distributions + +## <a name="Debian_nbsp_http_www_debian_org_"> </a> Debian <a href="http://www.debian.org/ports/hurd/" target="_top">GNU/Hurd port</a> + +Official page about the Debian distribution of the GNU/Hurd system. Some additional notes are at [[DebianStatus]] + +- <a href="http://people.debian.org/~mbanck/talks/hurd_lt2004/html/" target="_top">Presentation "Debian GNU/Hurd" by Michael Banck, <nop>LinuxTag 2004 Karlsruhe</nop></a> +- <a href="http://www.numenor.art.pl/balrog/hurd/" target="_top">A disk image with an installation of the Debian distribution of GNU/Hurd</a> +- [[DebianFAQ]] +- [[DebianAfterInstall]] -- Do this to get networking, new console and X + +<a href="http://www.gnuab.org/qui-som" target="_top">GNUAB</a> has some images and packages available at <a href="http://ftp.gnuab.org" target="_top">http://ftp.gnuab.org</a> for the unreleased (not unstable) Debian distro + +## <a href="http://hurd.rustedhalo.net/" target="_top">Gentoo-Hurd</a></dt> + +Unofficial port to Gentoo &amp; the portage system. It was <a href="http://forums.gentoo.org/viewtopic.php?t=41939&postdays=0&postorder=asc&start=0" target="_top">announced</a> March 17, 2003 in the Gentoo forums. There's a #gentoo-irc channel similar to [[Hurd/HurdIRC]]. At present (May 2005), there's no activity and Eric Olinger has not the time to maintain this distri. + +## <a href="http://bee.es.gnu.org/" target="_top">Bee GNU/Hurd</a></dt> + +Castellano distribution, pkgsrc package based. [[BochsEmulator]] image available too. They have their own <a href="http://es.gnu.org/cgi-bin/beewiki.pl?Wiki_Bee_GNU" target="_top">wiki</a> and a <a href="http://bee.es.gnu.org/?p=mail&l=en" target="_top">mail list</a> (no archive). + +## [[GnuOS]] + +Distribution is in discussion &amp; pre-planning phase + + +# Issues + <dt>[[SoftwareLicensing]]</dt> <dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has it's DFSG guidelines. Other distributions will need to address these same issues. </dd> -</dl> + +[[GnuDebianRelationship]] + ## <a name="Installation"> Installation </a> <dl> - <dt> Install Instructions</dt> + <dt> Install Instructions</dt> <dd> Currently, <a href="http://www.debian.org/ports/hurd/hurd-install" target="_top">Debian's installation instructions</a> are the most up-to-date. [[Hurd/InstallNotes]] is an errata companion document with more helpful hints that have not yet been incorporated. </dd> </dl> @@ -96,7 +45,7 @@ This web is about the distribution of software: where and how to get it. </dl> <dl> - <dt> Release Information</dt> + <dt> Release Information</dt> <dd> About the latest CD release. Includes errata, known bugs and fixes. See [[CDNotesHome]] and [[TarballNotesHome]] for summaries </dd> </dl> @@ -117,17 +66,17 @@ Another installation method is using an emulated environment. The [[BochsEmulato * [[VmWare]] - Why using it is discouraged. <dl> - <dt> Debian Installer</dt> + <dt> Debian Installer</dt> <dd> Work has been started by James Morrison and Glenn <nop>McGrath to [[PortDebootstrap]]. There is also a [[NewDebianInstaller]]. Why should Hurd folks care? It's important because this is the next generation installer that is intended to be used by all ports when Sarge is released. </nop></dd> </dl> -## <a name="Using_the_system"> Using the system </a> +# Using [[DebianAfterInstall]] instructions are a must-read to prepare an usable system. [[PackageTroubleshooting]] reports known bugs, quirks and workarounds about getting applications to work (if possible). -## <a name="For_nbsp_Developers"> For Developers </a> +# For Developers <dl> <dt>[[SavannahProjects]]</dt> @@ -135,7 +84,7 @@ Another installation method is using an emulated environment. The [[BochsEmulato </dl> <dl> - <dt>[[PortingIssues]] FAQ</dt> + <dt>[[PortingIssues]] FAQ</dt> <dd> What does it take to move a piece of Debian packaged software to the GNU/Hurd port? </dd> </dl> @@ -145,17 +94,17 @@ Another installation method is using an emulated environment. The [[BochsEmulato </dl> <dl> - <dt> Debain Infrastructure</dt> + <dt> Debain Infrastructure</dt> <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[BtsFiling]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd &amp; turtle efforts. </dd> </dl> <dl> - <dt><a href="http://hurd.she.kicks-ass.org:8084/uninstallable/" target="_top">Uninstallable packages</a></dt> + <dt><a href="http://hurd.she.kicks-ass.org:8084/uninstallable/" target="_top">Uninstallable packages</a></dt> <dd> Many packages depend on these uninstallable packages. So building one of them will allow other to be build too. </dd> </dl> <dl> - <dt> Technical References</dt> + <dt> Technical References</dt> <dd> There are many standards and documents that might be applicable for those interested in developing software. </dd> </dl> @@ -167,7 +116,7 @@ Another installation method is using an emulated environment. The [[BochsEmulato * [[CodeAnnouncements]] - Recent coding projects related to the Hurd <dl> - <dt> Debian <a href="http://www.debian.org/devel/" target="_top">Developer's Corner</a></dt> + <dt> Debian <a href="http://www.debian.org/devel/" target="_top">Developer's Corner</a></dt> <dd> The following references are provided as a starting point for those interested in helping to package software for Debian GNU/Hurd and Debian GNU/Linux. </dd> </dl> @@ -177,7 +126,7 @@ Another installation method is using an emulated environment. The [[BochsEmulato * There are many Debian email lists <dl> - <dt> Debian Todo</dt> + <dt> Debian Todo</dt> <dd> Packages needing attention. A possible use of this site could be to help track similar needs via [[HurdWnpp]]. This is not yet implemented. </dd> </dl> @@ -186,10 +135,10 @@ Another installation method is using an emulated environment. The [[BochsEmulato <dd> There are some discussions and several rumors circulating about creating a completely new distribution, not using a Debian architecture. </dd> </dl> -## <a name="Misc_"> Misc. </a> +# Misc. <dl> - <dt> Why a separate section of the website for this?</dt> + <dt> Why a separate section of the website for this?</dt> <dd> There are fundamentally different issues about distributions compared with coding. Distributions are concerned with final default configurations of packaged software and system integration as they use many software packages and help give users a sense of using an OS "product." </dd> </dl> diff --git a/Distrib/DebianAptOffline.mdwn b/Distrib/DebianAptOffline.mdwn index d1915458..d2dac6b8 100644 --- a/Distrib/DebianAptOffline.mdwn +++ b/Distrib/DebianAptOffline.mdwn @@ -1,52 +1,52 @@ -## <a name="Installing_packages_without_havi"> Installing packages without having a network connection. </a> +# How to Installing Packages without a Network Connection from your Hurd Installation -This procedure is based on <file:///usr/share/doc/apt-doc/offline.text.gz> (package apt-doc). +This procedure is based on that found in +file:///usr/share/doc/apt-doc/offline.text.gz (package apt-doc). -Having _apt_ installed is needed to use it. +This requires having apt installed on the Host operating system. -Put <http://hurd.gnufans.org/pub/Distrib/DebianAptOffline/apt.conf.offline> into Debian GNU/Hurd's /etc/apt/. +Put a copy of [apt.conf.offline](http://www.bddebian.com/~wiki/Distrib/DebianAptOffline/apt.conf.offline) +into your Debian GNU/Hurd installations /etc/apt/ directory. -#### <a name="You_can_mount_your_Debian_GNU_Hu"> </a> You _can_ mount your Debian GNU/Hurd partition under another OS. +## If you _can_ mount your Debian GNU/Hurd partition from another OS, which can connect to the Internet -Networked system, user root +As root on the internet connected OS: - # mkdir SOMEWHERE - # mount /dev/DEBIAN_GNU_HURD_PARTITON SOMEWHERE - # cd SOMEWHERE + # mount /dev/DEBIAN_GNU_HURD_PARTITON /mnt + # cd /mnt # apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.} -Debian GNU/Hurd, user root +Then , reboot into your Debian GNU/Hurd installation and as root, run: # apt-get {update, upgrade, install foo, etc.} -#### <a name="You_can_t_mount_your_Debian_GNU_"> </a> You _can't_ mount your Debian GNU/Hurd partition under another OS. +## If you _cannot_ mount your Debian GNU/Hurd partition under another OS. -Debian GNU/Hurd, user root +From your Debian GNU/Hurd installation run, as the root user: - # tar -cf SOMEWHERE/tar /etc/apt/{apt.conf.offline,sources.list} /var/lib/dpkg/status + # tar cf myhurdsconf.tar /etc/apt/{apt.conf.offline,sources.list} /var/lib/dpkg/status -Copy _SOMEWHERE/tar_ to the remote system. +Copy _myhurdsconf.tar_ to the remote system. -_/var/lib/dpkg/status_ is needed for the remote system's _apt_ to know which packages (and their versions) are already installed on your Debian GNU/Hurd system. +This copies your apt configuration and the status of your system +(what packages are installed, which versions, etc.) -Networked system, any user +From the remote sytem, as any user, run: - $ mkdir debian_gnu_hurd - $ cd debian_gnu_hurd - $ tar -xf SOMEWHERE/tar + $ mkdir myhurd + $ cd myhurd + $ tar -xf myhurdsconf.tar $ mkdir -p var/lib/apt/lists/partial var/cache/apt/archives/partial tmp $ apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.} - $ tar -cf SOMEWHERE/tar var/ + $ tar cf myhurdsconf.tar etc/apt/{apt.conf.offline,sources.list} var/ -Copy _SOMEWHERE/tar_ back to your Debian GNU/Hurd system. +Copy _myhurdsconf.tar_ back to your Debian GNU/Hurd system. -If you modified _etc/apt/sources.list_, don't forget to also copy it back. +Finally, from your Debian GNU/Hurd installation as the root user: -Debian GNU/Hurd, user root - - # tar -xf SOMEWHERE/tar + # mkdir tmp + # cd tmp + # tar -xf myhurdsconf.tar # mv var/cache/apt/archives/*.deb /var/cache/apt/archives/ # mv var/lib/apt/lists/*_* /var/lib/apt/lists/ # apt-get {update, upgrade, install foo, etc.} - --- [[Main/ThomasSchwinge]] - 03 Aug 2005 diff --git a/Distrib/NewQuestions.mdwn b/Distrib/NewQuestions.mdwn index e79729e9..0faaba43 100644 --- a/Distrib/NewQuestions.mdwn +++ b/Distrib/NewQuestions.mdwn @@ -1,15 +1 @@ -## <a name="Mailing_lists"> Mailing lists </a> - -If you have questions about the installation, how the Hurd works and how it is used, or general questions concerning the Hurd, GNU Mach or the other packages maintained by the Hurd people, you can send an e-mail to the Help-Hurd mailing list. - -Bug reports for the GNU Hurd, GNU Mach and the other packages maintained by the Hurd people should be sent to the Bug-Hurd mailing list. - -All e-mails concerning the Debian GNU/Hurd binary distribution should go to the Debian GNU/Hurd mailing list. - -If you want to contribute to the development of the Hurd, look at the Development page. - -## <a name="Internet_relay_chat"> Internet relay chat </a> - -The GNU Project uses Freenode as it's official IRC network. The network of IRC servers can be accessed through irc.gnu.org. The channel #hurd is dedicated to the Hurd. You can find other users and developers interested in the Hurd there and chat with them in real time. - -Some of these links are at other web sites not maintained by the FSF. The FSF is not responsible for the content of these other web sites. +Try here: [[Hurd/GettingHelp]]
\ No newline at end of file diff --git a/Distrib/PortingIssues.mdwn b/Distrib/PortingIssues.mdwn index 1f9def8c..747fb230 100644 --- a/Distrib/PortingIssues.mdwn +++ b/Distrib/PortingIssues.mdwn @@ -6,7 +6,7 @@ This is a recompilation of common porting problems and their solutions. Information is gathered from the following sources: -* [Debian GNU/Hurd port guidelines](http://www.debian.org/ports/hurd/hurd-devel-debian/) +* [Debian GNU/Hurd port guidelines](http://www.debian.org/ports/hurd/hurd-devel-debian) * [James Morrison's GNU/Hurd pages](http://hurd.dyndns.org/) @@ -1,14 +1,18 @@ Welcome. This is a web-based collaboration area for Hurd user groups. -<ul> -<li><nop>HurdFr: <a href="http://www.hurdfr.org" target="_top">http://www.hurdfr.org</a> <img alt="hurd-fr.png" src="http://wiki.hurd.ru/data/images/other/hurd-fr.png" /> </nop></li> -<li><nop>HurdUk: <a href="http://uwhug.org.uk/" target="_top">http://uwhug.org.uk/</a> <img alt="hurd-uk.png" src="http://wiki.hurd.ru/data/images/other/hurd-uk.png" /> </nop></li> -<li><nop>HurdEs: <a href="http://hurd.es.gnu.org/" target="_top">http://hurd.es.gnu.org/</a> <img alt="hurd-es.png" src="http://wiki.hurd.ru/data/images/other/hurd-es.png" /> </nop></li> -<li><nop>HurdIt: <a href="http://hurd-it.sf.net/" target="_top">http://hurd-it.sf.net/</a> <img alt="hurd-it.png" src="http://wiki.hurd.ru/data/images/other/hurd-it.png" /> </nop></li> -<li><nop>HurdCa: <a href="http://www.nongnu.org/thug/" target="_top">http://www.nongnu.org/thug/</a> <img alt="hurd-ca.png" src="http://wiki.hurd.ru/data/images/other/hurd-ca.png" /> </nop></li> -<li><nop>HurdPl: <a href="http://hurd.pl/forum/" target="_top">http://hurd.pl/forum/</a> <img alt="hurd-pl.png" src="http://wiki.hurd.ru/data/images/other/hurd-pl.png" /> </nop></li> -<li><nop>HurdRu: <a href="http://wiki.hurd.ru/" target="_top">http://wiki.hurd.ru/</a> <img alt="hurd-ru.png" src="http://wiki.hurd.ru/data/images/other/hurd-ru.png" /> </nop></li> -<li><nop>HurdBr: <a href="http://hurd.gnufans.org/bin/view/Hug/HurdBr" target="_top">http://hurd.gnufans.org/bin/view/Hug/HurdBr</a> <img alt="hurd-br.png" src="http://wiki.hurd.ru/data/images/other/hurd-br.png" /> </nop></li> -<li><nop>HurdIn: <a href="http://i-hug.sarovar.org" target="_top">http://i-hug.sarovar.org</a> <img alt="hurd-in.png" src="http://wiki.hurd.ru/data/images/other/hurd-in.png" /> </nop></li> -<li><nop>HurdUs: <a href="http://hurd.gnufans.org/" target="_top">http://hurd.gnufans.org/</a> <img alt="hurd-us.png" src="http://wiki.hurd.ru/data/images/other/hurd-us.png" /> </nop></li> -</ul> + +* [[Hurd/THUG]] - Toronto (GNU/)Hurd User Group +* [Hurdfr.org](http://www.hurdfr.org/) +* [[Hurd/AtelierGnuGulliver]] - Rennes - France +* [Hurd.ru](http://www.hurd.ru/) +* [[Hurd/CHUG]] - California Hurd User Group +* [[Hurd/DHUG]] - Dunedin (GNU/)Hurd User Group +* [[Hug/HurdBr]] - Hurd Br is a brasilian, portuguese speaking, HUG +* HurdUk: <a href="http://uwhug.org.uk/" target="_top">http://uwhug.org.uk/</a> +* HurdEs: <a href="http://hurd.es.gnu.org/" target="_top">http://hurd.es.gnu.org/</a> +* HurdIt: <a href="http://hurd-it.sf.net/" target="_top">http://hurd-it.sf.net/</a> +* HurdCa: <a href="http://www.nongnu.org/thug/" target="_top">http://www.nongnu.org/thug/</a> +* HurdPl: <a href="http://hurd.pl/forum/" target="_top">http://hurd.pl/forum/</a> +* HurdRu: <a href="http://wiki.hurd.ru/" target="_top">http://wiki.hurd.ru/</a> +* HurdIn: <a href="http://i-hug.sarovar.org" target="_top">http://i-hug.sarovar.org</a> +* HurdUs: <a href="http://hurd.gnufans.org/" target="_top">http://hurd.gnufans.org/</a> @@ -1,148 +1,58 @@ -## <a name="The_Hurd"> The Hurd </a> +[[toc ]] + +# Introduction + +* [[TheGnuHurd]] - A Brief Description +* [[HurdNames]] - Acronym, Origin and Usage +* [[History]] +* [[GNUHurdStatus]] +* [[KnownHurdLimits]] +* [[Translation]] - Localized sites about the Hurd +* [[HurdDonations]] +* [[SeenHurd]] - Media references +* [[Shopping]] - Hurd Gear +* [[FunnyHurd]] - From a different Herd + +# Understanding + +* Introductory Material + * [Marcus Brinkmann](http://www.gnu.org/software/hurd/hurd-talk.html) + * [Gaël Le Mignot](http://kilobug.free.fr/hurd/pres-en/slides/slides.html) +* Architecture + * [Towards a New Strategy of OS Design](http://www.gnu.org/software/hurd/hurd-paper.html) 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) + * [[HurdCritique]] - Analysis + * [[HurdHackingGuide]] +* [[Concepts]] +* Other resources + * [Docs at gnu.org](http://www.gnu.org/software/hurd/docs.html) + +# Using + +* [[Running]] +* [[Distrib]] - Distributions +* [[PublicHurdBoxen]] + +## Common Problems + +* [[HurdConsole]] +* [[Xfree86]] +* [[DebianX]] +* [[DebianXorg]] +* [[GNUstep]] +* [[CrossCompiling]] +* [[XattrHurd]]: Setting translators under GNU/Linux +* [[SerialConsole]]: Setting up a serial console. + +# Contributing + +* [[Contributing]] +* [[ToDo]] + +# Developer References + +* [[Debugging]] +* [[HurdSpecificGlibcApi]]: Functions in GLIBC for the Hurd. +* [Hurd Sourcecode Reference](http://www.htu.tugraz.at/~past/hurd/global/): Searchable and browsable index of the code. -This part of the wiki is dedicated to the the Hurd servers, the most important components comprising the GNU operating system. Built on top of the Mach microkernel the servers are designed to replace the functionality provided by regular monolithic UNIX kernels. - -If you cannot find what you look for the topic might have been moved to the new Distrib, Mach or GNU webs. This has been done to help clarify the different aspects of the GNU/Hurd efforts for new users. - -For an introduction to this site, see <http://hurd.gnufans.org>. - -<dl> -<dt>[[GNUHurdStatus]]</dt> -<dd> Things [[ToDo]] before the next release </dd> -<dt>[[KnownHurdLimits]]</dt> -<dd> Limitations of the GNU operating system. Includes updates on the status of [[RandomDevice]] (for ssh), [[DhcpClient]], [[PppDaemon]], [[HurdConsole]], [[ExtTwoSize]], other filesystems, etc. </dd> -<dt>[[SeenHurd]]</dt> -<dd> GNU/Hurd sightings. </dd> -<dt>[[TranslatorPages]]</dt> -<dd> What translators exist, info about them </dd> -<dt>[[FrequentlyAskedQuestions]]</dt> -<dd> For anything else you cannot find here. </dd> -</dl> -<p><nop></nop></p> -<h3><a name="Introduction"> Introduction </a></h3> -<p><a name="GnuHurd"></a></p> -<dl> -<dt>[[TheGnuHurd]]</dt> -<dd> About the GNU/Hurd System <a href="http://wiki.debian.org/TheHurd" target="_top">Debian Wiki about The Hurd</a>. </dd> -<dt>[[HurdNames]]</dt> -<dd> What does the HURD acronym stand for? </dd> -<dt><a href="http://lists.debian.org/debian-hurd/2002/debian-hurd-200210/msg00035.html" target="_top">Welcome Note</a></dt> -<dd> Formerly sent monthly to <a href="http://lists.debian.org/debian-hurd/" target="_top">debian-hurd@lists.debian.org</a> and <a href="http://mail.gnu.org/mailman/listinfo/help-hurd" target="_top">help-hurd@gnu.org</a></dd> -<dt><a href="http://wiki.debian.org/TheHurd" target="_top">Debian Wiki: Hurd</a></dt> -<dd> -</dd> -<dt>[[FunnyHurd]]</dt> -<dd> Logos, rumors and other funny unrelated stuff mentioning "Hurd" </dd> -<dt>[[Shopping]]</dt> -<dd> Items that can be bought. </dd> -<dt>[[Translation]]</dt> -<dd> Hurd translation and Hurd wiki page in different languages. </dd> -<dt><a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html" target="_top">History 1997-2003</a></dt> -<dd> Personal view of Marcus Brinkmann about Hurd development in 1997-2003. </dd> -</dl> -<p><nop></nop></p> -<h3><a name="Running_the_Hurd"> Running the Hurd </a></h3> -<dl> -<dt>[[LiveCD]]</dt> -<dd> Enjoy a bootable Hurd from within CD (opt. HD or USB installation). </dd> -<dt>[[Distrib/QEMU]]</dt> -<dd> play downloaded [[LiveCd]] Isos without burn them (emulation). </dd> -<dt>[[FlashHurd]]</dt> -<dd> Bootable Hurd from within USB flash memory. </dd> -<dt>[[BuildingHurd]]</dt> -<dd> -</dd> -<dt>[[PublicHurdBoxen]]</dt> -<dd> Hurd boxes available to hack on. </dd> -<dt>[[SubhurdHowto]]</dt> -<dd> -</dd> -</dl> -<p><nop></nop></p> -<h3><a name="Running_Applications_on_the_Hurd"> Running Applications on the Hurd </a></h3> -<p> -</p> -<dl> -<dt>[[HurdConsole]]</dt> -<dd> How to set up the console. </dd> -<dt>[[Xfree86]]</dt> -<dd> Setting up X. </dd> -<dt>[[DebianX]]</dt> -<dd> Setting up X in Debian. </dd> -<dt>[[DebianXorg]]</dt> -<dd> Settin up Xorg in Debian. </dd> -<dt>[[GNUstep]]</dt> -<dd> Setting up GNUstep on Hurd. </dd> -</dl><nop><h3><a name="Technical_References"> Technical References </a></h3> -<p> -</p> -<ul> -<li><a href="http://www.gnu.org/software/hurd/docs.html" target="_top">Official documentation, papers and presentations</a>: Available form the Hurd Web site. </li> -<li><a href="http://www.gnu.org/software/hurd/hurd-paper.html" target="_top">Towards a New Strategy of OS Design</a>: an architectural overview by Thomas Bushnell, BSG. Marcus Brinkmann <a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html" target="_top">revisited some parts of the paper</a> and Jonathan S. Shapiro <a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html" target="_top">has further comments</a></li> -<li><a href="http://kilobug.free.fr/hurd/pres-en/slides/slides.html" target="_top">Presentation by Ga�l Le Mignot</a>: </li> -<li><a href="http://www.pjbruin.dds.nl/hurd/" target="_top">Power PC port, using OSF Mach</a>: </li> -<li>[[DistributedServers]]: Architecture made possible by the Hurd. </li> -</ul> -<p><nop></nop></p> -<h3><a name="Developer_Notes"> Developer Notes </a></h3> -<p> -</p> -<ul> -<li>[[CrossCompiling]]. </li> -<li>[[HurdSpecificGlibcApi]]: Functions in GLIBC for the Hurd. </li> -<li>[[Debugging]]. </li> -<li>[[XattrHurd]]: Setting translators under GNU/Linux </li> -<li>[[ABITransitionStatus]]: Old info (early 2002) on the <abbrev title="Application Binary Interface">ABI</abbrev> transition </li> -<li>[[KernelCousinDebianHurd]]: A defunct newsletter about Hurd development. </li> -<li>[[Mach/OskitMachStatusList]]: Status and TODO information </li> -<li><a href="http://www.htu.tugraz.at/~past/hurd/global/" target="_top">Hurd Sourcecode Reference</a>: Searchable and browsable index of the code. </li> -<li>[[Mach/PortToL4]]: Out-dated Wiki. </li> -<li>[[HurdOnL4]]: Work in process for <strong>new</strong> wiki. </li> -<li>[[QemuImageForL4]]: </li> -<li>[[SubhurdHowto]]: Using and a neighbour for testing and debugging. </li> -<li>[[SerialConsole]]: Setting up a serial console. </li> -</ul> -<p> -</p> -<hr /> -<p> -</p> -<dl> -<dt>[[InstallNotes]]</dt> -<dd> How to install the GNU system. <br /> For Further information, See the [[Distrib]] web. </dd> -</dl> -<p> -</p> -<dl> -<dt> Community &amp; People</dt> -<dd> Please see the [[Main]] web for registered users information and Hurd community resources. </dd> -</dl> -<p> See [[HurdDonations]] if you've got more money than hack time. </p> -<p> -</p> -<dl> -<dt> Microkernel Systems</dt> -<dd> Please see the [[Mach]] web </dd> -</dl> -<p> -</p> -<dl> -<dt> Developer Related</dt> -<dd> Please see above and the [[Distrib]] web </dd> -</dl> - ----- - -This site was [announced](http://mail.gnu.org/pipermail/bug-hurd/2002-May/008342.html) on May 12, 2002. The following are checkpoints for maintenance and administration: - -<dl> - <dt>[[TWiki/TWikiDiscuss]]</dt> - <dd> Maintenance topic for the Hurd Wiki as a whole. </dd> -</dl> - -<dl> - <dt>[[TWiki/HurdWikiCopyrightDiscuss]]</dt> - <dd> Copyright, licensing and legal discussion. </dd> - <dt>[[TWiki/HurdWikiMove]]</dt> - <dd> We're looking for a more permanent host. </dd> -</dl> diff --git a/Hurd/Debugging.mdwn b/Hurd/Debugging.mdwn index 5e94f65d..d9244f15 100644 --- a/Hurd/Debugging.mdwn +++ b/Hurd/Debugging.mdwn @@ -1,29 +1,9 @@ -## <a name="GDB"> </a> GDB +* [[DebuggingGlibc]] +* [[DebuggingViaSubhurds]] - To debug system servers -<http://sourceware.org/gdb/> +# GDB -[General GDB documentation](http://sourceware.org/gdb/documentation/), including the [special Hurdy bits](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native). - -<http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html> - -### <a name="noninvasive_mode"> _noninvasive_ mode </a> - -This essentially means that the program continues running as usual, but you can use GDB to get back traces and print variables (and watch them change underneath you). This can be helpful when debugging system wide default servers that shall not be stopped while debugging. - ----- - -## <a name="Debugging_glibc"> Debugging glibc </a> - -See [[DebuggingGlibc]]. - ----- - -## <a name="Debugging_via_subhurds"> Debugging via subhurds </a> - -See [[DebuggingViaSubhurds]]. - ----- - -## <a name="General_Notes"> General Notes </a> - -For debugging the system wide default servers (like the root file system server or the _exec_ server), it is recommendable to instead debug them in a sub-hurd or at least use the _noninvasive_ mode when attaching GDB to them. +* [Manual](http://sourceware.org/gdb/documentation/) +* [Hurd Specific](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native). +* [[NonInvasiveDebugging]] - Avoiding Deadload +* [When disassemble doesn't work](http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html) diff --git a/Hurd/GNUHurdStatus.mdwn b/Hurd/GNUHurdStatus.mdwn index 305b99fa..8bc348ff 100644 --- a/Hurd/GNUHurdStatus.mdwn +++ b/Hurd/GNUHurdStatus.mdwn @@ -1,127 +1,15 @@ -Unfortunately, this page is very outdated. For the latest status you need to check the [[MailLists]] or [[HurdIRC]]. I know that from hanging out on IRC today (Feb 29, 2004) Marcus was uploading a new [[Mach]] binary package to update the old one in the debian archive. Work still continues on the new [[HurdConsole]]. Progress overall is slow due to the technical expertise required for many tasks and the lack of resources. - --- [[Main/GrantBow]] - 01 Mar 2004 - -Two canonical status lists are available from the CVS archive: - -* [TODO file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain) - from Hurd repository -* [Task file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain) - from Hurd respository - -<dl> - <dt><a href="http://lists.debian.org/debian-hurd/2002/debian-hurd-200210/msg00035.html" target="_top">Welcome Note</a></dt> - <dd> Introduction to GNU and the Hurd sent monthly to <nop>Help-Hurd@gnu.org. </nop></dd> -</dl> - -<div align="right"> Related: [[KnownHurdLimits]], <br />[[SeenHurd]], [[WhoRunsGNU]], [[GnuHurdLiveJournal]]</div> - ----- - -Here are some notes taken from an [IRC discussion](http://web.walfield.org/~hird/%23hurd-200209027) September 28th, 2002. The part of the log at which I am summarizing starts with - -`<marcus@18:26> wolfgang: I once made a list of things that are definitely to be done before a release. want me to write it here? (It's only on paper so far)` - -This list is intended to apply to "just the CVS of the [Hurd itself](http://savannah.gnu.org/projects/hurd)." It is specifically not intended to apply to GNU/Hurd and definately not Debian GNU/Hurd. - -**FIXME.** How out-of-date is this stuff? -- [[Main/DeviceRandom]] - 20 Jan 2007 - -* xkb driver for console (for international users) -* kbd leds in console (well, in general, Roland's new driver in oskit for that crap) -* fixing fakeroot (it's buggy) -* fixing tmpfs (it's buggy, Neal says it's Mach's fault) -* adding posix shared memory (requires the io\_close call to be implemented) -* adding posix file locking (requires the io\_close call to be implemented) -* testing - * find + various filesystems (are inode numbers for . and .. sane?) - * ext2fs with other block sizes than 4096 - * --help and --version and --usage in all programs - * I have seen ^V in some --help output, might be argp bug - * Verify that all options are documented clearly, and that no unimplemented options appear - * Is the short and long description in the help output correct? - * Is the return value of all programs correct (eg, does main() return a sane value) - * Is the suid bit correctly set for all installed programs? - * Translators - * Does settrans -g work? -fg? - * Does fsysopts work? Does setting options with fsysopts work? - * Does stat() work on all translated nodes and give proper data? - * What about chown, chmod (some translators should pass this through to the underlying node, esp in /dev!) - * Does statfs give correct data? - * Are all inode numbers and link counts correct? -* [one unreadable item on the paper] -* We also should have a "make check" test suite. We can add this once Jeff finished his automake patches -* pick up the other things - * pthread, definitely. Now that we are so close - * new console is basically done - * needs integration of course - * X switching support -* there is certainly more to do ... - --- - -This is the wrong place for this but I'll put it here for now. Here's an [email about pthreads direction](http://mail.gnu.org/pipermail/hurd-devel/2002q3/000449.html) from hurd-devel mail list. - --- [[Main/GrantBow]] - 01 Oct 2002 - -Wolfgang also created a wonderful list of [Easy tasks](http://mail.gnu.org/pipermail/help-hurd/2002-July/006413.html) on July 28, 2002 that I will quote here: - -<table border="1" cellpadding="1" cellspacing="0"> - <tr> - <th bgcolor="#99CCCC"><strong>Difficulty</strong></th> - <th bgcolor="#99CCCC"><strong>Task</strong></th> - </tr> - <tr> - <td> 0 </td> - <td> Check if all programs handle options (at least --help, --version and --usage; don't forget about the shell scripts) </td> - </tr> - <tr> - <td> 1 </td> - <td> Check if all translators handle fsysopts </td> - </tr> - <tr> - <td> 1 </td> - <td> Check if all translators respond to "settrans -g" </td> - </tr> - <tr> - <td> 1 </td> - <td> More tests of this kind </td> - </tr> - <tr> - <td> 2 </td> - <td> Fix those of the above who don't work as intended </td> - </tr> - <tr> - <td> 2 </td> - <td> Document (in doc/hurd.texi) all undocumented programs (translators as well as programs in utils/ and sutils/ and some others) </td> - </tr> - <tr> - <td> 1 </td> - <td> Find a POSIX test suite, run it on GNU/Hurd, report the results </td> - </tr> - <tr> - <td> 1 </td> - <td> Find more useful test suites to run </td> - </tr> - <tr> - <td> 3 </td> - <td> Update INSTALL-cross </td> - </tr> - <tr> - <td> 2 </td> - <td> Check if all the store classes in libstore work (we have many of them, look into the Makefile) </td> - </tr> - <tr> - <td> 4 </td> - <td> Fix those who don't work </td> - </tr> - <tr> - <td> 2 </td> - <td> Document all still undocumented store classes </td> - </tr> - <tr> - <td> 2 </td> - <td> The console is pretty new code, it told me it wants to get tested </td> - </tr> -</table> - -Where difficulty 0 means trivial and 4 means tricky; the difficulty has nothing to do with the importance. - --- [[Main/GrantBow]] - 11 Oct 2002 +The last official release of the Hurd was 0.2. An +eminent release is not planned. There are a number of +reasons for this. + +One is that the Hurd is not sufficently stable or feature +complete. If an official release of the Hurd were made +now, people would try the Hurd and be disappointed. People +already expect delays; to disappoint them in this way as +well would be unfortunate. Moreover, it lessens the +possibility that they will try the Hurd again in the future. + +Another reason is that, Debian provides a distribution that +closely tracks Hurd development (and often includes many +new features). Little is to be gained by making an official +release.
\ No newline at end of file diff --git a/Hurd/HurdIRC.mdwn b/Hurd/HurdIRC.mdwn index de7a38ec..bdf4c81b 100644 --- a/Hurd/HurdIRC.mdwn +++ b/Hurd/HurdIRC.mdwn @@ -1,23 +1,58 @@ -# <a name="Internet_Relay_Chat"> Internet Relay Chat </a> +While all official development takes place on the mailing lists and the Savannah trackers, +a lot of discussions are had on IRC as well. Everybody is welcome to join and follow these channels, but please +respect the below guidelines if you want to participate. -The Hurd has its own #hurd channel hosted on [Freenode.net](http://freenode.net/). Connect to <irc://irc.freenode.net> and `/join #hurd` to begin. +# Asking Questions + +Please follow these [guidelines](http://catb.org/~esr/faqs/smart-questions.html) +when asking your question. Namely: spend some time trying +to solve the problem on your own (e.g., [search the web](http://www.google.com), +use this wiki, etc.), show us that you did so when you +ask your question, and provide as many relevant details as possible +reproducing them as exactly as possible. -**_Note:_** "Stupid" questions do not exist! We do sometimes forget that we have all learned how to use IRC. Please don't mind the louder voices on the channel if they seem a bit caustic. +# Staying On-Topic -## <a name="Channels"> Channels </a> +Please try to stay on topic. -### <a name="hurd_main_channel"> #hurd - main channel </a> +* emacs vs. vi **is not** on topic +* If it is appropriate for a **slashdot comment**, it's **not appropriate** + here +* why GNU sucks is **off-topic** +* when the next release of the Hurd will be **is inappropriate** +* you should not advocate your favorite **GNU/Linux** ditribution -### <a name="hurd_it_Italian_discussion"> #hurd-it - Italian discussion </a> +# Pasting Logs -### <a name="hurd_es_Spanish_discussion"> #hurd-es - Spanish discussion </a> +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. Instead use a +[paste bin](http://paste.debian.net). -### <a name="hurdfr_French_discussion"> #hurdfr - French discussion </a> +# Rich Text -### <a name="_TODO_and_others_"> [TODO: and others] </a> -## <a name="Logs"> Logs </a> +Don't use it. Don't use colors. Don't use bold. Don't use emphasis. -The logs for a number of channels have been recorded by [hird](http://web.walfield.org/~deride/), but this service is out of order at the moment. +# Greeting -Logs for #hurd are available [here](http://richtlijn.be/~larstiq/hurd/). +If you never contribute to the discussion, there is no need +to always greet the channel when you enter and before leave. + +# Channels + +All Hurd IRC channels are hosted on [Freenode.net](http://freenode.net/). + +* #hurd - The official Hurd IRC channel. Some of the Hurd developers and users hang out there, and discussions about GNU Hurd, GNU/Hurd and +Debian GNU/Hurd are had there. + +Local user channels include: + +* #hurd-it - Italian +* #hurd-es - Spanish +* #hurdfr - French +* #hurd-de - German + +# Channel logs + +* [#hurd logs](http://richtlijn.be/~larstiq/hurd/)
\ No newline at end of file diff --git a/Hurd/HurdNames.mdwn b/Hurd/HurdNames.mdwn index d0fb396e..2a1e12c5 100644 --- a/Hurd/HurdNames.mdwn +++ b/Hurd/HurdNames.mdwn @@ -1,27 +1,51 @@ -## <a name="HURD_Hird_of_Unix_Replacing_Daem"> </a> HURD - Hird of Unix Replacing Daemons +[[toc ]] -From [gnu.org](http://www.gnu.org/software/hurd/hurd.html#TOCintroduction): the GNU project's replacement for the Unix kernel. The Hurd is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). +# The Acronym -The Hurd development effort is a somewhat separate project from the Debian GNU/Hurd port of a full GNU operating system. The Hurd is the last piece of the full GNU operating system goal. +Hurd stands for "Hird of Unix Replacing Daemons." -## <a name="HIRD_Hurd_of_Interfaces_Represen"> </a> HIRD - Hurd of Interfaces Representing Depth +Hird stands for "Hurd of Interfaces Representing Depth." -One contributor from Norway also described two other uses of Hird. -* "the kings men",a name given to +# Origin -the men accompanying the norwegian kings at about year 1000 and on. This was later coined by V.Quisling when he formed a party with nationalistic traits to denote a set of helpers promoting his agenda of national & nordic ideas. +[Quoting ](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html) Thomas Bushnell, BSG: -* A symbol of collaboration with the (German) enemy used in World War II. +The name "Hurd" was invented by me, as an alternate spelling for the English word "herd". +"Hird" is just another alternate spelling for the same word. By the normal rules of +English orthography, they all have the same pronunciations. -## <a name="Why_the_word_HURD_"> </a> Why the word HURD? -[Quoting ](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html) Thomas Bushnell, BSG: +# Spelling, Usage and Pronunication + +The Hurd has its share of linguistic debate. The subject of proper usage comes up quite often. + +We call our kernel replacement \`\`the Hurd.'' Although Thomas Bushnell, BSG states that the +word \`\`Hurd'' is an acronym; we do not treat it as such, but rather as a concrete noun. +It is widely regarded as incorrect to use the term \`\`HURD'' or \`\`H.U.R.D.'' So, to +refer to the collection of servers running on top of the microkernel, we would say, +\`\`I have upgraded to the latest version of the Hurd.'' Since the Hurd is part of +the GNU Project, we also refer to it as \`\`GNU Hurd'' which is treated as a proper noun. -The name "Hurd" was invented by me, as an alternate spelling for the English word "herd". "Hird" is just another alternate spelling for the same word. By the normal rules of English orthography, they all have the same pronounciations. +The Hurd, in conjunction with Mach, forms the core of the GNU operating system. +So, one can say \`\`I have installed GNU on my friend's new computer.'' The +Debian Project clarifies this by using the name \`\`Debian GNU/Hurd'', because +it also distributes the GNU/Linux variant of GNU. -Other pages that describe the names are on [gnu.org](http://www.gnu.org/software/hurd/hurd.html#TOCname). +To pronounce the word \`\`Hurd,'' you should say the English word \`\`herd.'' This is pronounced as \`\`hɚd'' using the International Phonetic Alphabet. -Perhaps unrelated: the "herd menatality" of folks is what the Hurd project and the the GNU project in general is fighting against... +# In Other Contexts + +One contributor from Norway described two other uses of Hird. + +* "the kings men", a name given to + +the men accompanying the Norwegian kings at about year 1000 and on. +This was later coined by V. Quisling when he formed a party with +nationalistic traits to denote a set of helpers promoting his agenda +of national & Nordic ideas. + +* A symbol of collaboration with the (German) enemy used in World War II. -See also the FAQ, [Relation between GNU and the Hurd](http://www.gnu.org/software/hurd/faq.en.html#q1-2). +Perhaps unrelated: the "herd menatality" of folks is what the Hurd project +and the the GNU project in general is fighting against... diff --git a/Hurd/KnownHurdLimits.mdwn b/Hurd/KnownHurdLimits.mdwn index 28ab0284..0da12878 100644 --- a/Hurd/KnownHurdLimits.mdwn +++ b/Hurd/KnownHurdLimits.mdwn @@ -1,43 +1,20 @@ -## <a name="Known_Limitations_and_Fixes"> Known Limitations and Fixes </a> - -When comparing the Hurd (and its GNUMach microkernel) to alternatives please remember that the last released version number is 0.3. For example, Linux, the kernel, took awhile to mature. The Debian GNU/Hurd system is developing rapidly. Assistance with programming and support tasks is greatly appreciated. The general [Hardware Compatibility Guide](http://www.freesoftware.fsf.org/thug/gnumach_hardware.html) is another good reference. - -Now, the list of known limitations of the Hurd. - -* ~1.5+ GB ext2 partition size limit +* ~1.5 GB ext2 file system size limit * The problem is fixed in the Debian GNU/Hurd distribution but not the official sources, see [this email](http://lists.debian.org/debian-hurd/2007/07/msg00087.html) * See [[ExtTwoSize]] -* Missing device drivers. - * Current GNUMach drivers are from Linux 2.0. - * [[Mach/OskitMach]] currently has Linux 2.2 drivers. +* Many Unsupported Devices. + * See [[Mach/HardwareCompatabilityList]] -* Swap is [highly recommended](http://www.gnu.org/software/hurd/faq.en.html#q2-7), like on UNIX systems. - -* Minimum of 8 MB RAM has been reported to work, but 32 MB is more realistic. Don't forget to use plenty of swap space. - -* Random devices, /dev/random and /dev/urandom, are not in the main distribution yet. These are needed by, for instance, OpenSSH. +* Entropy. Mach does not yet gather entropy and thus there are no /dev/random and /dev/urandom nodes. + There are needed by OpenSSH. * In progress, see [[RandomDevice]] -* No DHCP client will work yet. +* No DHCP client * promising information [Jan 2005](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html), needs an update * See [[DhcpClient]] - need to update TCP/IP server. -* There are some [[Distrib/SystemAPILimits]] - -* Sound support missing - * [[Mach/OskitMach]] can provide, but no work yet - -* PPP support, e.g., um-pppd missing. - * See [[PppDaemon]] - -* USB support is missing - -* `fatfs` translator is stabilizing, and it does not have partition limits that get in the way. ([0\.4 released Oct 6, 2002](http://mail.gnu.org/pipermail/bug-hurd/2002-October/010576.html)) - -* [Ext3 implementation](http://debian.fmi.uni-sofia.bg/~ogi/hurd/ext3fs/) is very unstable. - -* Portability between alternate microkernels, e.g., [darwin](http://developer.apple.com/darwin/) & [L4](http://os.inf.tu-dresden.de/L4/) +* Missing bits of POSIX + * See [[Distrib/SystemAPILimits]] * Stability issues * [[ZallocPanics]] diff --git a/Hurd/MailLists.mdwn b/Hurd/MailLists.mdwn index f28a53a2..780d6623 100644 --- a/Hurd/MailLists.mdwn +++ b/Hurd/MailLists.mdwn @@ -1,49 +1,39 @@ -## <a name="Mailing_Lists"> Mailing Lists </a> +# On Posting + +Before asking a question on a list, first make an effort to find the answer +to your question. When you ask your question, (1) be details, and (2) demonstrate +that you have made an effort, e.g., "I am having trouble frobbing the foo. I +searched the web and only found information regarding how to frob a bar, but +that seems unrelated." + +List etiquette is to cc the sender and anyone **actively** involved in the +discussion. Some people don't like this and they set their reply-to header +appropriately. Respect this. + +It is rarely appropriate to cc multiple lists. Sometimes it is. In that case, +do so. If in doubt, don't; just choose the single most appropriate list. + +# Main Lists Lists are unmoderated and hosted on <http://mail.gnu.org> unless otherwise marked. +Try to post to the appropriate mailing list. + +* [bug-hurd](http://mail.gnu.org/mailman/listinfo/bug-hurd) - Technical discussion and bug reports +* [hurd-devel](http://mail.gnu.org/mailman/listinfo/hurd-devel) - Low-traffic developers list. (This + list is *moderated* and *restricted*; subscribe to + [hurd-devel-readers](http://mail.gnu.org/mailman/listinfo/hurd-devel-readers].) +* [help-hurd](http://mail.gnu.org/mailman/listinfo/help-hurd) - Hurd specific questions +* [debian-hurd](http://www.debian.org/MailingLists/subscribe) - Discussion around + and questions regarding the Debian GNU/Hurd distribution. +* [web-hurd](http://mail.gnu.org/mailman/listinfo/web-hurd) - Discussion of the http://hurd.gnu.org + website. +* [l4-hurd](http://mail.gnu.org/mailman/listinfo/l4-hurd) - Discussion regarding a possible + design successor to the Hurd. + +# HUGs + +* [THUG](http://mail.gnu.org/mailman/listinfo/thug) - Toronto-area Hurd Users Group and discussion. + +# Related -<dl> - <dt><a href="http://mail.gnu.org/mailman/listinfo/hurd-devel" target="_top">hurd-devel</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/hurd-devel/" target="_top">archives</a> - main technical list. This is <em>moderated</em> and <em>restricted</em>; subscribe to <code>hurd-devel-readers</code> instead. The Hurd is being ported to the L4 microkernel and most technical activity can be found in the <code>l4-hurd</code> list. </dd> - <dt><a href="http://mail.gnu.org/mailman/listinfo/hurd-devel-readers" target="_top">hurd-devel-readers</a></dt> - <dd><em>read only</em> version of <code>hurd-devel</code>. To avoid duplication with the <code>hurd-devel</code> archives, the <code>hurd-devel-readers</code> archives are turned off. </dd> - <dt><a href="http://mail.gnu.org/mailman/listinfo/help-hurd" target="_top">help-hurd</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/help-hurd/" target="_top">archives</a> - ask <strong>Hurd specific</strong> questions here. </dd> - <dt><a href="http://mail.gnu.org/mailman/listinfo/bug-hurd" target="_top">bug-hurd</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/bug-hurd/" target="_top">archives</a> - technical debugging and discussion. </dd> - <dt> hurd-private</dt> - <dd> it's private, no archives are available. </dd> -</dl> - -<dl> - <dt><a href="http://www.debian.org/MailingLists/subscribe" target="_top">debian-hurd</a></dt> - <dd> web <a href="http://lists.debian.org/debian-hurd/" target="_top">archives</a> - general system discussion, packaging, integration. Ask <strong>general</strong> questions here. <em>Debian hosted</em>. </dd> -</dl> - -<dl> - <dt><a href="http://mail.gnu.org/mailman/listinfo/thug" target="_top">thug</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/thug/" target="_top">archives</a> - Toronto-area Hurd Users Group and discussion. </dd> -</dl> - -<dl> - <dt><a href="http://mail.gnu.org/mailman/listinfo/web-hurd" target="_top">web-hurd</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/web-hurd/" target="_top">archives</a> - discussion of web pages at <a href="http://hurd.gnu.org" target="_top">http://hurd.gnu.org</a>. </dd> - <dt><a href="http://mail.gnu.org/mailman/listinfo/l4-hurd" target="_top">l4-hurd</a></dt> - <dd> web <a href="http://mail.gnu.org/pipermail/l4-hurd/" target="_top">archives</a> - theoretical kernel development. </dd> -</dl> - -<dl> - <dt><a href="http://mail.gnu.org/mailman/listinfo/bug-grub" target="_top">bug-grub</a></dt> - <dd><em>moderated list</em>, web <a href="http://mail.gnu.org/pipermail/bug-grub/" target="_top">archives</a> - technical debugging and discussion. </dd> -</dl> - -[Hurd Traffic](http://www.kerneltraffic.org/debian-hurd/). - - P.S. - There does not exist any "stupid" questions! - We have all been beginners. - D.S. - -The discussion reference page is <http://www.gnu.org/software/hurd/help.html> - -See also the [[Hurd/HurdIRC]] topic. +* [[Hurd/HurdIRC]]
\ No newline at end of file diff --git a/Hurd/NeighborHurd.mdwn b/Hurd/NeighborHurd.mdwn index 5a9020fc..89d7be02 100644 --- a/Hurd/NeighborHurd.mdwn +++ b/Hurd/NeighborHurd.mdwn @@ -1,3 +1,21 @@ -<http://www.gnu.org/software/hurd/howto/subhurd.html> +It is possible to run multiple instances of the Hurd +in parallel, on a single instance of Mach. Other than +performance crosstalk, they are essentially isolated. +Practically, as many devices do not allow multiple +non-cooperating users, e.g., hard drive and network +this is not currently possible. It can be overcome, +however, by virtualizing these problematic devices. --- [[Main/GrantBow]] - 21 Jan 2003 +When extra hardware is not available, it is possible to +use a sub-hurd. A sub-Hurd is like a neighbor Hurd, +however, makes use of some resources provided by another +Hurd. For instance, backing store and the console. +([[SubhurdHowto]]) + +Sub-hurds are extremely useful for debugging core +servers as it is possible to attach to them with gdb +from the parent ([[DebuggingViaSubhurds]]. This avoids +deadlock, e.g., when the instance of gdb stops the +server but requires its use. +(Note: it is possible to use [[NonInvasiveDebugging]], +but this is less flexible.) diff --git a/Hurd/SubhurdHowto.mdwn b/Hurd/SubhurdHowto.mdwn index 265a43b0..df00dff5 100644 --- a/Hurd/SubhurdHowto.mdwn +++ b/Hurd/SubhurdHowto.mdwn @@ -60,3 +60,7 @@ If you want to access the subhurd processes from the outside, e.g. for debugging ## <a name="Further_Info"> Further Info </a> On [[DebuggingViaSubhurds]] you can find information about how to use subhurd for debugging purposes. + + +Roland's [tutorial](http://www.gnu.org/software/hurd/howto/subhurd.html) +on setting up sub-hurds.
\ No newline at end of file diff --git a/Hurd/TheGnuHurd.mdwn b/Hurd/TheGnuHurd.mdwn index dc1ee960..ff20aaf3 100644 --- a/Hurd/TheGnuHurd.mdwn +++ b/Hurd/TheGnuHurd.mdwn @@ -1,66 +1,19 @@ -# <a name="Table_of_Contents"> Table of Contents </a> - -%TOC% - -# <a name="Introduction_to_the_Hurd"> Introduction to the Hurd </a> - -The GNU Hurd is the GNU project's replacement for the Unix kernel. The Hurd is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). - -Currently, the Hurd runs on IA32 machines. The Hurd should, and probably will, be ported to other hardware architectures or other microkernels in the future. - -# <a name="Advantages_of_the_Hurd"> Advantages of the Hurd </a> - -The Hurd is not the most advanced kernel known to the planet (yet), but it does have a number of enticing features: - -<dl> - <dt><b>it's free software</b></dt> - <dd> Anybody can use, modify, and redistribute it under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License (GPL)</a>. </dd> - <dt><b>it's compatible</b></dt> - <dd> The Hurd provides a familiar programming and user environment. For all intents and purposes, the Hurd is a modern Unix-like kernel. The Hurd uses the <a href="http://www.gnu.org/software/libc/libc.html" target="_top">GNU C Library</a>, whose development closely tracks standards such as ANSI/ISO, BSD, POSIX, Single Unix, SVID, and X/Open. </dd> - <dt><b>it's built to survive</b></dt> - <dd> Unlike other popular kernel software, the Hurd has an object-oriented structure that allows it to evolve without compromising its design. This structure will help the Hurd undergo major redesign and modifications without having to be entirely rewritten. </dd> - <dt><b>it's scalable</b></dt> - <dd> The Hurd implementation is aggressively multithreaded so that it runs efficiently on both single processors and symmetric multiprocessors. The Hurd interfaces are designed to allow transparent network clusters (collectives), although this feature has not yet been implemented. </dd> - <dt><b>it's extensible</b></dt> - <dd> The Hurd is an attractive platform for learning how to become a kernel hacker or for implementing new ideas in kernel technology. Every part of the system is designed to be modified and extended. </dd> - <dt><b>it's stable</b></dt> - <dd> It is possible to develop and test new Hurd kernel components without rebooting the machine (not even accidentally). Running your own kernel components doesn't interfere with other users, and so no special system privileges are required. The mechanism for kernel extensions is secure by design: it is impossible to impose your changes upon other users unless they authorize them or you are the system administrator. </dd> - <dt><b>it exists</b></dt> - <dd> The Hurd is real software that works Right Now. It is not a research project or a proposal. You don't have to wait at all before you can start using and developing it. </dd> -</dl> - -# <a name="What_the_Hurd_means"> What the Hurd means </a> - -According to Thomas Bushnell, BSG, the primary architect of the Hurd: \`Hurd' stands for \`Hird of Unix-Replacing Daemons'. And, then, \`Hird' stands for \`Hurd of Interfaces Representing Depth'. We have here, to my knowledge, the first software to be named by a pair of mutually recursive acronyms. - -# <a name="Status_of_the_project"> Status of the project </a> - -The Hurd, together with the GNU Mach microkernel, the GNU C Library and the other GNU programs, provides a rather complete and usable operating system today. It is not ready for production use, as there are still many bugs and missing features. However, it should be a good base for further development and non-critical application usage. - -GNU/Hurd is completely self-contained (you can compile all parts of the Hurd system from GNU/Hurd itself). You can run several GNU/Hurd systems in parallel, and debug even critical servers in another GNU/Hurd with gdb. You can run the X window system, applications that use it, and advanced server applications like the Apache webserver. - -On the negative side, the support for character devices (like sound cards) and other hardware is mostly missing. Although the POSIX interface is provided, some additional interfaces like POSIX threads, shared memories or semaphores are still under development. - -All this applies to the current development version, and not to the last release (0.2). We encourage everybody who is interested to try out the latest development version, and send feedback to the Hurd developers. - ----- - -Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA - -Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. - --- [[Main/JoachimNilsson]] - 13 May 2002 - ----- - -# <a name="Language_and_the_Hurd"> Language, and the Hurd </a> - -The Hurd has its share of linguistic debate. The subject of proper usage comes up quite often. - -We call our kernel replacement \`\`the Hurd.'' Although Thomas Bushnell, BSG states that the word \`\`Hurd'' is an acronym; we do not treat it as such, but rather as a concrete noun. It is widely regarded as incorrect to use the term \`\`HURD'' or \`\`H.U.R.D.'' So, to refer to the collection of servers running on top of the microkernel, we would say, \`\`I have upgraded to the latest version of the Hurd.'' Since the Hurd is part of the GNU Project, we also refer to it as \`\`GNU Hurd'' which is treated as a proper noun. - -The Hurd, in conjunction with Mach, forms the core of the GNU operating system. So, one can say \`\`I have installed GNU on my friend's new computer.'' The Debian Project clarifies this by using the name \`\`Debian GNU/Hurd'', because it also distributes the GNU/Linux variant of GNU. - -To pronounce the word \`\`Hurd,'' you should say the English word \`\`herd.'' This is pronounced as \`\`hɚd'' using the International Phonetic Alphabet. - --- [[Main/SimonLaw]] - 16 May 2002 +The Hurd is GNU's replacement for the various UNIX and Linux kernels. + +The Hurd is firstly a collection of protocols formalizing how different +components may interact. The protocols are designed to reduce the mutual +[[trust]] requirements of the actors thereby permitting a more [[extensible|extensibility]] +system. These include interface definitions to manipulate files and +directories and to resolve path names. This allows any process to +implement a file system. The only requirement is that it have access +to its backing store and that the principal that started it own the +file system node to which it connects. + +The Hurd is also a set of servers that implement these protocols. +They include fie systems, network protocols and authentication. +The servers run on top of the [[Mach]] [[microkernel]] and use +Mach's [[IPC]] mechanism to transfer information. + +The Hurd development effort is a somewhat separate project from the +Debian GNU/Hurd port. The Hurd is a component of the GNU operating +system. diff --git a/Hurd/ToDo.mdwn b/Hurd/ToDo.mdwn index 0e6ef567..2d65f0c8 100644 --- a/Hurd/ToDo.mdwn +++ b/Hurd/ToDo.mdwn @@ -1,21 +1,115 @@ -# <a name="Debian_GNU_Hurd"> </a> Debian GNU/Hurd +For how best to contribte, see [[contributing]]. -The Debian Hurd port maintains [a list of projects](http://alioth.debian.org/pm/?group_id=30628), both porting and general enhancements. +This todo is primarily targetted at the Hurd proper +and applications that rely on the Hurd interfaces. -# <a name="psmisc"> psmisc </a> +The canonical TODOs from the CVS archive: + +* [TODO file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain) +* [Task file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain) + +* psmisc The tools provided by the psmisc package are linux centric. Killall and pstree, for instance, require Linux's proc file system but could just as easily use Hurd's libps. --- [[NealWalfield]] - 14 Dec 2005 +* tmpfs +* ppp +* unionfs/stowfs +* supermount translator -# <a name="tmpfs"> tmpfs </a> +Related: [[KnownHurdLimits]] -# <a name="ppp"> ppp </a> +From Marcus, 2002: -# <a name="unionfs_stowfs"> unionfs/stowfs </a> +* xkb driver for console (for international users) +* kbd leds in console (well, in general, Roland's new driver in oskit for that crap) +* fixing fakeroot (it's buggy) +* fixing tmpfs (it's buggy, Neal says it's Mach's fault) +* adding posix shared memory (requires the io\_close call to be implemented) +* adding posix file locking (requires the io\_close call to be implemented) +* testing + * find + various filesystems (are inode numbers for . and .. sane?) + * ext2fs with other block sizes than 4096 + * --help and --version and --usage in all programs + * I have seen ^V in some --help output, might be argp bug + * Verify that all options are documented clearly, and that no unimplemented options appear + * Is the short and long description in the help output correct? + * Is the return value of all programs correct (eg, does main() return a sane value) + * Is the suid bit correctly set for all installed programs? + * Translators + * Does settrans -g work? -fg? + * Does fsysopts work? Does setting options with fsysopts work? + * Does stat() work on all translated nodes and give proper data? + * What about chown, chmod (some translators should pass this through to the underlying node, esp in /dev!) + * Does statfs give correct data? + * Are all inode numbers and link counts correct? +* We also should have a "make check" test suite. We can add this once Jeff finished his automake patches +* pick up the other things + * pthread, definitely. Now that we are so close + * new console is basically done + * needs integration of course + * X switching support +* there is certainly more to do ... -# <a name="_http_hurd_gnufans_org_bin_view_"> </a> [Improve Mach](http://hurd.gnufans.org/bin/view/Mach/GNUMachRevivalProject) +Wolfgang list of [Easy tasks](http://mail.gnu.org/pipermail/help-hurd/2002-July/006413.html) on July 28, 2002: -# <a name="supermount_translator"> supermount translator </a> +<table border="1" cellpadding="1" cellspacing="0"> + <tr> + <th bgcolor="#99CCCC"><strong>Difficulty</strong></th> + <th bgcolor="#99CCCC"><strong>Task</strong></th> + </tr> + <tr> + <td> 0 </td> + <td> Check if all programs handle options (at least --help, --version and --usage; don't forget about the shell scripts) </td> + </tr> + <tr> + <td> 1 </td> + <td> Check if all translators handle fsysopts </td> + </tr> + <tr> + <td> 1 </td> + <td> Check if all translators respond to "settrans -g" </td> + </tr> + <tr> + <td> 1 </td> + <td> More tests of this kind </td> + </tr> + <tr> + <td> 2 </td> + <td> Fix those of the above who don't work as intended </td> + </tr> + <tr> + <td> 2 </td> + <td> Document (in doc/hurd.texi) all undocumented programs (translators as well as programs in utils/ and sutils/ and some others) </td> + </tr> + <tr> + <td> 1 </td> + <td> Find a POSIX test suite, run it on GNU/Hurd, report the results </td> + </tr> + <tr> + <td> 1 </td> + <td> Find more useful test suites to run </td> + </tr> + <tr> + <td> 3 </td> + <td> Update INSTALL-cross </td> + </tr> + <tr> + <td> 2 </td> + <td> Check if all the store classes in libstore work (we have many of them, look into the Makefile) </td> + </tr> + <tr> + <td> 4 </td> + <td> Fix those who don't work </td> + </tr> + <tr> + <td> 2 </td> + <td> Document all still undocumented store classes </td> + </tr> + <tr> + <td> 2 </td> + <td> The console is pretty new code, it told me it wants to get tested </td> + </tr> +</table> -# <a name="user_level_drivers"> user-level drivers </a> +Where difficulty 0 means trivial and 4 means tricky; the difficulty has nothing to do with the importance. diff --git a/Hurd/Translation.mdwn b/Hurd/Translation.mdwn index 167419d1..a5f78aa5 100644 --- a/Hurd/Translation.mdwn +++ b/Hurd/Translation.mdwn @@ -16,6 +16,3 @@ \* [[HurdRu]]: <http://hurd.kholmsk.ru> -\* [[HurdPt]]: - -See also: [[XattrHurd]] diff --git a/Hurd/UserGroups.mdwn b/Hurd/UserGroups.mdwn index 0cb9b043..ee67b616 100644 --- a/Hurd/UserGroups.mdwn +++ b/Hurd/UserGroups.mdwn @@ -1,17 +1 @@ -# <a name="Hurd_User_Groups"> Hurd User Groups </a> - -* [[Hurd/THUG]] - Toronto (GNU/)Hurd User Group -* [Hurdfr.org](http://www.hurdfr.org/) -* [[Hurd/AtelierGnuGulliver]] - Rennes - France -* [Hurd.ru](http://www.hurd.ru/) -* [[Hurd/CHUG]] - California Hurd User Group -* [[Hurd/DHUG]] - Dunedin (GNU/)Hurd User Group -* [[Hug/HurdBr]] - Hurd Br is a brasilian, portuguese speaking, HUG - --- [[Main/SimonLaw]] - 25 May 2002 - --- [[Main/TWikiGuest]] - 08 Oct 2002 - --- [[Main/GrantBow]] - 11 Oct 2002 - --- [[Main/AndrewMitchell]] - 16 Oct 2002 +See [[Hug]] diff --git a/Hurd/WhoRunsGNU.mdwn b/Hurd/WhoRunsGNU.mdwn index ac425145..c317ef92 100644 --- a/Hurd/WhoRunsGNU.mdwn +++ b/Hurd/WhoRunsGNU.mdwn @@ -17,11 +17,13 @@ There are many now using test installations of Debian GNU/Hurd for testing and d ## <a name="I_run_GNU_"> </a> I run GNU! <dl> - <dt> Budi Rahardjo</dt> + <dt> Budi Rahardjo</dt> <dd><a href="http://hurd.indocisc.com" target="_top">http://hurd.indocisc.com</a>, contact at <a href="mailto:budi@research.indociscNOSPAM.com">budi@research.indociscNOSPAM.com</a></dd> <dt>[[Main/JamesAMorrison]]</dt> <dd><a href="http://hurd.dyndns.org" target="_top">http://hurd.dyndns.org</a>, </dd> - <dt> Your Name Here</dt> + <dt> Michael Casadevall (NCommander)</dt> + <dd><a href="http://cerberus.rh.rit.edu"></dd> + <dt> Your Name Here</dt> <dd> Link to your system </dd> </dl> diff --git a/Hurd/contributing.mdwn b/Hurd/contributing.mdwn new file mode 100644 index 00000000..e21f28be --- /dev/null +++ b/Hurd/contributing.mdwn @@ -0,0 +1,37 @@ +# Porting Applications + +Debian is currently the Hurd distribution of choice among Hurd +users and developers. Approximately half of the Debian archive +has been compiled successfully on the Hurd, however, many +programs fail to build for various reasons. A [list of build +failures including error messages](http://unstable.buildd.net/buildd/hurd-i386_Failed.html) +can be found, as well as a [preliminary analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html) +of them. If you want to port any of these, file patches in the +[Alioth patch tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse) + for review. It might be a good idea to record your intention +to port something in the [Alioth task tracker](http://alioth.debian.org/pm/task.php?group_project_id=34&group_id=30628&func=browse) so other people do not do duplicated work. You can also just +install the Hurd and find what doesn't work for you and port +it and then file patches for that package in [above patch tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse). +Another important task is making sure that patches go upstream as +well, especially for GNU projects. + +If you want to further development, a list of interesting +projects is available in the [Alioth task tracker](http://alioth.debian.org/pm/task.php?group_project_id=35&group_id=30628&func=browse). +Those projects are not necessarily Debian specific, but do +not touch the Hurd proper. + +# Hurd Proper + +If you are interested in developping the Hurd proper, there is +plenty of work to do. Before you can significantly contribute, +take some time to learn about the system, e.g., +[[Mach/MicroKernelsForBeginners]]. Until you can do the basic exercises +listed there, you won't be able to significantly contribute to +the Hurd. + +See the [[ToDo]]. + +# GNU Mach + +GNU Mach is the underlying microkernel used by the Hurd. It has +a number of deficencies [[Mach/GNUMachRevivalProject]]. diff --git a/Hurd/debbuging.mdwn b/Hurd/debbuging.mdwn new file mode 100644 index 00000000..436014f2 --- /dev/null +++ b/Hurd/debbuging.mdwn @@ -0,0 +1,4 @@ +See: + +* [[NeighborHurd]] +* [[NonInvasiveDebugging]] diff --git a/Hurd/gettinghelp.mdwn b/Hurd/gettinghelp.mdwn new file mode 100644 index 00000000..8a4c4d99 --- /dev/null +++ b/Hurd/gettinghelp.mdwn @@ -0,0 +1,16 @@ +# Essential Documentation + +* [[FrequentlyAskedQuestions]] +* [[Mach/HardwareCompatibilityList]] + +# Forums + +Please follow these [guidelines](http://catb.org/~esr/faqs/smart-questions.html) +when asking your question. Namely: spend some time trying +to solve the problem on your own (e.g., [search the web](http://www.google.com), +use this wiki, etc.), show us that you did so when you +ask your question, and provide as many relevant details as possible +reproducing them as exactly as possible. + +* [[MailLists]] +* [[HurdIRC]]
\ No newline at end of file diff --git a/Hurd/history.mdwn b/Hurd/history.mdwn new file mode 100644 index 00000000..c29142f9 --- /dev/null +++ b/Hurd/history.mdwn @@ -0,0 +1,2 @@ +<a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html" target="_top">History 1997-2003</a></dt> +<dd> Personal view of Marcus Brinkmann about Hurd development in 1997-2003.
\ No newline at end of file diff --git a/Hurd/noninvasivedebugging.mdwn b/Hurd/noninvasivedebugging.mdwn new file mode 100644 index 00000000..6259ce28 --- /dev/null +++ b/Hurd/noninvasivedebugging.mdwn @@ -0,0 +1,6 @@ +Sometimes using gdb on a server can result in +deadlock. You can still use gdb by using +the "set noninvasive" option. This indicates +to gdb to not stop the program but allows you to +nevertheless examine its state. Thus, you can get back traces +and value of variables (and watch them change underneath you).
\ No newline at end of file diff --git a/Hurd/running.mdwn b/Hurd/running.mdwn new file mode 100644 index 00000000..b431966a --- /dev/null +++ b/Hurd/running.mdwn @@ -0,0 +1,5 @@ +* [[Distrib]] - Distributions based on the Hurd +* [[Xen]] - In Xen +* [[LiveCD]] - Live CDs +* [[Distrib/QEMU]] - In an Emulator +* [[FlashHurd]] - From a flash stick
\ No newline at end of file diff --git a/Hurd/xen.mdwn b/Hurd/xen.mdwn new file mode 100644 index 00000000..3d70b4f6 --- /dev/null +++ b/Hurd/xen.mdwn @@ -0,0 +1,17 @@ +Note: since GNU Mach doesn't handle PAE, you need a PAE-disabled Hypervisor. + +- Copy `gnumach-xen` and `hurd-modules` to your dom0 /boot. +- Copy `hurd` into `/etc/xen`, edit it for fixing access to your hurd / and swap +- Run `xm create -c hurd`, gnumach should get started. +- If `xm` complains about networking, it's Xen fault, see Xen documentation for how to configure the network. The simplest way is network-bridge with fixed IPs. + +If you want to generate these images, first get the `gnumach-1-branch-Xen-branch` branch from gnumach CVS. +Then look for "Ugly" in `kern/bootstrap.c`, how to generate `hurd-modules` is explained there, and you'll have to fix `EXT2FS_SIZE` and `LD_SO_SIZE` by hand. +Then use + + ./configure --enable-platform=xen + make + +Instead, you can get the binaries at <http://dept-info.labri.fr/~thibault/hurd-xen/>. + +The current `hurd-modules` was built from the debian packages `hurd 20070606-2` and `libc0.3 2.6.1-1`. @@ -1,87 +1,16 @@ -## <a name="GNU_Mach"> </a> GNU Mach +Mach is a so-called first generation [[microkernel]]. It is the +microkernel currently used by the [[Hurd]]. -This web deals with the Mach micro kernel, the base for the Hurd servers which makes out the GNU operating system. This is also the logical place for any other future microkernel, like <a href="http://www.l4ka.org" target="_top">L4</a> for instance. <p> Feel free to add relevant content. </p> -<p><strong><em>Table of Contents:</em></strong></p> -<p> -</p> -<ul> -<li>[[MachHistory]]: History of Mach </li> -</ul> -<p> -</p> -<ul> -<li>[[MachConcepts]]: <a href="http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html" target="_top">Linus vs. Tanenbaum</a></li> -</ul> -<p> -</p> -<p> -</p> -<ul> -<li><a href="http://www.cs.cornell.edu/Info/People/ulfar/ukernel/ukernel.html" target="_top">Microkernels</a> (an HTML review of the area from late 1996) </li> -</ul> -<p> -</p> -<ul> -<li><a href="http://www.nongnu.org/hurdextras/ipc_guide/ipc_guide.html" target="_top">The Unofficial GNU Mach IPC beginner's guide</a> (part of <a href="http://savannah.nongnu.org/projects/hurdextras/" target="_top">Hurd Extras project</a>) </li> -</ul> -<p> -</p> -<ul> -<li><a href="http://foobar-qux.org:8080/hde/MACH_DOCS_PDFS/" target="_top">Documents about Mach</a></li> -</ul> -<p> -</p> -<ul> -<li>[[GNUMach]]: GNUmach 1.x kernel <ul> -<li>[[BuildingGNUMach]]</li> -</ul> -</li> -</ul> -<p> -</p> -<ul> -<li>[[OskitMach]]: GNUmach 2.0 (DEFUNCT) <ul> -<li>[[OskitMachStatusList]]: Status and TODO list (<a href="http://packages.debian.org/gnumach" target="_top">deb status</a>) </li> -<li>[[OskitMachPatches]]: Bleeding edge patches </li> -<li>[[OskitPatches]]: Useful patches for the OSKit </li> -<li>[[BuildingOskitMach]]: How to build your own GNUmach kernel </li> -<li>[[RemoteDebugOskitMach]]: How to use gdb to remote debug the GNUmach kernel </li> -</ul> -</li> -</ul> -<p> -</p> -<ul> -<li>[[MicroKernelFUD]]: Fear, Uncertainty, Doubt - The Micro Kernel Experiment Continues </li> -</ul> -<p> -</p> -<ul> -<li>[[MicroKernelResearch]]: Papers on Mach related topics, [[PosixSemaphores]], [[PortToL4]]. </li> -</ul> -<p> -</p> -<ul> -<li>[[MicroKernelsForBeginners]]: (suggested page, better description needed) For experienced users who know little about microkernels but wish to learn about them. </li> -</ul> -<p> -</p> -<ul> -<li><a href="http://i30www.ira.uka.de/teaching/pastcourses/lecture.php?courseid=80" target="_top">Microkernel construction</a> (lectures by the <a href="http://l4ka.org/projects/pistachio/" target="_top">L4Ka::Pistachio</a> team) </li> -</ul> -<p> -</p> -<ul> -<li> Other <nop>Mach kernels that can be of interest (noone even investigate yet if they can be of some use): <ul> -<li><a href="http://developer.apple.com/darwin/" target="_top">Darwin</a>: The kernel of <a href="http://www.apple.com/macosx/" target="_top">Max OS X</a> (<a href="http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/" target="_top">Kernel Programming book</a>) </li> -<li><a href="http://www.kerneltrap.org/node.php?id=543" target="_top">Darwin binary compatibilty</a> in <a href="http://www.netbsd.org/" target="_top">NetBSD</a></li> -<li><a href="http://www.morphos.org" target="_top">http://www.morphos.org</a></li> -<li> a small <a href="http://cliki.tunes.org/Microkernel%20Debate" target="_top">Microkernel debate</a></li> -<li> a <a href="http://www.ussg.iu.edu/hypermail/linux/kernel/0206.2/1337.html" target="_top">reply</a> to Alan Cox re: Amiga DOS </li> -</ul></nop></li> -</ul> -<p> -</p> -<ul> -<li>[[GNUMachRevivalProject]]: Task and Wish list for a new effort to make GNU Mach a reliable (in stability and performance terms) microkernel for The Hurd. </li> -</ul> +* [[MachConcepts]] +* [[MachHistory]] ([Torvalds, Tanenbaum Debate](http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html)) + +* [[MicroKernelsForBeginners]] +* [[MicroKernelFUD]]: Fear, Uncertainty, Doubt +* [[MicroKernelResearch]] + + +# Implementations + +* [[GNUMach]] +* [[OskitMach]] - A Once Successor of Mach based on OSKit +* [Apple's Darwin](http://developer.apple.com/darwin/) ([API](http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/index.html)) (**non-free**) diff --git a/Mach/GNUMach.mdwn b/Mach/GNUMach.mdwn index f0134a8d..a7f47ac9 100644 --- a/Mach/GNUMach.mdwn +++ b/Mach/GNUMach.mdwn @@ -1,48 +1,13 @@ -# <a name="Table_of_Contents"> Table of Contents </a> +GNU Mach runs on x86 machines (it does not support 64-bit machines). GNU +Mach is currently used by the GNU [[Hurd]]. -%TOC% +GNU Mach remains compatible with Mach 3.0. -# <a name="Introduction_to_GNU_Mach"> </a> Introduction to GNU Mach +The majority of GNU Mach's device drivers are from Linux 2.0. They were +added using glue code, i.e., a Linux emulation layer in Mach. -GNU Mach is the microkernel of the GNU system. A microkernel provides only a limited functionality, just enough abstraction on top of the hardware to run the rest of the operating system in user space. The GNU Hurd servers and the GNU C library implement the POSIX compatible base of the GNU system on top of the microkernel architecture provided by Mach. +# Related Links -Currently, GNU Mach runs on IA32 machines. GNU Mach should, and probably will, be ported to other hardware architectures in the future. Mach was ported to many operating systems in the past. - -GNU Mach is maintained by the Hurd developers for the GNU project. If you need help with GNU Mach or want to contribute to the development of the microkernel, you should [contact the Hurd people](http://www.gnu.org/software/hurd/help.html). - -For another view, please see the [Wikipedia Mach kernel entry](http://www.wikipedia.com/wiki/Mach+kernel) -- [[Main/GrantBow]] - 02 Jun 2002 - -# <a name="Advantages_of_GNU_Mach"> </a> Advantages of GNU Mach - -GNU Mach is not the most advanced microkernel known to the planet, nor is it the fastest or smallest, but it has a rich set of interfaces and some features which make it useful as the base of the Hurd system. - -<dl> - <dt><b>it's free software</b></dt> - <dd> Anybody can use, modify, and redistribute it under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License (GPL)</a>.it's built to survive As a microkernel, GNU Mach doesn't implement a lot of the features commonly found in an operating system, but only the bare minimum that is required to implement a full operating system on top of it. This means that a lot of the operating system code is maintained outside of GNU Mach, and while this code may go through a complete redesign, the code of the microkernel can remain comparatively stable. </dd> - <dt><b>it's scalable</b></dt> - <dd> Mach is particularly well suited for SMP and network cluster techniques. Thread support is provided at the kernel level, and the kernel itself takes advantage of that. Network transparency at the IPC level makes resources of the system available across machine boundaries (with NORMA IPC, currently not available in GNU Mach). </dd> - <dt><b>it exists</b></dt> - <dd> The Mach microkernel is real software that works Right Now. It is not a research or a proposal. You don't have to wait at all before you can start using and developing it. Mach has been used in many operating systems in the past, usually as the base for a single UNIX server. In the GNU system, Mach is the base of a functional multi-server operating system, the Hurd. </dd> -</dl> - -# <a name="Status_of_the_project"> Status of the project </a> - -GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions, and so a broad range of common hardware is supported. - -However, the Linux device drivers have been improved greatly since the 2.0.x version, and a new version of Mach based on the OSKit library is being worked on, which uses newer drivers and in general has cleaner machine specific support code. - ----- - -Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA - -Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. - --- [[Main/JoachimNilsson]] - 13 May 2002 - -A unique advantage is being able to run a [Neighbor Hurd](http://www.gnu.org/software/hurd/howto/subhurd.html). - --- [[Main/GrantBow]] - 28 Sep 2002 - -I don't want to refactor this content as it's a Verbatim copy. However I want to add that GNUMach 1.3 uses Linux drivers as of the Linux kernel version 2.0.36. - --- [[Main/GrantBow]] - 09 Oct 2002 +* [[BuildingGNUMach]] +* [[GNUMachRevivalProject]] - GNU Mach Projects +* [[Ports]] - Ports to other Architectures
\ No newline at end of file diff --git a/Mach/GNUMach/ports.mdwn b/Mach/GNUMach/ports.mdwn new file mode 100644 index 00000000..f6e98d5a --- /dev/null +++ b/Mach/GNUMach/ports.mdwn @@ -0,0 +1,2 @@ +* [PowerPC](http://www.pjbruin.dds.nl/hurd/) + diff --git a/Mach/MachConcepts.mdwn b/Mach/MachConcepts.mdwn index b691a119..f81e4e4f 100644 --- a/Mach/MachConcepts.mdwn +++ b/Mach/MachConcepts.mdwn @@ -1,67 +1,7 @@ -## <a name="Table_Of_Contents"> Table Of Contents </a> +[[Mach]] is a first-generation [[microkernel]]. Mach's basic abstractions include +[[AddressSpace]]s in the form of [[Mach/Task]]s, execution contexts in the +form of threads, [[Mach/IPC]], [[capabilities]] in the form of +[[Mach/Ports]], and [[Mach/MemoryObjects]], which enable +Mach's [[Mach/ExternalPagerMechanism]]. -%TOC% - -A GNU Mach system consists of many _tasks_. You can think Mach tasks as \*nix processes but they are not the same. In processes there are signals, process/group/session IDs, file descriptors and many other things. Tasks are used for resource allocation and sharing. They are _resource containers_. - -## <a name="Execution_time"> Execution time </a> - -Tasks themselves don't spend execution time. The active entities in Mach are called _threads_ (points of execution). Each thread belongs to one and only one task and runs concurrently with all the other threads of a system. Tasks are resource environments (address space and communication channels) for threads. - -Using threads is much more cheaper than using \*nix processes. Switching between threads in one task change processor registers' state but switching between threads in different tasks involves context switching (changing resource environment) which is slow on most computer architectures. - -In a general case, two threads of one task are able to run on two different _processors_ simultaneously. That's the way Mach is designed. (Note that you can't play with the SMP support in GNU Mach yet.) Mach organizes processors into _processor sets_. A thread can be assigned to a processor set in order to be executed in any of the processors in the processor set. Of course, it is expected that all the processors in a processor set use shared memory. There is an optional and experimental support for building _multicomputers_ build from _nodes_. - -Threads have scheduling parameters and contain various statistics about them. - -## <a name="Address_space"> Address space </a> - -_Address space_ in Mach defines the valid addresses that can be used by threads in the task that owns that address space. Each task has only one address space and each address space belongs to only one task. So when we want to name an address space (e.g. in the Mach API) we name it by the task it belongs to. - -Address space is divided into _pages_. Each page has individual properties like _access rights_ (read/write/execute), _inheritance attributes_ (no inheritance/copy/share) and some other system properties discussed later. Page manipulation is optimized to help moving large blocks of data from one address space to another (read: from a thread of task A to a thread of task B; further read: client/server technology). - -Memory ranges of pages that can be controlled as a whole are called _memory objects_. The physical memory is conceived as a _memory cache_ that contains _memory cache objects_. So when a thread accesses a page in its task's address space, the memory object that includes this page is cached in the memory cache. Memory objects are paged out and paged in by _memory managers_ that can be user tasks. The decision when they should be paged in or paged out is left to Mach. Each memory object has an ordered list of memory managers that provide paging. The last one tried is the default memory manager that resides in the microkernel. The others are generally user tasks. The default memory manager is needed because the microkernel can't wait infinitely someone else to free the memory cache: it just calls the next memory manager hoping it to succeed. - -As an example, `mmap` POSIX interface (it maps file content to a memory region thus "loading" a file in no time) can be implemented by assigning a special memory manager to a memory range. When a thread accesses a page in that region, our custom memory manager can load the corresponding block of the file. - -_Wired pages_ are those that cannot be paged out. For example, Mach itself is a task with its own address space and threads, and all of its pages are wired. - -_Precious pages_ are those that must not be discarded silently when they are clean and memory is needed. For example, a memory manager that shares memory across a network could not restore a page if it is silently discarded because it is unmodified. This is not valid for the well-known pager managers that use disks as backing store. - -## <a name="Communication_channels"> Communication channels </a> - -_Communication channels_ in Mach are called _ports_. They can be compared with **nix system calls but have \*much** richer semantics and are ubiquitous in a Mach environment. In the Hurd, ports are used as _object references_. Hurd programs use these object references only by calling _methods_ defined in interface files (`.defs` files). - -Ports themselves are queues of _messages_. There can be multiple senders and only one receiver of these messages -- ports are unidirectional communication channels. To send or receive a message a task must have corresponding _port right_ to the port. (Of course, a task can't execute code, it is the threads within it that do that.) Mach knows what port rights belong to each task but threads in tasks refer to ports by _port names_. They are integer numbers that form the _port name space_ of task. Ports are automatically destroyed when there is no associated port right to them. - -So, the picture is that after obtaining a _port send right_, the client uses a port name to send messages to the port. They are (probably) queued and when the server task tries to receive messages using its _port receive right_ it gets the message(s). - -Messages are not only opaque data. They can contain port rights to be passed to another task. Port rights are copied or moved. Notice that port receive right must be moved but not copied because there can't be more than one task that hold receive right to a port. The receiving task creates a new port name to the port right received. - -Some data in the message can be _out-of-line data_. In the message they are references to memory regions which are _virtually copied_. When the message is received in a task these virtual copies become part of the address space of the task. "Virtual copy" means that it is not copied immediately but when it is changed. This is primarily used to send large blocks of data efficiently because it is too expensive to store them in the kernel address space. - -The ability to send port rights to other tasks can be used to easily implement remote procedure calls (RPC) with return results and in/out arguments by sending a port right to which the result have to be returned. This is called _reply port_ and it is usually referred by tasks with _send-once port right_. These port rights allow only one message to be send and after that the port right is immediately destroyed. - -All these facilites are used by the _Mach Interface Generator (Mig)_ to provide easy RPC for Mach tasks. Procedure definitions are described in `.defs` files using a Mig-specific Interface Definition Languager (IDL). Then they are compiled by Mig to C stubs and skeletons that have to be compiled and linked to client and server programs respectively. After that client programs call remote procedures more or less like any other C function. These functions are implemented in the stubs and encode arguments into message (_marshalling_), wait for result on a newly created reply port, decode return arguments from the reply message (_unmarshalling_) and pass them to the client program. Similar actions are provided in the skeletons that are linked to server programs. Mig allows very precise semantics to be specified about what the arguments are and how to be passed. Unfortunately Mig can generate only C code. - -When server task have to listen to a large number of ports using receive rights it can organize them into _port sets_. Port set look like port receive right but cannot be passed to another task and there are additional operations for including and excluding port receive rights. Waiting for a message from a port set waits all ports in the port set and returns exactly one message from randomly selected port that have message(s) in its queue. This is the only use of port sets. - -Ports are kernel-protected resources. There is no way for a task to do anything with a port unless it have corresponding port right. Remember that threads do not deal with port rights directly -- they use port names which refer to port right in a task. The delivery of messages is reliable and strictly ordered -- when a thread sends messages 1 and 2 it is guaranteed that the receiving task will catch them in the same order (but there can be intermediate messages send by other threads). - -**Controlling tasks, their address space, threads and other system objects** in Mach is implemented by using ports. Almost all of the Mach API (creating threads, etc) is implemented by sending messages to ports. **Device drivers** that reside in kernel space are controlled by ports too. In GNU Mach 1.3, these drivers are the Linux 2.0.36 ones. [[OskitMach]] provides more recent drivers. - -Ports abstraction allows RPCs to be executed on another computer transparently. This can be implemented with user task but there is an implementation in the kernel (called _NORMA_, not tested in GNU Mach) that do that. - -More detailed information about GNU Mach interfaces can be found in [The GNU Mach Reference Manual](http://www.gnu.org/software/hurd/gnumach-doc/mach.html). - --- [[Main/OgnyanKulev]] - 09 Dec 2002 - -Here is a link to some Mach 3 (pre GNU) documents that might be of help circa 1992. - -<http://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/> - --- [[Main/GrantBow]] - 16 Dec 2002 - -Convert from XHTML to [[TWiki/TextFormattingRules]] - --- [[Main/OgnyanKulev]] - 16 Jun 2003 +Mach's API is well-[[documented|Mach/Documentation]].
\ No newline at end of file diff --git a/Mach/MicroKernelFUD.mdwn b/Mach/MicroKernelFUD.mdwn index 1961f6d2..0ee5035c 100644 --- a/Mach/MicroKernelFUD.mdwn +++ b/Mach/MicroKernelFUD.mdwn @@ -1,8 +1,8 @@ # <a name="The_Microkernel_Experiment_is_Go"> The Microkernel Experiment is Going On </a> -by [Wolfgang J�hrling](mailto:wolfgang AT pro-linux DOT de) and [Jeroen Dekkers](mailto:jeroen AT dekkers DOT cx) +by [Wolfgang Jährling](mailto:wolfgang AT pro-linux DOT de) and [Jeroen Dekkers](mailto:jeroen AT dekkers DOT cx) -This article is a response to an [earlier article](http://www.linuxjournal.com/print.php?sid=6105) by Miles Nordin in Linux Journal, where he expressed his personal feelings about microkernels and monolithic kernels. We will try to present a different point of view. Of course, we are also biased, as we are both young hackers who try to turn [the GNU Hurd](http://www.gnu.org/software/hurd/) into a software useful for everyday-work; for those who don't know it (yes, we're abusing this article as an advertisement): The Hurd is a collection of Daemons, currently running on top of the Mach microkernel and providing a replacement for the Unix kernel together with the GNU C Library. +This article is a response to an [earlier article](http://www.linuxjournal.com/node/6105/print) by Miles Nordin in Linux Journal, where he expressed his personal feelings about microkernels and monolithic kernels. We will try to present a different point of view. Of course, we are also biased, as we are both young hackers who try to turn [the GNU Hurd](http://www.gnu.org/software/hurd/) into a software useful for everyday-work; for those who don't know it (yes, we're abusing this article as an advertisement): The Hurd is a collection of Daemons, currently running on top of the Mach microkernel and providing a replacement for the Unix kernel together with the GNU C Library. Miles Nordin claimed that microkernels are dead already. But this is not completely true. The first generation of microkernels, which were in fact no real microkernels, are dead. But there is a new generation, which uses a radically different strategy than the original (so-called) microkernels. Thus, microkernels are still a research topic, and today they look more promising than ever before. By now, this is just something we claim, but read on, and you'll find out why we do so. @@ -18,7 +18,7 @@ If you are interested in research about the performance of microkernel based sys ---- -Copyright (C) 2002 Wolfgang J�hrling <br /> Copyright (C) 2002 Jeroen Dekkers +Copyright (C) 2002 Wolfgang Jährling <br /> Copyright (C) 2002 Jeroen Dekkers Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/Mach/MicroKernelsForBeginners.mdwn b/Mach/MicroKernelsForBeginners.mdwn index a89b5284..1bfab1ed 100644 --- a/Mach/MicroKernelsForBeginners.mdwn +++ b/Mach/MicroKernelsForBeginners.mdwn @@ -1,17 +1,22 @@ -Think of this as a Wiki Pos^H^H^H Yellow Sticky Note Note +# Concepts -This page is linked to from [[Mach]]. I created it for the purpose of creating a 'beginners meta guide to microkernels'. +A [[microkernel]] implements a minimal number of abstractions +that facilitate the realization of operating system services. -Essentially, the rationale is as follows. There are many users of this Wiki who understand microkernels. Many users who come here may want to know more about microkernels, having just heard about them. (I heard years ago, but haven't taken a direct interest in the issues related to them.) +[[MachConcepts]] are documented here. -As a suggestion as to what should go here: +Read OSF's Kernel Principles. Find it under the +[[documentation]] link. -* Good books to read -* Good websites to visit -* Any easy to read papers concerning the topic +# Exercises -...you get the idea. +Mach's API is documented in OSF's Kernel API book. Find it +under the [[documentation]] link. Skim it to get an idea +of how the API looks and then try the following exercises: -nb. The above text is intended as a placeholder for actual content, which I cannot supply myself but think should go here. (Rationale is a reverse application of the 'do unto others...', namely I am most likely not the only thinking this and registering the initial suggestion may help as a catalyst to helping others...) +Send messages using Mach's IPC mechanism +([detailed description](http://walfield.org/pub/people/neal/papers/hurd-misc/mach-ipc-without-mig.txt)). --- [[Main/JohnAllsup]] - 29 Oct 2003 +Implement your own pager. Write a server that synthesizes +content on the fly and have a client map the object into its +address space and print out the file.
\ No newline at end of file diff --git a/Mach/OskitMach.mdwn b/Mach/OskitMach.mdwn index 449e8eb8..d1492654 100644 --- a/Mach/OskitMach.mdwn +++ b/Mach/OskitMach.mdwn @@ -1,6 +1,11 @@ -## <a name="Table_of_Contents"> Table of Contents </a> +[[toc ]] + +* [[OskitMachStatusList]]: Status and TODO list (<a href="http://packages.debian.org/gnumach" target="_top">deb status</a>) </li> +* [[OskitMachPatches]]: Bleeding edge patches </li> +* [[OskitPatches]]: Useful patches for the OSKit </li> +* [[BuildingOskitMach]]: How to build your own GNUmach kernel </li> +* [[RemoteDebugOskitMach]]: How to use gdb to remote debug the GNUmach kernel </li> -%TOC% ## <a name="About"> About </a> @@ -51,6 +56,3 @@ We have bugs, just like any other software product. To get around the more nasty See Igor Khavkine's, [i\_khavki@alcor.concordiaNOSPAM.ca](mailto:i_khavki@alcor.concordiaNOSPAM.ca), excellent help to [remote debug oskit-mach over a serial line](http://www.etherhogz.org/doc/oskit-boot.txt), or the local [[RemoteDebugOskitMach]]. ----- - -**_Comments:_** diff --git a/Mach/hardwarecompatibilitylist.mdwn b/Mach/hardwarecompatibilitylist.mdwn new file mode 100644 index 00000000..2af15db3 --- /dev/null +++ b/Mach/hardwarecompatibilitylist.mdwn @@ -0,0 +1,232 @@ +# CPU Architecture + +GNU Mach current only supports the x86 architecture. + +# Memory + +GNU Mach supports a maximum of 1GB of memory. If your system has +more, add the following to the start of your Grub stanza to boot +the Hurd: + + uppermem 1232896 + +# Video Cards + +Debian distributes a version of Xorg. 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. + +## SCSI + +* (53c78xx) Linux device driver for SCSI controller NCR 53C7,8xx; on + ix86-at enabled by default +* (AM53C974) Linux device driver for SCSI controller AM53/79C974 + (am53c974, am79c974); on ix86-at enabled by default +* (BusLogic) Linux device driver for SCSI controller BusLogic; on + ix86-at enabled by default +* (flashpoint) SCSI flashpoint +* (NCR53c406a) Linux device driver for SCSI controller NCR53c406a chip +* (advansys) Linux device driver for SCSI controller AdvanSys; on + ix86-at enabled by default +* (aha152x) Linux device driver for SCSI controller Adaptec + AHA-152x/2825 (aha152x, aha2825); on ix86-at enabled by default +* (aha1542) Linux device driver for SCSI controller Adaptec AHA-1542; + on ix86-at enabled by default +* (aha1740) Linux device driver for SCSI controller Adaptec AHA-1740; + on ix86-at enabled by default +* (aic7xxx) Linux device driver for SCSI controller Adaptec AIC7xxx; + on ix86-at enabled by default +* (dtc) Linux device driver for SCSI controller DTC3180/3280 (dtc3180, + dtc3280); on ix86-at enabled by default +* (eata) Linux device driver for SCSI controller EATA ISA/EISA/PCI + (DPT and generic EATA/DMA-compliant boards); on ix86-at enabled by + default +* (eata_dma) Linux device driver for SCSI controller EATA-DMA (DPT, + NEC, AT&T, SNI, AST, Olivetti, Alphatronix) +* (eata_pio) Linux device driver for SCSI controller EATA-PIO (old DPT + PM2001, PM2012A); on ix86-at enabled by default +* (fdomain) Linux device driver for SCSI controller Future Domain + 16xx; on ix86-at enabled by default +* (g_NCR5380) Linux device driver for SCSI controller Generic + NCR5380/53c400 (ncr5380, ncr53c400) +* (gdth) Linux device driver for GDT SCSI Disk Array Controller; on + ix86-at enabled by default +* (in2000) Linux device driver for SCSI controller Always IN 2000; on + ix86-at enabled by default +* (ncr53c8xx) Linux device driver for SCSI controller NCR53C8XX + (ncr53c8xx, dc390f, dc390u, dc390w); on ix86-at enabled by default +* (pas16) Linux device driver for SCSI controller PAS16; on ix86-at + enabled by default +* (qlogicfas) Linux device driver for SCSI controller Qlogic FAS; on + ix86-at enabled by default +* (qlogicisp) Linux device driver for SCSI controller Qlogic ISP; on + ix86-at enabled by default +* (seagate) Linux device driver for SCSI controller Seagate ST02, + Future Domain TMC-8xx; on ix86-at enabled by default +* (t128) Linux device driver for SCSI controller Trantor + T128/T128F/T228 (t128, t128f, t228); on ix86-at enabled by default +* (tmscsim) Linux device driver for SCSI controller Tekram DC-390(T) + (dc390, dc390t); on ix86-at enabled by default +* (u14-34f) Linux device driver for SCSI controller UltraStor 14F/34F; + on ix86-at enabled by default +* (ultrastor) Linux device driver for SCSI controller UltraStor; on + ix86-at enabled by default +* (wd7000) Linux device driver for SCSI controller WD 7000; on ix86-at + enabled by default + +## Other + +* (ppa) Linux device driver for IOMEGA Parallel Port ZIP drive; on + ix86-at enabled by default + +# NICs + +* (3c501) Linux device driver for Ethernet controller 3COM 501 (3c501) + / Etherlink I; on ix86-at enabled by default +* (3c503) Linux device driver for Ethernet controller 3Com 503 (3c503) + / Etherlink II; on ix86-at enabled by default +* (3c505) Linux device driver for Ethernet controller 3Com 505 (3c505, + elplus); on ix86-at enabled by default +* (3c507) Linux device driver for Ethernet controller 3Com 507 (3c507, + el16); on ix86-at enabled by default +* (3c509) Linux device driver for Ethernet controller 3Com 509/579 + (3c509, 3c579) / Etherlink III; on ix86-at enabled by default +* (3c59x) Linux device driver for Ethernet controller 3Com 59x/90x + (3c59x, 3c590, 3c592, 3c595, 3c597, 3c90x, 3c900, 3c905) + "Vortex/Boomerang"; on ix86-at enabled by default +* (3c515) Linux device driver for Ethernet controller 3Com 515 ISA + Fast EtherLink; on ix86-at enabled by default +* (ac3200) Linux device driver for Ethernet controller Ansel + Communications EISA 3200; on ix86-at enabled by default +* (apricot) Linux device driver for Ethernet controller Apricot XEN-II + on board ethernet; on ix86-at enabled by default +* (at1700) Linux device driver for Ethernet controller AT1700 (Fujitsu + 86965); on ix86-at enabled by default +* (atp) Linux device driver for Ethernet controller AT-LAN-TEC/RealTek + pocket adaptor +* (de4x5) Linux device driver for Ethernet controller DE4x5 (de4x5, + de425, de434, de435, de450, de500); on ix86-at enabled by default +* (de600) Linux device driver for Ethernet controller D-Link DE-600; + on ix86-at enabled by default +* (de620) Linux device driver for Ethernet controller D-Link DE-620; + on ix86-at enabled by default +* (depca) Linux device driver for Ethernet controller DEPCA (de100, + de101, de200, de201, de202, de210, de422); on ix86-at enabled by + default +* (e2100) Linux device driver for Ethernet controller Cabletron E21xx; + on ix86-at enabled by default +* (eepro) Linux device driver for Ethernet controller EtherExpressPro; + on ix86-at enabled by default +* (eepro100) Linux device driver for Ethernet controller Intel + EtherExpressPro PCI 10+/100B/100+; on ix86-at enabled by default +* (eexpress) Linux device driver for Ethernet controller EtherExpress + 16; on ix86-at enabled by default +* (epic100) Linux device driver for Ethernet controller SMC 83c170/175 + EPIC/100 (epic, epic100) / EtherPower II; on ix86-at enabled by + default +* (eth16i) Linux device driver for Ethernet controller ICL EtherTeam + 16i/32 (eth16i, eth32); on ix86-at enabled by default +* (ewrk3) Linux device driver for Ethernet controller EtherWORKS 3 + (ewrk3, de203, de204, de205); on ix86-at enabled by default +* (fmv18x) Linux device driver for Ethernet controller + FMV-181/182/183/184; on ix86-at enabled by default +* (hamachi) Linux device driver for Ethernet controller Packet Engines + "Hamachi" GNIC-2 Gigabit Ethernet; on ix86-at enabled by default +* (hp-plus) Linux device driver for Ethernet controller HP PCLAN+ + (27247B and 27252A); on ix86-at enabled by default +* (hp) Linux device driver for Ethernet controller HP PCLAN (27245 and + other 27xxx series); on ix86-at enabled by default +* (hp100) Linux device driver for Ethernet controller HP 10/100VG + PCLAN (ISA, EISA, PCI) (hp100, hpj2577, hpj2573, hpj2585, hp27248b); + on ix86-at enabled by default +* (intel-gige) Linux device driver for Ethernet controller Intel PCI + Gigabit Ethernet; on ix86-at enabled by default +* (lance) Linux device driver for Ethernet controller AMD LANCE and + PCnet (at1500, ne2100); on ix86-at enabled by default +* (myson803) Linux device driver for Ethernet controller Myson MTD803 + Ethernet adapter series; on ix86-at enabled by default +* (natsemi) Linux device driver for Ethernet controller National + Semiconductor DP8381x series PCI Ethernet; on ix86-at enabled by + default +* (ne) Linux device driver for Ethernet controller NE2000/NE1000 ISA + (ne, ne1000, ne2000); on ix86-at enabled by default and for qemu +* (ne2k-pci) Linux device driver for Ethernet controller PCI NE2000; + on ix86-at enabled by default +* (ni52) Linux device driver for Ethernet controller NI5210; on + ix86-at enabled by default +* (ni65) Linux device driver for Ethernet controller NI6510; on + ix86-at enabled by default +* (ns820) Linux device driver for Ethernet controller National + Semiconductor DP8382x series PCI Ethernet; on ix86-at enabled by + default +* (pcnet32) Linux device driver for Ethernet controller AMD PCI + PCnet32 (PCI bus NE2100 cards); on ix86-at enabled by default +* (rtl8139) Linux device driver for Ethernet controller RealTek + 8129/8139 (rtl8129, rtl8139) (not 8019/8029!); on ix86-at enabled by + default +* (seeq8005) Linux device driver for Ethernet controller Seeq8005; on + ix86-at enabled by default +* (sk_g16) Linux device driver for Ethernet controller Schneider & + Koch G16; on ix86-at enabled by default +* (smc-ultra) Linux device driver for Ethernet controller SMC Ultra; + on ix86-at enabled by default +* (smc-ultra32) Linux device driver for Ethernet controller SMC + Ultra32; on ix86-at enabled by default +* (starfire) Linux device driver for Ethernet controller Adaptec + Starfire network adapter; on ix86-at enabled by default +* (sundance) Linux device driver for Ethernet controller Sundance + ST201 "Alta" PCI Ethernet; on ix86-at enabled by default +* (tlan) Linux device driver for Ethernet controller TI ThunderLAN; on + ix86-at enabled by default +* (tulip) Linux device driver for Ethernet controller DECchip Tulip + (dc21x4x) PCI (elcp, tulip); on ix86-at enabled by default +* (via-rhine) Linux device driver for Ethernet controller VIA Rhine; + on ix86-at enabled by default +* (wavelan) Linux device driver for Ethernet controller AT&T WaveLAN & + DEC RoamAbout DS +* (wd) Linux device driver for Ethernet controller WD80x3; on ix86-at + enabled by default +* (winbond-840) Linux device driver for Ethernet controller Winbond + W89c840 PCI Ethernet; on ix86-at enabled by default +* (yellowfin) Linux device driver for Ethernet controller Packet + Engines Yellowfin Gigabit-NIC; on ix86-at enabled by default +* (znet) Linux device driver for Ethernet controller Zenith Z-Note + (znet, znote); on ix86-at enabled by default +* (i82365) Linux device driver for Intel 82365 PC Card controller; on + ix86-at enabled by default + + +# PCMCIA + +* (3c574_cs) Linux device driver for 3Com 3c574 ``RoadRunner'' PCMCIA + Ethernet; on ix86-at enabled by default +* (3c589_cs) Linux device driver for 3Com 3c589 PCMCIA Ethernet card; + on ix86-at enabled by default +* (axnet_cs) Linux device driver for Asix AX88190-based PCMCIA + Ethernet adapters; on ix86-at enabled by default +* (fmvj18x_cs) Linux device driver for fmvj18x chipset based PCMCIA + Ethernet cards; on ix86-at enabled by default +* (nmclan_cs) Linux device driver for New Media Ethernet LAN PCMCIA + cards; on ix86-at enabled by default +* (pcnet_cs) Linux device driver for NS8390-based PCMCIA cards; on + ix86-at enabled by default +* (smc91c92_cs) Linux device driver for SMC91c92-based PCMCIA cards; + on ix86-at enabled by default +* (xirc2ps_cs) Linux device driver for Xircom CreditCard and Realport + PCMCIA ethernet; on ix86-at enabled by default +* (orinoco_cs) Linux device driver for Hermes or Prism 2 PCMCIA + **Wireless** adapters (Orinoco); on ix86-at enabled by default + diff --git a/Mach/mach/documentation.mdwn b/Mach/mach/documentation.mdwn new file mode 100644 index 00000000..542ad85f --- /dev/null +++ b/Mach/mach/documentation.mdwn @@ -0,0 +1,2 @@ +- OSF's [Kernel Interface](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_interface.ps) +- OSF's [Kernel Principles](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/kernel_principles.ps)
\ No newline at end of file diff --git a/Mach/mach/ipc.mdwn b/Mach/mach/ipc.mdwn new file mode 100644 index 00000000..42cfacdf --- /dev/null +++ b/Mach/mach/ipc.mdwn @@ -0,0 +1,3 @@ +An IPC is sent by invoking a [[Mach/Port]]. + +[The Unofficial GNU Mach IPC beginner's guide](http://www.nongnu.org/hurdextras/ipc_guide/ipc_guide.html)
\ No newline at end of file diff --git a/Mach/mach/ports.mdwn b/Mach/mach/ports.mdwn new file mode 100644 index 00000000..54cc12ac --- /dev/null +++ b/Mach/mach/ports.mdwn @@ -0,0 +1,31 @@ +Mach ports are [[capabilities]]. + +A Mach port is a kernel queue. Each port has associated with +it a receive right and one or more send and send-once rights. +A queue can hold a number of messages. Once the queue is full, +the send blocks until their is space to enqueue the message +(this is interruptible via a timeout mechanism). + +A receive right designates a queue and authorizes the holder to +dequeue messages from the queue, and to create send and send-once +rights. + +Send and send-once rights designate a queue and authorize the +hold to enqueue messages (in the case of a send-once right, +a single message). Enqueuing a message is equivalent to +[[invoke|invoking]] a capability. + +Send and receive rights are named using local names. Each +task has associated with it a port address space. A ports +are addressed via this table. Each task thus has its own +private [[NamingContext]] for ports. + +Ports can be [[delegate]]d in an IPC message. When the +receiver dequeues the message, the right is made available +to it. + +A thread can only block receiving on a single port. To work +around this, the concept of a port set was introduced. A receive +right can be added to (at most) one port set. When a thread +receives from a port set, it dequeues from any of the ports that +has a message available.
\ No newline at end of file diff --git a/Mach/ports.mdwn b/Mach/ports.mdwn new file mode 100644 index 00000000..5fca2efe --- /dev/null +++ b/Mach/ports.mdwn @@ -0,0 +1 @@ +* [PowerPC](http://www.pjbruin.dds.nl/hurd/) @@ -1,5 +1,10 @@ -The [[MachInterfaceGenerator]] (MIG) is a program which generates inter-process communication (IPC) code. Specifically Mig generates remote procedure call (RPC) code for communication between client and server processes running on a Mach microkernel. +The [[MachInterfaceGenerator]] (MIG) is an [[IDL]] compiler. Based on an +interface definition, it creates stubs to [[invoke]] object methods +and to demultiplex incoming messages. These stubs conveniently hide +the details of Mach's [[IPC]] machinery. -<p> Mach servers run as separate tasks and communicate with RPC messages. The RPC interface is language independant and somewhat complex. MIG mitigates this complexity. </p> -<p> GNU MIG is fully compatible with OSF MIG. The <a href="http://www.gnu.org/software/hurd/mig.html" target="_top">official Mig</a> site is a page hosted on the official Hurd site. [[MigDocumentation]] is available. Mig also has it's own CVS module within the main Hurd CVS site. </p> -<p>[[BuildingMIG]]</p> +GNU MIG is fully compatible with OSF MIG. + +* MIG's [homepage](http://www.gnu.org/software/hurd/mig.html) +* [[MigDocumentation]] +* [[BuildingMIG]] - Building (and obtaining) MIG diff --git a/Mig/MigDocumentation.mdwn b/Mig/MigDocumentation.mdwn index 8478a8a4..c876e494 100644 --- a/Mig/MigDocumentation.mdwn +++ b/Mig/MigDocumentation.mdwn @@ -1,14 +1,10 @@ -## <a name="Table_of_Contents"> Table of Contents </a> +[[toc ]] -%TOC% - -## <a name="About"> About </a> +# About This is a small collection of links to external documents describing the [[MachInterfaceGenerator]] used by GNU Mach. -## <a name="Carnegie_Mellon_University"> Carnegie-Mellon University </a> - -### <a name="MiG_and_C_Thread_Programming"> MiG and C Thread Programming </a> +# MiG and C Thread Programming A tutorial which demonstrates the use of the C Threads library primitives in writing a multithreaded program and the use of the Mach Interface Generator (MIG) to generate remote procedure calls for interprocess communication. Like its companion tutorial, it is based on the Mach 2.5 system. However, the concepts are applicable to Mach 3.0 user level programming. @@ -16,11 +12,9 @@ Linda R. Walmer and Mary R. Thompson. **A Programmer's Guide to the Mach User En An ftp directory containing the [mig programming examples](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig_example) for this tutorial. -### <a name="PostScript_slides_on_MiG"> PostScript slides on MiG </a> - Slides to Rich Drave's talk on Mig, the Mach Interface Generator, on November 21, 1991: [PostScript](ftp://ftp.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/root.ps) [TeX](ftp://ftp.cs.cmu.edu//afs/cs/project/mach/public/doc/unpublished/internals_slides/Mig/slides.tex) -### <a name="Definition_of_MiG"> Definition of MiG </a> +# Roots Mig is an implementation of a subset of the Matchmaker **language**. @@ -28,6 +22,6 @@ Mig is an implementation of a subset of the Matchmaker **language**. Richard P. Draves,Michael B. Jones,Mary R. Thompson, **MIG - THE MACH INTERFACE GENERATOR**. [ps](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps) [doc](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.doc) November 1989. Department of Computer Science, Carnegie-Mellon University. -### <a name="Other_papers_related_to_MiG"> Other papers related to MiG </a> +# Related Work See the citations about [Mach and matchmaker: kernel and language support for objectoriented distributed systems](http://citeseer.ist.psu.edu/context/93073/0) here. "M. B. Jones and R. F. Rashid, \`Mach and matchmaker: kernel and language support for objectoriented distributed systems', Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1986, pp. 67--77." diff --git a/abac.mdwn b/abac.mdwn new file mode 100644 index 00000000..5f0ba007 --- /dev/null +++ b/abac.mdwn @@ -0,0 +1,8 @@ +ABAC stands for authorization-based access control. +In this model, access is not granted based on the +identity of the caller but by an authorizing agent +that delegates access to a particular resource. +Such authorization is then encapsulated in +[[capabilities]] allowing them to be freely [[delegated]]. + +See also [[IBAC]].
\ No newline at end of file diff --git a/asbestos.mdwn b/asbestos.mdwn new file mode 100644 index 00000000..366aa5d9 --- /dev/null +++ b/asbestos.mdwn @@ -0,0 +1,15 @@ +Asbestos is an operating system developed at MIT, Stanford +and UCLA to explore information flow control policies. The motivation +behind Asbestos is that typical access control systems are concerned +with the release of information, however, once that information is +released, the [[principal]] that released that information has no way to +control it. The problem is that a program might want to make use of +a service another program provides but not want to release the +information to it. To work around this, the OS provides the ability +to taint data. The taint is automatically applied to any derived +information. To propagate information outside of the machine, the +releaser must first untaint the information. This can only be done +with the original principal's authorization. + +Asbestos is described in Efstathopoulos et al.'s 2005 paper [Labels and +Event Processes in the Asbestos Operating System](http://pdos.csail.mit.edu/papers/asbestos-sosp05.pdf). diff --git a/capabilities.mdwn b/capabilities.mdwn new file mode 100644 index 00000000..fc1b36e0 --- /dev/null +++ b/capabilities.mdwn @@ -0,0 +1,23 @@ +A capability is a protected reference. It is a reference in that +it designates an object; it is protected in that in cannot be +forged. A capabilities both designates the object it refers to and +carries the authority to manipulate it. + +By binding [[designation]] and [[authorization]] together, capabilities +simplify [[delegation]]. Imagine that program instance A wants to +tell program B to use a particular file to store some data. +Further imagine that A and B are running in different [[TrustDomains]] +(e.g., with different UIDs). If A sends B just the name +of the file, B needs to first ensure that he does not accidentally +enable A to access the file on his own authority. That is, B wants +to protect against A hijacking his authority. (This problem is +refused to the [[ConfusedDeputy]] problem.) Also, since A likely +sent a string to identify the file to B, the identifier lacks a +[[NamingContext]] and therefore may resolve to a different object +than A intended. Be ensuring that designation and authorization are +always bound together, these problems are avoided. + +Unix file descriptors can be viewed as capabilities. Unix file +descriptors do not survive reboot, that is, they are not +[[persistent]]. To work around this, [[ACL]]s are used to +recover authority.
\ No newline at end of file diff --git a/confuseddeputy.mdwn b/confuseddeputy.mdwn new file mode 100644 index 00000000..0581c20b --- /dev/null +++ b/confuseddeputy.mdwn @@ -0,0 +1,4 @@ +[The confused deputy](http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html) +problem was articulated by Norm Hardy. It is a possible consequence +when [[designation]] and [[authorization]] are separated. [[Capabilities]] +help with this problem.
\ No newline at end of file diff --git a/designation.mdwn b/designation.mdwn new file mode 100644 index 00000000..318ef6a2 --- /dev/null +++ b/designation.mdwn @@ -0,0 +1 @@ +To designate is to name.
\ No newline at end of file diff --git a/destructiveinterference.mdwn b/destructiveinterference.mdwn new file mode 100644 index 00000000..4def1b87 --- /dev/null +++ b/destructiveinterference.mdwn @@ -0,0 +1,22 @@ +Interference can be destructive or non-destructive. When a principal +invokes an object (thereby requesting a service) and the implementation +carries out the principal's intent, the interference was non-destructive +in the sense that the interference was desired. + +In invoking the object, the principal may make itself vulnerable to +destructive interference. When a user runs Solitaire on Windows, +the Solitaire program is instantiated and given all of the user's +authority. The program may delete all of the users files after +publishing credit card and other sensitive information on the Internet. +This type of interference is undesirable, however, generally practically +unavoidable due to the way programs work on Windows (and Unix, for that +matter). + +The problem is that the callee has induced negative consequence for caller +due to actions of the former. To not have to depend on another program (and +thereby not have to add it to its [[tcb]]), it is necessary that the +caller only make itself vulnerable to destructive inference in ways that +can be detected and from which it can recover. + +Mark Miller examines the idea of destructive interference in his PhD thesis +[Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control](http://www.erights.org/talks/thesis/). diff --git a/hurd/authentication.mdwn b/hurd/authentication.mdwn new file mode 100644 index 00000000..0d52a0ba --- /dev/null +++ b/hurd/authentication.mdwn @@ -0,0 +1,17 @@ +UIDs on the Hurd are separate from processes. A process has +[[capabilities]] designating so-called UID vectors that +are implemented by an [[auth]] server. This +makes them easily [[virtualizable]]. + +When a process wishes to gain access to a resource provided by a third +party (e.g., a file system) and that party wishes to authenticate the client +so as to implement some identity-based access control ([[IBAC]]) policy, +the latter initiates a three-way authentication handshake. The server +and client each then begin an authentication sequence with +their respective [[trust]]ed auth servers. If they have +a mutally trusted ancestor and an auth server does not abort the +transaction, then the client is delivered a new capability +naming a newly authenticated session with the server +and the server is delivered the client's designated UID vector. + +For more details, see section 2.3 of the [[HurdCritique]]. diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn new file mode 100644 index 00000000..6ec21f7d --- /dev/null +++ b/hurd/concepts.mdwn @@ -0,0 +1,5 @@ +* [[Translator]] +* [[VirtualFileSystem]] +* [[Authentication]] +* [[NeighborHurd]] + diff --git a/hurd/hurdcritique.mdwn b/hurd/hurdcritique.mdwn new file mode 100644 index 00000000..f8e3eed7 --- /dev/null +++ b/hurd/hurdcritique.mdwn @@ -0,0 +1,7 @@ +[[NealWalfield]] and [[MarcusBrinkmann]] wrote a paper titled +"[A Critique of the GNU Hurd Multi-Server Operating System](http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf)." +This was published in ACM SIGOPS Operating Systems Review in +July 2007. This is sometimes referred to as "the critique." + +The paper provides a technical overview of the Hurd's +architecture and critiques some of the decisions made.
\ No newline at end of file diff --git a/hurd/hurdhackingguide.mdwn b/hurd/hurdhackingguide.mdwn new file mode 100644 index 00000000..bc214589 --- /dev/null +++ b/hurd/hurdhackingguide.mdwn @@ -0,0 +1,4 @@ +Originally written by Wolfgang Jährling, the [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) +contains an overview of some of the Hurd's features. +Also contains a tutorial on writing your own translator. + diff --git a/hurd/ibac.mdwn b/hurd/ibac.mdwn new file mode 100644 index 00000000..14d1551c --- /dev/null +++ b/hurd/ibac.mdwn @@ -0,0 +1,8 @@ +IBAC stands for identity-based access control. +In this access control scheme, access to a resource +is based on identity of the caller. This is often +problematic as when a program acts on behalf of +another, access is authorized based on its own +identity rather than that of the caller. + +See also [[ABAC]].
\ No newline at end of file diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn new file mode 100644 index 00000000..1e281b9d --- /dev/null +++ b/hurd/translator.mdwn @@ -0,0 +1,26 @@ +A translator is simply a normal program acting as +an object server and participating in the Hurd's +distributed [[VirtualFileSystem]]. It is so-called +because it typically exports a file system +(although need not: cf. [[auth]], [[proc]] +and [[pfinet]]) and thus translates object invocations +into calls appropriate for the backing store +(e.g., ext2 file system, nfs server, etc.). + +Translators do not require any special privilege +to run. The privilege they require is simply +that to access the indiviudal resources they use. +This is primarily the backing store and the node +they attach to. Typically, a translator can +only be attached to a node by the node's owner. +On Unix this is not possible because file systems +and the virtual file system are implemented in the +kernel and thus have absolute access to the machine. +As the protocols do not require any special privilege +to implement, this is not an issue on the Hurd. + +See [[Translators]] for a list of Hurd translators. + +To learn how to write a translator, read the code! +It is well documented, in particular, the header files. +The [[HurdHackingGuide]] also has a tutorial.
\ No newline at end of file diff --git a/hurd/virtualfilesystem.mdwn b/hurd/virtualfilesystem.mdwn new file mode 100644 index 00000000..054f0b04 --- /dev/null +++ b/hurd/virtualfilesystem.mdwn @@ -0,0 +1,17 @@ +Path names are resolved using a distributed protocol. +No single entity is responsible for the resolution of +path names. A file system server (a [[translator]]) +attaches to translators (fs.defs:file_set_translator). + +When a process resolves an aboslute path, it queries +its root file system server by invoking the fs.defs:dir_lookup +method in the capability in its root directory slot. The +file system server resolves as much as it knows about locally +and when it encounters a translator, it replies to the client +indicating how much it resolved and where to continue its +lookup. This continues until the name is fully resolved +or an error occurs. The same happens for relative path +names but a different capability is used. + +For a more detailed explanation of the protocol, look at the section +2.2 of the [[HurdCritique]].
\ No newline at end of file diff --git a/idl.mdwn b/idl.mdwn new file mode 100644 index 00000000..f6dc9eca --- /dev/null +++ b/idl.mdwn @@ -0,0 +1,5 @@ +An IDL is an interface definition language. The most well-known is +CORBA. An IDL compiler takes a specification and generates stubs +that hide the transport details. In the case of [[MIG]], this +hides the marshalling and unmarshalling of parameters according +to Mach's semantics.
\ No newline at end of file diff --git a/isolation.mdwn b/isolation.mdwn new file mode 100644 index 00000000..bdb15a41 --- /dev/null +++ b/isolation.mdwn @@ -0,0 +1,10 @@ +When two [[principal]]s cannot affect each other, they are said to +be isolated from one another. Strictly speaking, if two principals +are isolated from one another, there is no way for one to know +whether the other exists: all interactions with the environment +do not expose proof of the existence or non-existence of the +other. + +Typically, principals are isolated from one another with +respect to a particular property. Common properties include +information-flow (security) and performance.
\ No newline at end of file diff --git a/liedtke.mdwn b/liedtke.mdwn new file mode 100644 index 00000000..8644bbdf --- /dev/null +++ b/liedtke.mdwn @@ -0,0 +1 @@ +Liedtke is the father of [[L4]].
\ No newline at end of file diff --git a/mach/externalpagermechanism.mdwn b/mach/externalpagermechanism.mdwn new file mode 100644 index 00000000..91907131 --- /dev/null +++ b/mach/externalpagermechanism.mdwn @@ -0,0 +1,173 @@ +Mach provides a so-called external pager [[mechanism]]. This +mechanism serves to separate *managing memory* from *managing +content*. Mach does the former while user space tasks do the +latter. + +# Introduction + +In Mach, a task's [[Mach/AddressSpace]] consists of references +to [[Mach/MemoryObjects]]. A memory object is designated using +a [[Mach/Port]] (a port is just a [[capability]]) and +implemented by a normal process. + +To associate a memory object with a portion of a task's +address space, vm\_map is invoked a capability designating +the task and passing a reference to the memory object +and the offset at which to install it. (The first time +a task maps an object, Mach sends an initialization message +to the server including a control capability, which it uses +to supply pages to the kernel.) This is essentially +the same as mapping a file into an address space on Unix +using mmap. + +When a task faults, Mach checks to see if there is a memory +object associated with the fault address. If not, the task +is sent an exception, which is normally further propagated +as a segmentation fault. If there is an associated memory +object, Mach checks whether the corresponding page is in core. +If it is, it installs the page and resumes the task. Mach +then invokes the memory object with the memory\_object\_request +method and the page to read. The memory manager then fetches +or creates the content as appropriate and supplies it to +Mach using the memory\_object\_supply method. + + +# Creating and Mapping a Memory Object + +The following illustrates the basic idea: + +> ________ +> / \ +> | Mach | +> \________/ +> /| / |\ \ +> (C) vm_map / / m_o_ready (E)\ \ (D) memory_object_init +> / |/ (F) return \ \| +> ________ ________ +> / \ -----> / \ +> | Client | (A) open | Server | +> \________/ <----- \________/ +> (B) memory_object + + +(A) The client sends an "open" rpc to the server. + +(B) The server creates a memory object (i.e., a port receive right), adds +it to the port set that it is listening on and returns a capability (a port +send right) to the client. + +(C) The client attempts to map the object into its address space using +the vm\_map rpc. It passes a reference to the port that the server gave +it to the vm server (typically Mach). + +(D) Since Mach has never seen the object before, it queues a +memory\_object\_init on the given port along with a send right (the +memory control port) for the manager to use to send messages to the +kernel and also as an authentication mechanism for future +interactions: the port is supplied so that the manager will be able to +identify from which kernel a given memory\_object\_* IPC is from. + +(E) The server dequeues the message, initializes internal data +structures to manage the mapping and then invokes the +memory\_object\_ready method on the control object. + +(F) The kernel sees that the manager is ready, sets up the appropriate +mappings in the client and then replies to the vm\_map rpc indicating +success. + +There is nothing stopping others from playing "the kernel." This is +not a security problem: clients must [[trust]] the server from whom they +obtain memory objects and also the servers with whom they share +the object. Multiple memory managers are a reality that should be +dealt with gracefully: they are useful for network transparent +mappings etc. + +# Resolving Page Faults + +> (G) Client ________ +> resumed / \ +> | Mach | +> (A) Fault +----|------+ | \ (B) m_o_request (C) store_read +> ____|___ \_____|__/ |\ \| ________ _________ +> / +---\-------+ \ / \ / \ +> | Client | (F) | Server |<===>| storeio | +> \________/ m_o_supply \________/ \_________/ +> (E) return data | ^ +> | | (D) device_read +> v | +> ________ +> / Device \ +> | Driver | +> \________/ +> | ^ +> | | +> v +> ____________ +> / Hardware \ + + +(A) The client does a memory access and faults. The kernel catches +the fault and maps the address to the appropriate memory object. It +then invokes the memory_object_request method on the associated +capability. (In addition to the page to supply, it also supplies the +control port so that the server can determine which kernel +sent the message.) + +(B) The manager dequeues the message. On the Hurd, this is translated +into a store_read: a function in the libstore library which is used to +transparently manage block devices. The storeio server starts off as +a separate process, however, if the server has the appropriate +permission, the backing object can be contacted directly by the +server. This layer of indirection is desirable when, for instance, a +storeio running as root may want to only permit read only access to a +resource, yet it cannot safely transfer its handle to the client. In +this case, it would proxy the requests. + +(C) The storeio server contacts, for instance, a device driver to do +the read. This could also be a network block device (the NBD server +in GNU/Linux), a file, a memory object, etc. + +(D) The device driver allocates an anonymous page from the default +pager and reads the data into it. Once all of the operations are +complete, the device returns the data to the client unmapping it from +its own address space at the same time. + +(E) The storeio transfers the page to the server. The page is still +anonymous. + +(F) The manager does a memory_object_supply transferring the page to +the kernel. Only now is the page not considered to be anonymous but +managed. + +(G) The kernel caches the page, installs it in the client's virtual +address space and finally, resumes the client. + +# Paging Data Out + + +> Change manager Pager m_o_return store_write +> \ _________ (B) __(A)__ (C) ________ (D) _______ +> S | / Default \ / \ / \ / \ +> W |<=>| Pager |<=>| Mach |==>| server |<=>| storeio |<=> +> A | \_________/ \________/ \________/ \_______/ +> P | +> / + + +(A) The paging [[policy]] is implemented by Mach: servers just implement +the [[mechanism]]. + +(B) Once the kernel has selected a page that it would like to evict, it +changes the manager from the server to the default pager. This way, +if the server does not deallocate the page quickly enough, it cannot +cause a denial of service: the kernel will just later double page it +to swap (the default pager is part of the [[tcb]]). + +(C) Mach then invokes memory\_object\_return method on the control +object. The server is expected to save the page free it in a timely +fashion. The server is not required to send a response to the kernel. + +(D) The manager then transfers the data to the storeio which +eventually sends it to disk. The device driver consumes the memory +doing the equivalent of a vm_deallocate. + diff --git a/mach/tcb.mdwn b/mach/tcb.mdwn new file mode 100644 index 00000000..fa669174 --- /dev/null +++ b/mach/tcb.mdwn @@ -0,0 +1,7 @@ +TCB stands for trusted computed base. Unqualified, the trusted +computing base referrers to the set of components programs +must [[trust]] to function correctly. On multiserver systems, +it is sometimes more appropriate to speak of the trusted computing +base of a particular program: as components are much less connected, +one program's trusted computing base may be significantly different +from another's.
\ No newline at end of file diff --git a/mechanism.mdwn b/mechanism.mdwn new file mode 100644 index 00000000..ec694960 --- /dev/null +++ b/mechanism.mdwn @@ -0,0 +1,22 @@ +The Collaborative International Dictionary of English v.0.48 +defines a mechanism as: + +> The series of causal relations that operate to produce an +> effect in any system; as, the mechanism of a chemical +> reaction. + +This is, a mechanism is a function that produces some result. +As mechanisms determine the type of result, they necessarily +impose some [[policy]] (rules). Mechanisms that are referred +to as policy-free are those that minimally impose policy. + +A process can be used to encapsulate a program instance. On Unix, +a process is associated with a UID. This UID, in part, determines +what the process is authorized to do. On a [[microkernel]], +the policy that controls what resources a process may access +are realized separately. This may achieved through the use of +UIDs, however need not. Thus, the processes mechanism on such +microkernels impose less policy than on Unix. A process is not +policy free as it is possible to use other mechanisms to +encapsulate a program instance, e.g., [[SFI]] and tainting +ala [[Asbestos]]. diff --git a/microkernel.mdwn b/microkernel.mdwn new file mode 100644 index 00000000..e706dcbd --- /dev/null +++ b/microkernel.mdwn @@ -0,0 +1,15 @@ +[[Liedtke]] explains in [On Microkernel Construction](http://l4ka.org/publications/paper.php?docid=642) +that a microkernel attempts to minimize the mandatory part of the operating +system by providing the minimal number of [[mechanism]]s that +maximize the flexibility of implementation (by imposing minimal +[[policy]]) while allowing the efficient implementation of the +remainder of the system. + +The idea of a microkernel as explained above was first explored +by Per Brinch-Hansen in 1970 in +[The Nucleus of a Multiprogramming System](http://brinch-hansen.net/papers/1970a.pdf). + +Other notable microkernels include Hydra, KeyKOS, Eros and L4. + +An [introduction](http://www.cs.cornell.edu/Info/People/ulfar/ukernel/ukernel.html) by +Úlfar Erlingsson and Athanasios Kyparlis (from 1996) to microkernel concepts.
\ No newline at end of file diff --git a/namingcontext.mdwn b/namingcontext.mdwn new file mode 100644 index 00000000..7e7b14d0 --- /dev/null +++ b/namingcontext.mdwn @@ -0,0 +1,14 @@ +Names are bindings to objects, however, to find an object +given a name, the relation must be looked up in a +naming context. A problem with using string as names is +that it is very easy to lose track of the correct naming +context. This is one of the problem with [[PassiveTranslators]]: +a passive translator is a string. When the node is accessed +on which the passive translator is set and there is no active +translator, then an active translator is started using the +passive translator setting. The active translator is started +by the file system, not the program instance that set the +passive translator. The passive translator settings are +therefore resolved in the file system's naming context, which +may be different from that of the program instance that set the +passive translator setting.
\ No newline at end of file diff --git a/persistent.mdwn b/persistent.mdwn new file mode 100644 index 00000000..9cc05f67 --- /dev/null +++ b/persistent.mdwn @@ -0,0 +1,8 @@ +A persistent object is an object that survives reboot. +On Unix, files and directories are persistent but +processes and file descriptors are not. EROS is +an example of an orthogonally persistent system: +processes and capabilities also survive reboot. To a +process, it generally only looks as if it had not been +scheduled for a long time; the rest of its environment +remains essentially the indistinguishable.
\ No newline at end of file diff --git a/policy.mdwn b/policy.mdwn new file mode 100644 index 00000000..219af77e --- /dev/null +++ b/policy.mdwn @@ -0,0 +1,2 @@ +A policy is a rule that define what may or may not happens, not +how it happens. The latter is referred to as [[mechanism]].
\ No newline at end of file diff --git a/principal.mdwn b/principal.mdwn new file mode 100644 index 00000000..9a11c672 --- /dev/null +++ b/principal.mdwn @@ -0,0 +1,7 @@ +A principal is an accountable entity. A principal may be +a user. On some computer systems, users are represented by their +respective UID. A process may also be a principal. However, a +principal may span multiple processes (a web request that causes +a CGI script to be invoked) or a principal may contain a number +of separate principals (a web server serves multiple requests, +each request represents a different principal).
\ No newline at end of file diff --git a/sandbox/subsandbox.mdwn b/sandbox/subsandbox.mdwn index 8c89c54d..3e5ada72 100644 --- a/sandbox/subsandbox.mdwn +++ b/sandbox/subsandbox.mdwn @@ -1 +1 @@ -Toll. Ganz toll. +Not much is going on here.
\ No newline at end of file diff --git a/sfi.mdwn b/sfi.mdwn new file mode 100644 index 00000000..d14b1680 --- /dev/null +++ b/sfi.mdwn @@ -0,0 +1,8 @@ +SFI stands for Software-Based Fault Isolation. SFI is an [[isolation]] +technique described by Wahbe et al. in their 1993 paper [Effcient +Software-Based Fault Isolation](http://citeseer.ist.psu.edu/wahbe93efficient.html). +Instead of running code is a separate process, untrusted code +is loaded into into the host's address space, part of the address +space is reserved to the application and referred to as its fault +domain, and the code is rewritten such that it cannot modify or jump +to addresses outside of its fault domain. diff --git a/sidebar.mdwn b/sidebar.mdwn index f14c128d..29f6de92 100644 --- a/sidebar.mdwn +++ b/sidebar.mdwn @@ -1,12 +1,12 @@ * **[[Home|/index]]** * **[[Hurd_User_Groups|Hug]]** * **[[Main]]** +* **[[Hurd/GettingHelp]]** --- * **[[Distrib]]**[[if test="destpage(Distrib*)" then=" - * *[[Installation|Distrib/InstallNotes]]* - * *[[Getting_Help|Distrib/NewQuestions]]*"]] + * *[[Installation|Distrib/InstallNotes]]*"]] * **[[GNU]]**[[if test="destpage(GNU*)" then=" * *[GNU Homepage](http://www.gnu.org/)* * *[Savannah](http://savannah.gnu.org/)* @@ -17,15 +17,11 @@ * **[[Hurd]]**[[if test="destpage(Hurd*)" then=" * *[[About|Hurd/TheGnuHurd]]* * *[[Status|Hurd/GNUHurdStatus]]* - * *[[Limitations|Hurd/KnownHurdLimits]]* - * *[[Seen_Hurd|Hurd/SeenHurd]]* - * *[[Translators|Hurd/TranslatorPages]]* - * *[[FAQ|Hurd/FrequentlyAskedQuestions]]* - * *[[Hurd/ToDo]]*"]] + * *[[Hurd/Documentation]]* + * *[[Hurd/Running]]*"]] * **[[Mach]]**[[if test="destpage(Mach*)" then=" - * *[[History|Mach/MachHistory]]* * *[[GNU_Mach|Mach/GNUMach]]* - * *[[OSKit_Mach|Mach/OskitMach]]*"]] + * *[[Documentation]]*"]] * **[[Mig]]**[[if test="destpage(Mig*)" then=" * *[[About|Mig/MachInterfaceGenerator]]* * *[[Documentation|Mig/MigDocumentation]]*"]] @@ -9,7 +9,7 @@ When we say that a program trusts another, we mean that [[correctness]] of the former depends on the cooperation of the latter. For instance, when a user runs ssh, the user's intention is that all communication is encrypted. In this case, the user trusts that the ssh binary respects this intent. In Unix, a program's -[[trusted computing base]] consists not only of the kernel (and all the drivers, +[[tcb]] consists not only of the kernel (and all the drivers, file systems and protocol stacks that it contains) but every program running under the same UID; it is impossible to protect against -[[destructive interference]] from programs running under the same UID. +[[DestructiveInterference]] from programs running under the same UID. |