From 8f469124c8b8358f5566d55413731c30d338af3b Mon Sep 17 00:00:00 2001 From: deraadt Date: Fri, 22 Aug 2008 15:49:35 +0000 Subject: [PATCH] mksuncd lives in the base now, and one does not need to go do fiddly things in distrib before building snaps or cds of any kind, any more. --- distrib/crunch/Makefile | 5 - distrib/sparc64/mksuncd/Makefile | 15 -- distrib/sparc64/mksuncd/mksuncd.1 | 68 ------- distrib/sparc64/mksuncd/mksuncd.c | 327 ------------------------------ 4 files changed, 415 deletions(-) delete mode 100644 distrib/crunch/Makefile delete mode 100644 distrib/sparc64/mksuncd/Makefile delete mode 100644 distrib/sparc64/mksuncd/mksuncd.1 delete mode 100644 distrib/sparc64/mksuncd/mksuncd.c diff --git a/distrib/crunch/Makefile b/distrib/crunch/Makefile deleted file mode 100644 index d10d0e0cecb..00000000000 --- a/distrib/crunch/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# $OpenBSD: Makefile,v 1.4 2008/08/22 15:18:55 deraadt Exp $ - -SUBDIR= ../sparc64/mksuncd - -.include diff --git a/distrib/sparc64/mksuncd/Makefile b/distrib/sparc64/mksuncd/Makefile deleted file mode 100644 index 04f5d145b5d..00000000000 --- a/distrib/sparc64/mksuncd/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# $OpenBSD: Makefile,v 1.3 2003/03/02 12:32:08 deraadt Exp $ - -.if ${MACHINE} == "sparc64" - -PROG=mksuncd -BINDIR=/usr/bin - -CFLAGS+=-Werror -Wall -Wstrict-prototypes -Wmissing-prototypes - -.else -NOPROG= -.endif - -.include - diff --git a/distrib/sparc64/mksuncd/mksuncd.1 b/distrib/sparc64/mksuncd/mksuncd.1 deleted file mode 100644 index f540fbaea13..00000000000 --- a/distrib/sparc64/mksuncd/mksuncd.1 +++ /dev/null @@ -1,68 +0,0 @@ -.\" $OpenBSD: mksuncd.1,v 1.4 2007/05/31 19:19:16 jmc Exp $ -.\" -.\" Copyright (c) 2001 Jason L. Wright (jason@thought.net) -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -.\" DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -.\" POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd $Mdocdate: May 31 2007 $ -.Dt MKSUNCD 1 -.Os -.Sh NAME -.Nm mksuncd -.Nd add a bootable ufs partition to a filesystem image -.Sh SYNOPSIS -.Nm mksuncd -.Ar partition-letter -.Ar imagefile -.Ar ufsfile -.Sh DESCRIPTION -The -.Nm -utility adds the file -.Ar ufsfile -to the end of -.Ar imagefile . -.Ar ufsfile -is assumed to be a bootable filesystem image and -.Ar imagefile -is assumed to be something like an ISO 9660 filesystem. -A Sun-style disklabel is expected to already be present -at the beginning of -.Ar imagefile , -and -.Nm -will update that label so that the partition (a-h) given by -.Ar partition-letter -points to -.Ar ufsfile -within -.Ar imagefile . -.Pp -Based on the label in -.Ar imagefile , -that file is padded so that added files are always on cylinder boundaries. -This is a requirement of the PROM. -.Sh BUGS -This program is not endian or type safe. -It makes several assumptions about both based on its -SPARC bias. diff --git a/distrib/sparc64/mksuncd/mksuncd.c b/distrib/sparc64/mksuncd/mksuncd.c deleted file mode 100644 index a9520c45698..00000000000 --- a/distrib/sparc64/mksuncd/mksuncd.c +++ /dev/null @@ -1,327 +0,0 @@ -/* $OpenBSD: mksuncd.c,v 1.3 2003/06/02 20:09:40 jason Exp $ */ - -/* - * Copyright (c) 2001 Jason L. Wright (jason@thought.net) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * WARNING! WARNING! - * This program is not type safe (it assumes sparc type sizes) and not - * endian safe (assumes sparc endianness). - * WARNING! WARNING! - */ - -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Lawrence Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)sun_disklabel.h 8.1 (Berkeley) 6/11/93 - */ - -#include -#include -#include -#include -#include -#include -#include - -/* - * SunOS disk label layout (only relevant portions discovered here). - * JLW XXX should get these definitions from elsewhere, oh well. - */ - -#define SUN_DKMAGIC 55998 - -/* partition info */ -struct sun_dkpart { - int sdkp_cyloffset; /* starting cylinder */ - int sdkp_nsectors; /* number of sectors */ -}; - -struct sun_disklabel { /* total size = 512 bytes */ - char sl_text[128]; - char sl_xxx1[292]; -#define sl_bsdlabel sl_xxx1 /* Embedded OpenBSD label */ - u_short sl_rpm; /* rotational speed */ - u_short sl_pcylinders; /* number of physical cyls */ -#define sl_pcyl sl_pcylinders /* XXX: old sun3 */ - u_short sl_sparespercyl; /* spare sectors per cylinder */ - char sl_xxx3[4]; - u_short sl_interleave; /* interleave factor */ - u_short sl_ncylinders; /* data cylinders */ - u_short sl_acylinders; /* alternate cylinders */ - u_short sl_ntracks; /* tracks per cylinder */ - u_short sl_nsectors; /* sectors per track */ - char sl_xxx4[4]; - struct sun_dkpart sl_part[8]; /* partition layout */ - u_short sl_magic; /* == SUN_DKMAGIC */ - u_short sl_cksum; /* xor checksum of all shorts */ -}; - -int expand_file(int, off_t); -void usage(void); -int adjust_base(int, struct sun_disklabel *); -int get_label(int, struct sun_disklabel *); -int append_osfile(int, int); -off_t cylindersize(int, struct sun_disklabel *); -int adjust_label(int, struct sun_disklabel *, int, off_t, off_t); - -int -expand_file(int f, off_t len) -{ - char buf[1024]; - off_t i; - - if (lseek(f, 0, SEEK_END) == -1) - return (-1); - bzero(buf, sizeof(buf)); - while (len) { - i = (sizeof(buf) < len) ? sizeof(buf) : len; - if (write(f, buf, i) != i) - return (-1); - len -= i; - } - return (0); -} - -void -usage(void) -{ - fprintf(stderr, "setpart partition baseimage bootimage\n"); -} - -/* - * Adjust size of base to meet a cylinder boundary. - */ -int -adjust_base(int f, struct sun_disklabel *slp) -{ - struct stat st; - off_t sz; - - if (lseek(f, 0, SEEK_END) == -1) - err(1, "lseek"); - - if (fstat(f, &st) == -1) - err(1, "fstat"); - - sz = ((off_t)slp->sl_nsectors) * - ((off_t)slp->sl_ntracks) * ((off_t)512); - - if ((st.st_size % sz) != 0) { - if (expand_file(f, sz - (st.st_size % sz))) - err(1, "expand_file"); - } - - return (0); -} - -int -get_label(int f, struct sun_disklabel *slp) -{ - int r; - - if (lseek(f, 0, SEEK_SET) == -1) - err(1, "lseek"); - - r = read(f, slp, sizeof(*slp)); - if (r == -1) - err(1, "read"); - if (r != sizeof(*slp)) - errx(1, "short read"); - - if (slp->sl_ntracks == 0 || slp->sl_ncylinders == 0 || - slp->sl_nsectors == 0) - errx(1, "bogus disklabel"); - - return (0); -} - -int -main(int argc, char **argv) -{ - struct sun_disklabel sl; - int part, bf, of; - off_t cylstart, cylsize; - - if (argc != 4) { - usage(); - return (1); - } - - if (argv[1] == NULL || strlen(argv[1]) != 1 || - (argv[1][0] < 'a' || argv[1][0] > 'h')) { - usage(); - return (1); - } - part = argv[1][0] - 'a'; - - if (argv[2] == NULL || argv[3] == NULL) { - usage(); - return (1); - } - - bf = open(argv[2], O_RDWR); - if (bf == -1) - err(1, "open"); - - of = open(argv[3], O_RDONLY); - if (of == -1) - err(1, "open"); - - if (get_label(bf, &sl)) - return (1); - - if (adjust_base(bf, &sl)) - return (1); - - cylstart = cylindersize(bf, &sl); - cylsize = cylindersize(of, &sl); - - if (append_osfile(bf, of)) - return (1); - - if (adjust_base(bf, &sl)) - return (1); - - if (adjust_label(bf, &sl, part, cylstart, cylsize)) - return (1); - - close(bf); - close(of); - - return (0); -} - -/* - * Put our entry into the disklabel, recompute label checksum, and - * write it back to the disk. - */ -int -adjust_label(int f, struct sun_disklabel *slp, int part, off_t start, off_t size) -{ - u_short sum = 0, *sp; - int i; - - if (start > 65535) - errx(1, "start too large! %lld", (long long)start); - if (part < 0 || part > 8) - errx(1, "invalid partition: %d", part); - slp->sl_part[part].sdkp_cyloffset = start; - slp->sl_part[part].sdkp_nsectors = - size * slp->sl_nsectors * slp->sl_ntracks; - - slp->sl_cksum = 0; - sp = (u_short *)slp; - for (i = 0; i < sizeof(*slp)/sizeof(u_short); i++) { - sum ^= *sp; - sp++; - } - slp->sl_cksum = sum; - - if (lseek(f, 0, SEEK_SET) == -1) - return (-1); - - i = write(f, slp, sizeof(*slp)); - if (i < 0) - err(1, "write modified label"); - if (i != sizeof(*slp)) - errx(1, "short write modified label"); - return (0); -} - -int -append_osfile(int outf, int inf) -{ - char buf[512]; - int r, len; - - while (1) { - len = read(inf, buf, sizeof(buf)); - if (len < 0) - err(1, "read osfile"); - if (len == 0) - return (0); - - r = write(outf, buf, len); - if (r < 0) - err(1, "write basefile"); - if (r != len) - errx(1, "short write basefile"); - } -} - -off_t -cylindersize(int f, struct sun_disklabel *slp) -{ - struct stat st; - off_t sz, r; - - if (fstat(f, &st) == -1) - err(1, "fstat"); - - sz = ((off_t)slp->sl_nsectors) * - ((off_t)slp->sl_ntracks) * ((off_t)512); - - r = st.st_size / sz; - - if ((st.st_size % sz) == 0) - return (r); - return (r + 1); -} -- 2.20.1