Finished basic loading support.
This commit is contained in:
parent
3688d873d4
commit
eea6c34440
6 changed files with 50 additions and 24 deletions
|
@ -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
|
||||
|
|
7
debian/README.debian
vendored
7
debian/README.debian
vendored
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -284,28 +284,33 @@ 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);
|
||||
|
||||
/* this will respond to any "rootn<XXX>" command,
|
||||
but that's OK */
|
||||
if (!errnum && (cur_heap[4] == 'n' || open_device()
|
||||
|| errnum == ERR_FSYS_MOUNT))
|
||||
if (next_cmd)
|
||||
{
|
||||
errnum = 0;
|
||||
saved_partition = current_partition;
|
||||
saved_drive = current_drive;
|
||||
char *biasptr = skip_to (0, next_cmd);
|
||||
|
||||
if (cur_heap[4] != 'n')
|
||||
/* this will respond to any "rootn<XXX>" command,
|
||||
but that's OK */
|
||||
if (!errnum && (cur_heap[4] == 'n' || open_device()
|
||||
|| errnum == ERR_FSYS_MOUNT))
|
||||
{
|
||||
/* BSD and chainloading evil hacks !! */
|
||||
safe_parse_maxint(&biasptr, &hdbias);
|
||||
errnum = 0;
|
||||
bootdev = set_bootdev(hdbias);
|
||||
saved_partition = current_partition;
|
||||
saved_drive = current_drive;
|
||||
|
||||
print_fsys_type();
|
||||
if (cur_heap[4] != 'n')
|
||||
{
|
||||
/* BSD and chainloading evil hacks !! */
|
||||
safe_parse_maxint(&biasptr, &hdbias);
|
||||
errnum = 0;
|
||||
bootdev = set_bootdev(hdbias);
|
||||
|
||||
print_fsys_type();
|
||||
}
|
||||
else
|
||||
current_drive = -1;
|
||||
}
|
||||
else
|
||||
current_drive = -1;
|
||||
}
|
||||
}
|
||||
else if (substring("kernel", cur_heap) < 1)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue