summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgordon <gordon@FreeBSD.org>2002-06-06 20:20:58 +0000
committergordon <gordon@FreeBSD.org>2002-06-06 20:20:58 +0000
commite5b172f462d498835247f250a9e0a4b975c7681d (patch)
tree44649865638dce3c5a3d8a41de011caa408f5e0d
parentefb6005b12a1c3b836b9ce96c58a3388d3f38388 (diff)
downloadFreeBSD-src-e5b172f462d498835247f250a9e0a4b975c7681d.zip
FreeBSD-src-e5b172f462d498835247f250a9e0a4b975c7681d.tar.gz
Remove the old nextboot from Whistler. AFAIK this hasn't been useable in
quite a while and only works on i386.
-rw-r--r--sbin/nextboot/Makefile8
-rw-r--r--sbin/nextboot/nextboot.8116
-rw-r--r--sbin/nextboot/nextboot.c202
3 files changed, 0 insertions, 326 deletions
diff --git a/sbin/nextboot/Makefile b/sbin/nextboot/Makefile
deleted file mode 100644
index cff95d2..0000000
--- a/sbin/nextboot/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# @(#)Makefile 1.1 (Julian Elischer) 3/28/93
-# $FreeBSD$
-
-PROG= nextboot
-WARNS= 0
-MAN= nextboot.8
-
-.include <bsd.prog.mk>
diff --git a/sbin/nextboot/nextboot.8 b/sbin/nextboot/nextboot.8
deleted file mode 100644
index fa9882b..0000000
--- a/sbin/nextboot/nextboot.8
+++ /dev/null
@@ -1,116 +0,0 @@
-.\" $FreeBSD$
-.Dd July 9, 1996
-.Dt NEXTBOOT 8
-.Os
-.Sh NAME
-.Nm nextboot
-.Nd install a default bootstring block on the boot disk
-.Sh SYNOPSIS
-.Nm
-.Op Fl b
-.Ar filename bootstring
-.Ar
-.Nm
-.Op Fl ed
-.Ar filename
-.Sh DESCRIPTION
-The
-.Fx
-program
-.Nm
-controls the actions of the boot blocks at the time of the next boot.
-If compiled with the correct option,
-the boot blocks will check the nameblock for a magic number and a
-default name to use for booting.
-If compiled to do so they will also
-delete the name from the block, ensuring that if the boot should fail,
-then it will not be tried again.
-It is the job of
-.Pa /etc/rc
-to use
-.Nm
-to re-install the string if that boot is found to have succeeded.
-This allows a one-time only boot string to be used for such applications
-as remote debugging, and installation of new, untrusted kernels.
-The nameblock is defined at compile time to be the second physical block
-on the disk.
-.Pp
-The following options are available:
-.Bl -tag -width indent
-.It Fl b
-Is used for bootstrapping (initially configuring) the nameblock.
-Without
-this,
-.Nm
-will refuse to write to a block that does not already contain the magic
-number.
-.It Fl d
-Disable (temporarily) an existing name block by changing a bit
-in the magic number.
-.It Fl e
-Restore the good magic number on a block disabled by
-.Fl d .
-.El
-.Pp
-The
-.Fl e
-and
-.Fl d
-flags are mutually exclusive.
-.Sh DESCRIPTION
-.Nm Nextboot
-first checks that the disk has an fdisk table and checks that none of the
-partitions defined in that table include the nameblock.
-If the name block is
-shown to be unused, it will install the bootstrings given as arguments,
-one after the other, each preceded by a small magic number, and NULL
-terminated.
-The end of the list of strings is delimited by a sequence of
-0xff bytes.
-If the boot blocks are compiled to write back the nameblock
-after each boot, it will zero out the supplied names as it uses them,
-one per boot,
-until it reaches the 0xff, at which time it will revert to the compiled in
-boot string.
-At this time the nameblock will contain only zeroed out names.
-.Pp
-An example of usage might be:
-.Bd -literal
- nextboot -b /dev/rwd0 1:sd(0,a)/boot/kernel/kernel.experimental \\
- wd(0,a)/boot/kernel.old/kernel
-.Ed
-.Pp
-Which would instruct the boot blocks at the next boot,
-to try boot the experimental kernel off the SCSI disk.
-If for any reason this failed, the next boot attempt would
-boot the kernel
-.Pa /boot/kernel.old/kernel
-off the IDE drive. (Assuming the write-back option were enabled) If this
-in turn failed.
-The compiled in default would be used.
-.Pp
-If the write-back feature is disabled, the nextboot program is a convenient way
-to change the default boot string.
-Note, that should the file specified in
-the nameblock be non-existent, then the name compiled into the boot blocks
-will be used for the boot rather than the next name in the nameblock.
-The
-nameblock is only consulted
-.Em once
-per boot.
-.Sh SEE ALSO
-.Xr boot 8 ,
-.Xr disklabel 8 ,
-.Xr fdisk 8
-.Sh BUGS
-This program works only in conjunction with the legacy boot code.
-.Pp
-The entire program should be made more user-friendly.
-The option of whether to write back or not should be stored on the
-disk and not a compile time option.
-I want to rethink this at some
-later stage to make it co-exist with disks that do not have
-a fdisk partitioning table (i.e. purely disklabel'd systems).
-.Pp
-Whether to write back or not should be specified at run-time in the nameblock
-so that the boot blocks need not be altered to get this feature.
diff --git a/sbin/nextboot/nextboot.c b/sbin/nextboot/nextboot.c
deleted file mode 100644
index 5893ca3..0000000
--- a/sbin/nextboot/nextboot.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 1996 Whistle Communications
- * All Rights Reserved.
- *
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * Whistle Communications allows free use of this software in its "as is"
- * condition. Whistle Communications disclaims any liability of any kind for
- * any damages whatsoever resulting from the use of this software.
- */
-
-#ifndef lint
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <sys/types.h>
-#include <sys/disklabel.h>
-#include <fcntl.h>
-#include <err.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-struct mboot
-{
- unsigned char padding[2]; /* force the longs to be long aligned */
- unsigned char bootinst[DOSPARTOFF];
- struct dos_partition parts[4];
- unsigned short int signature;
-};
-struct mboot mboot;
-
-#define NAMEBLOCK 1 /* 2nd block */
-#define BLOCKSIZE 512
-#define ENABLE_MAGIC 0xfadefeed
-#define DISABLE_MAGIC 0xfadefade
-static int bflag;
-static int eflag;
-static int dflag;
-
-#define BOOT_MAGIC 0xAA55
-
-static void
-usage(void) {
- fprintf (stderr, "%s\n%s\n",
- "usage: nextboot [-b] device bootstring [bootstring] ...",
- " nextboot {-e,-d} device");
- exit(1);
-}
-
-int
-main (int argc, char** argv)
-{
- int fd = -1;
- char namebuf[1024], *cp = namebuf;
- int i,j;
- int ch;
- int part;
-
- bflag = 0;
- while ((ch = getopt(argc, argv, "bde")) != -1) {
- switch(ch) {
- case 'b':
- bflag = 1;
- break;
- case 'd':
- dflag = 1;
- break;
- case 'e':
- eflag = 1;
- break;
- case '?':
- default:
- usage();
- }
- }
- argc -= optind;
- argv += optind;
-
- if ( (dflag + eflag + bflag) > 1 ) {
- usage();
- }
- if (dflag + eflag){
- if(argc != 1 ) {
- usage();
- }
- } else {
- if (argc <2) {
- usage();
- }
- }
- if ((fd = open(argv[0], O_RDWR, 0)) < 0)
- errx(1, "can't open %s", argv[0]);
-
- argc--;
- argv++;
-
- /*******************************************
- * Check that we have an MBR
- */
- if (lseek(fd,0,0) == -1)
- err(1, "lseek");
- if (read (fd,&mboot.bootinst[0],BLOCKSIZE ) != BLOCKSIZE)
- err(1, "read0");
- if (mboot.signature != (unsigned short)BOOT_MAGIC)
- errx(1, "no fdisk part.. not touching block 1");
-
- /*******************************************
- * And check that none of the partitions in it cover the name block;
- */
- for ( part = 0; part < 4; part++) {
- if( mboot.parts[part].dp_size
- && (mboot.parts[part].dp_start <= NAMEBLOCK)
- && (mboot.parts[part].dp_start
- + mboot.parts[part].dp_size > NAMEBLOCK))
- errx(1,
- "name sector lies within a Bios partition: aborting write");
- }
-
-
- /*******************************************
- * Now check the name sector itself to see if it's been initialized.
- */
- if (lseek(fd,NAMEBLOCK * BLOCKSIZE,0) == -1)
- err(1, "lseek");
- if (read(fd,namebuf,BLOCKSIZE) != BLOCKSIZE)
- err(1, "read1");
- /*******************************************
- * check if we are just enabling or disabling
- * Remember the flags are exclusive..
- */
- if(!bflag) { /* don't care what's there if bflag is set */
- switch(*(unsigned long *)cp)
- {
- case DISABLE_MAGIC:
- case ENABLE_MAGIC:
- break;
- default:
- errx(1, "namesector not initialized, use the -b flag");
- }
- }
-
-
- /*******************************************
- * If the z or r flag is set, damage or restore the magic number..
- * to disable/enable the feature
- */
- if(dflag) {
- *(unsigned long *)cp = DISABLE_MAGIC;
- } else {
- *(unsigned long *)cp = ENABLE_MAGIC;
- }
- if ((!dflag) && (!eflag)) {
- /*******************************************
- * Create a new namesector in ram
- */
- cp += 4;
- for ( i = 0 ; i < argc ; i++ ) {
- *cp++ = 'D';
- *cp++ = 'N';
- j = strlen(argv[i]);
- strncpy(cp,argv[i],j);
- cp += j;
- *cp++ = 0;
- }
- *cp++ = 0xff;
- *cp++ = 0xff;
- *cp++ = 0xff;
- namebuf[BLOCKSIZE-1] = 0; /* paranoid */
- namebuf[BLOCKSIZE] = 0xff;
- }
-
- /*******************************************
- * write it to disk.
- */
- if (lseek(fd,NAMEBLOCK * BLOCKSIZE,0) == -1)
- err(1, "lseek");
- if(write (fd,namebuf,BLOCKSIZE ) != BLOCKSIZE)
- err(1, "write");
-
-#if 0
- /*******************************************
- * just to be safe/paranoid.. read it back..
- * and print it..
- */
- if (lseek(fd,NAMEBLOCK * BLOCKSIZE,0) == -1)
- err(1, "lseek (second)");
- read (fd,namebuf,512);
- for (i = 0;i< 16;i++) {
- for ( j = 0; j < 16; j++) {
- printf("%02x ",(unsigned char )namebuf[(i*16) + j ]);
- }
- printf("\n");
- }
-#endif
- exit(0);
-}
OpenPOWER on IntegriCloud