Merge branch 'mainline' into snow64
This commit is contained in:
commit
df2a15f643
12 changed files with 218 additions and 45 deletions
61
ChangeLog
61
ChangeLog
|
@ -1,4 +1,62 @@
|
|||
2009-08-28 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
2009-09-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* efiemu/loadcore.c (SUFFIX (grub_efiemu_loadcore_load)): Fix style
|
||||
according to GCS.
|
||||
|
||||
2009-09-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* docs/grub.texi (Naming convention): Describe one-based partition
|
||||
numbering.
|
||||
(Device syntax): Likewise.
|
||||
(File name syntax): Likewise.
|
||||
(Block list syntax): Likewise.
|
||||
(Making a GRUB bootable CD-ROM): Talk about grub.cfg rather than
|
||||
menu.lst.
|
||||
(File name syntax): Likewise.
|
||||
(Command-line and menu entry commands): Document acpi, blocklist,
|
||||
crc, export, insmod, keystatus, ls, set, and unset commands.
|
||||
|
||||
2009-09-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* commands/keystatus.c (GRUB_MOD_INIT (keystatus)): Adjust summary
|
||||
to avoid implying that only one of --shift, --ctrl, or --alt may be
|
||||
used.
|
||||
|
||||
2009-09-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* util/grub-probe.c (probe): Test st.st_mode using S_ISREG macro
|
||||
rather than comparing against S_IFREG, which will almost never work.
|
||||
|
||||
2009-09-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* commands/loadenv.c (check_blocklists): Fix off-by-one error.
|
||||
(write_blocklists): Likewise.
|
||||
|
||||
2009-09-01 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* script/lua/grub_lua.h (fputs): Supply a format string as the first
|
||||
argument to grub_printf.
|
||||
|
||||
2009-09-01 Felix Zielcke <fzielcke@z-51.de>
|
||||
|
||||
* genmk.rb: Add quotes around $(TARGET_OBJ2ELF) to cope with
|
||||
non GNU test.
|
||||
|
||||
2009-08-30 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* kern/file.c (grub_file_read): Spelling fix
|
||||
|
||||
2009-08-30 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* loader/i386/bsdXX.c (SUFFIX (grub_freebsd_load_elfmodule)): Fix
|
||||
loading of headers in some cases.
|
||||
|
||||
2009-08-30 Robert Millan <rmh.grub@aybabtu.com>
|
||||
|
||||
* configure.ac: Bump version to 1.97~beta1.
|
||||
* docs/version.texi: Likewise.
|
||||
|
||||
2009-08-29 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* include/grub/i386/xnu.h: Add license header.
|
||||
include grub/err.h explicitly.
|
||||
|
@ -102,7 +160,6 @@
|
|||
* conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise.
|
||||
* conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise.
|
||||
* conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise.
|
||||
* DISTLIST: Add commands/keystatus.c.
|
||||
|
||||
2009-08-28 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ GRUB_MOD_INIT(keystatus)
|
|||
{
|
||||
cmd = grub_register_extcmd ("keystatus", grub_cmd_keystatus,
|
||||
GRUB_COMMAND_FLAG_BOTH,
|
||||
"keystatus [--shift|--ctrl|--alt]",
|
||||
"keystatus [--shift] [--ctrl] [--alt]",
|
||||
"Check key modifier status",
|
||||
options);
|
||||
}
|
||||
|
|
|
@ -242,7 +242,7 @@ check_blocklists (grub_envblk_t envblk, struct blocklist *blocklists,
|
|||
part_start = 0;
|
||||
|
||||
buf = grub_envblk_buffer (envblk);
|
||||
for (p = blocklists, index = 0; p; p = p->next, index += p->length)
|
||||
for (p = blocklists, index = 0; p; index += p->length, p = p->next)
|
||||
{
|
||||
char blockbuf[GRUB_DISK_SECTOR_SIZE];
|
||||
|
||||
|
@ -278,7 +278,7 @@ write_blocklists (grub_envblk_t envblk, struct blocklist *blocklists,
|
|||
part_start = 0;
|
||||
|
||||
index = 0;
|
||||
for (p = blocklists; p; p = p->next, index += p->length)
|
||||
for (p = blocklists; p; index += p->length, p = p->next)
|
||||
{
|
||||
if (grub_disk_write (disk, p->sector - part_start,
|
||||
p->offset, p->length, buf + index))
|
||||
|
|
|
@ -31,7 +31,7 @@ dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
|
|||
dnl type.
|
||||
|
||||
|
||||
AC_INIT([GRUB],[1.96],[bug-grub@gnu.org])
|
||||
AC_INIT([GRUB],[1.97~beta1],[bug-grub@gnu.org])
|
||||
AC_PREREQ(2.59)
|
||||
AC_CONFIG_SRCDIR([include/grub/dl.h])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
|
|
155
docs/grub.texi
155
docs/grub.texi
|
@ -20,7 +20,7 @@
|
|||
This manual is for GNU GRUB (version @value{VERSION},
|
||||
@value{UPDATED}).
|
||||
|
||||
Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009 Free Software Foundation, Inc.
|
||||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
|
@ -356,25 +356,25 @@ disk. The number @samp{0} is the drive number, which is counted from
|
|||
disk.
|
||||
|
||||
@example
|
||||
(hd0,1)
|
||||
(hd0,2)
|
||||
@end example
|
||||
|
||||
Here, @samp{hd} means it is a hard disk drive. The first integer
|
||||
@samp{0} indicates the drive number, that is, the first hard disk, while
|
||||
the second integer, @samp{1}, indicates the partition number (or the
|
||||
@sc{pc} slice number in the BSD terminology). Once again, please note
|
||||
that the partition numbers are counted from @emph{zero}, not from
|
||||
one. This expression means the second partition of the first hard disk
|
||||
drive. In this case, GRUB uses one partition of the disk, instead of the
|
||||
whole disk.
|
||||
@sc{pc} slice number in the BSD terminology). The partition numbers are
|
||||
counted from @emph{one}, not from zero (as was the case in previous
|
||||
versions of GRUB). This expression means the second partition of the
|
||||
first hard disk drive. In this case, GRUB uses one partition of the
|
||||
disk, instead of the whole disk.
|
||||
|
||||
@example
|
||||
(hd0,4)
|
||||
(hd0,5)
|
||||
@end example
|
||||
|
||||
This specifies the first @dfn{extended partition} of the first hard disk
|
||||
drive. Note that the partition numbers for extended partitions are
|
||||
counted from @samp{4}, regardless of the actual number of primary
|
||||
counted from @samp{5}, regardless of the actual number of primary
|
||||
partitions on your hard disk.
|
||||
|
||||
@example
|
||||
|
@ -383,13 +383,13 @@ partitions on your hard disk.
|
|||
|
||||
This means the BSD @samp{a} partition of the second hard disk. If you
|
||||
need to specify which @sc{pc} slice number should be used, use something
|
||||
like this: @samp{(hd1,0,a)}. If the @sc{pc} slice number is omitted,
|
||||
like this: @samp{(hd1,1,a)}. If the @sc{pc} slice number is omitted,
|
||||
GRUB searches for the first @sc{pc} slice which has a BSD @samp{a}
|
||||
partition.
|
||||
|
||||
Of course, to actually access the disks or partitions with GRUB, you
|
||||
need to use the device specification in a command, like @samp{root
|
||||
(fd0)} or @samp{unhide (hd0,2)}. To help you find out which number
|
||||
(fd0)} or @samp{unhide (hd0,3)}. To help you find out which number
|
||||
specifies a partition you want, the GRUB command-line
|
||||
(@pxref{Command-line interface}) options have argument
|
||||
completion. This means that, for example, you only need to type
|
||||
|
@ -413,7 +413,7 @@ Now the question is, how to specify a file? Again, consider an
|
|||
example:
|
||||
|
||||
@example
|
||||
(hd0,0)/vmlinuz
|
||||
(hd0,1)/vmlinuz
|
||||
@end example
|
||||
|
||||
This specifies the file named @samp{vmlinuz}, found on the first
|
||||
|
@ -550,7 +550,7 @@ which can cause compatibility problems.
|
|||
For booting from a CD-ROM, GRUB uses a special Stage 2 called
|
||||
@file{stage2_eltorito}. The only GRUB files you need to have in your
|
||||
bootable CD-ROM are this @file{stage2_eltorito} and optionally a config file
|
||||
@file{menu.lst}. You don't need to use @file{stage1} or @file{stage2},
|
||||
@file{grub.cfg}. You don't need to use @file{stage1} or @file{stage2},
|
||||
because El Torito is quite different from the standard boot process.
|
||||
|
||||
Here is an example of procedures to make a bootable CD-ROM
|
||||
|
@ -573,7 +573,7 @@ Copy the file @file{stage2_eltorito}:
|
|||
$ @kbd{cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub}
|
||||
@end example
|
||||
|
||||
If desired, make the config file @file{menu.lst} under @file{iso/boot/grub}
|
||||
If desired, make the config file @file{grub.cfg} under @file{iso/boot/grub}
|
||||
(@pxref{Configuration}), and copy any files and directories for the disc to the
|
||||
directory @file{iso/}.
|
||||
|
||||
|
@ -786,7 +786,7 @@ which is a BIOS drive number, so the following are equivalent:
|
|||
@end example
|
||||
|
||||
@var{part-num} represents the partition number of @var{device}, starting
|
||||
from zero for primary partitions and from four for extended partitions,
|
||||
from one for primary partitions and from five for extended partitions,
|
||||
and @var{bsd-subpart-letter} represents the BSD disklabel subpartition,
|
||||
such as @samp{a} or @samp{e}.
|
||||
|
||||
|
@ -800,7 +800,7 @@ finds the subpartition @var{bsd-subpart-letter}. Here is an example:
|
|||
@end example
|
||||
|
||||
The syntax @samp{(hd0)} represents using the entire disk (or the
|
||||
MBR when installing GRUB), while the syntax @samp{(hd0,0)}
|
||||
MBR when installing GRUB), while the syntax @samp{(hd0,1)}
|
||||
represents using the first partition of the disk (or the boot sector
|
||||
of the partition when installing GRUB).
|
||||
|
||||
|
@ -820,12 +820,12 @@ There are two ways to specify files, by @dfn{absolute file name} and by
|
|||
|
||||
An absolute file name resembles a Unix absolute file name, using
|
||||
@samp{/} for the directory separator (not @samp{\} as in DOS). One
|
||||
example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file
|
||||
@file{/boot/grub/menu.lst} in the first partition of the first hard
|
||||
example is @samp{(hd0,1)/boot/grub/grub.cfg}. This means the file
|
||||
@file{/boot/grub/grub.cfg} in the first partition of the first hard
|
||||
disk. If you omit the device name in an absolute file name, GRUB uses
|
||||
GRUB's @dfn{root device} implicitly. So if you set the root device to,
|
||||
say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then
|
||||
@code{/boot/kernel} is the same as @code{(hd1,0)/boot/kernel}.
|
||||
say, @samp{(hd1,1)} by the command @command{root} (@pxref{root}), then
|
||||
@code{/boot/kernel} is the same as @code{(hd1,1)/boot/kernel}.
|
||||
|
||||
|
||||
@node Block list syntax
|
||||
|
@ -846,8 +846,8 @@ the offset is zero.
|
|||
|
||||
Like the file name syntax (@pxref{File name syntax}), if a blocklist
|
||||
does not contain a device name, then GRUB uses GRUB's @dfn{root
|
||||
device}. So @code{(hd0,1)+1} is the same as @code{+1} when the root
|
||||
device is @samp{(hd0,1)}.
|
||||
device}. So @code{(hd0,2)+1} is the same as @code{+1} when the root
|
||||
device is @samp{(hd0,2)}.
|
||||
|
||||
|
||||
@node Interface
|
||||
|
@ -1110,17 +1110,56 @@ you forget a command, you can run the command @command{help}
|
|||
(@pxref{help}).
|
||||
|
||||
@menu
|
||||
* acpi:: Load ACPI tables
|
||||
* blocklist:: Print a block list
|
||||
* boot:: Start up your operating system
|
||||
* cat:: Show the contents of a file
|
||||
* chainloader:: Chain-load another boot loader
|
||||
* cmp:: Compare two files
|
||||
* configfile:: Load a configuration file
|
||||
* crc:: Calculate CRC32 checksums
|
||||
* export:: Export an environment variable
|
||||
* halt:: Shut down your computer
|
||||
* help:: Show help messages
|
||||
* insmod:: Insert a module
|
||||
* keystatus:: Check key modifier status
|
||||
* ls:: List devices or files
|
||||
* reboot:: Reboot your computer
|
||||
* set:: Set an environment variable
|
||||
* unset:: Unset an environment variable
|
||||
@end menu
|
||||
|
||||
|
||||
@node acpi
|
||||
@subsection acpi
|
||||
|
||||
@deffn Command acpi [@option{-1}|@option{-2}] @
|
||||
[@option{--exclude=table1,@dots{}}|@option{--load-only=table1,@dots{}}] @
|
||||
[@option{--oemid=id}] [@option{--oemtable=table}] @
|
||||
[@option{--oemtablerev=rev}] [@option{--oemtablecreator=creator}] @
|
||||
[@option{--oemtablecreatorrev=rev}] [@option{--no-ebda}] @
|
||||
filename @dots{}
|
||||
Modern BIOS systems normally implement the Advanced Configuration and Power
|
||||
Interface (ACPI), and define various tables that describe the interface
|
||||
between an ACPI-compliant operating system and the firmware. In some cases,
|
||||
the tables provided by default only work well with certain operating
|
||||
systems, and it may be necessary to replace some of them.
|
||||
|
||||
Normally, this command will replace the Root System Description Pointer
|
||||
(RSDP) in the Extended BIOS Data Area to point to the new tables. If the
|
||||
@option{--no-ebda} option is used, the new tables will be known only to
|
||||
GRUB, but may be used by GRUB's EFI emulation.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node blocklist
|
||||
@subsection blocklist
|
||||
|
||||
@deffn Command blocklist file
|
||||
Print a block list (@pxref{Block list syntax}) for @var{file}.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node boot
|
||||
@subsection boot
|
||||
|
||||
|
@ -1187,6 +1226,23 @@ Load @var{file} as a configuration file.
|
|||
@end deffn
|
||||
|
||||
|
||||
@node crc
|
||||
@subsection crc
|
||||
|
||||
@deffn Command crc file
|
||||
Display the CRC32 checksum of @var{file}.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node export
|
||||
@subsection export
|
||||
|
||||
@deffn Command export envvar
|
||||
Export the environment variable @var{envvar}. Exported variables are visible
|
||||
to subsidiary configuration files loaded using @command{configfile}.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node halt
|
||||
@subsection halt
|
||||
|
||||
|
@ -1212,6 +1268,44 @@ about each of the commands which match those @var{patterns}.
|
|||
@end deffn
|
||||
|
||||
|
||||
@node insmod
|
||||
@subsection insmod
|
||||
|
||||
@deffn Command insmod module
|
||||
Insert the dynamic GRUB module called @var{module}.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node keystatus
|
||||
@subsection keystatus
|
||||
|
||||
@deffn Command keystatus [@option{--shift}] [@option{--ctrl}] [@option{--alt}]
|
||||
Return true if the Shift, Control, or Alt modifier keys are held down, as
|
||||
requested by options. This is useful in scripting, to allow some user
|
||||
control over behaviour without having to wait for a keypress.
|
||||
|
||||
Checking key modifier status is only supported on some platforms. If invoked
|
||||
without any options, the @command{keystatus} command returns true if and
|
||||
only if checking key modifier status is supported.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node ls
|
||||
@subsection ls
|
||||
|
||||
@deffn Command ls [arg]
|
||||
List devices or files.
|
||||
|
||||
With no arguments, print all devices known to GRUB.
|
||||
|
||||
If the argument is a device name enclosed in parentheses (@pxref{Device
|
||||
syntax}), then list all files at the root directory of that device.
|
||||
|
||||
If the argument is a directory given as an absolute file name (@pxref{File
|
||||
name syntax}), then list the contents of that directory.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node reboot
|
||||
@subsection reboot
|
||||
|
||||
|
@ -1220,6 +1314,23 @@ Reboot the computer.
|
|||
@end deffn
|
||||
|
||||
|
||||
@node set
|
||||
@subsection set
|
||||
|
||||
@deffn Command set [envvar=value]
|
||||
Set the environment variable @var{envvar} to @var{value}. If invoked with no
|
||||
arguments, print all environment variables with their values.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node unset
|
||||
@subsection unset
|
||||
|
||||
@deffn Command unset envvar
|
||||
Unset the environment variable @var{envvar}.
|
||||
@end deffn
|
||||
|
||||
|
||||
@node Invoking grub-install
|
||||
@chapter Invoking grub-install
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@set UPDATED 7 Ago 2009
|
||||
@set UPDATED-MONTH Ago 2009
|
||||
@set EDITION 1.97~snapshot
|
||||
@set VERSION 1.97~snapshot
|
||||
@set EDITION 1.97~beta1
|
||||
@set VERSION 1.97~beta1
|
||||
|
|
|
@ -352,13 +352,18 @@ SUFFIX (grub_efiemu_loadcore_load) (void *core,
|
|||
grub_efiemu_segment_t segments)
|
||||
{
|
||||
grub_err_t err;
|
||||
if ((err = grub_efiemu_load_segments (segments, core)))
|
||||
err = grub_efiemu_load_segments (segments, core);
|
||||
if (err)
|
||||
return err;
|
||||
if ((err = grub_efiemu_resolve_symbols (segments, core)))
|
||||
|
||||
err = grub_efiemu_resolve_symbols (segments, core);
|
||||
if (err)
|
||||
return err;
|
||||
if ((err = SUFFIX (grub_arch_efiemu_relocate_symbols) (segments,
|
||||
grub_efiemu_elfsyms,
|
||||
core)))
|
||||
|
||||
err = SUFFIX (grub_arch_efiemu_relocate_symbols) (segments,
|
||||
grub_efiemu_elfsyms,
|
||||
core);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
|
|
2
genmk.rb
2
genmk.rb
|
@ -126,7 +126,7 @@ ifneq ($(TARGET_APPLE_CC),1)
|
|||
#{@name}: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF)
|
||||
-rm -f $@
|
||||
$(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{pre_obj} #{mod_obj}
|
||||
if test ! -z $(TARGET_OBJ2ELF); then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
||||
if test ! -z \"$(TARGET_OBJ2ELF)\"; then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
|
||||
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@
|
||||
else
|
||||
#{@name}: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF)
|
||||
|
|
|
@ -115,7 +115,7 @@ grub_file_read (grub_file_t file, void *buf, grub_size_t len)
|
|||
if (file->offset > file->size)
|
||||
{
|
||||
grub_error (GRUB_ERR_OUT_OF_RANGE,
|
||||
"Attempt to read pat the end of file.");
|
||||
"Attempt to read past the end of file.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -197,15 +197,15 @@ SUFFIX (grub_freebsd_load_elfmodule) (grub_file_t file, int argc, char *argv[],
|
|||
if (curload < module + sizeof (e))
|
||||
curload = module + sizeof (e);
|
||||
|
||||
load (file, UINT_TO_PTR (module + e.e_shoff), e.e_shoff,
|
||||
load (file, UINT_TO_PTR (curload), e.e_shoff,
|
||||
e.e_shnum * e.e_shentsize);
|
||||
if (curload < module + e.e_shoff + e.e_shnum * e.e_shentsize)
|
||||
curload = module + e.e_shoff + e.e_shnum * e.e_shentsize;
|
||||
e.e_shoff = curload - module;
|
||||
curload += e.e_shnum * e.e_shentsize;
|
||||
|
||||
load (file, UINT_TO_PTR (module + e.e_phoff), e.e_phoff,
|
||||
load (file, UINT_TO_PTR (curload), e.e_phoff,
|
||||
e.e_phnum * e.e_phentsize);
|
||||
if (curload < module + e.e_phoff + e.e_phnum * e.e_phentsize)
|
||||
curload = module + e.e_phoff + e.e_phnum * e.e_phentsize;
|
||||
e.e_phoff = curload - module;
|
||||
curload += e.e_phnum * e.e_phentsize;
|
||||
|
||||
*kern_end = curload;
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
#define setjmp grub_setjmp
|
||||
#define longjmp grub_longjmp
|
||||
|
||||
#define fputs(s,f) grub_printf(s)
|
||||
#define fputs(s,f) grub_printf("%s", s)
|
||||
|
||||
#define isdigit grub_isdigit
|
||||
#define isalpha grub_isalpha
|
||||
|
|
|
@ -239,7 +239,7 @@ probe (const char *path, char *device_name)
|
|||
|
||||
stat (path, &st);
|
||||
|
||||
if (st.st_mode == S_IFREG)
|
||||
if (S_ISREG (st.st_mode))
|
||||
{
|
||||
/* Regular file. Verify that we can read it properly. */
|
||||
|
||||
|
|
Loading…
Reference in a new issue