diff options
Diffstat (limited to 'Mach')
18 files changed, 0 insertions, 1110 deletions
diff --git a/Mach/AdvancedGrubUsage.mdwn b/Mach/AdvancedGrubUsage.mdwn deleted file mode 100644 index 8e307b4f..00000000 --- a/Mach/AdvancedGrubUsage.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -## <a name="Advanced_Grub"> Advanced Grub </a> - -[Grub](http://www.gnu.org/software/grub/) is a capable boot loader. This document is intended to capture some of its most interesting features and try to explain them a bit better than the texinfo documentation. - -### <a name="Debian_Grub"> Debian Grub </a> - -The Debian grub packages do not have networking enabled, so you have to apt-get the source, modify the debian/rules file to include --enable-network-card and dpkg-buildpackage to get a .deb of grub that supports TFTP. - -1. cd /usr/src/debian -2. apt-get source grub -3. cd grub-\_VERSION\_ -4. Add `--enable-tulip` or similar for your NIC to the `./configure` line of the `configure-stamp` target in the `debian/rules` file. -5. `dpkg-buildpackage` (as `root`) -6. `cd ..` -7. `dpkg -i grub*.deb` -8. cp /lib/grub/\_ARCH\_/\* /boot/grub/, e.g., _ARCH_ is `i386-pc` -9. Edit your `/boot/grub/menu.lst` (see below) -10. If your boot disk is `/dev/hda` ==> `grub-install (hd0)` - -### <a name="TFTP_Boot"> </a> TFTP Boot - -Using trivial ftp to load a kernel is one of the best features of Grub. Here is how it is done. - -The `menu.lst` can look something like this: - - ifconfig --address=192.168.1.2 --server=192.168.1.1 - root (nd) - kernel /gnu/boot/oskit-mach.gz root=device:hd0s2 -- - root (hd0,1) - module /hurd/ext2fs.static \ - --multiboot-command-line=${kernel-command-line} \ - --host-priv-port=${host-port} \ - --device-master-port=${device-port} \ - --exec-server-task=${exec-task} \ - -T typed ${root} $(task-create) $(task-resume) - module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - -**Note: Make sure there are NO spaces after the trailing backslases (\\)!!** - -For more information on GNUmach modules lines and installation setup, see [[Hurd/InstallNotes]] - --- [[Main/JoachimNilsson]] - 13 Apr 2005 diff --git a/Mach/BuildingOskitMach.mdwn b/Mach/BuildingOskitMach.mdwn deleted file mode 100644 index 334b0669..00000000 --- a/Mach/BuildingOskitMach.mdwn +++ /dev/null @@ -1,190 +0,0 @@ -## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach - -<table align="center" width="75%"> - <tr> - <td width="50%"> %TOC% </td> - <td width="50%"> - <p><nop></nop></p> - <h3><a name="Introduction"> Introduction </a></h3> This is a brief "<nop>HowTO build OSKit-Mach" (a.k.a GNUmach 2.0). It covers everything from getting the latest sources of both the <a href="http://www.cs.utah.edu/flux/oskit/" target="_top">OSKit</a> and the GNUmach kernel, down to building and debugging them. <p> To be able to actually make use of your recently checked out CVS version of the GNUMach kernel &amp; c:o you need a GNU system of <a href="ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz" target="_top">gnu-20020816.tar.gz</a> or later. See [[Distrib/TarballNotesHome]] for more info. </p></nop></td> - </tr> -</table> - -## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a> - -First you need to checkout the relevant sources. It comes in various flavours and the recommended way is to checkout from CVS. - -### <a name="The_OSKit_Sources"> </a> The OSKit Sources - -**_Note:_** The [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project is the recommended source today of the OSKit. Its CVS tree holds the official sources and all known patches, plus a few others. - -**_Official Sources:_** - -* St. Patricks day 2002 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz> - -* Valentine's day 2001 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20010214.tar.gz> - -**_Official Patches:_** - -* Download useful [[OskitPatches]] or on the nearest Debian FTP. - -**_Savannah CVS:_** - -The recommended document for accessing the Savannah OSKit CVS is <http://savannah.gnu.org/cvs?group=oskit> - -The following command should get the sources for you: - - $ export CVS_RSH="ssh" - $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/oskit co oskit - -Note: if you get a message about RSA/DSA keys, please go check it here: <http://savannah.gnu.org/cvs?group=oskit> - -### <a name="GNUmach_amp_Mig_Sources"> </a> GNUmach & Mig Sources - -The recommended document for accessing the Hurd CVS on Savannah is at <http://savannah.gnu.org/cvs/?group=hurd> - -Remember to set up you environment to use 'ssh' for cvs: - - $ export CVS_RSH="ssh" - -Note: if you get a message about RSA/DSA keys when using cvs commands, please go check it here: <http://savannah.gnu.org/cvs?group=hurd> - -**_Gnu Mach:_** - -All development, apart from critical bug fixes, is done on the upcoming 2.0 release (OSKit/Mach). A potentially confusing point is that the code for OSKit/Mach (as opposed to the 1.X release, aka "GNU Mach") is now on the `TRUNK` of the 'gnumach' CVS module. In the past the trunk was 1.X (GNU Mach) and 2.0 (OSKit/Mach) was a branch. - - $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co gnumach - -In case you have been tracking the oskit-branch and want to move to the current `HEAD` branch you can issue the following instead to update your tree. - - $ cd <YOUR MACH DIR> - $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd update -Pd -A - -Where `<YOUR MACH DIR>` can be `gnumach`, `oskit-mach`, or similar. The `-A` is what moves you from a branch to the default (in this case HEAD), but without forcing a specific tag. `-P` Prunes your local copy from stale directories and `-d` creates new directories for you. - -**_The Hurd servers:_** - -In case you want to build the Hurd servers as well, you can check them out with: - - $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co hurd - -**_Inteface generator:_** - -See the [[microkernel/mach/MIG]] for more information. - -Check it out using - - $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co mig - -## <a name="Building"> Building </a> - -The recommended versions of GCC are - -<dl> - <dt> For the OSKit</dt> - <dd> GCC 2.95.X </dd> - <dt> For GNUmach and <nop>MiG</nop></dt> - <dd> GCC 3.2 </dd> -</dl> - -### <a name="The_OSKit"> </a> The OSKit - -Do _not_ forget to apply all known [[OskitPatches]] before starting the build! This does not apply if you use the OSKit from [Savannah](http://savannah.gnu.org/). - -The attached [[ATTACHURLmodulesx86pc]], or [[ATTACHURLmodules-lightx86pc]], is an example setup, your needs may vary but this one works for standard COTS PC's. Now, how to configure and build the OSKit. - - $ cd oskit-20020317/ - $ mkdir build - $ cd build - $ CC=gcc-2.95 \ - CFLAGS="-g" \ - ../configure --prefix=/usr/local \ - --enable-debug \ - --enable-modulefile=modules-light.x86.pc - $ make - $ sudo make install - -Comment: Barry deFreese - -For you newbies like me, I had problems using `modules.x86.pc.full` and `modules.x86.pc`. There seems to be problems with `examples/dyntest`. Make sure you pull down and use the [[ATTACHURLmodules-lightx86pc]]. - -Comment: Luis Miguel - -I needed to apply another patch that is not in CVS yet. The patch is in this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-06/msg00054.html) in the bug-hurd mailing list. - -### <a name="Mach_Interface_Generator"> Mach Interface Generator </a> - -To build any Mach kernel you need an interface generator, MiG. To be on the safe side, use the CVS version. If you use Debian, you can install package [mig-i386-gnu](http://packages.debian.org/mig-i386-gnu). If you don't use Debian or want to compile MiG by yourself on Linux/\*BSD system, you must first install Mach headers. In Mach directory do: - - $ mkdir build - $ cd build - $ ../configure --prefix=/usr/local # Default prefix is / ! - $ sudo make -k install-headers # -k is for ignoring errors - -Now you are ready to compile and install MiG (commands are in Mig's source directory): - - $ automake --add-missing # sometimes it's needed - $ mkdir build - $ cd build - $ ../configure - $ make - $ sudo make install - -### <a name="GNUmach_2_0_OSKit_Mach_"> </a> GNUmach 2.0 (OSKit-Mach) - -Unlike its half sister, the OSKit-Mach kernel does _not_ need a cross compiler. The regular gcc for your x86 Linux system does just fine. However, you might want to use gcc 3.2 with the latest and greatest CVS version of Mach. - -**_Configuring:_** - - $ cd gnumach - $ mkdir build - $ cd build - $ MIG=/usr/local/bin/mig \ - CC=gcc-3.2 \ - CFLAGS="-g -O2" \ - OSKIT_LIBDIR=/usr/local/lib/oskit \ - ../configure --prefix=/gnu - -Comment: Barry deFreese - -I updated `CFLAGS` to `CFLAGS="-g -O2"`. Using just `-O` I was getting errors in the `machine_init` function. For newbies like me, the `-g` is only needed if you want to enable debugging. The `-O2` is Oh 2, not Zero 2. - -**_Building:_** - -Instead of using `make kernel` to build kernel, in OSKit-Mach you have to use <code>make kernel-<var>DRIVERS</var></code>, where <var>DRIVERS</var> is <code><var>DRIVER</var>+<var>DRIVER</var>+...+<var>DRIVER</var></code> (a list of drivers separated by `+`). <var>DRIVER</var> can be one of: - -* `ide` -* `floppy` -* <code>ethernet\_<var>ETHDRV</var></code> where <var>ETHDRV</var> is taken from `oskit/oskit/dev/linux_ethernet.h`. -* <code>scsi\_<var>SCSIDRV</var></code> where <var>SCSIDRV</var> is taken from `oskit/oskit/dev/linux_scsi.h`. - -Thus, to build a IDE capable kernel with 3Com Vortex Boomerang support you use the following: - - $ make kernel-ide+ethernet_vortex - $ sudo make install - $ sudo gzip -f /gnu/boot/oskit-mach - -If the `make` command complains about missing dependencies, then you haven't passed correct `OSKIT_LIBDIR` variable to the `configure` script. Or you can use the patch below and pass something like `--with-oskit=/usr/local` to `configure`. - -Comment: Barry deFreese - -If you receive an error like `No rule to make target Kernel-ide...`, there is a patch for an issue with finding the oskit libraries. Then run `configure` on gnumach again with the option `--with-oskit=/path/to/oskit/libraries`. - -The patch can be found here: [gnumach-oskit-path.patch](http://www.vis.ethz.ch/~wagi/hurd/gnumach/gnumach-oskit-path.patch) Thanks wagi!! - -Don't use both `--with-oskit` and `OSKIT_LIBDIR`. Choose one of these methods. - -If you want to use tftp to download the kernel from Grub and don't care about the symbols I recommend either stripping or removing the `--enable-debug` and `-g` statements. - -## <a name="Debugging"> Debugging </a> - -See the [[Mach/RemoteDebugOskitMach]] page. - -## <a name="Attachments"> Attachments </a> - -* [[ATTACHURLmodulesx86pc]]: Configures modules to build in OSKit. -> Compared to 21May04 CVS, this adds SMP but omits the random module which was added to CVS in Jan03. - -* [[ATTACHURLmodules-lightx86pc]]: Lighter version of required modules. Used for building GNUmach with OSKit, i.e. OSKit/Mach. -> Compared to the above config, this omits the Linux, MSDOS, -> -> NetBoot, and PXE loader support, bootp support, OSKit on UNIX support, some thread-safe library versions, the address map manager, fsread, fsnamespace/\{fsn,fsn\_r\}, fudp, memdebug, memfs, smp, POSIX threads, svm, uvm, the Simple Process Library, realtime support, FreeBSD devices and code, linux/fs, the UDP library, **the sets of x86 and UNIX example kernels**, the testsuite, and the security server. **The new random module is also not configured.** diff --git a/Mach/BuildingOskitMach/modules-light.x86.pc b/Mach/BuildingOskitMach/modules-light.x86.pc deleted file mode 100644 index 07818cc5..00000000 --- a/Mach/BuildingOskitMach/modules-light.x86.pc +++ /dev/null @@ -1,236 +0,0 @@ -## -## OSKit Module configuration file. -## -## Comments are ignored, non-commented words should be -## OSKit directories to include in the build. -## -## Libraries are built in the order defined in this -## file. -## -## Specify this file with the --with-modulesfile=<x> -## option to configure. By default the file 'modules' -## in the OSKit source directory is used. -## - -### Always include this module (the header files) -oskit - -### The flask module must be compiled before -### most of the other modules. -### It is currently a required module. -flask - -### Builds the documentation (Utah only) -#doc - - -### --- Required components - -### The C Runtime (the magic that calls 'main') (required) -crt - -knit/c - -### Various bits of kernel magic (required) -kern - -### List Memory Manager (required) -lmm - -### The Client OS library (required) -clientos - - -### --- Boot Adaptors - -### Build the multiboot compliant boot adaptor -### Requires that ld support '-format binary' (checked) -boot/multiboot - -### Build the Linux boot adaptor -### Requires ld support '-oformat binary' (checked) -#boot/linux - -### Build the MSDOS boot adaptor (??) -## Requires ld support '-oformat msdos' (checked) -#boot/dos - -### Build the BSD boot adaptor -### Requires some sort of a.out linker (checked) -#boot/bsd - -### The NetBoot Meta-kernel -#boot/net - -### Build the PXE compliant boot loader -#boot/pxe - -### --- OSKit-on-UNIX support libraries. -#unix - -### --- C Libraries - -### A minimal standard C library -libc - -### A much more complete standard C library -posix/sys - -### Thread-safe version of the previous -#posix/sys_r - - -### --- Miscellaneous utility libraries - -### Address Map Manager -#amm - -### Library for contacting a bootp server -#bootp - -### Com IIDs library (required for most kernels) -com - -### For groking disk partitions -diskpart - -### Include the Dynamic Packet Filter library -#dpf/dpf - -### Exec library for loading linked executables -exec - -### Read-only access to a number of filesystems -#fsread - -### Filesystem name parsing library -#fsnamespace/fsn - -### Same as above, but multithread safe -#fsnamespace/fsn_r - -### Fake UDP library (Only supports UDP send) -#fudp - -### Include the Hierarchical Packet Fair Queueing module -#hpfq - -### The Memdebug library -#memdebug - -### The memory file system -#memfs - -### SMP support (believed to be broken) -#smp -## the SMP example -#examples/x86/smp ### requires smp - -### POSIX threads -#threads - -### Simple Virtual Memory -#svm - -### UVM -#uvm/uvm - -### Simple Process Library -#uvm/sproc -### the sproc example -#examples/x86/sproc ### requires sproc - -### --- Startup Library - -### Simpler functions for initializing OSKit subsystems -### NOTE: this drags in almost every other library. -#startup - - -### --- Devices, Networks and Filesystems - -### The device layer glue. Depends on lmm and kern -### Required for any kernel that uses OSKit devices. -dev - -### Realtime support. Needed for realtime threads and for GPROF. -#realtime - -### Devices and code stolen from FreeBSD -#freebsd/dev -#freebsd/net_flask -#freebsd/net -#freebsd/libm -#freebsd/libc -#freebsd/libc_r - -### Include Run-time linker support. This must come after freebsd build -#rtld -## The rltd example -#examples/dyntest ### requires rtld - -### Stuff stolen from Linux -linux/dev -#linux/fs - -### Stuff stolen from NetBSD -#netbsd/fs - -### SVGA video library -#video/svgalib -### SVGA-related examples -#examples/x86/video_svga ### requires video/svgalib - -### X11 video library -#x11/client -#x11/video -### X11-related examples -#examples/x86/video_x11 ### requires x11/video - -### The zlib compression library -#zlib - -### The UDP library. More complete than fudp, but not totally complete. -#udp - -### The Utah testbed TMCP communication library and examples -#tmcp -#examples/tmcp - -### The NetDisk kernel. -## Requires the zlib compression library. -## Requires the udp library. -#netdisk - -### --- Scripts and build/debug utilities - -### Includes the CPU-oskit-gcc wrapper. -unsupported - - -### --- Additional stuff that must be at or near the end of the build - - -### Sets of example kernels -#examples/x86 -#examples/x86/extended -#examples/x86/threads - -### Building the example kernels as host-build binaries with unix-mode -### emulation. NOTE: These will only be built if you are compiling -### the OSKit with unixmode support (and on Linux or FreeBSD). -#examples/unix -#examples/unix/extended -#examples/unix/threads - -### The OSKit test infrastructure -#testsuite - -### The security server -#security -## security server example kernel -#examples/x86/security ### requires security - -### The Mad MPEG audio decoder library and example -#libmad -#libmad/minimad diff --git a/Mach/BuildingOskitMach/modules.x86.pc b/Mach/BuildingOskitMach/modules.x86.pc deleted file mode 100644 index bb27aca3..00000000 --- a/Mach/BuildingOskitMach/modules.x86.pc +++ /dev/null @@ -1,236 +0,0 @@ -## -## OSKit Module configuration file. -## -## Comments are ignored, non-commented words should be -## OSKit directories to include in the build. -## -## Libraries are built in the order defined in this -## file. -## -## Specify this file with the --with-modulesfile=<x> -## option to configure. By default the file 'modules' -## in the OSKit source directory is used. -## - -### Always include this module (the header files) -oskit - -### The flask module must be compiled before -### most of the other modules. -### It is currently a required module. -flask - -### Builds the documentation (Utah only) -#doc - - -### --- Required components - -### The C Runtime (the magic that calls 'main') (required) -crt - -knit/c - -### Various bits of kernel magic (required) -kern - -### List Memory Manager (required) -lmm - -### The Client OS library (required) -clientos - - -### --- Boot Adaptors - -### Build the multiboot compliant boot adaptor -### Requires that ld support '-format binary' (checked) -boot/multiboot - -### Build the Linux boot adaptor -### Requires ld support '-oformat binary' (checked) -boot/linux - -### Build the MSDOS boot adaptor (??) -## Requires ld support '-oformat msdos' (checked) -#boot/dos - -### Build the BSD boot adaptor -### Requires some sort of a.out linker (checked) -#boot/bsd - -### The NetBoot Meta-kernel -boot/net - -### Build the PXE compliant boot loader -#boot/pxe - -### --- OSKit-on-UNIX support libraries. -unix - -### --- C Libraries - -### A minimal standard C library -libc - -### A much more complete standard C library -posix/sys - -### Thread-safe version of the previous -posix/sys_r - - -### --- Miscellaneous utility libraries - -### Address Map Manager -amm - -### Library for contacting a bootp server -bootp - -### Com IIDs library (required for most kernels) -com - -### For groking disk partitions -diskpart - -### Include the Dynamic Packet Filter library -#dpf/dpf - -### Exec library for loading linked executables -exec - -### Read-only access to a number of filesystems -fsread - -### Filesystem name parsing library -fsnamespace/fsn - -### Same as above, but multithread safe -fsnamespace/fsn_r - -### Fake UDP library (Only supports UDP send) -fudp - -### Include the Hierarchical Packet Fair Queueing module -#hpfq - -### The Memdebug library -memdebug - -### The memory file system -memfs - -### SMP support (believed to be broken) -smp -## the SMP example -examples/x86/smp ### requires smp - -### POSIX threads -threads - -### Simple Virtual Memory -svm - -### UVM -uvm/uvm - -### Simple Process Library -uvm/sproc -### the sproc example -examples/x86/sproc ### requires sproc - -### --- Startup Library - -### Simpler functions for initializing OSKit subsystems -### NOTE: this drags in almost every other library. -startup - - -### --- Devices, Networks and Filesystems - -### The device layer glue. Depends on lmm and kern -### Required for any kernel that uses OSKit devices. -dev - -### Realtime support. Needed for realtime threads and for GPROF. -realtime - -### Devices and code stolen from FreeBSD -freebsd/dev -#freebsd/net_flask -freebsd/net -freebsd/libm -freebsd/libc -freebsd/libc_r - -### Include Run-time linker support. This must come after freebsd build -#rtld -## The rltd example -#examples/dyntest ### requires rtld - -### Stuff stolen from Linux -linux/dev -linux/fs - -### Stuff stolen from NetBSD -netbsd/fs - -### SVGA video library -#video/svgalib -### SVGA-related examples -#examples/x86/video_svga ### requires video/svgalib - -### X11 video library -#x11/client -#x11/video -### X11-related examples -#examples/x86/video_x11 ### requires x11/video - -### The zlib compression library -#zlib - -### The UDP library. More complete than fudp, but not totally complete. -udp - -### The Utah testbed TMCP communication library and examples -#tmcp -#examples/tmcp - -### The NetDisk kernel. -## Requires the zlib compression library. -## Requires the udp library. -#netdisk - -### --- Scripts and build/debug utilities - -### Includes the CPU-oskit-gcc wrapper. -unsupported - - -### --- Additional stuff that must be at or near the end of the build - - -### Sets of example kernels -examples/x86 -examples/x86/extended -examples/x86/threads - -### Building the example kernels as host-build binaries with unix-mode -### emulation. NOTE: These will only be built if you are compiling -### the OSKit with unixmode support (and on Linux or FreeBSD). -examples/unix -examples/unix/extended -examples/unix/threads - -### The OSKit test infrastructure -testsuite - -### The security server -security -## security server example kernel -examples/x86/security ### requires security - -### The Mad MPEG audio decoder library and example -#libmad -#libmad/minimad diff --git a/Mach/OskitMach.mdwn b/Mach/OskitMach.mdwn deleted file mode 100644 index c28f2d89..00000000 --- a/Mach/OskitMach.mdwn +++ /dev/null @@ -1,64 +0,0 @@ -[[toc ]] - -* [[OskitMachStatusList]]: Status and TODO list (<a href="http://packages.debian.org/gnumach" target="_top">deb status</a>) </li> -* [[OskitMachPatches]]: Bleeding edge patches </li> -* [[OskitPatches]]: Useful patches for the OSKit </li> -* [[BuildingOskitMach]]: How to build your own GNUmach kernel </li> -* [[RemoteDebugOskitMach]]: How to use gdb to remote debug the GNUmach kernel </li> - - -## <a name="About"> About </a> - -OSKit-Mach began as a branch of the GNUMach 1.2 kernel, but since the release of GNU Mach 1.3, OSKit-Mach has been merged as the new GNUMach 2.x mainline. The [[history]] page tells a more interesting story including other operating systems who use Mach in their kernels. - -GNU Mach 2.0 makes use of the drivers provided by [the OSKit](http://www.cs.utah.edu/flux/oskit/) from [the Flux Research Group](http://www.cs.utah.edu/flux/). The OSKit provided a neat driver base where both [[TWiki/FreeBSD]] and Linux (2.2.12) drivers are made available to [Mach](http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html) and thus the Hurd. However, OSKit isn't maintained anymore. - -## <a name="Status"> Status </a> - -The OSKit-Mach version of GNUmach is today (2005) more or less defunct. Nobody -is working on it. Few people ever got it running, and by now there are also -problems building with recent toolchains. Instead, the Hurd developers now -concentrate on completely different microkernels (Coyotos being the current -favourite), as well as on improving the original GNU Mach 1.x codebase. (See -also [[microkernel/mach/gnumach/projects]].) - -The [[mailing_lists]], or the [[IRC]] is, like always, the best source of more -current information. - -There also exist other efforts: - -* [OSKit and OSKit-Mach PPC Port](http://es.gnu.org/~jemarch/ppc-oskit/) - Maintained by [Jos� Marchesi](mailto:jemarch AT gnu DOT org) - -* [OSKit-Mach Alpha Port](http://savannah.gnu.org/projects/gnumach-alpha/). - This work has been integrated into the actual OSkit cvs tree at utah. - -## <a name="Building"> Building </a> - -First you need to get the latest OSKit release and, preferrably, the latest CVS version of GNUmach. Take a look at the following [tutorial](http://www.etherhogz.org/doc/oskit-mach.html) to get started. Or the locally kept version, [[BuildingOskitMach]]. - -## <a name="Starting"> Starting </a> - -You start Oskit-Mach almost the same way as the old 1.x version of GNUmach. Using [[Hurd/GrubNotes]] an entry can look like this: - - title GNUmach 1.90 (CVS) - root (hd0,1) - kernel /boot/oskit-mach.gz root=device:hd0s2 -- - module /hurd/ext2fs.static \ - --multiboot-command-line=${kernel-command-line} \ - --host-priv-port=${host-port} \ - --device-master-port=${device-port} \ - --exec-server-task=${exec-task} \ - -T typed ${root} $(task-create) $(task-resume) - module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - -_Remember_ to ensure that there are no trailing spaces after the backslashes on the lines above if you copy-paste this into your menu.list file. - -## <a name="Bugs"> Bugs </a> - -We have bugs, just like any other software product. To get around the more nasty ones you can apply the unofficial patches found on - -* [[OskitMachPatches]] - -## <a name="Debugging"> Debugging </a> - -See Igor Khavkine's, [i\_khavki@alcor.concordiaNOSPAM.ca](mailto:i_khavki@alcor.concordiaNOSPAM.ca), excellent help to [remote debug oskit-mach over a serial line](http://www.etherhogz.org/doc/oskit-boot.txt), or the local [[RemoteDebugOskitMach]]. - diff --git a/Mach/OskitMachPatches.mdwn b/Mach/OskitMachPatches.mdwn deleted file mode 100644 index c1e1b068..00000000 --- a/Mach/OskitMachPatches.mdwn +++ /dev/null @@ -1,10 +0,0 @@ -## <a name="GNUmach2_oskit_mach_Patches"> </a> GNUmach2 (oskit-mach) Patches - -The following patches are here for your convenience only. They are probably not accepted yet and should thus only be used by people working on the bleeding edge of ... oh well, use at your own risk. :-) - -**_Daniel Wagner:_** - -* Fix GNUmach2 panic related to buggy softint handling [[ATTACHURLpatch-gnumach_softint-wagidiffgz]] -* Eliminate GNUmach2 assertion that triggers a bug [[ATTACHURLpatch-gnumach_assertion-wagidiffgz]] - -- [[Main/GrantBow]] - 03 Mar 2004 diff --git a/Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz b/Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz Binary files differdeleted file mode 100644 index 3d57b43a..00000000 --- a/Mach/OskitMachPatches/patch-gnumach_softclock-wagi.diff.gz +++ /dev/null diff --git a/Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz b/Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz Binary files differdeleted file mode 100644 index 215706b3..00000000 --- a/Mach/OskitMachPatches/patch-gnumach_softint-wagi.diff.gz +++ /dev/null diff --git a/Mach/OskitMachStatusList.mdwn b/Mach/OskitMachStatusList.mdwn deleted file mode 100644 index f62e0686..00000000 --- a/Mach/OskitMachStatusList.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -**NOTE**: As of March 2006, nobody is using or working on OSKit-Mach. Consider below text for historic reference only. - -The only thing that is needed before we will switch to the OSKit-Mach variant of GNU Mach is the missing console: OSKit-Mach has no console in the kernel, so we need an implementation in user space. Marcus Brinkmann is writing a console implementation with a client-server design, Unicode support and lots of other goodies. The server is working, the ncurses client is working (which is useful for testing and results in something similar to screen) and the VGA client is the one missing component. A part of the code for it already exists; it will share some code with the ncurses client via a console-client library. After it works, some testing of OSKit-Mach will also be needed. - --- [[Main/WolfgangJ]] - 24 Jul 2002 - -There was quite a bit of coding and testing in September as described in several [bug-hurd threads](http://mail.gnu.org/pipermail/bug-hurd/2002-September/thread.html). - -Unfortunately this work still needs to be ported from GNUmach 1.3 (commonly used today) to GNUmach 2.0 (a.k.a OSKit-Mach). - --- [[Main/GrantBow]] - 07 Oct 2002 - -There should now exist a working console-client for [[OskitMach]] as well. - --- [[Main/JoachimNilsson]] - 28 Nov 2002 diff --git a/Mach/OskitPatches.mdwn b/Mach/OskitPatches.mdwn deleted file mode 100644 index d189bb6d..00000000 --- a/Mach/OskitPatches.mdwn +++ /dev/null @@ -1,67 +0,0 @@ -## <a name="Table_of_Contents"> Table of Contents </a> - -%TOC% - -## <a name="Flux_OS_Toolkit"> Flux OS Toolkit </a> - -[The OSKit](http://www.cs.utah.edu/flux/oskit/) is a framework and a set of libraries for building and extending operating systems developed by [the Flux Project](http://www.cs.utah.edu/flux/). - -**_Note:_** All of these patches, and more, are now avilable directly through the [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project. This is also the recommended source today of the OSKit, especially if you want to use it with GNUmach2. - -## <a name="OSKit_2001_02_14"> </a> OSKit 2001-02-14 - -These are extra patches for people who, for some reason, use the 2001 version of the OSKit. - -* Patrick Tullman [[ATTACHURLpatch-oskit-097-tullmandiffgz]] - -* This patch is necessary to get the `--enable-indirect-osenv` flag to the configure script. The flag is enabled by default for OSKit 2002-03-17 and later. Kevin Kraemer [[ATTACHURLpatch-oskit-097-kkraemerdiffgz]] - -## <a name="OSKit_2002_03_17"> </a> OSKit 2002-03-17 - -**_Critical Patches:_** - -Here are the patches critical to get [[OskitMach]] running. These are absolutely essential to get a working Mach kernel. Many of these patches are included with the Debian distribution of the OSKit. - -* Igor Khavkine [[ATTACHURLpatch-oskit-097-i_khavkidiffgz]] - -* Famous removal of only one line in sbrk-hack.c - needed for people with newer libc's (e.g. Debian Woody) [[ATTACHURLpatch-oskit-097-sbrk_hackdiffgz]] - -* Jonathan S. Arney - Important patch to diskpart library. Without it you cannot activate swap in oskit-mach. [[ATTACHURLpatch-oskit-097-jon_arneydiffgz]] - -* Richard Kreuter's [patches](http://anduril.rutgers.edu/richard/oskit/) ([announcement](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01560.html)). Needed when your Hurd partition is embedded inside an extended partition created by Windows. The patches also include: - * support for extended partitions with lba - * support for 16-entry BSD disklabels, as are supported by recent Net- and [[TWiki/FreeBSD]] kernels. - * support for the recognition of NetBSD's slice id (169) in the BIOS partition table. - -**_Cosmetic Patches:_** - -* Kevin Kraemer - Removes annoying debug output from eepro.c driver. [[ATTACHURLpatch-oskit-097-eeprodiffgz]] - -* Ognyan Kulev - Reduce warnings when compiling with GCC 3.2. <http://debian.fmi.uni-sofia.bg/~ogi/hurd/oskit/> - -**_New Functionality:_** - -* [Roland McGrath](http://www.frob.com/) - [i8042 support](http://mail.gnu.org/archive/html/bug-hurd/2002-10/msg00146.html). Thread continues at <http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00110.html> - -* Daniel Wagner - PCMCIA support. <http://www.vis.ethz.ch/~wagi/hurd/oskit/> ([instructions](http://www.vis.ethz.ch/~wagi/hurd/oskit/readme.txt)) - -* [[Main/JoachimNilsson]] - See [[Hurd/JoachimNilssonHurdPage]] - * Upgrade to Linux 2.2.22 drivers - * More Linux NIC drivers - * **_Soon:_** ATA-100 patches (α-release available) - -* [[Main/DerekDavies]] - [OSKit Entropy patch](http://www.ddavies.net/oskit-entropy/). A Linux entropy driver, see [bug-hurd posting](http://mail.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) for more information. - ----- - -## <a name="Comments"> Comments </a> - -Divided this growing topic into sections. <br /> -- [[Main/JoachimNilsson]] 19 Nov 2002 - -Updates by [[Main/OgnyanKulev]] -- 19 Nov 2002 - -All small patches are as attachments now. -- [[Main/OgnyanKulev]] - 16 Dec 2002 - -Minor updates, also, added Davids Entropy patch -- [[Main/JoachimNilsson]] - 03 Jan 2003 - -Fixed some gnu mail links -- [[Main/MattGrant]] - 26 Feb 2003 diff --git a/Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz b/Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz Binary files differdeleted file mode 100644 index 80d94f3f..00000000 --- a/Mach/OskitPatches/patch-oskit-0.97-eepro.diff.gz +++ /dev/null diff --git a/Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz b/Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz Binary files differdeleted file mode 100644 index 2e322de9..00000000 --- a/Mach/OskitPatches/patch-oskit-0.97-i_khavki.diff.gz +++ /dev/null diff --git a/Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz b/Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz Binary files differdeleted file mode 100644 index aaf1475a..00000000 --- a/Mach/OskitPatches/patch-oskit-0.97-jon_arney.diff.gz +++ /dev/null diff --git a/Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz b/Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz Binary files differdeleted file mode 100644 index 7d75a34e..00000000 --- a/Mach/OskitPatches/patch-oskit-0.97-kkraemer.diff.gz +++ /dev/null diff --git a/Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz b/Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz Binary files differdeleted file mode 100644 index 2fef6632..00000000 --- a/Mach/OskitPatches/patch-oskit-0.97-sbrk_hack.diff.gz +++ /dev/null diff --git a/Mach/PortToL4.mdwn b/Mach/PortToL4.mdwn deleted file mode 100644 index fb7f0004..00000000 --- a/Mach/PortToL4.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -**_The Hurd-L4 port has an [official page](http://www.gnu.org/software/hurd/hurd-l4.html) with more up-to-date information_** -- [[Main/OgnyanKulev]] - 05 Feb 2005 - -A group of one being led by Neal H. Walfield is working on porting the Hurd to the pistachio version of the L4 microkernel. This second generation microkernel provides a significantly different API than the one offered by the Mach microkernel, a first generation microkernel. One of the primary goals of the project, outside of porting the Hurd to L4, is to reevaluate the current Hurd abstractions and consider how they can be modified to be more general. - -I have no web page describing my efforts. There is a mailing list[1]. - -[1] <http://mail.gnu.org/mailman/listinfo/l4-hurd> - --- Neal Walfield, 18 Sep 2002 - -Neal noted [1] that there are licensing issues being worked out so no code is yet released. His work was performed in the summer of 2002 at Karlsruhe. - -[1] <http://mail.gnu.org/pipermail/l4-hurd/2002-September/000673.html> - --- [[Main/GrantBow]] - 21 Sep 2002 - -There are several important pages that are of interest for the L4 & hurd communities. - -* Main L4 home page - <http://www.l4ka.org/> -* Hurd on L4 - <http://www.freesoftware.fsf.org/l4hurd/> -* Hurd on L4 - <http://savannah.gnu.org/projects/l4hurd/> -* <http://www.informatik.uni-freiburg.de/~ganter/comp/l4-hurd.html> - --- [[Main/GrantBow]] - 22 May 2002 - -<http://os.inf.tu-dresden.de/fiasco/> - --- [[Main/GrantBow]] - 24 Oct 2002 - -There was [discussion in October 2002](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000727.html) about the differences between Hurd on Mach and Hurd on L4 with some interesting URLs. In the thread Okuji [responds](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000728.html) confirming his document is two years old and outdated by the directions that Neal is taking in furthering this effort. The URLs in that email might be helpful to those learning more about Hurd and L4 ideas that were considered yet abandoned. - --- [[Main/GrantBow]] - 04 Jan 2003 - -A "Porting GNU Hurd to L4" website: - -* <http://www.gnu.org/software/hurd/l4-hurd.html> - --- [[Main/SebastianGabriel]] - 29 Sep 2003 - -The only valid L4-Hurd link on <http://hurd.gnu.org> is <http://www.freesoftware.fsf.org/l4hurd/> - --- [[Main/JoachimNilsson]] - 29 Sep 2003 diff --git a/Mach/PosixSemaphores.mdwn b/Mach/PosixSemaphores.mdwn deleted file mode 100644 index be5586bd..00000000 --- a/Mach/PosixSemaphores.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -Posix Semaphores are an optional part of pthreads. There is currently an implementation for Neal Walfields libpthread, which is included in the hurd sources tree. This implemention uses a mutex and a condition variable. The implmentation is in the mailing list archives at [ [http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html</a>)](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html). - -Neal does not want to use this implementation because it adds the overhead of a condition variable. The condition variable imposes the following penalties: 1 extra spinlock/unlock 1 an extra call to a pthread cleanup function. - -The first penalty has virtually no cost because we know that we will never spin trying to get this spin lock because we already have a mutex lock outside the condition variable serializing accesses to the condition variable. - -The second may be more of a performance penalty, but it saves reimplmenting the code in pt-cond-signal.c pt-cond-wait.c, and pthread-timedwait.c . - --- [[Main/JamesAMorrison]] - 19 Jan 2003 - -Moved page to Mach web. - --- [[Main/GrantBow]] - 21 Jan 2003 diff --git a/Mach/RemoteDebugOskitMach.mdwn b/Mach/RemoteDebugOskitMach.mdwn deleted file mode 100644 index c260ce25..00000000 --- a/Mach/RemoteDebugOskitMach.mdwn +++ /dev/null @@ -1,195 +0,0 @@ -# <a name="Remote_Debug_GNUmach"> </a> Remote Debug GNUmach - -# <a name="Table_of_Contents"> Table of Contents </a> - -%TOC% - -# <a name="Booting_oskit_mach_with_a_serial"> Booting oskit-mach with a serial console </a> - -**Original Author:** Igor Khavkine **Last Updated:** Mon Jul 30 17:58:55 EDT 2001 - ----- - -## <a name="Introduction"> Introduction </a> - -This document now has a wider audience. The OSKit branch of GNUmach has been merged with the main branch, HEAD. Please note that the instructions here are not tested with the latest stable release, GNUmach 1.3. - -Here you will find out how to access, build, bootstrap and debug the latest CVS version of the GNUmach kernel (the OSKit based 2.x series of GNUmach). - -## <a name="Why_"> Why? </a> - -Because it's covenient. If you have a second computer, but not a second monitor or keyboard, you can connect your second box to your main one using null-modem serial cables. Once that is done, you can configure the GRUB bootloader to use the serial port when starting up and boot [GNUmach](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/gnumach/?only_with_tag=HEAD) (a.k.a [[OskitMach]]) without having to switch monitor cables or type blindly at a second keyboard. - -Also, [[OskitMach]] supports the GDB remote debugging protocol over a serial line. This way it is now possible to debug the running kernel relatively unobtrusively, because the debugger will not be running on the same machine. - -## <a name="How_"> How? </a> - -First you need some equipment: two computers, each one should have at least one (two is preferable) free serial port(s) and one (or two) null-modem serial cable(s). - -While developing the kernel it might also be a good idea to use grub to get the Mach kernel via tftp from the same server you do the remote debugging and building on. This way you don't need to reboot the target to copy or build a new kernel on its hard drive. See the [[AdvancedGrubUsage]] document for more information on this. - -Last you need to follow the instructions given below. - -1. The first step is to the get source for oskit-mach and OSKit. - Currently the [St. Patrick's day release](ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz), 2002-03-17, of the OSKit is the latest. Get the sources and compile them yourself, compile OSKit with debugging symbols if that is what you need. If you encounter errors while compiling, try removing anything that has to do with `unix` or `examples` from the file `modules.x86.pc`. - Then you need to get the sources for oskit-mach version of the GNU Mach kernel, available from the GNU CVS repository[3]. Previously you needed to check out the `gnumach` module with the flag `-roskit-branch`. Today the 2.0 branch of GNU Mach resides on the HEAD branch, so you don't have to provide any specifc branch information to get the correct version. Use the update command with `-rHEAD` to move from the oskit-branch to the HEAD branch. - Again now is your chance to compile oskit-mach with debugging symbols. - (More detailed instructions can be found in [[BuildingOskitMach]].) -2. Now you need to setup GRUB on your second box so it accepts input from a serial port while booting up. This is simple to do by adding the following lines to your `menu.lst` file, before any of the menu entries: - serial --unit=0 --speed=9600 - terminal serial - Unit refers to the serial port you wish to use (0 is COM1), and speed is optional. For more information see the GRUB documentation. -3. You need to make sure that your main box has the necessary utilities to communicate with your second box over a serial line. You can use a terminal emulator like _minicom_(1), _seyon_(1), _tip_(1), or a simple serial communication program _cu_(1) which comes with the GNU uucp package. Or if you feel really lazy you can use this hack: - stty raw - cat > /dev/ttyS1 # in one terminal window - cat /dev/ttyS1 # in a second terminal window -4. Now you have to make sure your computer has an at least partially setup Hurd partition. You can find instructions how to do that here [4,5]. Copy the oskit-mach kernel binary compressed with gzip to `/boot/oskit-mach.gz` and use the following command line[1] to boot it from GRUB: - kernel /boot/oskit-mach.gz -h CONS_COM=1 -d GDB_COM=2 BAUD=9600 root=device:hd0s2 -- -<dl> - <p> - </p> - <dt><tt>-h</tt></dt> - <dd>use serial console:<ul> - <li><tt>CONS_COM=1</tt> (COM1)</li> - <li><tt>CONS_COM=2</tt> (COM2)</li> - <li><tt>CONS_COM=3</tt> (COM3)</li> - <li><tt>CONS_COM=4</tt> (COM4)</li> - </ul> - </dd> - <p> - </p> - <dt><tt>-d</tt></dt> - <dd>enable serial port debugging, optional</dd> - <p> - </p> - <dt><tt>GDB_COM=2</tt></dt> - <dd>use a different port other then <tt>CONS_COM</tt>, default is to use the same as <tt>CONS_COM</tt></dd> - <p> - </p> - <dt><tt>BAUD=9600</tt></dt> - <dd>use this baud rate, optional, default is 9600</dd> - <p> - </p> - <dt><tt>--</tt></dt> - <dd>delimits the arguments passed to the oskit from those to the kernel</dd> - <p> - </p> - <dt><tt>root=device:hd0s2</tt></dt> - <dd>tell gnumach which is your root partition, in this case it's <tt>hd0s2</tt></dd> - <p> - </p> -</dl> -5. Now I suggest that you familiarize yourself with [the GDB documentation](http://vmlinux.org/doc/gdb/), especially on remote debugging. If you pass the `-d` boot flag to oskit-mach, then it will automatically insert a breakpoint at main() and wait for further instructions from GDB over the serial line. Here's a simple example of how to attach GDB to a remote target over a serial line: - $ script # record the debugging session - $ gdb # assume you're in the oskit-mach build dir. - (gdb) file kernel - (gdb) set remotebaud 9600 - (gdb) target remote /dev/ttyS1 - [...gdb attached, blah, blah, blah...] - (gdb) break panic - (gdb) continue - (gdb) continue - [...] - (gdb) quit - $ ^D # finish recording the session - This way you can catch any kernel panics (except for the really nasty ones and try to debug them). - I've noticed that once Mach is running under GDB, pressing C-c from GDB will not suspend it, this makes it hard to set additional breakpoints after the kernel is running. So optionally you can modify Mach to add a dummy system call that will be used only for setting breakpoints, and make a small program that calls it, you can use it whenever you want to pause the kernel and examine something under GDB. An example of how to do this is attached in Appendix A. - -TODO: OSKit overrides interrupts 1 and 3 in kern/x86/gate\_init.c:gate\_init. A patch that skips src->vector `= 1 || =` 3 have to be prepared and attached to this page. More robust solution is to make OSKit/GNUMach recognize when it's debugged and change vector table accordingly. - -Now you're all set to do some serious kernel hacking. I hope more people will take advantage of this opportunity. - -## <a name="Appendix_A"> Appendix A </a> - -TODO: Move inline diff and code into 2 attached files: one for patching GNU Mach, and one for gdb-break.c. - -Apply this patch to oskit-mach to add a dummy system call: - - --- gdb-stub.diff --- - Index: kern/syscall_sw.c - =================================================================== - RCS file: /cvs/gnumach/kern/syscall_sw.c,v - retrieving revision 1.1.1.1.2.2 - diff -u -r1.1.1.1.2.2 syscall_sw.c - --- kern/syscall_sw.c 2001/04/05 06:52:47 1.1.1.1.2.2 - +++ kern/syscall_sw.c 2001/07/30 21:45:14 - @@ -98,6 +98,8 @@ - extern kern_return_t syscall_fipc_recv(); - #endif /* FIPC */ - - +/*XXX*/extern kern_return_t gdb_break_stub (); - + - mach_trap_t mach_trap_table[] = { - MACH_TRAP(kern_invalid, 0), /* 0 */ /* Unix */ - MACH_TRAP(kern_invalid, 0), /* 1 */ /* Unix */ - @@ -283,7 +285,14 @@ - MACH_TRAP(kern_invalid, 0), /* 126 */ - MACH_TRAP(kern_invalid, 0), /* 127 */ - MACH_TRAP(kern_invalid, 0), /* 128 */ - - MACH_TRAP(kern_invalid, 0), /* 129 */ - + MACH_TRAP(gdb_break_stub, 1), /* 129 */ - }; - - +volatile int gdb_break_stub (void *addr) /*XXX*/ - +{ - + void *dummy; - + dummy = addr; - + return 0; - +} - + - int mach_trap_count = (sizeof(mach_trap_table) / sizeof(mach_trap_table[0])); - --- end --- - -When starting an oskit-mach debug session with GDB set a break point at `gdb_break_stub`. Then use this program to invoke the system call when desired: - - --- gdb-break.c --- - /* Compile with: gcc -o gdb-break gdb-break.c gdb-break-stub.S */ - - #include <mach.h> - - #include <stdio.h> - #include <string.h> - - extern int gdb_break_stub (void *addr); - - int main () - { - kern_return_t err; - - err = gdb_break_stub (&main); - printf ("result from syscall: %s\n", strerror(err)); - - return 0; - } - --- end --- - --- gdb-break-stub.S --- - #include <mach/syscall_sw.h> - - kernel_trap(gdb_break_stub,-129,1) - --- end --- - -## <a name="References"> References </a> - -* [1] OSKit documentation, section 1.6.3. -* [2] <http://www.cs.utah.edu/flux/oskit/> -* [3] <http://www.gnu.org/software/devel.html> -* [4] <http://www.walfield.org/papers/hurd-installation-guide/> -* [5] <http://www.pick.ucam.org/~mcv21/hurd.html> - - vim:ts=8:tw=72:sw=8: - ----- - -This HowTo is (C) Copyright 2001 Igor Khavkine. - -Minor additions and grammatical fixups by [[JoachimNilsson]]. - --- [[Main/JoachimNilsson]] - 14 May 2002 - -Additions on booting GNU Mach via TFTP - --- [[Main/JoachimNilsson]] - 13 Jun 2002 - -Text formatting. - --- [[Main/OgnyanKulev]] - 16 Dec 2002 |