2008-08-18 Robert Millan <rmh@aybabtu.com>
* include/grub/i386/linux.h (LINUX_LOADER_ID_LILO) (LINUX_LOADER_ID_LOADLIN, LINUX_LOADER_ID_BOOTSECT) (LINUX_LOADER_ID_SYSLINUX, LINUX_LOADER_ID_ETHERBOOT) (LINUX_LOADER_ID_ELILO, LINUX_LOADER_ID_GRUB, LINUX_LOADER_ID_UBOOT) (LINUX_LOADER_ID_XEN, LINUX_LOADER_ID_GUJIN, LINUX_LOADER_ID_QEMU): New macros. (GRUB_LINUX_CL_OFFSET, GRUB_LINUX_CL_END_OFFSET): Move from here ... * loader/i386/pc/linux.c (GRUB_LINUX_CL_OFFSET) (GRUB_LINUX_CL_END_OFFSET): ... to here. * loader/i386/efi/linux.c (GRUB_EFI_CL_OFFSET): Rename to ... (GRUB_LINUX_CL_OFFSET): ... this. Update all users. (GRUB_EFI_CL_END_OFFSET): Rename to ... (GRUB_LINUX_CL_END_OFFSET): ... this. Update all users. (grub_rescue_cmd_linux): Macroify `type_of_loader' initialization. Initialize `params->video_cursor_x' and `params->video_cursor_y' portably using grub_getxy(). Replace `-EFI' with `-bzImage' in boot message.
This commit is contained in:
parent
38487ddbd2
commit
7f42f83e87
4 changed files with 45 additions and 13 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,23 @@
|
||||||
|
2008-08-18 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
|
* include/grub/i386/linux.h (LINUX_LOADER_ID_LILO)
|
||||||
|
(LINUX_LOADER_ID_LOADLIN, LINUX_LOADER_ID_BOOTSECT)
|
||||||
|
(LINUX_LOADER_ID_SYSLINUX, LINUX_LOADER_ID_ETHERBOOT)
|
||||||
|
(LINUX_LOADER_ID_ELILO, LINUX_LOADER_ID_GRUB, LINUX_LOADER_ID_UBOOT)
|
||||||
|
(LINUX_LOADER_ID_XEN, LINUX_LOADER_ID_GUJIN, LINUX_LOADER_ID_QEMU):
|
||||||
|
New macros.
|
||||||
|
(GRUB_LINUX_CL_OFFSET, GRUB_LINUX_CL_END_OFFSET): Move from here ...
|
||||||
|
* loader/i386/pc/linux.c (GRUB_LINUX_CL_OFFSET)
|
||||||
|
(GRUB_LINUX_CL_END_OFFSET): ... to here.
|
||||||
|
* loader/i386/efi/linux.c (GRUB_EFI_CL_OFFSET): Rename to ...
|
||||||
|
(GRUB_LINUX_CL_OFFSET): ... this. Update all users.
|
||||||
|
(GRUB_EFI_CL_END_OFFSET): Rename to ...
|
||||||
|
(GRUB_LINUX_CL_END_OFFSET): ... this. Update all users.
|
||||||
|
(grub_rescue_cmd_linux): Macroify `type_of_loader' initialization.
|
||||||
|
Initialize `params->video_cursor_x' and `params->video_cursor_y'
|
||||||
|
portably using grub_getxy().
|
||||||
|
Replace `-EFI' with `-bzImage' in boot message.
|
||||||
|
|
||||||
2008-08-17 Robert Millan <rmh@aybabtu.com>
|
2008-08-17 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
* include/grub/x86_64/kernel.h: New file (<grub/i386/kernel.h> stub).
|
* include/grub/x86_64/kernel.h: New file (<grub/i386/kernel.h> stub).
|
||||||
|
|
|
@ -39,8 +39,6 @@
|
||||||
#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE
|
#define GRUB_LINUX_VID_MODE_EXTENDED 0xFFFE
|
||||||
#define GRUB_LINUX_VID_MODE_ASK 0xFFFD
|
#define GRUB_LINUX_VID_MODE_ASK 0xFFFD
|
||||||
|
|
||||||
#define GRUB_LINUX_CL_OFFSET 0x9000
|
|
||||||
#define GRUB_LINUX_CL_END_OFFSET 0x90FF
|
|
||||||
#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100
|
#define GRUB_LINUX_SETUP_MOVE_SIZE 0x9100
|
||||||
#define GRUB_LINUX_CL_MAGIC 0xA33F
|
#define GRUB_LINUX_CL_MAGIC 0xA33F
|
||||||
|
|
||||||
|
@ -104,6 +102,17 @@ struct linux_kernel_header
|
||||||
grub_uint16_t start_sys; /* The load-low segment (obsolete) */
|
grub_uint16_t start_sys; /* The load-low segment (obsolete) */
|
||||||
grub_uint16_t kernel_version; /* Points to kernel version string */
|
grub_uint16_t kernel_version; /* Points to kernel version string */
|
||||||
grub_uint8_t type_of_loader; /* Boot loader identifier */
|
grub_uint8_t type_of_loader; /* Boot loader identifier */
|
||||||
|
#define LINUX_LOADER_ID_LILO 0x0
|
||||||
|
#define LINUX_LOADER_ID_LOADLIN 0x1
|
||||||
|
#define LINUX_LOADER_ID_BOOTSECT 0x2
|
||||||
|
#define LINUX_LOADER_ID_SYSLINUX 0x3
|
||||||
|
#define LINUX_LOADER_ID_ETHERBOOT 0x4
|
||||||
|
#define LINUX_LOADER_ID_ELILO 0x5
|
||||||
|
#define LINUX_LOADER_ID_GRUB 0x7
|
||||||
|
#define LINUX_LOADER_ID_UBOOT 0x8
|
||||||
|
#define LINUX_LOADER_ID_XEN 0x9
|
||||||
|
#define LINUX_LOADER_ID_GUJIN 0xa
|
||||||
|
#define LINUX_LOADER_ID_QEMU 0xb
|
||||||
grub_uint8_t loadflags; /* Boot protocol option flags */
|
grub_uint8_t loadflags; /* Boot protocol option flags */
|
||||||
grub_uint16_t setup_move_size; /* Move to high memory size */
|
grub_uint16_t setup_move_size; /* Move to high memory size */
|
||||||
grub_uint32_t code32_start; /* Boot loader hook */
|
grub_uint32_t code32_start; /* Boot loader hook */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* GRUB -- GRand Unified Bootloader
|
* GRUB -- GRand Unified Bootloader
|
||||||
* Copyright (C) 2006,2007 Free Software Foundation, Inc.
|
* Copyright (C) 2006,2007,2008 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* GRUB is free software: you can redistribute it and/or modify
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -33,8 +33,8 @@
|
||||||
#include <grub/efi/uga_draw.h>
|
#include <grub/efi/uga_draw.h>
|
||||||
#include <grub/pci.h>
|
#include <grub/pci.h>
|
||||||
|
|
||||||
#define GRUB_EFI_CL_OFFSET 0x1000
|
#define GRUB_LINUX_CL_OFFSET 0x1000
|
||||||
#define GRUB_EFI_CL_END_OFFSET 0x2000
|
#define GRUB_LINUX_CL_END_OFFSET 0x2000
|
||||||
|
|
||||||
#define NEXT_MEMORY_DESCRIPTOR(desc, size) \
|
#define NEXT_MEMORY_DESCRIPTOR(desc, size) \
|
||||||
((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size)))
|
((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size)))
|
||||||
|
@ -166,7 +166,7 @@ allocate_pages (grub_size_t prot_size)
|
||||||
grub_size_t real_size;
|
grub_size_t real_size;
|
||||||
|
|
||||||
/* Make sure that each size is aligned to a page boundary. */
|
/* Make sure that each size is aligned to a page boundary. */
|
||||||
real_size = GRUB_EFI_CL_END_OFFSET;
|
real_size = GRUB_LINUX_CL_END_OFFSET;
|
||||||
prot_size = page_align (prot_size);
|
prot_size = page_align (prot_size);
|
||||||
mmap_size = find_mmap_size ();
|
mmap_size = find_mmap_size ();
|
||||||
|
|
||||||
|
@ -634,7 +634,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
params = (struct linux_kernel_params *) real_mode_mem;
|
params = (struct linux_kernel_params *) real_mode_mem;
|
||||||
grub_memset (params, 0, GRUB_EFI_CL_END_OFFSET);
|
grub_memset (params, 0, GRUB_LINUX_CL_END_OFFSET);
|
||||||
grub_memcpy (¶ms->setup_sects, &lh.setup_sects, sizeof (lh) - 0x1F1);
|
grub_memcpy (¶ms->setup_sects, &lh.setup_sects, sizeof (lh) - 0x1F1);
|
||||||
|
|
||||||
params->ps_mouse = params->padding10 = 0;
|
params->ps_mouse = params->padding10 = 0;
|
||||||
|
@ -647,7 +647,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX Linux assumes that only elilo can boot Linux on EFI!!! */
|
/* XXX Linux assumes that only elilo can boot Linux on EFI!!! */
|
||||||
params->type_of_loader = 0x50;
|
params->type_of_loader = (LINUX_LOADER_ID_ELILO << 4);
|
||||||
|
|
||||||
params->cl_magic = GRUB_LINUX_CL_MAGIC;
|
params->cl_magic = GRUB_LINUX_CL_MAGIC;
|
||||||
params->cl_offset = 0x1000;
|
params->cl_offset = 0x1000;
|
||||||
|
@ -664,8 +664,8 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
params->ext_mem = ((32 * 0x100000) >> 10);
|
params->ext_mem = ((32 * 0x100000) >> 10);
|
||||||
params->alt_mem = ((32 * 0x100000) >> 10);
|
params->alt_mem = ((32 * 0x100000) >> 10);
|
||||||
|
|
||||||
params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column;
|
params->video_cursor_x = grub_getxy () >> 8;
|
||||||
params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row;
|
params->video_cursor_y = grub_getxy () & 0xff;
|
||||||
params->video_page = 0; /* ??? */
|
params->video_page = 0; /* ??? */
|
||||||
params->video_mode = grub_efi_system_table->con_out->mode->mode;
|
params->video_mode = grub_efi_system_table->con_out->mode->mode;
|
||||||
params->video_width = (grub_getwh () >> 8);
|
params->video_width = (grub_getwh () >> 8);
|
||||||
|
@ -758,7 +758,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
grub_file_seek (file, real_size + GRUB_DISK_SECTOR_SIZE);
|
grub_file_seek (file, real_size + GRUB_DISK_SECTOR_SIZE);
|
||||||
|
|
||||||
/* XXX there is no way to know if the kernel really supports EFI. */
|
/* XXX there is no way to know if the kernel really supports EFI. */
|
||||||
grub_printf (" [Linux-EFI, setup=0x%x, size=0x%x]\n",
|
grub_printf (" [Linux-bzImage, setup=0x%x, size=0x%x]\n",
|
||||||
(unsigned) real_size, (unsigned) prot_size);
|
(unsigned) real_size, (unsigned) prot_size);
|
||||||
|
|
||||||
/* Detect explicitly specified memory size, if any. */
|
/* Detect explicitly specified memory size, if any. */
|
||||||
|
@ -814,7 +814,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Specify the boot file. */
|
/* Specify the boot file. */
|
||||||
dest = grub_stpcpy ((char *) real_mode_mem + GRUB_EFI_CL_OFFSET,
|
dest = grub_stpcpy ((char *) real_mode_mem + GRUB_LINUX_CL_OFFSET,
|
||||||
"BOOT_IMAGE=");
|
"BOOT_IMAGE=");
|
||||||
dest = grub_stpcpy (dest, argv[0]);
|
dest = grub_stpcpy (dest, argv[0]);
|
||||||
|
|
||||||
|
@ -822,7 +822,7 @@ grub_rescue_cmd_linux (int argc, char *argv[])
|
||||||
for (i = 1;
|
for (i = 1;
|
||||||
i < argc
|
i < argc
|
||||||
&& dest + grub_strlen (argv[i]) + 1 < ((char *) real_mode_mem
|
&& dest + grub_strlen (argv[i]) + 1 < ((char *) real_mode_mem
|
||||||
+ GRUB_EFI_CL_END_OFFSET);
|
+ GRUB_LINUX_CL_END_OFFSET);
|
||||||
i++)
|
i++)
|
||||||
{
|
{
|
||||||
*dest++ = ' ';
|
*dest++ = ' ';
|
||||||
|
|
|
@ -31,6 +31,9 @@
|
||||||
#include <grub/dl.h>
|
#include <grub/dl.h>
|
||||||
#include <grub/cpu/linux.h>
|
#include <grub/cpu/linux.h>
|
||||||
|
|
||||||
|
#define GRUB_LINUX_CL_OFFSET 0x9000
|
||||||
|
#define GRUB_LINUX_CL_END_OFFSET 0x90FF
|
||||||
|
|
||||||
static grub_dl_t my_mod;
|
static grub_dl_t my_mod;
|
||||||
|
|
||||||
static grub_size_t linux_mem_size;
|
static grub_size_t linux_mem_size;
|
||||||
|
|
Loading…
Reference in a new issue