2008-06-15 Robert Millan <rmh@aybabtu.com>
* util/i386/pc/grub-mkimage.c (generate_image): If we included a drive in our prefix, set install_{dos,bsd}_part = -2 to indicate this can be skipped later. (main): If a memdisk was requested, add "(memdisk)" drive explicitly to the beginning of the prefix. * kern/i386/pc/init.c (make_install_device): Remove memdisk check. It is assumed that if we have a memdisk, grub-mkimage has set grub_prefix to include the "(memdisk)" drive in it.
This commit is contained in:
parent
a7cbd45a07
commit
a920728493
3 changed files with 28 additions and 6 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2008-06-15 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
|
* util/i386/pc/grub-mkimage.c (generate_image): If we included a drive
|
||||||
|
in our prefix, set install_{dos,bsd}_part = -2 to indicate this can be
|
||||||
|
skipped later.
|
||||||
|
(main): If a memdisk was requested, add "(memdisk)" drive explicitly to
|
||||||
|
the beginning of the prefix.
|
||||||
|
|
||||||
|
* kern/i386/pc/init.c (make_install_device): Remove memdisk check.
|
||||||
|
It is assumed that if we have a memdisk, grub-mkimage has set
|
||||||
|
grub_prefix to include the "(memdisk)" drive in it.
|
||||||
|
|
||||||
2008-06-15 Robert Millan <rmh@aybabtu.com>
|
2008-06-15 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
* term/i386/pc/console.c [GRUB_MACHINE_LINUXBIOS] (grub_console_init):
|
* term/i386/pc/console.c [GRUB_MACHINE_LINUXBIOS] (grub_console_init):
|
||||||
|
|
|
@ -64,12 +64,7 @@ make_install_device (void)
|
||||||
/* XXX: This should be enough. */
|
/* XXX: This should be enough. */
|
||||||
char dev[100];
|
char dev[100];
|
||||||
|
|
||||||
if (grub_memdisk_image_size)
|
if (grub_install_dos_part != -2)
|
||||||
{
|
|
||||||
grub_sprintf (dev, "(memdisk)%s", grub_prefix);
|
|
||||||
grub_strcpy (grub_prefix, dev);
|
|
||||||
}
|
|
||||||
else if (grub_install_dos_part != -2)
|
|
||||||
{
|
{
|
||||||
/* If the root drive is not set explicitly, assume that it is identical
|
/* If the root drive is not set explicitly, assume that it is identical
|
||||||
to the boot drive. */
|
to the boot drive. */
|
||||||
|
|
|
@ -182,6 +182,16 @@ generate_image (const char *dir, char *prefix, FILE *out, char *mods[], char *me
|
||||||
*((grub_uint32_t *) (core_img + GRUB_KERNEL_MACHINE_COMPRESSED_SIZE))
|
*((grub_uint32_t *) (core_img + GRUB_KERNEL_MACHINE_COMPRESSED_SIZE))
|
||||||
= grub_cpu_to_le32 (core_size - GRUB_KERNEL_MACHINE_RAW_SIZE);
|
= grub_cpu_to_le32 (core_size - GRUB_KERNEL_MACHINE_RAW_SIZE);
|
||||||
|
|
||||||
|
/* If we included a drive in our prefix, let GRUB know it doesn't have to
|
||||||
|
prepend the drive told by BIOS. */
|
||||||
|
if (prefix[0] == '(')
|
||||||
|
{
|
||||||
|
*((grub_int32_t *) (core_img + GRUB_KERNEL_MACHINE_INSTALL_DOS_PART))
|
||||||
|
= grub_cpu_to_le32 (-2);
|
||||||
|
*((grub_int32_t *) (core_img + GRUB_KERNEL_MACHINE_INSTALL_BSD_PART))
|
||||||
|
= grub_cpu_to_le32 (-2);
|
||||||
|
}
|
||||||
|
|
||||||
if (core_size > GRUB_MEMORY_MACHINE_UPPER - GRUB_MEMORY_MACHINE_LINK_ADDR)
|
if (core_size > GRUB_MEMORY_MACHINE_UPPER - GRUB_MEMORY_MACHINE_LINK_ADDR)
|
||||||
grub_util_error ("Core image is too big (%p > %p)\n", core_size,
|
grub_util_error ("Core image is too big (%p > %p)\n", core_size,
|
||||||
GRUB_MEMORY_MACHINE_UPPER - GRUB_MEMORY_MACHINE_LINK_ADDR);
|
GRUB_MEMORY_MACHINE_UPPER - GRUB_MEMORY_MACHINE_LINK_ADDR);
|
||||||
|
@ -278,6 +288,11 @@ main (int argc, char *argv[])
|
||||||
free (memdisk);
|
free (memdisk);
|
||||||
|
|
||||||
memdisk = xstrdup (optarg);
|
memdisk = xstrdup (optarg);
|
||||||
|
|
||||||
|
if (prefix)
|
||||||
|
free (prefix);
|
||||||
|
|
||||||
|
prefix = xstrdup ("(memdisk)/boot/grub");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
|
|
Loading…
Reference in a new issue