summaryrefslogtreecommitdiffstats
path: root/contrib/mkQNXnbi
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/mkQNXnbi')
-rw-r--r--contrib/mkQNXnbi/Makefile10
-rw-r--r--contrib/mkQNXnbi/README36
-rw-r--r--contrib/mkQNXnbi/examples/bootptab29
-rw-r--r--contrib/mkQNXnbi/examples/ws.etherboot22
-rw-r--r--contrib/mkQNXnbi/examples/ws.etherboot.on-the-fly22
-rw-r--r--contrib/mkQNXnbi/mkQNXnbi.c196
6 files changed, 0 insertions, 315 deletions
diff --git a/contrib/mkQNXnbi/Makefile b/contrib/mkQNXnbi/Makefile
deleted file mode 100644
index 4f6c0f2a..00000000
--- a/contrib/mkQNXnbi/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# Makefile for the mkQNXnbi filter
-
-all: mkQNXnbi
-
-mkQNXnbi: mkQNXnbi.o
-
-mkQNXnbi.o: mkQNXnbi.c
-
-clean:
- rm -f mkQNXnbi *.o
diff --git a/contrib/mkQNXnbi/README b/contrib/mkQNXnbi/README
deleted file mode 100644
index 1522df31..00000000
--- a/contrib/mkQNXnbi/README
+++ /dev/null
@@ -1,36 +0,0 @@
-mkQNXnbi is a quick hack to generate tagged images from QNX boot images.
-
-To boot a QNX client with Etherboot you have to consider the following:
-1. You MUST have another QNX box running in the network to provide the
- root filesystem and the license info to the client. QNX cannot use
- e.g. NFS for its root filesystem, as it needs to load a valid license
- from a file on the root fs before being able to start TCP/IP. This
- would lead to a chicken-and-egg problem.
-2. The Net task normally determines the size of its internal tables from
- the actual number of licensed nodes. Since this information is not
- available at boot time when booting from the network, you will have
- to set the max. number of nodes as well as a valid netmap entry for
- the node providing the root filesystem as an option to Net in the
- build file.
- See examples/ws.etherboot and fill in the <blanks>.
-3. The client does not need a TCP/IP license in order to boot.
-4. You can use the boot-server OS of your choice. If you choose to use
- QNX as boot server, the server of course needs a TCP/IP run-time
- license. In this case you have the option of creating the boot image
- on-the-fly and use the macro $(netmap) instead of a hard-coded MAC
- address.
- See examples/ws.etherboot.on-the-fly and fill in the <blanks>.
- A template bootptab for the QNX bootp server is placed in the
- examples directory.
-5. mkQNXnbi expects the QNX image to be supplied on stdin and generates
- the tagged image to stdout. This can be overridden on the command line
- using the options -i <input-file> and -o <output-file>.
-
-mkQNXnbi can be compiled using e.g. Linux/gcc or on QNX using Watcom C
-(or gcc, if you have it - see http://w3c.teaser.fr/~jcmichot/)
-
-Bug-reports to <al@alarsen.net>
-
-2002-01-25
-Anders Larsen
-<al@alarsen.net>
diff --git a/contrib/mkQNXnbi/examples/bootptab b/contrib/mkQNXnbi/examples/bootptab
deleted file mode 100644
index 2077fa94..00000000
--- a/contrib/mkQNXnbi/examples/bootptab
+++ /dev/null
@@ -1,29 +0,0 @@
-# /etc/bootptab: database for QNX bootp server (/etc/bootpd)
-
-# First, we define a global entry which specifies the stuff every host uses.
-global:\
- :hd=/boot:\
- :ht=ethernet:\
- :sm=<your netmask here>:\
- :bf=|cd /boot; buildqnx -b 0x10000 build/<your build-file here> | mkQNXnbi:\
- :hn:
-
-# node 2 uses the default build-file
-node2:\
- :tc=global:\
- :ha=<your MAC here>:\
- :ip=<your IP address here>:
-
-# node 3 uses its own build-file
-node3:\
- :tc=global:\
- :ha=<your MAC here>:\
- :ip=<your IP address here>:\
- :bf=|cd /boot; buildqnx -b 0x10000 build/<your build-file here> | mkQNXnbi:
-
-# node 4 uses a pre-built boot image
-node3:\
- :tc=global:\
- :ha=<your MAC here>:\
- :ip=<your IP address here>:\
- :bf=images/<your image-file here>:
diff --git a/contrib/mkQNXnbi/examples/ws.etherboot b/contrib/mkQNXnbi/examples/ws.etherboot
deleted file mode 100644
index d8120bc8..00000000
--- a/contrib/mkQNXnbi/examples/ws.etherboot
+++ /dev/null
@@ -1,22 +0,0 @@
-# /boot/build/ws.etherboot
-
-sys/boot
-$ boot -v
-
-sys/Proc32
-$ Proc32 -l <target node number>
-
-sys/Slib32
-$ Slib32
-
-sys/Slib16
-$ Slib16
-
-/bin/Net
-$ Net -n <highest QNX node number in network> -m "<node number of boot server> 1 <MAC of boot server node here>"
-
-/bin/Net.<network driver>
-$ Net.<network driver>
-
-/bin/sinit
-$ sinit -r //<node number of boot server>/ TERM=<your terminal emulation {QNX|qansi}>
diff --git a/contrib/mkQNXnbi/examples/ws.etherboot.on-the-fly b/contrib/mkQNXnbi/examples/ws.etherboot.on-the-fly
deleted file mode 100644
index 3058c450..00000000
--- a/contrib/mkQNXnbi/examples/ws.etherboot.on-the-fly
+++ /dev/null
@@ -1,22 +0,0 @@
-# /boot/build/ws.etherboot.on-the-fly
-
-sys/boot
-$ boot -v
-
-sys/Proc32
-$ Proc32 -l $(lnode)
-
-sys/Slib32
-$ Slib32
-
-sys/Slib16
-$ Slib16
-
-/bin/Net
-$ Net -n <highest QNX node number in network> -m $(netmap)
-
-/bin/Net.<network driver>
-$ Net.<network driver>
-
-/bin/sinit
-$ sinit -r //$(bnode)/ TERM=<your terminal emulation {QNX|qansi}>
diff --git a/contrib/mkQNXnbi/mkQNXnbi.c b/contrib/mkQNXnbi/mkQNXnbi.c
deleted file mode 100644
index 2ec2dc4b..00000000
--- a/contrib/mkQNXnbi/mkQNXnbi.c
+++ /dev/null
@@ -1,196 +0,0 @@
-//*****************************************************************************
-//
-// Purpose: Make a boot-image for EtherBoot
-//
-//
-// Compiler: This source can be compiled with gcc and Watcom C
-//
-//
-// Note: The QNX boot image can be build with any reasonable
-// start address, e.g. 0x1000 (default) or 0x10000
-// (widespread Boot-Rom address)
-//
-//
-// Author: Anders Larsen
-//
-//
-// Copyright: (C) 1999 by
-//
-// Anders Larsen
-// systems engineer
-// Gutleuthausstr. 3
-// D-69469 Weinheim
-// Germany
-// phone: +49-6201-961717
-// fax: +49-6201-961718
-// e-mail: al@alarsen.net
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//
-//-----------------------------------------------------------------------------
-//
-// Change Log:
-// V0.2: Sun 1999-12-13 Anders Larsen <al@alarsen.net>
-//*****************************************************************************
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-
-// max. size of QNX OS boot image is 512K
-#define MAXSIZE (512*1024)
-
-typedef unsigned short ushort_t;
-typedef unsigned long ulong_t;
-
-
-// global header of tagged image:
-struct initial_t
-{
- ulong_t magic;
- ulong_t length;
- ulong_t location;
- ulong_t start;
-};
-
-
-// header of each image:
-struct header_t
-{
- ulong_t flags;
- ulong_t loadaddr;
- ulong_t imgsize;
- ulong_t memsize;
-};
-
-
-// global header of the QNX EtherBoot image:
-struct qnx_loader_t
-{
- struct initial_t setup;
- struct header_t qnx;
-};
-
-
-// global header:
-union
-{
- struct qnx_loader_t h;
- char filler[512];
-} header;
-
-
-char buffer[MAXSIZE];
-
-
-int usage( char* const* argv )
-{
- fprintf( stderr, "%s - make a tagged boot image for EtherBoot\n", *argv );
- fprintf( stderr, "\nuse:\n" );
- fprintf( stderr, "%s [ -<option> ]*\n", *argv );
- fprintf( stderr, "\noptions:\n" );
- fprintf( stderr, " i <input file> : QNX boot file (default: stdin)\n" );
- fprintf( stderr, " o <output file> : tagged image file (default: stdout)\n" );
- fprintf( stderr, " v : be verbose\n" );
- return EXIT_FAILURE;
-}
-
-#ifdef __USAGE
-%C - make a tagged boot image for EtherBoot
-
-use:
-%C [ -<option> ]*
-
-options:
- i <input file> : QNX boot file (default: stdin)
- o <output file> : tagged image file (default: stdout)
- v : be verbose
-#endif
-
-
-int main( int argc, char* const* argv )
-{
- int ch, l;
- int verbose = 0;
-
- while ( ( ch = getopt( argc, argv, "hi:o:v" ) ) != EOF )
- switch ( ch )
- {
- case 'i':
- if ( !freopen( optarg, "r", stdin ) )
- {
- perror( "can't open input file" );
- return EXIT_FAILURE;
- }
- break;
-
- case 'o':
- if ( !freopen( optarg, "w", stdout ) )
- {
- perror( "can't create output file" );
- return EXIT_FAILURE;
- }
- break;
-
- case 'v':
- verbose++;
- break;
-
- case 'h':
- default:
- return usage( argv );
- }
- if ( optind != argc )
- return usage( argv );
-
- memset( &header, 0, sizeof header );
- header.h.setup.magic = 0x1b031336; // magic number
- header.h.setup.length = 4;
- header.h.setup.location = 0x93e00000; // just below the EtherBoot rom
- header.h.setup.start = 0; // filled in dynamically
- header.h.qnx.flags = 0x04000004; // single image only
- header.h.qnx.loadaddr = 0; // filled in dynamically
- header.h.qnx.imgsize = 0; // filled in dynamically
- header.h.qnx.memsize = 0; // filled in dynamically
-
- // read the QNX image from stdin:
- for ( ; ( l = fread( buffer + header.h.qnx.imgsize, 1, 1024, stdin ) ) > 0;
- header.h.qnx.imgsize += l
- )
- ;
- header.h.qnx.memsize = header.h.qnx.imgsize;
-
- // fill in the real load-address of the QNX boot image:
- header.h.setup.start = *(ushort_t*)&buffer[10] << 16;
- header.h.qnx.loadaddr = *(ushort_t*)&buffer[10] << 4;
-
- // write the tagged image file to stdout:
- fwrite( &header, 1, 512, stdout );
- fwrite( buffer, 1, header.h.qnx.imgsize, stdout );
-
- if ( verbose )
- {
- // print diagnostic information:
- fprintf( stderr, "QNX image size: %d bytes (%dK), load addr: 0x%05X\n",
- header.h.qnx.imgsize,
- header.h.qnx.imgsize / 1024,
- header.h.qnx.loadaddr
- );
- }
- return EXIT_SUCCESS;
-}