Use ofpathname in grub-setup on sparc
This commit is contained in:
parent
a9e6ff28d2
commit
6e86896ed8
8 changed files with 26 additions and 29 deletions
|
@ -25,6 +25,13 @@ kernel_img_CFLAGS = $(COMMON_CFLAGS)
|
||||||
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
|
||||||
kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,0x200000,-Bstatic
|
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.
|
# Scripts.
|
||||||
sbin_SCRIPTS = grub-install
|
sbin_SCRIPTS = grub-install
|
||||||
bin_SCRIPTS = grub-mkrescue
|
bin_SCRIPTS = grub-mkrescue
|
||||||
|
|
|
@ -50,6 +50,7 @@ grub_mkimage_SOURCES = util/grub-mkrawimage.c util/misc.c \
|
||||||
# For grub-setup.
|
# For grub-setup.
|
||||||
util/sparc64/ieee1275/grub-setup.c_DEPENDENCIES = grub_setup_init.h
|
util/sparc64/ieee1275/grub-setup.c_DEPENDENCIES = grub_setup_init.h
|
||||||
grub_setup_SOURCES = util/sparc64/ieee1275/grub-setup.c util/hostdisk.c \
|
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 \
|
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/err.c kern/misc.c kern/parser.c kern/partition.c \
|
||||||
kern/file.c kern/fs.c kern/env.c kern/list.c \
|
kern/file.c kern/fs.c kern/env.c kern/list.c \
|
||||||
|
|
|
@ -20,8 +20,11 @@
|
||||||
#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER
|
#ifndef GRUB_BIOSDISK_MACHINE_UTIL_HEADER
|
||||||
#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1
|
#define GRUB_BIOSDISK_MACHINE_UTIL_HEADER 1
|
||||||
|
|
||||||
|
#include <grub/disk.h>
|
||||||
|
|
||||||
void grub_util_biosdisk_init (const char *dev_map);
|
void grub_util_biosdisk_init (const char *dev_map);
|
||||||
void grub_util_biosdisk_fini (void);
|
void grub_util_biosdisk_fini (void);
|
||||||
char *grub_util_biosdisk_get_grub_dev (const char *os_dev);
|
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 */
|
#endif /* ! GRUB_BIOSDISK_MACHINE_UTIL_HEADER */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef GRUB_OFPATH_MACHINE_UTIL_HEADER
|
#ifndef GRUB_OFPATH_MACHINE_UTIL_HEADER
|
||||||
#define GRUB_OFPATH_MACHINE_UTIL_HEADER 1
|
#define GRUB_OFPATH_MACHINE_UTIL_HEADER 1
|
||||||
|
|
||||||
char *grub_util_devname_to_ofpath (char *devname);
|
char *grub_util_devname_to_ofpath (const char *devname);
|
||||||
|
|
||||||
#endif /* ! GRUB_OFPATH_MACHINE_UTIL_HEADER */
|
#endif /* ! GRUB_OFPATH_MACHINE_UTIL_HEADER */
|
||||||
|
|
|
@ -1352,3 +1352,9 @@ grub_util_biosdisk_get_grub_dev (const char *os_dev)
|
||||||
return make_device_name (drive, -1, -1);
|
return make_device_name (drive, -1, -1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
grub_util_biosdisk_get_osdev (grub_disk_t disk)
|
||||||
|
{
|
||||||
|
return map[disk->id].device;
|
||||||
|
}
|
||||||
|
|
|
@ -368,7 +368,7 @@ strip_trailing_digits (const char *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
grub_util_devname_to_ofpath (char *devname)
|
grub_util_devname_to_ofpath (const char *devname)
|
||||||
{
|
{
|
||||||
char *name_buf, *device, *devnode, *devicenode, *ofpath;
|
char *name_buf, *device, *devnode, *devicenode, *ofpath;
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <grub/term.h>
|
#include <grub/term.h>
|
||||||
#include <grub/util/raid.h>
|
#include <grub/util/raid.h>
|
||||||
#include <grub/util/lvm.h>
|
#include <grub/util/lvm.h>
|
||||||
|
#include <grub/util/ofpath.h>
|
||||||
|
|
||||||
#include <grub_setup_init.h>
|
#include <grub_setup_init.h>
|
||||||
|
|
||||||
|
@ -103,28 +104,6 @@ grub_refresh (void)
|
||||||
fflush (stdout);
|
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
|
static void
|
||||||
setup (const char *prefix, const char *dir,
|
setup (const char *prefix, const char *dir,
|
||||||
const char *boot_file, const char *core_file,
|
const char *boot_file, const char *core_file,
|
||||||
|
@ -195,8 +174,6 @@ setup (const char *prefix, const char *dir,
|
||||||
last_length = length;
|
last_length = length;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest_ofpath = compute_dest_ofpath (dest);
|
|
||||||
|
|
||||||
/* Read the boot image by the OS service. */
|
/* Read the boot image by the OS service. */
|
||||||
boot_path = grub_util_get_path (dir, boot_file);
|
boot_path = grub_util_get_path (dir, boot_file);
|
||||||
boot_size = grub_util_get_image_size (boot_path);
|
boot_size = grub_util_get_image_size (boot_path);
|
||||||
|
@ -229,8 +206,7 @@ setup (const char *prefix, const char *dir,
|
||||||
+ GRUB_DISK_SECTOR_SIZE
|
+ GRUB_DISK_SECTOR_SIZE
|
||||||
- sizeof (*block));
|
- sizeof (*block));
|
||||||
|
|
||||||
grub_util_info ("root is `%s', dest is `%s', and dest_ofpath is `%s'",
|
grub_util_info ("root is `%s', dest is `%s'", root, dest);
|
||||||
root, dest, dest_ofpath);
|
|
||||||
|
|
||||||
/* Open the root device and the destination device. */
|
/* Open the root device and the destination device. */
|
||||||
grub_util_info ("Opening root");
|
grub_util_info ("Opening root");
|
||||||
|
@ -243,6 +219,11 @@ setup (const char *prefix, const char *dir,
|
||||||
if (! dest_dev)
|
if (! dest_dev)
|
||||||
grub_util_error ("%s", grub_errmsg);
|
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);
|
grub_util_info ("setting the root device to `%s'", root);
|
||||||
if (grub_env_set ("root", root) != GRUB_ERR_NONE)
|
if (grub_env_set ("root", root) != GRUB_ERR_NONE)
|
||||||
grub_util_error ("%s", grub_errmsg);
|
grub_util_error ("%s", grub_errmsg);
|
||||||
|
@ -449,7 +430,6 @@ init_info (struct grub_setup_info *gp)
|
||||||
gp->dev_map = NULL;
|
gp->dev_map = NULL;
|
||||||
gp->root_dev = NULL;
|
gp->root_dev = NULL;
|
||||||
gp->prefix = NULL;
|
gp->prefix = NULL;
|
||||||
gp->dest_dev = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in a new issue