Go to the first, previous, next, last section, table of contents.


Installing

Before you can use the Mach microkernel in your system you'll need to install it and all components you want to use with it, e.g. the rest of the operating system. You also need a bootloader to load the kernel from the storage medium and run it when the computer is started.

GNU Mach is only available for Intel i386-compatible architectures (such as the Pentium) currently. If you have a different architecture and want to run the GNU Mach microkernel, you will need to port the kernel and all other software of the system to your machine's architecture. Porting is an involved process which requires considerable programming skills, and it is not recommended for the faint-of-heart. If you have the talent and desire to do a port, contact [email protected] in order to coordinate the effort.

Binary Distributions

By far the easiest and best way to install GNU Mach and the operating system is to obtain a GNU binary distribution. The GNU operating system consists of GNU Mach, the Hurd, the C library and many applications. Without the GNU operating system, you will only have a microkernel, which is not very useful by itself, without the other programs.

Building the whole operating system takes a huge effort, and you are well advised to not do it yourself, but to get a binary distribution of the GNU operating system. The distribution also includes a binary of the GNU Mach microkernel.

Information on how to obtain the GNU system can be found in the Hurd info manual.

Compilation

If you already have a running GNU system, and only want to recompile the kernel, for example to select a different set of included hardware drivers, you can easily do this. You need the GNU C compiler and MiG, the Mach interface generator, which both come in their own packages.

Building and installing the kernel is as easy as with any other GNU software package. The configure script is used to configure the source and set the compile time options. The compilation is done by running:

make

To install the kernel and its header files, just enter the command:

make install

This will install the kernel into $(prefix)/boot/gnumach and the header files into $(prefix)/include. You can also only install the kernel or the header files. For this, the two targets install-kernel and install-headers are provided.

Configuration

The following options can be passed to the configure script as command line arguments and control what components are built into the kernel, or where it is installed.

The default for an option is to be disabled, unless otherwise noted.

--prefix prefix
Sets the prefix to PREFIX. The default prefix is the empty string, which is the correct value for the GNU system. The prefix is prepended to all path names at installation time.
--enable-kdb
Enables the in-kernel debugger. This is only useful if you actually anticipate debugging the kernel. It is not enabled by default because it adds considerably to the unpageable memory footprint of the kernel.
--enable-kmsg
Enables the kernel message device kmsg.
--enable-lpr
Enables the parallel port devices lpr%d.
--enable-floppy
Enables the PC floppy disk controller devices fd%d.
--enable-ide
Enables the IDE controller devices hd%d, hd%ds%d.

The following options enable drivers for various SCSI controller. SCSI devices are named sd%d (disks) or cd%d (CD ROMs).

--enable-advansys
Enables the AdvanSys SCSI controller devices sd%d, cd%d.
--enable-buslogic
Enables the BusLogic SCSI controller devices sd%d, cd%d.
--disable-flashpoint
Only meaningful in conjunction with @option{--enable-buslogic}. Omits the FlshPoint support. This option is enabled by default if @option{--enable-buslogic} is specified.
--enable-u1434f
Enables the UltraStor 14F/34F SCSI controller devices sd%d, cd%d.
--enable-ultrastor
Enables the UltraStor SCSI controller devices sd%d, cd%d.
--enable-aha152x
--enable-aha2825
Enables the Adaptec AHA-152x/2825 SCSI controller devices sd%d, cd%d.
--enable-aha1542
Enables the Adaptec AHA-1542 SCSI controller devices sd%d, cd%d.
--enable-aha1740
Enables the Adaptec AHA-1740 SCSI controller devices sd%d, cd%d.
--enable-aic7xxx
Enables the Adaptec AIC7xxx SCSI controller devices sd%d, cd%d.
--enable-futuredomain
Enables the Future Domain 16xx SCSI controller devices sd%d, cd%d.
--enable-in2000
Enables the Always IN 2000 SCSI controller devices sd%d, cd%d.
--enable-ncr5380
--enable-ncr53c400
Enables the generic NCR5380/53c400 SCSI controller devices sd%d, cd%d.
--enable-ncr53c406a
Enables the NCR53c406a SCSI controller devices sd%d, cd%d.
--enable-pas16
Enables the PAS16 SCSI controller devices sd%d, cd%d.
--enable-seagate
Enables the Seagate ST02 and Future Domain TMC-8xx SCSI controller devices sd%d, cd%d.
--enable-t128
--enable-t128f
--enable-t228
Enables the Trantor T128/T128F/T228 SCSI controller devices sd%d, cd%d.
--enable-ncr53c7xx
Enables the NCR53C7,8xx SCSI controller devices sd%d, cd%d.
--enable-eatadma
Enables the EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) SCSI controller devices sd%d, cd%d.
--enable-eatapio
Enables the EATA-PIO (old DPT PM2001, PM2012A) SCSI controller devices sd%d, cd%d.
--enable-wd7000
Enables the WD 7000 SCSI controller devices sd%d, cd%d.
--enable-eata
Enables the EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) SCSI controller devices sd%d, cd%d.
--enable-am53c974
--enable-am79c974
Enables the AM53/79C974 SCSI controller devices sd%d, cd%d.
--enable-dtc3280
--enable-dtc3180
Enables the DTC3180/3280 SCSI controller devices sd%d, cd%d.
--enable-ncr53c8xx
--enable-dc390w
--enable-dc390u
--enable-dc390f
Enables the NCR53C8XX SCSI controller devices sd%d, cd%d.
--enable-dc390t
--enable-dc390
Enables the Tekram DC-390(T) SCSI controller devices sd%d, cd%d.
--enable-ppa
Enables the IOMEGA Parallel Port ZIP drive device sd%d.
--enable-qlogicfas
Enables the Qlogic FAS SCSI controller devices sd%d, cd%d.
--enable-qlogicisp
Enables the Qlogic ISP SCSI controller devices sd%d, cd%d.
--enable-gdth
Enables the GDT SCSI Disk Array controller devices sd%d, cd%d.

The following options enable drivers for various ethernet cards. NIC device names are usually eth%d, except for the pocket adaptors.

GNU Mach does only autodetect one ethernet card. To enable any further cards, the source code has to be edited.

--enable-ne2000
--enable-ne1000
Enables the NE2000/NE1000 ISA netword card devices eth%d.
--enable-3c503
--enable-el2
Enables the 3Com 503 (Etherlink II) netword card devices eth%d.
--enable-3c509
--enable-3c579
--enable-el3
Enables the 3Com 509/579 (Etherlink III) netword card devices eth%d.
--enable-wd80x3
Enables the WD80X3 netword card devices eth%d.
--enable-3c501
--enable-el1
Enables the 3COM 501 netword card devices eth%d.
--enable-ul
Enables the SMC Ultra netword card devices eth%d.
--enable-ul32
Enables the SMC Ultra 32 netword card devices eth%d.
--enable-hplanplus
Enables the HP PCLAN+ (27247B and 27252A) netword card devices eth%d.
--enable-hplan
Enables the HP PCLAN (27245 and other 27xxx series) netword card devices eth%d.
--enable-3c59x
--enable-3c90x
--enable-vortex
Enables the 3Com 590/900 series (592/595/597/900/905) "Vortex/Boomerang" netword card devices eth%d.
--enable-seeq8005
Enables the Seeq8005 netword card devices eth%d.
--enable-hp100
--enable-hpj2577
--enable-hpj2573
--enable-hp27248b
--enable-hp2585
Enables the HP 10/100VG PCLAN (ISA, EISA, PCI) netword card devices eth%d.
--enable-ac3200
Enables the Ansel Communications EISA 3200 netword card devices eth%d.
--enable-e2100
Enables the Cabletron E21xx netword card devices eth%d.
--enable-at1700
Enables the AT1700 (Fujitsu 86965) netword card devices eth%d.
--enable-eth16i
--enable-eth32
Enables the ICL EtherTeam 16i/32 netword card devices eth%d.
--enable-znet
--enable-znote
Enables the Zenith Z-Note netword card devices eth%d.
--enable-eexpress
Enables the EtherExpress 16 netword card devices eth%d.
--enable-eexpresspro
Enables the EtherExpressPro netword card devices eth%d.
--enable-eexpresspro100
Enables the Intel EtherExpressPro PCI 10+/100B/100+ netword card devices eth%d.
--enable-depca
--enable-de100
--enable-de101
--enable-de200
--enable-de201
--enable-de202
--enable-de210
--enable-de422
Enables the DEPCA, DE10x, DE200, DE201, DE202, DE210, DE422 netword card devices eth%d.
--enable-ewrk3
--enable-de203
--enable-de204
--enable-de205
Enables the EtherWORKS 3 (DE203, DE204, DE205) netword card devices eth%d.
--enable-de4x5
--enable-de425
--enable-de434
--enable-435
--enable-de450
--enable-500
Enables the DE425, DE434, DE435, DE450, DE500 netword card devices eth%d.
--enable-apricot
Enables the Apricot XEN-II on board ethernet netword card devices eth%d.
--enable-wavelan
Enables the AT&T WaveLAN & DEC RoamAbout DS netword card devices eth%d.
--enable-3c507
--enable-el16
Enables the 3Com 507 netword card devices eth%d.
--enable-3c505
--enable-elplus
Enables the 3Com 505 netword card devices eth%d.
--enable-de600
Enables the D-Link DE-600 netword card devices eth%d.
--enable-de620
Enables the D-Link DE-620 netword card devices eth%d.
--enable-skg16
Enables the Schneider & Koch G16 netword card devices eth%d.
--enable-ni52
Enables the NI5210 netword card devices eth%d.
--enable-ni65
Enables the NI6510 netword card devices eth%d.
--enable-atp
Enables the AT-LAN-TEC/RealTek pocket adaptor netword card devices atp%d.
--enable-lance
--enable-at1500
--enable-ne2100
Enables the AMD LANCE and PCnet (AT1500 and NE2100) netword card devices eth%d.
--enable-elcp
--enable-tulip
Enables the DECchip Tulip (dc21x4x) PCI netword card devices eth%d.
--enable-fmv18x
Enables the FMV-181/182/183/184 netword card devices eth%d.
--enable-3c515
Enables the 3Com 515 ISA Fast EtherLink netword card devices eth%d.
--enable-pcnet32
Enables the AMD PCI PCnet32 (PCI bus NE2100 cards) netword card devices eth%d.
--enable-ne2kpci
Enables the PCI NE2000 netword card devices eth%d.
--enable-yellowfin
Enables the Packet Engines Yellowfin Gigabit-NIC netword card devices eth%d.
--enable-rtl8139
--enable-rtl8129
Enables the RealTek 8129/8139 (not 8019/8029!) netword card devices eth%d.
--enable-epic
--enable-epic100
Enables the SMC 83c170/175 EPIC/100 (EtherPower II) netword card devices eth%d.
--enable-tlan
Enables the TI ThunderLAN netword card devices eth%d.
--enable-viarhine
Enables the VIA Rhine netword card devices eth%d.

Cross-Compilation

Another way to install the kernel is to use an existing operating system in order to compile the kernel binary. This is called cross-compiling, because it is done between two different platforms. If the pre-built kernels are not working for you, and you can't ask someone to compile a custom kernel for your machine, this is your last chance to get a kernel that boots on your hardware.

Luckily, the kernel does have light dependencies. You don't even need a cross compiler if your build machine has a compiler and is the same architecture as the system you want to run GNU Mach on.

You need a cross-mig, though.


Go to the first, previous, next, last section, table of contents.