James,
(comments inline)
Ok, can I assume, since you mention you're running s10 fcs, that you
have patch 118844-30 (5.10 x86 kernel patch) installed?
----
I do not believe I have that patch installed.  But I see from the README that it has the multiboot file I need.
----

Further, what *exactly* do you mean by this sentence

"I am at a loss of how to generate the grub files"

Which files are you referring to?
----
There are several files in /boot which I don't know how to generate, but I assume bootadm does this.
----

That specific message (not a GRUB boot instance) comes from this part
of the bootadm code:


usr/src/boot/bootadm/bootadm.c:


static error_t
update_archive(char *root, char *opt)
{
error_t ret;

assert(root);
assert(opt == NULL);

/*
* root must belong to a GRUB boot OS,
* don't care on sparc except for diskless clients
*/
if (!is_newboot(root)) {
/*
* Emit message only if not in context of update_all.
* If in update_all, emit only if verbose flag is set.
*/
if (!bam_update_all || bam_verbose)
bam_print(NOT_GRUB_BOOT, root);
return (BAM_SUCCESS);
}


the is_newboot() function is


static int
is_newboot(char *root)
{
char path[PATH_MAX];
struct stat sb;

/*
* We can't boot without MULTI_BOOT
*/
(void) snprintf(path, sizeof (path), "%s%s", root, MULTI_BOOT);
if (stat(path, &sb) == -1) {
if (bam_verbose)
bam_print(FILE_MISS, path);
return (0);
}

/*
* We can't generate archive without GRUB_DIR
*/
(void) snprintf(path, sizeof (path), "%s%s", root, GRUB_DIR);
if (stat(path, &sb) == -1) {
if (bam_verbose)
bam_print(DIR_MISS, path);
return (0);
}

return (1);
}



So a quick search for GRUB_DIR and MULTI_BOOT in the source for their
definitions reveals

bootadm.c:#define GRUB_DIR "/boot/grub"
bootadm.c:#define MULTI_BOOT "/platform/i86pc/multiboot"


so if you do not have a $ALTROOT/boot/grub directory, and you do not have a
file called $ALTROOT/platform/i86pc/multiboot then the is_newboot() check
will fail.

----
OK, that makes sense.
----

Did you ever have grub working on this system with Solaris?
----
My box was built from the original s10 which had the old solaris boot mechanism, I don't think this was released externally.  I tried live upgrade, but to make a long story short, I rebooted it and the solaris boot started saying my root slice is invalid.  I fsck'd the disks and everything was clean, and all the data is there.  So, I believe once I get the grub working everything will come up.

Do you have any idea how I can add that patch to the alternate root (I see it has the multiboot file), or should I just copy /platform/i86pc/multiboot from another x86 machine then install the patch after it is up?

thanks for the help!
_______________________________________________
opensolaris-discuss mailing list
[email protected]

Reply via email to