summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/boot/bootadm/bootadm.c18
-rw-r--r--usr/src/cmd/boot/bootadm/bootadm.h6
-rw-r--r--usr/src/cmd/boot/bootadm/message.h10
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")