Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Apr 2000 20:12:50 +0100
From:      Ben Smithurst <ben@scientia.demon.co.uk>
To:        Scott Blachowicz <scott@sabami.seaslug.org>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Erasing an IDE disk
Message-ID:  <20000415201250.A23900@strontium.scientia.demon.co.uk>
In-Reply-To: <20000415095209.A58006@sabami.seaslug.org>
References:  <20000414161657.A35142@sabami.seaslug.org> <20000415165532.A16019@strontium.scientia.demon.co.uk> <20000415095209.A58006@sabami.seaslug.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Scott Blachowicz wrote:

> What did you use to do that? And what OS version?

FreeBSD 3.4, I think (definitely FreeBSD 3.something).  I used this
small program:

#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define DISK "/dev/wd1"

int sig = 0;

void nop(int s) {
	sig = 1;
	return;
}

int
main(int argc, char *argv[]) {
	char buf[64 << 10];
	int fd, ch, sverr;
	ssize_t n, tot;
	struct sigaction sa;

	sa.sa_handler = nop;
	sigemptyset(&sa.sa_mask);
	sa.sa_flags = 0;
	sigaction(SIGINT, &sa, NULL);

	if (argc > 1)
		ch = strtol(argv[1], NULL, 0);
	else
		ch = 0xff;

	memset(buf, ch, sizeof buf);

	fd = open(DISK, O_WRONLY);
	if (fd < 0)
		err(1, DISK);

	warnx("ch=%x buf[0]=%x", ch, (unsigned int)buf[0]);

	tot = 0;
	while (!sig && (n = write(fd, buf, sizeof buf)) == sizeof buf)
		tot += n;

	sverr = errno;
	warnx("total %ld bytes written", (long)tot);

	if (sig)
		errx(1, "exiting because of signal");

	errno = sverr;
	if (n < 0)
		err(1, "write");
	else
		errx(1, "partial write of %ld bytes%s",
		  (long)n, (n == 0) ? " (end of device?)" : "");
}

Be sure to set the #define DISK correctly. :-)  Then run it like

./diskerase 0x0
./diskerase 0xff
./diskerase 0x0

#include <std_disclaimer.h>

Run at your own risk, etc.  (I just mis-typed "risk" as "disk", which
would probably be just as valid in this case. :-)

-- 
Ben Smithurst / ben@scientia.demon.co.uk / PGP: 0x99392F7D


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000415201250.A23900>