summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--microkernel/mach/gnumach/building.mdwn80
-rw-r--r--microkernel/mach/mig/gnu_mig/building.mdwn37
2 files changed, 50 insertions, 67 deletions
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn
index 8284639b..24a73608 100644
--- a/microkernel/mach/gnumach/building.mdwn
+++ b/microkernel/mach/gnumach/building.mdwn
@@ -8,11 +8,11 @@ enabled) is around 50 MiB.
## Getting the Source Code
-You can either use the git repository (see <http://savannah.gnu.org/git/?group=hurd>),
+You can either use the git repository (see <http://git.savannah.gnu.org/cgit/hurd/>),
$ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git
-... or Debian sources, if you're using Debian. (See
+... or get the Debian sources, if you're using Debian. (See
[here](http://packages.debian.net/source/unstable/gnumach).)
$ apt-get source gnumach
@@ -23,16 +23,15 @@ 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
### Building and Installing ... Debian `.deb` files
-Change into the directory with the downloaded / unpacked GNU Mach sources, e.g.
+Change into the directory with the downloaded / unpacked GNU Mach sources,
$ cd gnumach-XXXXXXXX
@@ -42,7 +41,7 @@ Start the build process with
[[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.
+directory and has a similar name as the build directory:
# dpkg -i ../gnumach_XXXXXXXX-X_hurd-i386.deb
@@ -52,64 +51,43 @@ 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,
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
$ autoreconf --install
-GNU Mach and its headers should be built in a subdirectory:
+GNU Mach (and the associated headers) need be built in a separate build directory:
- $ mkdir gnumach-build
- $ cd gnumach-build
+ $ mkdir build
+ $ cd build
-Find the path to your GNU Mach sources (`..`) and configure it:
+Run configure:
$ ../configure --prefix=
-Use the --host flag on 64 bit systems:
-
- $ ../configure --prefix= --host=i686-unknown-linux-gnu
-
-Install the header files into e.g. `~/gnu/include/`:
-
- $ make DESTDIR=~/gnu install-data
-
-### Building and Installing
-
-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 building on a 64 bit host system,
+you need a number of additional settings to force a 32 bit 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.
+ $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386' ../configure --prefix= --host=i686-unknown-linux-gnu
- $ cd gnumach-build
- $ rm -rf *
+### Installing the Header Files First
-Find the path to your GNU Mach sources (`..`) and configure it:
+In order to build GNU Mach, you will need a working MIG.
+Building MIG in turn requires the GNU Mach header files to be already present.
+So for bootstrapping MIG, you have to install the Mach headers first,
+for example into `~/gnu/include/`:
- $ ../configure
+ $ make DESTDIR=~/gnu install-data
-If you are building on a 64 bit system, do the following instead:
+Now you can [[build_MIG|mig/gnu_mig/building]].
+Once you are done with that, come back here to finish the Mach build.
- $ CPP='gcc -m32 -E -x c -undef -ansi' CC='gcc -m32' LD='ld -melf_i386'
- $ ../configure --host=i686-unknown-linux-gnu
+### Building and Installing
-Build the kernel image:
+With MIG present, now build the kernel image:
$ make gnumach.gz
@@ -117,8 +95,14 @@ Optionally run the (tiny) test suite:
$ make check
-You can now install and use `gnumach.gz`.
+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
-[TODO]
+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
diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn
index 6d17e7ef..759c1a84 100644
--- a/microkernel/mach/mig/gnu_mig/building.mdwn
+++ b/microkernel/mach/mig/gnu_mig/building.mdwn
@@ -6,11 +6,11 @@ using a pre-built package, follow these instructions.
## <a name="Getting_the_Source_Code"> Getting the Source Code </a>
You can chose between getting the [sources from the developers'
-RCS](http://savannah.gnu.org/git/?group=hurd):
+RCS](http://git.savannah.gnu.org/cgit/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
+... 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):
$ apt-get source mig
@@ -23,32 +23,31 @@ The unpacked source tree is around 1 MiB, and the build tree also is around 1 Mi
### <a name="Preparing_for_the_Build"> Preparing for the Build </a>
-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
### <a name="Building_and_Installing"> Building and Installing </a> <a name="_a_deb_file"> ... a _.deb_ file </a>
-Change into the directory with the downloaded / unpacked MIG sources (_mig-1.3.1.99_):
+Change into the directory with the downloaded / unpacked MIG sources:
- $ cd mig-1.3.1.99
+ $ cd mig-X.X.X.XX
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.
## <a name="_on_non_Debian_systems"> On non-Debian Systems: </a>
### <a name="Preparing_for_the_Build"> Preparing for the Build </a>
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 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 the path
-to your Mach Interface Generator sources (../mig) and configure it:
+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
+ $ 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