diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/boot/bootadm/bootadm.c | 18 | ||||
-rw-r--r-- | usr/src/cmd/boot/bootadm/bootadm.h | 6 | ||||
-rw-r--r-- | usr/src/cmd/boot/bootadm/message.h | 10 |
3 files changed, 22 insertions, 12 deletions
diff --git a/usr/src/cmd/boot/bootadm/bootadm.c b/usr/src/cmd/boot/bootadm/bootadm.c index 97d1c74829..7ad3b1bb3d 100644 --- a/usr/src/cmd/boot/bootadm/bootadm.c +++ b/usr/src/cmd/boot/bootadm/bootadm.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -789,7 +789,7 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) (void) snprintf(path, sizeof (path), "%s", GRUB_slice); } - if (stat(path, &sb) == 0) + if (bam_verbose && stat(path, &sb) == 0) bam_error(GRUB_SLICE_FILE_EXISTS, path); if (is_zfs(menu_root)) { @@ -2624,6 +2624,12 @@ kernel_parser(entry_t *entry, char *cmd, char *arg, int linenum) } else if (!(entry->flags & (BAM_ENTRY_BOOTADM|BAM_ENTRY_LU))) { BAM_DPRINTF((D_SET_HAND_KERNEL, fcn, arg)); return (BAM_ERROR); + } else if (strncmp(arg, KERNEL_PREFIX, strlen(KERNEL_PREFIX)) == 0 && + strstr(arg, UNIX_SPACE)) { + entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_32BIT; + } else if (strncmp(arg, KERNEL_PREFIX, strlen(KERNEL_PREFIX)) == 0 && + strstr(arg, AMD_UNIX_SPACE)) { + entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_64BIT; } else { BAM_DPRINTF((D_IS_UNKNOWN_KERNEL, fcn, arg)); bam_error(UNKNOWN_KERNEL_LINE, linenum); @@ -3383,7 +3389,6 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) char *ctdname = strstr(osdev, "dsk/"); char linebuf[PATH_MAX]; FILE *fp; - const char *fcn = "get_grubroot()"; INJECT_ERROR1("GRUBROOT_INVALID_OSDEV", ctdname = NULL); if (ctdname == NULL) { @@ -3393,7 +3398,7 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) if (menu_root && !menu_on_bootdisk(osroot, menu_root)) { /* menu bears no resemblance to our reality */ - bam_error(CANNOT_GRUBROOT_BOOTDISK, fcn, osdev); + bam_error(CANNOT_GRUBROOT_BOOTDISK, osdev); return (NULL); } @@ -3429,7 +3434,7 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) INJECT_ERROR1("GRUBROOT_BIOSDEV_FAIL", found = 0); if (found == 0) { - bam_error(BIOSDEV_FAIL, osdev); + bam_error(BIOSDEV_SKIP, osdev); return (NULL); } @@ -6011,7 +6016,8 @@ is_bootdisk(char *osroot, char *physical) INJECT_ERROR1("IS_BOOTDISK_GRUBROOT", grubroot = NULL); if (grubroot == NULL) { - bam_error(NO_GRUBROOT_FOR_DISK, fcn, physical); + if (bam_verbose) + bam_error(NO_GRUBROOT_FOR_DISK, physical); return (0); } ret = grubroot[3] == '0'; diff --git a/usr/src/cmd/boot/bootadm/bootadm.h b/usr/src/cmd/boot/bootadm/bootadm.h index d7edd054b1..9bd3f85bd2 100644 --- a/usr/src/cmd/boot/bootadm/bootadm.h +++ b/usr/src/cmd/boot/bootadm/bootadm.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -220,6 +220,10 @@ extern int is_sparc(void); "/boot/platform/i86pc/kernel/$ISADIR/unix" #define DIRECT_BOOT_FAILSAFE_LINE DIRECT_BOOT_FAILSAFE_KERNEL " -s" #define DIRECT_BOOT_KERNEL_ZFS DIRECT_BOOT_KERNEL " " ZFS_BOOT +#define DIRECT_BOOT_PREFIX "/platform/i86pc/" +#define KERNEL_PREFIX "/platform/i86pc/" +#define AMD_UNIX_SPACE "/amd64/unix " +#define UNIX_SPACE "/unix " /* xVM kernels */ #define XEN_KERNEL_SUBSTR "xen.gz" diff --git a/usr/src/cmd/boot/bootadm/message.h b/usr/src/cmd/boot/bootadm/message.h index 699eadead6..bf75aad16e 100644 --- a/usr/src/cmd/boot/bootadm/message.h +++ b/usr/src/cmd/boot/bootadm/message.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -159,8 +159,8 @@ extern "C" { #define DISKMAP_FAIL \ gettext("create_diskmap command failed for OS root: %s.\n") -#define BIOSDEV_FAIL \ - gettext("biosdev command failed for disk: %s.\n") +#define BIOSDEV_SKIP \ + gettext("not using biosdev command for disk: %s.\n") #define CHECK_NOT_SUPPORTED \ gettext("the check option is not supported with subcmd: %s\n") @@ -444,10 +444,10 @@ gettext("Found or created GRUB signature %s for %s\n") #define RDONLY_TEST_ERROR gettext("error during read-only test on %s: %s\n") #define CANNOT_GRUBROOT_BOOTDISK \ - gettext("%s: cannot get (hd?,?,?) for menu. menu not on bootdisk: %s\n") + gettext("cannot get (hd?,?,?) for menu. menu not on bootdisk: %s\n") #define NO_GRUBROOT_FOR_DISK \ -gettext("%s: cannot determine BIOS disk ID 'hd?' for disk: %s\n") + gettext("cannot determine BIOS disk ID 'hd?' for disk: %s\n") #define CACHE_MNTTAB_FAIL gettext("%s: failed to cache /etc/mnttab\n") |