* stage2/boot.c: Imply --no-mem-option for Linux kernels with

protocol version 2.03 and above (Linux 2.4.18 and newer).
This commit is contained in:
proski 2004-03-29 14:54:30 +00:00
parent 4f29a8af45
commit 065f6e0a20
4 changed files with 23 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2004-03-28 Pavel Roskin <proski@gnu.org>
* stage2/boot.c: Imply --no-mem-option for Linux kernels with
protocol version 2.03 and above (Linux 2.4.18 and newer).
2004-03-27 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/char_io.c [!GRUB_UTIL] (memcpy): New function. It is

1
NEWS
View file

@ -6,6 +6,7 @@ New:
* Support ATARAID for Linux in the grub shell and grub-install.
* Add CDROM support for El Torito with no emulation mode. You can use
(cd) as a CDROM drive in the config file.
* Option --no-mem-option is implied for Linux 2.4.18 and newer.
New in 0.94 - 2004-01-25:
* Support building on x86-64 with gcc -m32.

View file

@ -2735,7 +2735,7 @@ a kernel type in the other cases, quite safely.
The option @option{--no-mem-option} is effective only for Linux. If the
option is specified, GRUB doesn't pass the option @option{mem=} to the
kernel.
kernel. This option is implied for Linux kernels 2.4.18 and newer.
@end deffn

View file

@ -407,10 +407,24 @@ load_image (char *kernel, char *arg, kernel_t suggested_type,
while (dest < linux_data_tmp_addr + LINUX_CL_END_OFFSET && *src)
*(dest++) = *(src++);
/* Add a mem option automatically only if the user doesn't
specify it explicitly. */
/* Old Linux kernels have problems determining the amount of
the available memory. To work around this problem, we add
the "mem" option to the kernel command line. This has its
own drawbacks because newer kernels can determine the
memory map more accurately. Boot protocol 2.03, which
appeared in Linux 2.4.18, provides a pointer to the kernel
version string, so we could check it. But since kernel
2.4.18 and newer are known to detect memory reliably, boot
protocol 2.03 already implies that the kernel is new
enough. The "mem" option is added if neither of the
following conditions is met:
1) The "mem" option is already present.
2) The "kernel" command is used with "--no-mem-option".
3) GNU GRUB is configured not to pass the "mem" option.
4) The kernel supports boot protocol 2.03 or newer. */
if (! grub_strstr (arg, "mem=")
&& ! (load_flags & KERNEL_LOAD_NO_MEM_OPTION)
&& lh->version < 0x0203 /* kernel version < 2.4.18 */
&& dest + 15 < linux_data_tmp_addr + LINUX_CL_END_OFFSET)
{
*dest++ = ' ';