From 6fb6c2a396bb1b851a4ec8a6f5e605a15c218d10 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 25 Jul 2011 11:26:59 +0200 Subject: microkernel/mach/gnumach/hardware_compatibility_list: IRC. SATA. --- .../mach/gnumach/hardware_compatibility_list.mdwn | 15 +++++------ .../hardware_compatibility_list/discussion.mdwn | 29 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 7 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn index 2152c079..6c984784 100644 --- a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn +++ b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation, +[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -6,8 +6,8 @@ id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] # CPU Architecture @@ -68,10 +68,11 @@ All common IDE drives should work. Some drive geometries do not work, e.g. drives with hundreds of GiB of storage space, see [[!GNU_Savannah_bug 26425]]. -[[!toggle id="SATA" text="SATA drives may work in compatibility mode."]] - -[[!toggleable id="SATA" text=""" +## SATA + +SATA drives may work in compatibility mode. + This is how booting a [[GNU/Hurd_system|hurd]] will typically fail if GNU Mach couldn't connect to the hard disk, e.g., in a SATA system without IDE compatibility mode: @@ -81,7 +82,7 @@ compatibility mode: There *may* be an option in the system's BIOS setup to configure enabling such a compatibility mode. -"""]] + # Device Drivers diff --git a/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn index 69ca3190..2b65956a 100644 --- a/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn +++ b/microkernel/mach/gnumach/hardware_compatibility_list/discussion.mdwn @@ -1,4 +1,33 @@ +[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation, +Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_documentation]] + Further information may still be found on and could perhaps be incorporated into that page. --[[tschwinge]] + + +# SATA + +IRC, freenode, +hurd, 2011-07-24 + + youpi: concerning the ide compatibility problem, it seems some + bioses provide several modes + youpi: "legacy ide" and "native ide" + i don't know what native ide really means, but when debugging ide + probing in gnumach, it just looks like there is nothing to detect + and even in this mode, linux uses the ahci driver + apparently native means it still uses the IDE protocol, but + possibly with other IRQs + i.e. you need a PCI driver to handle that + ok -- cgit v1.3.1 From 7466fb272d4941e71024068949d26891881a081c Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 1 Aug 2011 21:53:26 +0200 Subject: gnumach and mig are now in git, not cvs anymore --- microkernel/mach/gnumach/building.mdwn | 7 ++----- microkernel/mach/mig/gnu_mig/building.mdwn | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 99e566bb..8b851dde 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -10,12 +10,9 @@ enabled) is around 50 MiB. ### Developers's RCS -See . +See . - $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r gnumach-1-branch gnumach - -(Most probably you want to get hold of the *GNU Mach 1 branch* and not the -trunk, which is also what we've done above.) + $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git You then have to create the automatically generatable files: diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index f92f7dbe..33507283 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -5,9 +5,9 @@ If you want to build the Mach Interface Generator yourself instead of just using ## Getting the Source Code You can chose between getting the [sources from the developers' -RCS](http://savannah.gnu.org/cvs/?group=hurd): +RCS](http://savannah.gnu.org/git/?group=hurd): - $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co mig + $ git clone git://git.savannah.gnu.org:/srv/git/hurd/mig.git ... or (if you are working on a Debian system) the ones that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig): -- cgit v1.3.1 From 8ab4c8bd7df48a2d4aeb7ab09e6e7400b5d0efe2 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 22:44:26 -0400 Subject: Rearranged instructions for building gnumach --- microkernel/mach/gnumach/building.mdwn | 71 ++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 33 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 8b851dde..d1f4a497 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -14,10 +14,6 @@ See . $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git -You then have to create the automatically generatable files: - - $ ( cd gnumach && autoreconf --install ) - ### What Debian is currently using See [here](http://packages.debian.net/source/unstable/gnumach). @@ -26,9 +22,9 @@ See [here](http://packages.debian.net/source/unstable/gnumach). Please see the Debian [[running/debian/FAQ]] before using `apt-get source`. -## Preparing for the Build +## On Debian Systems: -### ... on Debian systems +### Preparing for the Build Building GNU Mach requires the *build-essential* and *fakeroot* packages, their dependencies and additional packages that are specified by the source gnumach @@ -37,7 +33,27 @@ package: # apt-get install build-essential fakeroot # apt-get build-dep gnumach -### ... on non-Debian systems +### Building and Installing ... Debian `.deb` files + +Change into the directory with the downloaded / unpacked GNU Mach sources, e.g. + + $ cd gnumach-20050801 + +Start the build process with + + $ dpkg-buildpackage -us -uc -b -rfakeroot + +[[GNU_Mach|gnumach]] is now building. To use the new kernel, you must install the +resulting `.deb` package which is located one directory above the build +directory and has a similar name as the build directory, e.g. + + # dpkg -i ../gnumach_20050801-4_hurd-i386.deb + +You can now reboot your computer and enjoy the new kernel. + +## On non-Debian Systems: + +### Preparing for the Build Apart from the case that you only want to install GNU Mach's header files (see below), building GNU Mach requires you to have the Mach Interface Generator @@ -47,27 +63,30 @@ back here. Additionally, building GNU Mach requires a C compiler, a standard C library and your favourite flavor of awk (gawk) and GNU make. -## Building and Installing +### Preparation: -### ... Debian `.deb` files +You first have to create the automatically generatable files: -Change into the directory with the downloaded / unpacked GNU Mach sources, e.g. + $ cd gnumach + $ autoreconf --install - $ cd gnumach-20050801 +### Installing only the Header Files -Start the build process with +GNU Mach should be built in a separate directory: - $ dpkg-buildpackage -us -uc -b -rfakeroot + $ mkdir gnumach-build + $ cd gnumach-build -[[GNU_Mach|gnumach]] is now building. To use the new kernel, you must install the -resulting `.deb` package which is located one directory above the build -directory and has a similar name as the build directory, e.g. +Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure +it: - # dpkg -i ../gnumach_20050801-4_hurd-i386.deb + $ [...]/gnumach-1-branch/configure --prefix= -You can now reboot your computer and enjoy the new kernel. +Install the header files into e.g. `~/gnu/include/`: + + $ make DESTDIR=~/gnu install-data## Building and Installing -### [TODO] +### Building and Installing GNU Mach should be built in a separate directory: @@ -91,18 +110,4 @@ You can then install and use `gnumach.gz`. [TODO.] -### Installing only the Header Files - -GNU Mach should be built in a separate directory: - - $ mkdir gnumach-build - $ cd gnumach-build - -Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure -it: - - $ [...]/gnumach-1-branch/configure --prefix= - -Install the header files into e.g. `~/gnu/include/`: - $ make DESTDIR=~/gnu install-data -- cgit v1.3.1 From ab4696b26f174fda48d79930e8fb703ec2c19b25 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 22:55:28 -0400 Subject: Updated commands for building gnumach --- microkernel/mach/gnumach/building.mdwn | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index d1f4a497..6d030d3e 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -72,31 +72,34 @@ You first have to create the automatically generatable files: ### Installing only the Header Files -GNU Mach should be built in a separate directory: +GNU Mach and its headers should be built in separate directories: - $ mkdir gnumach-build - $ cd gnumach-build + $ cd .. + $ mkdir gnumach-build-h + $ cd gnumach-build-h -Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure +Find the path to your GNU Mach sources (`../gnumach`) and configure it: - $ [...]/gnumach-1-branch/configure --prefix= + $ ../gnumach/configure --prefix= --host=i686-unknown-linux-gnu Install the header files into e.g. `~/gnu/include/`: - $ make DESTDIR=~/gnu install-data## Building and Installing + $ make DESTDIR=~/gnu install-data ### Building and Installing GNU Mach should be built in a separate directory: + $ cd .. $ mkdir gnumach-build $ cd gnumach-build -Find the path to your GNU Mach sources (`[...]/gnumach-1-branch`) and configure +Find the path to your GNU Mach sources (`../gnumach`) and configure it: - $ [...]/gnumach-1-branch/configure [TODO] + $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' + $ ../gnumach/configure --host=i686-unknown-linux-gnu Build the kernel image: -- cgit v1.3.1 From 34b5513ffb0752e2bdb8387c18e06d026d073ffc Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 23:04:13 -0400 Subject: Noted diff in instructions for 32 and 64 bit --- microkernel/mach/gnumach/building.mdwn | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 6d030d3e..07dc3341 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -79,7 +79,7 @@ GNU Mach and its headers should be built in separate directories: $ cd gnumach-build-h Find the path to your GNU Mach sources (`../gnumach`) and configure -it: +it (the --host flag is needed for 64 bit systems): $ ../gnumach/configure --prefix= --host=i686-unknown-linux-gnu @@ -98,8 +98,12 @@ GNU Mach should be built in a separate directory: Find the path to your GNU Mach sources (`../gnumach`) and configure it: + $ ../gnumach/configure + +If you are building on a 64 bit system, do the following instead: + $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' - $ ../gnumach/configure --host=i686-unknown-linux-gnu + $ ../gnumach/configure --host=i686-unknown-linux-gnu Build the kernel image: -- cgit v1.3.1 From 657fc2f401acae2e205e1f0f225f64f9aabc0186 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 23:10:07 -0400 Subject: Cleaned up sources list for building gnumach page --- microkernel/mach/gnumach/building.mdwn | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 07dc3341..ab6fbba0 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -8,15 +8,11 @@ enabled) is around 50 MiB. ## Getting the Source Code -### Developers's RCS - -See . +You can either use the git repository (see ), $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git -### What Debian is currently using - -See [here](http://packages.debian.net/source/unstable/gnumach). +... or Debian sources, if you're using Debian. (See [here](http://packages.debian.net/source/unstable/gnumach).) $ apt-get source gnumach -- cgit v1.3.1 From ce52e3774a5d413693779b29f8944216c84ad716 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 23:13:11 -0400 Subject: Made deb source name generic --- microkernel/mach/gnumach/building.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index ab6fbba0..5a598d4a 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -33,7 +33,7 @@ package: Change into the directory with the downloaded / unpacked GNU Mach sources, e.g. - $ cd gnumach-20050801 + $ cd gnumach-XXXXXXXX Start the build process with @@ -43,7 +43,7 @@ Start the build process with resulting `.deb` package which is located one directory above the build directory and has a similar name as the build directory, e.g. - # dpkg -i ../gnumach_20050801-4_hurd-i386.deb + # dpkg -i ../gnumach_XXXXXXXX-X_hurd-i386.deb You can now reboot your computer and enjoy the new kernel. -- cgit v1.3.1 From 0fd892609af34d295114d810a55759291b74157f Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Tue, 2 Aug 2011 23:23:39 -0400 Subject: Rearanging, mentioned static lib --- microkernel/mach/gnumach/building.mdwn | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 5a598d4a..178a89c0 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -51,23 +51,16 @@ You can now reboot your computer and enjoy the new kernel. ### Preparing for the Build -Apart from the case that you only want to install GNU Mach's header files (see -below), building GNU Mach requires you to have the Mach Interface Generator -installed. See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come -back here. - -Additionally, building GNU Mach requires a C compiler, a standard C library and +Building GNU Mach requires a C compiler, a static 32 bit standard C library and your favourite flavor of awk (gawk) and GNU make. -### Preparation: +### Installing only the Header Files -You first have to create the automatically generatable files: +First, you have to create the configuartion files: $ cd gnumach $ autoreconf --install -### Installing only the Header Files - GNU Mach and its headers should be built in separate directories: $ cd .. @@ -85,6 +78,10 @@ Install the header files into e.g. `~/gnu/include/`: ### Building and Installing +Building GNU Mach requires you to have the Mach Interface Generator +installed. See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come +back here. + GNU Mach should be built in a separate directory: $ cd .. -- cgit v1.3.1 From 2dbac97ca00a3ea201c4a1a2b2d7a7be0b2e05b0 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 08:50:52 -0400 Subject: Separate 32 and 64 bit instructions --- microkernel/mach/gnumach/building.mdwn | 7 +++++-- microkernel/mach/mig/gnu_mig/building.mdwn | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 178a89c0..08f4b656 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -67,8 +67,11 @@ GNU Mach and its headers should be built in separate directories: $ mkdir gnumach-build-h $ cd gnumach-build-h -Find the path to your GNU Mach sources (`../gnumach`) and configure -it (the --host flag is needed for 64 bit systems): +Find the path to your GNU Mach sources (`../gnumach`) and configure it: + + $ ../gnumach/configure --prefix= + +Instead, use the --host flag on 64 bit systems: $ ../gnumach/configure --prefix= --host=i686-unknown-linux-gnu diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index 57057d34..9c313b3b 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -60,10 +60,15 @@ The Mach Interface Generator has to be built in a separate directory: Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (../mig) and configure it: + $ GNU=~/gnu + $ TARGET_CPPFLAGS=-I"$GNU"/include ../mig/configure + +The --host flag is necessary if you are building on a 64 bit machine: + $ GNU=~/gnu $ TARGET_CPPFLAGS=-I"$GNU"/include ../mig/configure --prefix="$GNU" --host=i686-unknown-linux-gnu -The --host flag above is necessary if you are building on a 64 bit machine. Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example: +Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example: $ make all install -- cgit v1.3.1 From 1aaae16a0242a1251b3b5c779513cf92d97a9f85 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:26:13 -0400 Subject: MIG and Gnumach should be build in subdirectories --- microkernel/mach/gnumach/building.mdwn | 16 +++++++--------- microkernel/mach/mig/gnu_mig/building.mdwn | 7 +++---- 2 files changed, 10 insertions(+), 13 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 08f4b656..8fc1c7a1 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -61,19 +61,18 @@ First, you have to create the configuartion files: $ cd gnumach $ autoreconf --install -GNU Mach and its headers should be built in separate directories: +GNU Mach and its headers should be built in a subdirectory: - $ cd .. $ mkdir gnumach-build-h $ cd gnumach-build-h Find the path to your GNU Mach sources (`../gnumach`) and configure it: - $ ../gnumach/configure --prefix= + $ ../configure --prefix= -Instead, use the --host flag on 64 bit systems: +Use the --host flag on 64 bit systems: - $ ../gnumach/configure --prefix= --host=i686-unknown-linux-gnu + $ ../configure --prefix= --host=i686-unknown-linux-gnu Install the header files into e.g. `~/gnu/include/`: @@ -85,21 +84,20 @@ Building GNU Mach requires you to have the Mach Interface Generator installed. See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come back here. -GNU Mach should be built in a separate directory: +GNU Mach should be built in a subdirectory: - $ cd .. $ mkdir gnumach-build $ cd gnumach-build Find the path to your GNU Mach sources (`../gnumach`) and configure it: - $ ../gnumach/configure + $ ../configure If you are building on a 64 bit system, do the following instead: $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' - $ ../gnumach/configure --host=i686-unknown-linux-gnu + $ ../configure --host=i686-unknown-linux-gnu Build the kernel image: diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index 9c313b3b..d2d27bc4 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -52,21 +52,20 @@ First, generate the configuration files: $ cd mig $ autoreconf --install -The Mach Interface Generator has to be built in a separate directory: +The Mach Interface Generator should be built in a subdirectory: - $ cd .. $ mkdir mig-build $ cd mig-build Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (../mig) and configure it: $ GNU=~/gnu - $ TARGET_CPPFLAGS=-I"$GNU"/include ../mig/configure + $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure The --host flag is necessary if you are building on a 64 bit machine: $ GNU=~/gnu - $ TARGET_CPPFLAGS=-I"$GNU"/include ../mig/configure --prefix="$GNU" --host=i686-unknown-linux-gnu + $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU" --host=i686-unknown-linux-gnu Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example: -- cgit v1.3.1 From 02c70fe4a97f23521a386dca8a85280df201276a Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:44:43 -0400 Subject: build GM headers and code in same dir. explain bug. --- microkernel/mach/gnumach/building.mdwn | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 8fc1c7a1..6fb67087 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -63,8 +63,8 @@ First, you have to create the configuartion files: GNU Mach and its headers should be built in a subdirectory: - $ mkdir gnumach-build-h - $ cd gnumach-build-h + $ mkdir gnumach-build + $ cd gnumach-build Find the path to your GNU Mach sources (`../gnumach`) and configure it: @@ -84,13 +84,18 @@ Building GNU Mach requires you to have the Mach Interface Generator installed. See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come back here. -GNU Mach should be built in a subdirectory: +GNU Mach should be built in a subdirectory create it if you have not already. $ mkdir gnumach-build $ cd gnumach-build -Find the path to your GNU Mach sources (`../gnumach`) and configure -it: +If you previously ran ../configure for installing the header files, you may run +into a bug when you configure and run make below. If that is the case, run "rm +-rf *" in the _build_ directory, and reconfigure. + + $ rm -rf * + +Find the path to your GNU Mach sources (`../gnumach`) and configure it: $ ../configure -- cgit v1.3.1 From df7ecd1e3d25f24628ff52c684e26aaed0c1d1ac Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:46:31 -0400 Subject: clarify that _build_ directory needs to be cleaned. --- microkernel/mach/gnumach/building.mdwn | 1 + 1 file changed, 1 insertion(+) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 6fb67087..5226a4b0 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -93,6 +93,7 @@ If you previously ran ../configure for installing the header files, you may run into a bug when you configure and run make below. If that is the case, run "rm -rf *" in the _build_ directory, and reconfigure. + $ cd gnumach-build $ rm -rf * Find the path to your GNU Mach sources (`../gnumach`) and configure it: -- cgit v1.3.1 From 0a00caab9e037e46a3ca6d579fe1cfb4f752c6cb Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:48:06 -0400 Subject: fix directory name --- microkernel/mach/gnumach/building.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 5226a4b0..015046e6 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -66,7 +66,7 @@ GNU Mach and its headers should be built in a subdirectory: $ mkdir gnumach-build $ cd gnumach-build -Find the path to your GNU Mach sources (`../gnumach`) and configure it: +Find the path to your GNU Mach sources (`..`) and configure it: $ ../configure --prefix= @@ -96,7 +96,7 @@ into a bug when you configure and run make below. If that is the case, run "rm $ cd gnumach-build $ rm -rf * -Find the path to your GNU Mach sources (`../gnumach`) and configure it: +Find the path to your GNU Mach sources (`..`) and configure it: $ ../configure -- cgit v1.3.1 From 3e8cd4e4f6cf824e79e7eedf4af4d95f020f3e18 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:51:47 -0400 Subject: mentioned why header files must be installed. --- microkernel/mach/gnumach/building.mdwn | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 015046e6..fcef1a24 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -54,7 +54,10 @@ You can now reboot your computer and enjoy the new kernel. Building GNU Mach requires a C compiler, a static 32 bit standard C library and your favourite flavor of awk (gawk) and GNU make. -### Installing only the Header Files +### Installing the Header Files First + +In order to build GNU Mach, you must build and install MIG, which requires that +you install the GNU Mach header files: First, you have to create the configuartion files: @@ -115,6 +118,6 @@ Optionally run the (tiny) test suite: You can then install and use `gnumach.gz`. -[TODO.] +[TODO] -- cgit v1.3.1 From 4583168b6fce700fc971aea3f0233d63c08d4cf2 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 17:58:11 -0400 Subject: Improved line wrapping for 2 pages --- microkernel/mach/gnumach/building.mdwn | 9 +++++---- microkernel/mach/mig/gnu_mig/building.mdwn | 30 +++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 13 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index fcef1a24..0bd554b4 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -12,7 +12,8 @@ You can either use the git repository (see Building the Mach Interface Generator from Source -If you want to build the Mach Interface Generator yourself instead of just using a pre-built package, follow these instructions. +If you want to build the Mach Interface Generator yourself instead of just +using a pre-built package, follow these instructions. ## Getting the Source Code -You can chose between getting the [sources from the developers' RCS](http://savannah.gnu.org/git/?group=hurd): +You can chose between getting the [sources from the developers' +RCS](http://savannah.gnu.org/git/?group=hurd): $ git clone git://git.savannah.gnu.org:/srv/git/hurd/mig.git -... or (if you are working on a Debian system) the ones that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig): +... or (if you are working on a Debian system) the ones that are used for the +[current Debian mig package](http://packages.debian.net/source/unstable/mig): $ apt-get source mig @@ -20,7 +23,9 @@ The unpacked source tree is around 1 MiB, and the build tree also is around 1 Mi ### Preparing for the Build -Building the Mach Interface Generator requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source mig package: +Building the Mach Interface Generator requires the _build-essential_ and +_fakeroot_ packages, their dependencies and additional packages that are +specified by the source mig package: # apt-get install build-essential fakeroot # apt-get build-dep mig @@ -35,15 +40,19 @@ Start the build process: $ dpkg-buildpackage -us -uc -b -rfakeroot -You can then install / distribute the _.deb_ file which will drop out one directory above the current one. +You can then install / distribute the _.deb_ file which will drop out one +directory above the current one. ## On non-Debian Systems: ### Preparing for the Build -Building the Mach Interface Generator requires a C compiler, a standard 32 bit C library (with corresponding header files) and your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make. +Building the Mach Interface Generator requires a C compiler, a standard 32 bit +C library (with corresponding header files) and your favourite flavor of awk +(gawk), yacc (bison), lex (flex) and make. -Additionally, you need to have GNU Mach's header files installed. See [[mach/gnumach/building]] about how to do that, then come back here. +Additionally, you need to have GNU Mach's header files installed. See +[[mach/gnumach/building]] about how to do that, then come back here. ### Building and Installing @@ -57,7 +66,9 @@ The Mach Interface Generator should be built in a subdirectory: $ mkdir mig-build $ cd mig-build -Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (../mig) and configure it: +Find the root directory where you installed GNU Mach's header files and where +you now intend to install the Mach Interface Generator (_~/gnu_) and the path +to your Mach Interface Generator sources (../mig) and configure it: $ GNU=~/gnu $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure @@ -71,7 +82,8 @@ Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our $ make all install -To make your _mig_ binary easily available, you should append something like the following to e.g. your _~/.bash\_profile_: +To make your _mig_ binary easily available, you should append something like +the following to e.g. your _~/.bash\_profile_: PATH=~/gnu/bin:$PATH export PATH -- cgit v1.3.1 From 2500a001957eab720d190bf5f53abd3214fe91b7 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 18:18:22 -0400 Subject: improved some wording --- microkernel/mach/gnumach/building.mdwn | 16 ++++++++-------- microkernel/mach/mig/gnu_mig/building.mdwn | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 0bd554b4..8284639b 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -52,7 +52,7 @@ You can now reboot your computer and enjoy the new kernel. ### Preparing for the Build -Building GNU Mach requires a C compiler, a static 32 bit standard C library and +Building GNU Mach requires a C compiler, a _static_ 32 bit standard C library and your favourite flavor of awk (gawk) and GNU make. ### Installing the Header Files First @@ -60,7 +60,7 @@ your favourite flavor of awk (gawk) and GNU make. In order to build GNU Mach, you must build and install MIG, which requires that you install the GNU Mach header files: -First, you have to create the configuartion files: +First, create the configuartion files: $ cd gnumach $ autoreconf --install @@ -84,9 +84,9 @@ Install the header files into e.g. `~/gnu/include/`: ### Building and Installing -Building GNU Mach requires you to have the Mach Interface Generator installed. -See [[building_MIG|mig/gnu_mig/building]] about how to do that, then come back -here. +After you've already installed the header files (above), as well as the the +Mach Interface Generator, you may finish building GNU Mach. (See +[[building_MIG|mig/gnu_mig/building]], then come back here.) GNU Mach should be built in a subdirectory create it if you have not already. @@ -94,8 +94,8 @@ GNU Mach should be built in a subdirectory create it if you have not already. $ cd gnumach-build If you previously ran ../configure for installing the header files, you may run -into a bug when you configure and run make below. If that is the case, run "rm --rf *" in the _build_ directory, and reconfigure. +into a bug when you configure and run make below. If that is the case, empty +the _build_ directory, and reconfigure. $ cd gnumach-build $ rm -rf * @@ -117,7 +117,7 @@ Optionally run the (tiny) test suite: $ make check -You can then install and use `gnumach.gz`. +You can now install and use `gnumach.gz`. [TODO] diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index f21d504e..6d17e7ef 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -52,7 +52,7 @@ C library (with corresponding header files) and your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make. Additionally, you need to have GNU Mach's header files installed. See -[[mach/gnumach/building]] about how to do that, then come back here. +[[building GNU Mach|mach/gnumach/building]] about how to do that, then come back here. ### Building and Installing -- cgit v1.3.1 From a66b021e27e1608d192a61cd10027e3d0f5ca522 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 19:00:35 -0400 Subject: Fixed ../configure options issue/bug --- microkernel/mach/gnumach/building.mdwn | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 8284639b..eb3e0819 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -72,11 +72,11 @@ GNU Mach and its headers should be built in a subdirectory: Find the path to your GNU Mach sources (`..`) and configure it: - $ ../configure --prefix= + $ ../configure -Use the --host flag on 64 bit systems: +Use the --host flag and some options on 64 bit systems: - $ ../configure --prefix= --host=i686-unknown-linux-gnu + $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --host=i686-unknown-linux-gnu Install the header files into e.g. `~/gnu/include/`: @@ -88,26 +88,8 @@ After you've already installed the header files (above), as well as the the Mach Interface Generator, you may finish building GNU Mach. (See [[building_MIG|mig/gnu_mig/building]], then come back here.) -GNU Mach should be built in a subdirectory create it if you have not already. - - $ mkdir gnumach-build - $ cd gnumach-build - -If you previously ran ../configure for installing the header files, you may run -into a bug when you configure and run make below. If that is the case, empty -the _build_ directory, and reconfigure. - - $ cd gnumach-build - $ rm -rf * - -Find the path to your GNU Mach sources (`..`) and configure it: - - $ ../configure - -If you are building on a 64 bit system, do the following instead: - - $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' - $ ../configure --host=i686-unknown-linux-gnu +GNU Mach should be built in the subdirectory created above. If you've cleared +your directory since then, you'll need to rerun the configure script. Build the kernel image: -- cgit v1.3.1 From 57b19ed57280f4642320dcc2b36c8ffe3b28f225 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 19:09:37 -0400 Subject: no need to "find" what's under your nose --- microkernel/mach/gnumach/building.mdwn | 2 +- microkernel/mach/mig/gnu_mig/building.mdwn | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index eb3e0819..4c7cee26 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -70,7 +70,7 @@ GNU Mach and its headers should be built in a subdirectory: $ mkdir gnumach-build $ cd gnumach-build -Find the path to your GNU Mach sources (`..`) and configure it: +Run configure: $ ../configure diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index 1712e990..031a9b3f 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -67,8 +67,8 @@ The Mach Interface Generator should be built in a subdirectory: $ cd mig-build Find the root directory where you installed GNU Mach's header files and where -you now intend to install the Mach Interface Generator (_~/gnu_) and the path -to your Mach Interface Generator sources (../mig) and configure it: +you now intend to install the Mach Interface Generator (_~/gnu_), and run +configure: $ GNU=~/gnu $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure -- cgit v1.3.1 From af52b8b7b4f3c096fd8abed7e901b57f07c419a2 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 19:30:37 -0400 Subject: Actually, we need '--prefix='. --- microkernel/mach/gnumach/building.mdwn | 4 ++-- microkernel/mach/mig/gnu_mig/building.mdwn | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 4c7cee26..f4c59d9f 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -72,11 +72,11 @@ GNU Mach and its headers should be built in a subdirectory: Run configure: - $ ../configure + $ ../configure --prefix= Use the --host flag and some options on 64 bit systems: - $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --host=i686-unknown-linux-gnu + $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --prefix= --host=i686-unknown-linux-gnu Install the header files into e.g. `~/gnu/include/`: diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index 9a83e367..d5268221 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -71,7 +71,7 @@ you now intend to install the Mach Interface Generator (_~/gnu_), and run configure: $ GNU=~/gnu - $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure + $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU" The --host flag is necessary if you are building on a 64 bit machine: -- cgit v1.3.1 From e0f350c7d6e3af901097e43fe2c1bc0efb237f60 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 3 Aug 2011 19:45:28 -0400 Subject: rename build directories to 'build' --- microkernel/mach/gnumach/building.mdwn | 4 ++-- microkernel/mach/mig/gnu_mig/building.mdwn | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index f4c59d9f..490c5497 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -67,8 +67,8 @@ First, create the configuartion files: GNU Mach and its headers should be built in a subdirectory: - $ mkdir gnumach-build - $ cd gnumach-build + $ mkdir build + $ cd build Run configure: diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index d5268221..4d4be660 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -63,8 +63,8 @@ First, generate the configuration files: The Mach Interface Generator should be built in a subdirectory: - $ mkdir mig-build - $ cd mig-build + $ mkdir build + $ cd build Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_), and run -- cgit v1.3.1 From 9441f7dc189d8489f13b9072b866aa75f9409d0f Mon Sep 17 00:00:00 2001 From: antrik Date: Thu, 4 Aug 2011 02:43:29 +0200 Subject: mach/building: Rearrange bit about installing header files Instead of treating all the build preparations as part of the header install, make them part of the general build instructions; and only separately mention the specific bit about actually installing the headers. This should make the overall build process easier to follow; and also makes it clearer which bit can be left out if installing the headers is not necessary. --- microkernel/mach/gnumach/building.mdwn | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 490c5497..5f53d83d 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -55,11 +55,6 @@ You can now reboot your computer and enjoy the new kernel. Building GNU Mach requires a C compiler, a _static_ 32 bit standard C library and your favourite flavor of awk (gawk) and GNU make. -### Installing the Header Files First - -In order to build GNU Mach, you must build and install MIG, which requires that -you install the GNU Mach header files: - First, create the configuartion files: $ cd gnumach @@ -78,7 +73,10 @@ Use the --host flag and some options on 64 bit systems: $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --prefix= --host=i686-unknown-linux-gnu -Install the header files into e.g. `~/gnu/include/`: +### Installing the Header Files First + +In order to build GNU Mach, you must build and install MIG, which requires that +you install the GNU Mach header files, for example into `~/gnu/include/`: $ make DESTDIR=~/gnu install-data -- cgit v1.3.1 From 358bc1d0e781b7237b2fee394f7fae2bfcd7b078 Mon Sep 17 00:00:00 2001 From: antrik Date: Thu, 4 Aug 2011 07:14:40 +0200 Subject: mach/building: Reword for clarity --- microkernel/mach/gnumach/building.mdwn | 39 ++++++++++++++---------------- microkernel/mach/mig/gnu_mig/building.mdwn | 25 +++++++++---------- 2 files changed, 30 insertions(+), 34 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 5f53d83d..b513d52f 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -12,7 +12,7 @@ You can either use the git repository (see Preparing for the Build -Building the Mach Interface Generator requires the _build-essential_ and -_fakeroot_ packages, their dependencies and additional packages that are -specified by the source mig package: +Building MIG requires the *build-essential* and *fakeroot* packages, +and some additional dependencies specified by the mig source package: # apt-get install build-essential fakeroot # apt-get build-dep mig ### Building and Installing ... a _.deb_ file -Change into the directory with the downloaded / unpacked MIG sources (_mig-SomeVersionNumber): +Change into the directory with the downloaded / unpacked MIG sources: $ cd mig-X.X.X.XX @@ -40,15 +39,15 @@ Start the build process: $ dpkg-buildpackage -us -uc -b -rfakeroot -You can then install / distribute the _.deb_ file which will drop out one -directory above the current one. +This will create a _.deb_ package in the parent directory, +which you can then install on your system. ## On non-Debian Systems: ### Preparing for the Build Building the Mach Interface Generator requires a C compiler, a standard 32 bit -C library (with corresponding header files) and your favourite flavor of awk +C library (with corresponding header files), your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make. Additionally, you need to have GNU Mach's header files installed. See @@ -61,24 +60,24 @@ First, generate the configuration files: $ cd mig $ autoreconf --install -The Mach Interface Generator should be built in a subdirectory: +The Mach Interface Generator has to be built in a separate build directory: $ mkdir build $ cd build -Find the root directory where you installed GNU Mach's header files and where -you now intend to install the Mach Interface Generator (_~/gnu_), and run +Find the base directory where you installed GNU Mach's header files and where +you now intend to install the Mach Interface Generator (e.g. _~/gnu_), and run configure: $ GNU=~/gnu $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU" -The --host flag is necessary if you are building on a 64 bit machine: +If you are building on a 64 bit machine, you need to add a --host option: $ GNU=~/gnu $ TARGET_CPPFLAGS=-I"$GNU"/include ../configure --prefix="$GNU" --host=i686-unknown-linux-gnu -Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example: +Build and install the Mach Interface Generator into _$GNU_ (i.e. _~/gnu/_ in our example): $ make all install -- cgit v1.3.1 From b9ba15c091304bb033ca26036cf6a96819b0b602 Mon Sep 17 00:00:00 2001 From: antrik Date: Thu, 4 Aug 2011 09:34:13 +0200 Subject: mach/building: Fix Git repo URL here as well --- microkernel/mach/gnumach/building.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index b513d52f..ebf0e1d7 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -8,7 +8,7 @@ enabled) is around 50 MiB. ## Getting the Source Code -You can either use the git repository (see ), +You can either use the git repository (see ), $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git -- cgit v1.3.1 From 71b7e48fbe38f9238ee764513f4701b135d14fe8 Mon Sep 17 00:00:00 2001 From: antrik Date: Thu, 4 Aug 2011 09:36:15 +0200 Subject: mach/building: Some more rewording Slipped through in last commit... --- microkernel/mach/gnumach/building.mdwn | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index ebf0e1d7..0a9e328c 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -23,9 +23,8 @@ Please see the Debian [[running/debian/FAQ]] before using `apt-get source`. ### Preparing for the Build -Building GNU Mach requires the *build-essential* and *fakeroot* packages, their -dependencies and additional packages that are specified by the source gnumach -package: +Building GNU Mach requires the *build-essential* and *fakeroot* packages, +and some additional dependencies specified by the gnumach source package: # apt-get install build-essential fakeroot # apt-get build-dep gnumach -- cgit v1.3.1 From ef0baf74357b7db4c094c5103e3d17599f46b6d1 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Thu, 4 Aug 2011 18:30:02 -0400 Subject: It's a good idea to backup prev. gnumach.gz --- microkernel/mach/gnumach/building.mdwn | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 0a9e328c..ecaae7f8 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -95,6 +95,7 @@ Optionally run the (tiny) test suite: $ make check -The resulting kernel binary can now be moved into place -(just copy `gnumach.gz`, typically to `/boot/gnumach.gz`), -so you can boot your system with the new kernel. +The resulting kernel binary can now be moved into place (just copy +`gnumach.gz`, typically to `/boot/gnumach.gz`), so you can boot your system +with the new kernel. It is a good idea to make a backup of the previously +installed binary, in case you need to recover. -- cgit v1.3.1 From 6ac278617dd6e5801577dc35cd9738579ecce8cb Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Thu, 4 Aug 2011 21:56:40 -0400 Subject: gnumach/build: expanded backup and install --- microkernel/mach/gnumach/building.mdwn | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index ecaae7f8..24a73608 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -95,7 +95,14 @@ Optionally run the (tiny) test suite: $ make check -The resulting kernel binary can now be moved into place (just copy -`gnumach.gz`, typically to `/boot/gnumach.gz`), so you can boot your system -with the new kernel. It is a good idea to make a backup of the previously -installed binary, in case you need to recover. +It's a good idea to make a backup of the previously installed kernel, in case +you can't boot using the new one. That way, you can restore it after booting +from a rescue media (or mounting the disk image used by your vm). + + # cp /boot/gnumach.gz /boot/gnumach.gz.bak + +GNU Mach can now be moved into place, typically `/boot/gnumach.gz`, so that you +can boot your system with the new kernel. + + # cp gnumach.gz /boot + -- cgit v1.3.1 From 8ae3e796208353b3191bccdacff608f47a87ecdd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 10 Aug 2011 19:55:01 +0200 Subject: update memory limit --- microkernel/mach/gnumach/hardware_compatibility_list.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn index 6c984784..874f5f07 100644 --- a/microkernel/mach/gnumach/hardware_compatibility_list.mdwn +++ b/microkernel/mach/gnumach/hardware_compatibility_list.mdwn @@ -29,7 +29,7 @@ Read about further [[ports]]. # Memory -GNU Mach will use a maximum of 1 GiB of RAM. If your system has more, +GNU Mach will use a maximum of 1.7 GiB of RAM. If your system has more, the surplus will silently be ignored. (In past times, this would hinder GNU Mach from booting at all, but this has been fixed, so you no longer need to apply GRUB's `uppermem` directive.) -- cgit v1.3.1 From 483c38fc1c9e83f186ab4bc57ac69f332ce002bd Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 15 Aug 2011 23:10:31 +0200 Subject: Add debugging tips & tricks --- microkernel/mach/gnumach/debugging.mdwn | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn index 2f52adf8..8a5b1003 100644 --- a/microkernel/mach/gnumach/debugging.mdwn +++ b/microkernel/mach/gnumach/debugging.mdwn @@ -9,9 +9,56 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] +Here are some hints to debug with GNU Mach + Mach has a built-in kernel debugger. [Manual](http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html). +First, make sure to enable it. Either by using a pre-packaged gnumach-image-something-dbg, or by passing --enable-kdb to the ./configure invocation. + +Then, reproduce the issue again. If something like a kernel trap happens, you will end up in the GNU Mach debugger. Otherwise, type control-alt-d to make Mach enter it by hand. + +The debugger has an extensive documentation on http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html , but a quick start is the following. + +To get the register values, type + +show registers + +To get a backtrace, type trace, which will print both function return addresses and function parameters, such as + +0x107cf1(8088488,5e,40000008,2aa008,0) +0x1071bc(0,0,0,0,0) +0x106831(24fe00,2000,b,800,0) + +Run the addr2line tool on the return addresses: + +addr2line -i -f -e /boot/gnumach 0x107cf1 0x1071bc 0x106831 + +This will print the source code lines of the backtrace. + +To examine the backtrace of some given thread, use + +show all thread/u + +to get the whole listing of all tasks and threads. You can then use trace/t to trace a specific thread. + +Unfortunately, userland and kernelland use the same range of addresses, so one can not get userland traces easily. The Xen port uses different ranges, and in that case one can use trace/u to also get the userland trace. + +To examine a variable, use nm /boot/gnumach to get the address of the variable (e.g. 0x123400), and use + +x 0x123400 + +to read it. One can also write to it by using + +w 0x123400 + +Another interesting feature is watching a variable, by using + +watch 0x123400 + +and then type continue, to let Mach continue execution. The debugger will be entered again on any change in that variable. The watch is implemented in hardware, so it does not disturb or slow down execution at all. + + When you're [[running_a_system_in_QEMU|hurd/running/qemu]] you can directly [use GDB on the running -- cgit v1.3.1 From 9443eb281a8fa2207a5cc13bce9722dc500d2f35 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 15 Aug 2011 23:22:14 +0200 Subject: hint: use curses to copy/paste --- microkernel/mach/gnumach/debugging.mdwn | 2 ++ 1 file changed, 2 insertions(+) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn index 8a5b1003..596e4da0 100644 --- a/microkernel/mach/gnumach/debugging.mdwn +++ b/microkernel/mach/gnumach/debugging.mdwn @@ -18,6 +18,8 @@ First, make sure to enable it. Either by using a pre-packaged gnumach-image-some Then, reproduce the issue again. If something like a kernel trap happens, you will end up in the GNU Mach debugger. Otherwise, type control-alt-d to make Mach enter it by hand. +If you are running in kvm or qemu, it is convenient to use the curses frontend to be able to copy/paste. + The debugger has an extensive documentation on http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html , but a quick start is the following. To get the register values, type -- cgit v1.3.1 From 0606c86cb3869a8dd2c7f9b72af19e55b2312c2c Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 27 Aug 2011 14:44:43 +0200 Subject: Add pv-grub config sample --- microkernel/mach/gnumach/ports/xen.mdwn | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn index af431c92..1b967d38 100644 --- a/microkernel/mach/gnumach/ports/xen.mdwn +++ b/microkernel/mach/gnumach/ports/xen.mdwn @@ -79,20 +79,28 @@ Then use The current `hurd-modules` was built from the debian packages `hurd 20070606-2` and `libc0.3 2.6.1-1`. /!\ This means that when using this image, your GNU/Hurd system also needs to be a glibc version 2.6 or later-based one! +# `pv-grub` -# Miscellaneous +From Xen 4.0 on you can run the GNU Hurd directly using `pv-grub`, +without the need to [prepare a special bootstrap +image](http://youpibouh.thefreecat.org/hurd-xen/build_hurd-modules) (like an +initrd). -[[Internals]]. +Download http://youpibouh.thefreecat.org/hurd-xen/pv-grub.gz into /boot, and use the following for instance: -[[!GNU_Savannah_task 5468]], [[!GNU_Savannah_task 6584]]. + kernel = "/boot/pv-grub.gz" + memory = 256 + disk = ['phy:sda4,hda,w'] + extra = "(hd0,1)/boot/grub/menu.lst" + vif = [ '' ] +extra is now the path to the grub config file. -# `pv-grub` +# Miscellaneous -From Xen 4.0 on you'll be able to run the GNU Hurd directly using `pv-grub`, -without the need to [prepare a special bootstrap -image](http://youpibouh.thefreecat.org/hurd-xen/build_hurd-modules) (like an -initrd). +[[Internals]]. + +[[!GNU_Savannah_task 5468]], [[!GNU_Savannah_task 6584]]. # Host-side Writeback Caching -- cgit v1.3.1 From 25e041c260fef647e9403883e96925010aa1ba5d Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 27 Aug 2011 14:51:35 +0200 Subject: explain how to use part storeio --- microkernel/mach/gnumach/ports/xen.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn index 1b967d38..5b5399de 100644 --- a/microkernel/mach/gnumach/ports/xen.mdwn +++ b/microkernel/mach/gnumach/ports/xen.mdwn @@ -96,6 +96,12 @@ Download http://youpibouh.thefreecat.org/hurd-xen/pv-grub.gz into /boot, and use extra is now the path to the grub config file. +In the menu.lst file, you will need the following notation for the gnumach root= parameter: + +root=part:2:device:hd0 + +to access the second partition of hd0, for instance. + # Miscellaneous [[Internals]]. -- cgit v1.3.1 From edd7d582fce7a52565efd3e404bb0419f7e34474 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 27 Aug 2011 15:39:25 +0200 Subject: document how to use parted storeio for /dev entries --- microkernel/mach/gnumach/ports/xen.mdwn | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/ports/xen.mdwn b/microkernel/mach/gnumach/ports/xen.mdwn index 5b5399de..5fe73c06 100644 --- a/microkernel/mach/gnumach/ports/xen.mdwn +++ b/microkernel/mach/gnumach/ports/xen.mdwn @@ -96,12 +96,18 @@ Download http://youpibouh.thefreecat.org/hurd-xen/pv-grub.gz into /boot, and use extra is now the path to the grub config file. -In the menu.lst file, you will need the following notation for the gnumach root= parameter: +# Partitions + +You will need the following notation for the gnumach root= parameter: root=part:2:device:hd0 to access the second partition of hd0, for instance. +You will also need to use the parted storeio module for the /dev entries, for instance: + +settrans -fgap /dev/hd0s1 /hurd/storeio -T typed part:1:device:hd0 + # Miscellaneous [[Internals]]. -- cgit v1.3.1 From 016433b123ce4b60eee550dbdb7812ba623d16e7 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 30 Aug 2011 12:03:36 +0200 Subject: Minor tweaks. --- hurd/porting/system_api_limitations.mdwn | 2 +- hurd/running/debian/dhcp.mdwn | 7 +++ hurd/running/debian/patch_submission.mdwn | 7 +-- hurd/translator/pfinet/dhcp.mdwn | 37 ++++++-------- microkernel/mach/gnumach/building.mdwn | 11 +++++ microkernel/mach/gnumach/debugging.mdwn | 34 ++++++++----- microkernel/mach/mig/gnu_mig/building.mdwn | 11 +++++ .../mach/mig/gnu_mig/building/discussion.mdwn | 16 ++++++ microkernel/mach/mig/gnu_mig/discussion.mdwn | 6 --- open_issues/e2fsck_i_file_acl_hi.mdwn | 5 +- open_issues/libpthread_dlopen.mdwn | 14 +++--- open_issues/perl.mdwn | 13 ++--- open_issues/runit.mdwn | 57 +++++++++------------- open_issues/sync_but_still_unclean_filesystem.mdwn | 5 +- open_issues/virtualbox.mdwn | 30 ++++++------ source_repositories.mdwn | 17 ++++--- 16 files changed, 154 insertions(+), 118 deletions(-) create mode 100644 microkernel/mach/mig/gnu_mig/building/discussion.mdwn delete mode 100644 microkernel/mach/mig/gnu_mig/discussion.mdwn (limited to 'microkernel/mach/gnumach') diff --git a/hurd/porting/system_api_limitations.mdwn b/hurd/porting/system_api_limitations.mdwn index 82327dde..1615ccc0 100644 --- a/hurd/porting/system_api_limitations.mdwn +++ b/hurd/porting/system_api_limitations.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2003, 2004, 2005, 2009, 2010 Free Software +[[!meta copyright="Copyright © 2003, 2004, 2005, 2009, 2010, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable diff --git a/hurd/running/debian/dhcp.mdwn b/hurd/running/debian/dhcp.mdwn index f316981d..8d351aae 100644 --- a/hurd/running/debian/dhcp.mdwn +++ b/hurd/running/debian/dhcp.mdwn @@ -22,3 +22,10 @@ fatal. Debian GNU/Hurd doesn't currently execute's Debian standard `/etc/rcS.d/*` boot scripts, but has its own `/libexec/rc` script -- which integrates scripts from `/etc/rc.boot/` instead. + + +# Open Issues + + * [[!debbug 616290]] + + * [[Proper Hurdy DHCP support|hurd/translator/pfinet/dhcp]] diff --git a/hurd/running/debian/patch_submission.mdwn b/hurd/running/debian/patch_submission.mdwn index d2d10747..d2b7b776 100644 --- a/hurd/running/debian/patch_submission.mdwn +++ b/hurd/running/debian/patch_submission.mdwn @@ -1,12 +1,13 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] If you fixed a Debian package which *FTBFS* (fails to build from source), you should submit the patch so that all users can profit from your work. diff --git a/hurd/translator/pfinet/dhcp.mdwn b/hurd/translator/pfinet/dhcp.mdwn index 79ed8966..456d0c84 100644 --- a/hurd/translator/pfinet/dhcp.mdwn +++ b/hurd/translator/pfinet/dhcp.mdwn @@ -1,31 +1,33 @@ -[[!tag open_issue_hurd]] +[[!meta copyright="Copyright © 2002, 2003, 2005, 2011 Free Software Foundation, +Inc."]] -According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway. +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] -[Link to thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html) +[[!tag open_issue_hurd]] -The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html). +[[Debian GNU/Hurd|running/debian]] has some script hackery to get +[[running/debian/DHCP]] going. --- 2011 +--- -The ISC dhcp client was ported, available in the isc-dhcp-client Debian package, [[http://bugs.debian.org/616290]]. +According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway. --- [[Main/ThadeuCascardo]] - 29 Sep 2005 +[Link to thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html) -No DHCP client has been ported to the Hurd yet. +The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html). [This](http://mail.gnu.org/archive/html/help-hurd/2003-10/msg00016.html) thread on help-hurd has a little more info on what's still needed for DHCP. --- [[Main/GregBuchholz]] - 09 Oct 2003 - Found this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-08/msg00045.html) about DHCP capabilities in the Hurd encouraging. --- [[Main/GregBuchholz]] - 03 Sep 2003 - * Tom Hart began a [discussion ](http://mail.gnu.org/pipermail/help-hurd/2002-October/006643.html) of 14 posts in Oct 2002. --- [[Main/GrantBow]] - 20 Oct 2002 - The beginnings of a DHCP translator is available in the Hurd sources on Savannah: [hurd/trans/pump.c](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd/trans/pump.c?rev=1.3&content-type=text/vnd.viewcvs-markup) Unfortunately our current TCP/IP stack, the pfinet translator, lacks support for the AF\_PACKET interface as well as sending packets with an IP address of 0.0.0.0. @@ -42,10 +44,3 @@ Neal Walfield on bug-hurd replies: > Anyone else know the status of getting these compiled and functional? We need to be able to send to the DHCP server with ip address 0.0.0.0. - --- [[Main/JoachimNilsson]] - 12 Nov 2002 - ---- - -[[Debian GNU/Hurd|running/debian]] has some script hackery to get -[[running/debian/DHCP]] going. diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index 24a73608..afcfac74 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -1,3 +1,14 @@ +[[!meta copyright="Copyright © 2006, 2007, 2008, 2011 Free Software Foundation, +Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + # Building [[GNU_Mach|gnumach]] from Source If you want to build the [[GNU_Mach|gnumach]] kernel yourself instead of just using a diff --git a/microkernel/mach/gnumach/debugging.mdwn b/microkernel/mach/gnumach/debugging.mdwn index 596e4da0..f657e7cc 100644 --- a/microkernel/mach/gnumach/debugging.mdwn +++ b/microkernel/mach/gnumach/debugging.mdwn @@ -9,7 +9,12 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -Here are some hints to debug with GNU Mach +Here are some hints to debug with GNU Mach. + +[[!toc levels=2]] + + +# Kernel Debugger Mach has a built-in kernel debugger. [Manual](http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html). @@ -20,27 +25,25 @@ Then, reproduce the issue again. If something like a kernel trap happens, you wi If you are running in kvm or qemu, it is convenient to use the curses frontend to be able to copy/paste. -The debugger has an extensive documentation on http://www.gnu.org/software/hurd/gnumach-doc/Kernel-Debugger.html , but a quick start is the following. - To get the register values, type -show registers + show registers To get a backtrace, type trace, which will print both function return addresses and function parameters, such as -0x107cf1(8088488,5e,40000008,2aa008,0) -0x1071bc(0,0,0,0,0) -0x106831(24fe00,2000,b,800,0) + 0x107cf1(8088488,5e,40000008,2aa008,0) + 0x1071bc(0,0,0,0,0) + 0x106831(24fe00,2000,b,800,0) Run the addr2line tool on the return addresses: -addr2line -i -f -e /boot/gnumach 0x107cf1 0x1071bc 0x106831 + $ addr2line -i -f -e /boot/gnumach 0x107cf1 0x1071bc 0x106831 This will print the source code lines of the backtrace. To examine the backtrace of some given thread, use -show all thread/u + show all thread/u to get the whole listing of all tasks and threads. You can then use trace/t to trace a specific thread. @@ -48,25 +51,28 @@ Unfortunately, userland and kernelland use the same range of addresses, so one c To examine a variable, use nm /boot/gnumach to get the address of the variable (e.g. 0x123400), and use -x 0x123400 + x 0x123400 to read it. One can also write to it by using -w 0x123400 + w 0x123400 Another interesting feature is watching a variable, by using -watch 0x123400 + watch 0x123400 and then type continue, to let Mach continue execution. The debugger will be entered again on any change in that variable. The watch is implemented in hardware, so it does not disturb or slow down execution at all. +# GDB in QEMU When you're [[running_a_system_in_QEMU|hurd/running/qemu]] you can directly [use GDB on the running kernel](http://www.nongnu.org/qemu/qemu-doc.html#SEC48). +# Code Inside the Kernel + Alternatively you can use an approach like this one: add the following code snippet to `device/ds_routines.c`'s `ds_device_open` function, right at the top of the function, and modify the code as needed. @@ -105,6 +111,8 @@ This is especially useful if you need to manually trigger some stuff inside the running kernel, as with the *D1* example. +## Writing to the Screen Buffer + If you're doing real low level debugging, you might want to put variations of the following snipped into the code, this code will write a `#` character at line `[LINE]`, column `[COLUMN]` on the screen: @@ -118,6 +126,8 @@ some place when running the kernel inside QEMU, as QEMU somehow decides not to update its display buffer anymore under certain conditions. +# Halting the CPU and Examining Registers + IRC, freenode, #hurd, 2011-07-14: one ugly trick i use when printf isn't available is to halt the diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index 759c1a84..cd588341 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -1,3 +1,14 @@ +[[!meta copyright="Copyright © 2006, 2007, 2008, 2011 Free Software Foundation, +Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + # Building the Mach Interface Generator from Source If you want to build the Mach Interface Generator yourself instead of just diff --git a/microkernel/mach/mig/gnu_mig/building/discussion.mdwn b/microkernel/mach/mig/gnu_mig/building/discussion.mdwn new file mode 100644 index 00000000..d7636158 --- /dev/null +++ b/microkernel/mach/mig/gnu_mig/building/discussion.mdwn @@ -0,0 +1,16 @@ +[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +# Non-cross-compiling + +[[!tag open_issue_mig]] + +[[samuelthibault]] mentioned that I should make clear what compiler options, etc. are only needed if compiling on a 64 bit computer. However, I don't know if the --host=i686... option is needed, here and when making gnumach, in case there may be some other default on 32 bit computers? --[[sudoman]] + diff --git a/microkernel/mach/mig/gnu_mig/discussion.mdwn b/microkernel/mach/mig/gnu_mig/discussion.mdwn deleted file mode 100644 index e5a4dea3..00000000 --- a/microkernel/mach/mig/gnu_mig/discussion.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -# Builing MIG - -## Non-cross-compiling - -[[samuelthibault]] mentioned that I should make clear what compiler options, etc. are only needed if compiling on a 64 bit computer. However, I don't know if the --host=i686... option is needed, here and when making gnumach, in case there may be some other default on 32 bit computers? --[[sudoman]] - diff --git a/open_issues/e2fsck_i_file_acl_hi.mdwn b/open_issues/e2fsck_i_file_acl_hi.mdwn index f055babe..d03b733c 100644 --- a/open_issues/e2fsck_i_file_acl_hi.mdwn +++ b/open_issues/e2fsck_i_file_acl_hi.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2010, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -34,4 +34,5 @@ IRC, unknown channel, unknown date. k but it's always passive translator nodes -This is due to an erroneous read/write from e2fsck, see http://sourceforge.net/tracker/?func=detail&aid=3379227&group_id=2406&atid=102406 +This is due to an erroneous read/write from e2fsck, see +. diff --git a/open_issues/libpthread_dlopen.mdwn b/open_issues/libpthread_dlopen.mdwn index 0cd761f2..0d3628ec 100644 --- a/open_issues/libpthread_dlopen.mdwn +++ b/open_issues/libpthread_dlopen.mdwn @@ -15,7 +15,7 @@ IRC, OFTC, #debian-hurd, 2011-07-21. there's one known issue with pthreads you can't dlopen() it -[ if the main application is not already linked against it ] +... if the main application is not already linked against it. which also means you can't dlopen() a module which depends on it if the main application hasn't used -lpthread already @@ -43,12 +43,12 @@ The fix thus being: link the main application with -lpthread. The same symptom appears in an odd case, for instance: -buildd@hurd:~$ ldd /usr/bin/openjade - libthreads.so.0.3 => /lib/libthreads.so.0.3 (0x0103d000) - libosp.so.5 => /usr/lib/libosp.so.5 (0x01044000) - libpthread.so.0.3 => /lib/libpthread.so.0.3 (0x01221000) - libnsl.so.1 => /lib/i386-gnu/libnsl.so.1 (0x01232000) -... + buildd@hurd:~$ ldd /usr/bin/openjade + libthreads.so.0.3 => /lib/libthreads.so.0.3 (0x0103d000) + libosp.so.5 => /usr/lib/libosp.so.5 (0x01044000) + libpthread.so.0.3 => /lib/libpthread.so.0.3 (0x01221000) + libnsl.so.1 => /lib/i386-gnu/libnsl.so.1 (0x01232000) + [...] openjade links against *both* libthreads and libpthread. The result is that libc early-initializes libthreads only, and thus libpthread is not early-initialized, diff --git a/open_issues/perl.mdwn b/open_issues/perl.mdwn index c7428cb5..45680328 100644 --- a/open_issues/perl.mdwn +++ b/open_issues/perl.mdwn @@ -10,16 +10,13 @@ License|/fdl]]."]]"""]] [[!meta title="Foster Perl programming"]] -A dependency loop in Debian GNU/Hurd currently leads to +[[!template id=note text="""**2011-08**. A dependency loop in Debian GNU/Hurd +currently leads to: *Could not perform immediate configuration on 'perl'*. +Easy workaround: -`Could not perform immediate configuration on 'perl'` - -Simply use - -`apt-get install perl perl-base -o APT::Immediate-Configure=false` - -to break the loop. + # apt-get install perl perl-base -o APT::Immediate-Configure=false +"""]] Resolve issues uncovered by Perl's test suite, and enable Hurd-specific diff --git a/open_issues/runit.mdwn b/open_issues/runit.mdwn index 6b336ef7..659b81ea 100644 --- a/open_issues/runit.mdwn +++ b/open_issues/runit.mdwn @@ -1,12 +1,13 @@ -[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2009, 2011 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] [[!tag open_issue_porting]] @@ -26,36 +27,24 @@ Originally answered by Samuel Thibault: Usual issue with rpctrace: it does not support fork(). -I've checked a backtrace in gdb, got this: - - 0x0105af6c in mach_msg_trap () - at /build/eglibc-jWVnRE/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 - -1 0x0105b769 in __mach_msg (msg=0x1024af8, option=258, send_size=0, rcv_size=40, rcv_name=140, - timeout=1000020, notify=0) at msg.c:110 - -2 0x01062251 in _hurd_select (nfds=2, pollfds=0x1024dc0, readfds=0x0, writefds=0x0, exceptfds=0x0, - timeout=0x1024bbc, sigmask=0x0) at hurdselect.c:324 - -3 0x0114427b in __poll (fds=0x1024dc0, nfds=2, timeout=1000020) at ../sysdeps/mach/hurd/poll.c:48 - -4 0x0804b770 in iopause (x=0x1024dc0, len=2, deadline=0x1024dd8, stamp=0x1024de8) at iopause.c:29 - -5 0x08048efc in main (argc=2, argv=0x1024e94) at runsv.c:543 - - -and main() shows up as: - - sig_unblock(sig_term); - - sig_unblock(sig_child); - - -> iopause(x, 2 +haslog, &deadline, &now); - - sig_block(sig_term); - - sig_block(sig_child); - + I've checked a backtrace in gdb, got this: + + 0x0105af6c in mach_msg_trap () + at /build/eglibc-jWVnRE/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + 1 0x0105b769 in __mach_msg (msg=0x1024af8, option=258, send_size=0, rcv_size=40, rcv_name=140, + timeout=1000020, notify=0) at msg.c:110 + 2 0x01062251 in _hurd_select (nfds=2, pollfds=0x1024dc0, readfds=0x0, writefds=0x0, exceptfds=0x0, + timeout=0x1024bbc, sigmask=0x0) at hurdselect.c:324 + 3 0x0114427b in __poll (fds=0x1024dc0, nfds=2, timeout=1000020) at ../sysdeps/mach/hurd/poll.c:48 + 4 0x0804b770 in iopause (x=0x1024dc0, len=2, deadline=0x1024dd8, stamp=0x1024de8) at iopause.c:29 + 5 0x08048efc in main (argc=2, argv=0x1024e94) at runsv.c:543 + + and main() shows up as: + + sig_unblock(sig_term); + sig_unblock(sig_child); + -> iopause(x, 2 +haslog, &deadline, &now); + sig_block(sig_term); + sig_block(sig_child); So it simply looks like the known "signals don't interrupt select" bug. - diff --git a/open_issues/sync_but_still_unclean_filesystem.mdwn b/open_issues/sync_but_still_unclean_filesystem.mdwn index 8a0b1d49..c8a37169 100644 --- a/open_issues/sync_but_still_unclean_filesystem.mdwn +++ b/open_issues/sync_but_still_unclean_filesystem.mdwn @@ -33,6 +33,5 @@ Of course, [[hurd/translator/ext2fs]] is meant to be doing this to-disk synchronization internally upon translator shutdown, but evidently it doesn't in all cases. - Apparently diskfs simply does not set filesystem as readonly: - - http://lists.gnu.org/archive/html/bug-hurd/2011-08/msg00024.html +Apparently diskfs simply does not set filesystems as read-only: +. diff --git a/open_issues/virtualbox.mdwn b/open_issues/virtualbox.mdwn index 246313ff..9440284f 100644 --- a/open_issues/virtualbox.mdwn +++ b/open_issues/virtualbox.mdwn @@ -8,15 +8,16 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!meta title="xattr: extended attributes"]] - [[!tag open_issue_gnumach]] Running GNU Mach in VirtualBox crashes during initialization. IRC, freenode, #hurd, 2011-08-15 - HowTo Reproduce: 1) Use `reboot` to reboot the system. 2) Once you see the Grub menu, turn off the debian hurd box. 3) Let the box boot normally, and wait for the error/crash/reboot. 4) The error/crash will happen twice and it's reboot automatically. The 3rd boot will success. + HowTo Reproduce: 1) Use `reboot` to reboot the system. 2) Once + you see the Grub menu, turn off the debian hurd box. 3) Let the box boot + normally, and wait for the error/crash/reboot. 4) The error/crash will + happen twice and it's reboot automatically. The 3rd boot will success. root@dhurd:/boot# addr2line -f -e gnumach-1.3.99-486-dbg-copy 0x106c93 0x1556a5 0x152c54 copyoutmsg @@ -28,8 +29,8 @@ IRC, freenode, #hurd, 2011-08-15 i386/i386/locore.S:1289 is - movl $USER_DS,%eax /* use user data segment for accesses */ -=> mov %ax,%es + movl $USER_DS,%eax /* use user data segment for accesses */ + => mov %ax,%es State is @@ -66,14 +67,14 @@ IRC, freenode, #hurd, 2011-08-15 i386/i386/locore.S:527 is: -_return_from_kernel: -_kret_popl_gs: - popl %gs /* restore segment registers */ -_kret_popl_fs: - popl %fs -_kret_popl_es: -=> popl %es -_kret_popl_ds: + _return_from_kernel: + _kret_popl_gs: + popl %gs /* restore segment registers */ + _kret_popl_fs: + popl %fs + _kret_popl_es: + => popl %es + _kret_popl_ds: cs: 0x8 ds: 0x10 @@ -93,5 +94,6 @@ _kret_popl_ds: efl: 0x10216 looks again like a $USER_DS issue - what's interesting is that that one means that $USER_DS did load in %es fine at least once + what's interesting is that that one means that $USER_DS did load in + %es fine at least once and it's the reload that fails diff --git a/source_repositories.mdwn b/source_repositories.mdwn index df0242f0..5ac90b5e 100644 --- a/source_repositories.mdwn +++ b/source_repositories.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -22,14 +22,17 @@ This page is meant to give some guidelines. Please use good sense or ask on * hurd.git -- Hurd meta package; no real content yet * [[hurd/glibc.git|glibc]] -- [[/glibc]] maintenance - * hurd/gnumach.git -- [[GNU Mach|microkernel/mach/gnumach]] ([[building|microkernel/mach/gnumach/building]]) - * hurd/hurd.git -- [[/Hurd]] ([[building|hurd/building]]) + * hurd/gnumach.git -- [[GNU Mach|microkernel/mach/gnumach]] + ([[microkernel/mach/gnumach/building]]) + * hurd/hurd.git -- [[/Hurd]] ([[hurd/building]]) * [[hurd/incubator.git|incubator]] -- the great next stuff * hurd/libpthread.git -- [[POSIX threading library|libpthread]] - * hurd/mig.git -- [[microkernel/mach/MIG]] ([[building|microkernel/mach/mig/gnu_mig/building]]) + * hurd/mig.git -- [[microkernel/mach/MIG]] + ([[microkernel/mach/mig/gnu_mig/building]]) * hurd/procfs.git -- [[hurd/translator/procfs]] - * hurd/unionfs.git -- -- [[hurd/translator/unionfs]] - * hurd/viengoos.git -- [[microkernel/Viengoos]] ([[building|microkernel/viengoos/building]]) + * hurd/unionfs.git -- [[hurd/translator/unionfs]] + * hurd/viengoos.git -- [[microkernel/Viengoos]] + ([[microkernel/viengoos/building]]) * hurd/web.git -- [[contributing/Web_pages]] -- cgit v1.3.1 From 647faa6dd7e286d20171247039bd59600bb7e436 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 6 Sep 2011 16:33:37 +0200 Subject: microkernel/mach/gnumach/boot_trace: Update lightly. --- microkernel/mach/gnumach/boot_trace.mdwn | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/boot_trace.mdwn b/microkernel/mach/gnumach/boot_trace.mdwn index d33ef25a..1badf712 100644 --- a/microkernel/mach/gnumach/boot_trace.mdwn +++ b/microkernel/mach/gnumach/boot_trace.mdwn @@ -1,12 +1,13 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] `if NCPUS > 1` stuff is not being considered so far. @@ -215,6 +216,12 @@ is included in the section entitled >> kern/bootstrap.c: bootstrap\_create +>>> The [[grub/multiboot]] modules have been put somewhere into memory by +>>> [[GRUB]]. The boot scripts are parsed. The modules' ELF image's `PT_LOAD` +>>> sections are \`\`read'' (that is, `vm_allocate` and `copyout`) and turned +>>> into real [[task]]s. The multiboot modules' memory regions can be +>>> deallocated then. + >> [...] >> vm\_pageout -- cgit v1.3.1 From 331da015205c6b18c0e0f9cbfd0d02a931ee5239 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 7 Sep 2011 19:19:48 +0200 Subject: fix urls --- microkernel/mach/gnumach/building.mdwn | 2 +- microkernel/mach/mig/gnu_mig/building.mdwn | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn index afcfac74..427fb083 100644 --- a/microkernel/mach/gnumach/building.mdwn +++ b/microkernel/mach/gnumach/building.mdwn @@ -21,7 +21,7 @@ enabled) is around 50 MiB. You can either use the git repository (see ), - $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git + $ git clone http://git.savannah.gnu.org/cgit/hurd/gnumach.git/ ... or get the Debian sources, if you're using Debian. (See [here](http://packages.debian.net/source/unstable/gnumach).) diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn index cd588341..e7d3c150 100644 --- a/microkernel/mach/mig/gnu_mig/building.mdwn +++ b/microkernel/mach/mig/gnu_mig/building.mdwn @@ -19,7 +19,7 @@ using a pre-built package, follow these instructions. You can chose between getting the [sources from the developers' RCS](http://git.savannah.gnu.org/cgit/hurd/): - $ git clone git://git.savannah.gnu.org:/srv/git/hurd/mig.git + $ git clone http://git.savannah.gnu.org/cgit/hurd/mig.git/ ... or (if you are working on a Debian system) get the sources that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig): -- cgit v1.3.1 From a595c644e0a4438c3acbf3be5e88659b668a8053 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 14 Sep 2011 23:21:09 +0200 Subject: open_issues/mach_on_top_of_posix: New. --- microkernel/mach/gnumach/ports.mdwn | 8 +++++--- open_issues/mach_on_top_of_posix.mdwn | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 open_issues/mach_on_top_of_posix.mdwn (limited to 'microkernel/mach/gnumach') diff --git a/microkernel/mach/gnumach/ports.mdwn b/microkernel/mach/gnumach/ports.mdwn index afc91d7a..f114460c 100644 --- a/microkernel/mach/gnumach/ports.mdwn +++ b/microkernel/mach/gnumach/ports.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation, +[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -6,8 +6,8 @@ id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] * x86. This is the main port. @@ -20,3 +20,5 @@ is included in the section entitled started, but isn't in a usable state either. * MIPS. Status completely unknown. + + * [[open_issues/Mach_on_Top_of_POSIX]]. Status unknown. diff --git a/open_issues/mach_on_top_of_posix.mdwn b/open_issues/mach_on_top_of_posix.mdwn new file mode 100644 index 00000000..7574feb0 --- /dev/null +++ b/open_issues/mach_on_top_of_posix.mdwn @@ -0,0 +1,16 @@ +[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="Mach on Top of POSIX"]] + +[[!tag open_issue_gnumach]] + +At the beginning of the 2000s, there was a *Mach on Top of POSIX* port started +by John Edwin Tobey. Status unknown. Ask [[tschwinge]] for the source code. -- cgit v1.3.1