kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x200000,-Bstatic
+# Utilities.
+sbin_UTILITIES = grub-ofpathname
+
+# For grub-ofpathname.
+grub_ofpathname_SOURCES = util/ieee1275/grub-ofpathname.c \
+ util/ieee1275/ofpath.c util/misc.c gnulib/progname.c
+
# Scripts.
sbin_SCRIPTS = grub-install
bin_SCRIPTS = grub-mkrescue
# For grub-setup.
util/sparc64/ieee1275/grub-setup.c_DEPENDENCIES = grub_setup_init.h
grub_setup_SOURCES = util/sparc64/ieee1275/grub-setup.c util/hostdisk.c \
+ util/ieee1275/ofpath.c \
util/misc.c util/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c kern/parser.c kern/partition.c \
kern/file.c kern/fs.c kern/env.c kern/list.c \
#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER
#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1
+#include <grub/disk.h>
+
void grub_util_biosdisk_init (const char *dev_map);
void grub_util_biosdisk_fini (void);
char *grub_util_biosdisk_get_grub_dev (const char *os_dev);
+const char *grub_util_biosdisk_get_osdev (grub_disk_t disk);
#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */
#include <grub/term.h>
#include <grub/util/raid.h>
#include <grub/util/lvm.h>
+#include <grub/util/ofpath.h>
#include <grub_setup_init.h>
fflush (stdout);
}
-static char *compute_dest_ofpath (const char *dest)
-{
- int len = strlen (dest);
- char *res, *p, c;
-
- res = xmalloc (len);
- p = res;
- while ((c = *dest++) != '\0')
- {
- if (c == '\\' && *dest == ',')
- {
- *p++ = ',';
- dest++;
- }
- else
- *p++ = c;
- }
- *p++ = '\0';
-
- return res;
-}
-
static void
setup (const char *prefix, const char *dir,
const char *boot_file, const char *core_file,
last_length = length;
}
- dest_ofpath = compute_dest_ofpath (dest);
-
/* Read the boot image by the OS service. */
boot_path = grub_util_get_path (dir, boot_file);
boot_size = grub_util_get_image_size (boot_path);
+ GRUB_DISK_SECTOR_SIZE
- sizeof (*block));
- grub_util_info ("root is `%s', dest is `%s', and dest_ofpath is `%s'",
- root, dest, dest_ofpath);
+ grub_util_info ("root is `%s', dest is `%s'", root, dest);
/* Open the root device and the destination device. */
grub_util_info ("Opening root");
if (! dest_dev)
grub_util_error ("%s", grub_errmsg);
+ dest_ofpath
+ = grub_util_devname_to_ofpath (grub_util_biosdisk_get_osdev (dest_dev->disk));
+
+ grub_util_info ("dest_ofpath is `%s'", dest_ofpath);
+
grub_util_info ("setting the root device to `%s'", root);
if (grub_env_set ("root", root) != GRUB_ERR_NONE)
grub_util_error ("%s", grub_errmsg);
gp->dev_map = NULL;
gp->root_dev = NULL;
gp->prefix = NULL;
- gp->dest_dev = NULL;
}
static int