Subject: bin/20977: /usr/sbin/installboot fails on alternative disks
To: None <gnats-bugs@gnats.netbsd.org>
From: None <jbernard@mines.edu>
List: netbsd-bugs
Date: 04/01/2003 19:51:30
>Number: 20977
>Category: bin
>Synopsis: /usr/sbin/installboot fails on alternative disks
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Apr 01 18:52:01 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Jim Bernard
>Release: NetBSD 1.6I
>Organization:
>Environment:
System: NetBSD knox 1.6I NetBSD 1.6I (KNOX-$Revision: 1.20 $) #0: Sun Oct 13 19:57:00 MDT 2002 jim@roc:/wd1/var/tmp/compile/sys/arch/sparc/compile/KNOX sparc
Architecture: sparc
Machine: sparc
>Description:
I wanted to install fresher boot blocks on a second disk on a
sparc 20, but the MI installboot refused to install them if the
secondary boot code was anyplace but root, which of course it
isn't if you're installing on a second disk. I don't know for
sure whether this would also happen on other ports with MI
installboot, but I expect so.
>How-To-Repeat:
Copy the system to an alternative disk, here assumed to have its
root partition on sd2a. Then, in single-user mode:
mount /dev/sd2a /altdisk
cp -p /altdisk/usr/mdec/boot /altdisk/boot
/altdisk/usr/sbin/installboot -v -m sparc /dev/rsd2a /altdisk/usr/mdec/bootxx /altdisk/boot
The response from installboot is:
File system: /dev/rsd2a
File system type: ffs (blocksize 8192, needswap 0)
Primary bootstrap: /altdisk/usr/mdec/bootxx
Secondary bootstrap: /altdisk/boot
installboot: The secondary bootstrap `altdisk/boot' must be in /
installboot: Set bootstrap operation failed
>Fix:
A workaround is to boot with -a and specify the alternative disk
as the root device. This might fail if the kernel and init aren't
compatible, but I guess you can specify an alternative init, too.
But it shouldn't have to be done this way.
The section of the code that does the check (in ffs.c) begins with:
/* The secondary bootstrap must be clearly in /. */
which is wrong, given that one frequently wants to install boot
code on a disk other than the one that was booted (e.g., when
first installing from a floppy). I would recommend either simply
deleting the check or adding a command-line option to override it.
My vote would be for the former. But as long as I can install boot
blocks anywhere I want without having to stand on my head and form
a pretzel, I'll be happy.
>Release-Note:
>Audit-Trail:
>Unformatted: