Date: Tue, 12 Dec 1995 03:13:12 +1100 From: Bruce Evans <bde@zeta.org.au> To: jkh@time.cdrom.com, phk@freebsd.org Cc: hackers@freebsd.org Subject: Re: sysinstall considered harmful! Message-ID: <199512111613.DAA16770@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>The code fragment from /usr/src/release/sysinstall/disks.c that
>writes disk labels out looks like this:
> for (i = 0; devs[i]; i++) {
> Chunk *c1;
> Disk *d = (Disk *)devs[i]->private;
> if (!devs[i]->enabled)
> continue;
> Set_Boot_Blocks(d, boot1, boot2);
> msgNotify("Writing partition information to drive %s", d->name);
> if (Write_Disk(d)) {
> dialog_clear();
> msgConfirm("ERROR: Unable to write data to disk %s!", d->name);
> return RET_FAIL;
> }
>If devs[i]->enabled is not set, which I've proven to be the case for
>all disks that weren't selected, it will skip the disk, leading me to
I tried installing on fd1. The message
"Writing partition information to drive 0"
was printed and the MBR was clobbered (from all 0's to all 0's except
for 0xaa55 at the end) so devs[0]->enabled must have been set.
sysinstall is challenged by installing on fd1. I had to set things up
specially:
compile fd.c with options TEST_LABELLING
mknod the relevant devices
add "fd" to the list of disks in libdisks/disk.c (sysinstall
run as non-root says that I don't have any disks except
floppies. It apparently doesn't distinguish EACCESS
from ENXIO)
Then the partition table part of sysinstall works well and the labelling
part not so well (it won't allow creation of partitions smaller than 1MB).
The bug can be reproduced something like this:
clear the fd MBR's and labels (dd if=/dev/zero of=/dev/rfd0
count=2 etc.)
Create a default slice on fd1
Create a default partition on fd1 (fd1s1a / 1MB UFS Y)
Write
The equivalent using vn instead of fd should fail in the same way.
Floppies are better for debugging without a debugger because they are
slow and have separate access LEDs.
Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512111613.DAA16770>
