Finished basic loading support.

This commit is contained in:
gord 1999-03-23 14:28:59 +00:00
parent 3688d873d4
commit eea6c34440
6 changed files with 50 additions and 24 deletions

View file

@ -1,3 +1,11 @@
1999-03-22 Gordon Matzigkeit <gord@trick.fig.org>
* shared_src/cmdline.c (enter_cmdline): Check the return value of
set_device in the `root' command.
* shared_src/char_io.c (memcheck): Special-case cur_part_desc and
reenable memory checking.
1999-03-21 Gordon Matzigkeit <gord@trick.fig.org>
* shared_src/boot.c (load_image): Make sure we use the mapped

View file

@ -15,6 +15,11 @@ edit configuration files or rerun a special installation program.
NOTE: GRUB does not yet have a simple installation mechanism, but
we're working on this, so please don't report it as a bug. Until
then, read the documentation (starting with docs/grub.html or
docs/install.html), and use the binary files in /usr/share/grub.
docs/install.html), and copy the binary files in /share/grub/$(HWARCH)
to /boot/grub.
WARNING: Never use the binary files in /share/grub directly
(i.e. without first copying them to /boot/grub), or else your system
will break the next time you upgrade.
Gordon Matzigkeit <gord@debian.org>, Sat, 13 Mar 1999 17:30:29 -0600

View file

@ -365,9 +365,9 @@ load_image (void)
/* offset into file */
filepos = phdr->p_offset;
filesiz = phdr->p_filesz;
memaddr = phdr->p_vaddr;
memaddr = RAW_ADDR (phdr->p_vaddr);
memsiz = phdr->p_memsz;
if (memaddr < 0x100000)
if (memaddr < RAW_ADDR (0x100000))
errnum = ERR_BELOW_1MB;
/* make sure we only load what we're supposed to! */
if (filesiz > memsiz)

View file

@ -563,18 +563,24 @@ strstr (char *s1, char *s2)
int
memcheck (int start, int len)
{
/* FIXME: Don't bother checking memory for now, since our globals
are out of range. */
#ifndef GRUB_UTIL
#ifdef GRUB_UTIL
/* FIXME: cur_part_desc is the only global variable that we bcopy
to. We should fix this so that we don't need a special case
(i.e. so that it lives on the stack, or somewhere inside
grub_scratch_mem). */
extern char cur_part_desc[];
if (start >= (int) cur_part_desc && start + len <= (int) cur_part_desc + 16)
return ! errnum;
#endif /* GRUB_UTIL */
if ((start < RAW_ADDR (0x1000)) ||
(start < RAW_ADDR (0x100000) &&
RAW_ADDR (mbi.mem_lower * 1024) < (start + len)) ||
(start >= RAW_ADDR (0x100000) &&
RAW_ADDR (mbi.mem_upper * 1024) < ((start - 0x100000) + len)))
errnum = ERR_WONT_FIT;
#endif /* GRUB_UTIL */
return (!errnum);
return ! errnum;
}

View file

@ -284,7 +284,11 @@ returnit:
else if (substring("root", cur_heap) < 1)
{
int hdbias = 0;
char *biasptr = skip_to(0, set_device(cur_cmdline));
char *next_cmd = set_device (cur_cmdline);
if (next_cmd)
{
char *biasptr = skip_to (0, next_cmd);
/* this will respond to any "rootn<XXX>" command,
but that's OK */
@ -308,6 +312,7 @@ returnit:
current_drive = -1;
}
}
}
else if (substring("kernel", cur_heap) < 1)
{
/* make sure it's at the beginning of the boot heap area */

View file

@ -385,7 +385,9 @@ check_BSD_parts (int flags)
#if !defined(STAGE1_5) || !defined(NO_BLOCK_FILES)
static char cur_part_desc[16];
/* This isn't static, because the GRUB utility's char_io.c (memcheck)
needs to know about it as a special case. */
char cur_part_desc[16];
static int
real_open_partition (int flags)