From Yury V. Umanets <umka@namesys.com>:
* stage2/fsys_reiserfs.c (REISER3FS_SUPER_MAGIC_STRING): New
macro.
(reiserfs_mount): Added checks for ReiserFS 3.
(reiserfs_embed): Likewise.
2004-01-25 Yoshinori K. Okuji <okuji@enbug.org>
* docs/grub.texi (Obtaining and Building GRUB): Instead of
describing how to use the anoncvs method, specify the URL of
the description page on Savannah.
Reported by Bernhard Treutwein.
From Thomas Schwinge <kischde@gmx.net>:
* grub/Makefile.am (AM_CPPFLAGS): New variable.
(AM_CFLAGS): Removed all cpp flags.
* stage2/xfs.h (__int8_t): Renamed to ...
(xfs_int8_t): ... this.
(__uint8_t): Renamed to ...
(xfs_uint8_t): ... this.
(__int16_t): Renamed to ...
(xfs_int16_t): ... this.
(__uint16_t): Renamed to ...
(xfs_uint16_t): ... this.
(__int32_t): Renamed to ...
(xfs_int32_t): ... this.
(__uint32_t): Renamed to ...
(xfs_uint32_t): ... this.
(__int64_t): Renamed to ...
(xfs_int64_t): ... this.
(__uint64_t): Renamed to ...
(xfs_uint64_t): ... this.
All callers are changed.x
From Egmont Koblinger <egmont@uhulinux.hu>:
* util/grub-install.in: Support an install devices in GRUB's
notation without parentheses.
* docs/grub.texi (Installing GRUB using grub-install): Added an
example of using grub-install without parentheses.
* util/grub-install.in: Use the first word of GRUB_SHELL when
checking if the grub shell is present. This is necessary to
support options to the grub shell (e.g. grub --read-only).
From Eric Kvaalen <E_Kvaalen.Arnesen@noos.fr>:
* docs/grub.texi: Many bug fixes.
* stage2/terminfo.c (ti_set_term): Use a pointer to struct
terminfo instead to avoid GCC's bug, which inserts a reference
to memcpy implicitly.
(ti_get_term): Likewise.
All callers are fixed.
* stage2/terminfo.h (ti_set_term): Updated.
(ti_get_term): Likewise.
* stage2/shared.h (struct linux_kernel_header): New member,
initrd_max_address. Defined in the boot protocol 2.03 or higher.
* stage2/boot.c (load_initrd): If the boot protocol is greater
than or equal to 2.03, use the field ``initrd_max_address''
instead of LINUX_INITRD_MAX_ADDRESS.
* stage2/fsys_ext2fs.c (ext2_is_fast_symlink): New function.
(ext2fs_dir): Use ext2_is_fast_symlink to check if the current
inode is a fast or slow symlink. This change was required
because Linux now uses acl seriously (i.e. incompatibility).
Reported by Chris PeBenito <pebenito@gentoo.org> and Seemant
Kulleen <seemant@gentoo.org>
* lib/device.c (read_device_map) (sho_warning): New internal
function.
(read_device_map): If DRIVE is greater than 8, emit a warning
and ignore the drive, rather than exiting abnormally.
Reported by Greg Newby <newby@arsc.edu>.
Migrated to newer autotools. Also, don't install mkbimage
because its name is too general and it does not conform to the
GNU Coding Standards in some points.
* util/Makefile.am (EXTRA_DIST): New variable.
(sbin_SCRIPTS): Removed mkbimage.
(noinst_SCRIPTS): Added mkbimage.
* stage1/Makefile.am (AM_ASFLAGS): Renamed to ...
(AM_CCASFLAGS): ... this.
* stage2/Makefile.am (pre_stage2_exec_ASFLAGS): Renamed to ...
(pre_stage2_exec_CCASFLAGS): ... this.
(start_exec_ASFLAGS): Renamed to ...
(start_exec_CCASFLAGS): ... this.
(e2fs_stage1_5_exec_ASFLAGS): Renamed to ...
(e2fs_stage1_5_exec_CCASFLAGS): ... this.
(fat_stage1_5_exec_ASFLAGS): Renamed to ...
(fat_stage1_5_exec_CCASFLAGS): ... this.
(ffs_stage1_5_exec_ASFLAGS): Renamed to ...
(ffs_stage1_5_exec_CCASFLAGS): ... this.
(minix_stage1_5_exec_ASFLAGS): Renamed to ...
(minix_stage1_5_exec_CCASFLAGS): ... this.
(reiserfs_stage1_5_exec_ASFLAGS): Renamed to ...
(reiserfs_stage1_5_exec_CCASFLAGS): ... this.
(vstafs_stage1_5_exec_ASFLAGS): Renamed to ...
(vstafs_stage1_5_exec_CCASFLAGS): ... this.
(jfs_stage1_5_exec_ASFLAGS): Renamed to ...
(jfs_stage1_5_exec_CCASFLAGS): ... this.
(xfs_stage1_5_exec_ASFLAGS): Renamed to ...
(xfs_stage1_5_exec_CCASFLAGS): ... this.
(diskless_exec_ASFLAGS): Renamed to ...
(diskless_exec_CCASFLAGS): ... this.
(nbloader_exec_ASFLAGS): Renamed to ...
(nbloader_exec_CCASFLAGS): ... this.
(pxeloader_exec_ASFLAGS): Renamed to ...
(pxeloader_exec_CCASFLAGS): ... this.
* configure.in: Removed.
* configure.ac: New file. Mostly derived from configure.in.
From KB Sriram <mail_kb@yahoo.com>:
* stage2/disk_io.c (set_device) [SUPPORT_NETBOOT]: Added support
for a completion of a network device.
(print_completions): Likewise.
* docs/grub.texi (partnew): Fixed the inconsistency between the
implementation and the documentation. The last argument is the
length instead of the ending address.
Reported by Daniel Farrell <s2108287@student.rmit.edu.au>.
* stage2/boot.c (load_image): Check if DATA_LEN plus SECTOR_SIZE
is less than or equal to MULTIBOOT_SEARCH, instead of if
DATA_LEN is less than or equal to MULTIBOOT_SEARCH.
Reported by Neelkanth Natu <neelnatu@yahoo.com>.
From Tilmann Bubeck:
* stage2/builtins.c [SUPPORT_SERIAL] (terminfo_func): Unescape
arguments before copying them, and escape sequences before
printing them.
* stage2/terminfo.h (TERMINFO_LEN): Changed to 40.
* lib/device.c (check_device): If DEVICE is empty, just return
1.
(get_scsi_disk_name) [__QNXNTO__]: Make NAME empty, because SCSI
disks are detected as IDE disks on QNX RTP.
From Taketo Kabe <kabe@sra-tohoku.co.jp>:
* lib/device.c (get_ide_disk_name) [__QNXNTO__]: Set NAME to
"/dev/hdX".
(get_floppy_disk_name) [__QNXNTO__]: Set NAME to "/dev/fdX".
* stage2/mb_info.h (struct AddrRangeDesc): Specified with the
attribute packed.
* stage2/shared.h (struct mmar_desc): Likewise.
From Ilguiz Latypov:
* configure.in: Fix a syntax error in a sed script.
* stage2/bios.c (get_diskinfo): PhoenixBIOS 4.0 Revision 6.0
for ZF Micro might understand the greater buffer size for the
"get drive parameters" int 0x13 call in its own way.
Supposedly the BIOS assumes even bigger space is available and
thus corrupts the stack. This is why we specify the exactly
necessary size of 0x42 bytes.
From Steven Dick <ssd.gnu@mmae.ucf.edu>:
* stage2/pc_slice.h (PC_SLICE_TYPE_DELL_UTIL): New macro.
(IS_PC_SLICE_TYPE_FAT): Recognize PC_SLIDE_TYPE_DELL_UTIL as
well.
From H.J. Lu <hjl@gnu.org>:
* stage2/disk_io.c (part_start): Use unsigned long to support
large disks.
(part_length): Likewise.
* stage2/shared.h (part_start): Likewise.
(part_length): Likewise.
Add a workaround for buggy BIOSes which don't pass boot drive
correctly. The idea is that GRUB forces the fixed disk flag
when booted from a hard disk. When BIOS loads GRUB directly,
the boot drive must be either of 0x00 and 0x80, so this should
work, if those BIOSes always pass zero to %dl. AFAIK, this
assumption is always correct.
* stage2/builtins.c (install_func): Store the fixed disk flag of
the destination drive in BOOT_DRIVE_MASK in Stage 1.
* stage1/stage1.h (STAGE1_BOOT_DRIVE_MASK): New macro.
* stage1/stage1.S (boot_drive_mask): New variable. It is or'ed
to %dl.
* stage2/char_io.c (init_page): Change the software name from
"GRUB" to "GNU GRUB". This was inaccurate. Reported by Ciaran
O'Riordan <coriordan@compsoc.com>.
Change the terminal structure a bit, to turn the cursor state
explicitly. Suggested by Pavel Roskin.
* stage2/term.h (struct term_entry): Remove the member
`nocursor' and add `setcursor'.
[!STAGE1_5] (console_setcursor): New prototype.
[SUPPORT_HERCULES] (hercules_setcursor): Likewise.
[!STAGE1_5] (console_nocursor): Removed.
[SUPPORT_HERCULES] (hercules_nocursor): Likewise.
* stage2/stage2.c (run_menu): Call setcursor instead of
nocursor.
Call setcursor with 1 before starting a boot entry.
* stage2/shared.h (nocursor): Removed.
(setcursor): New prototype.
* stage2/hercules.c (herc_cursor_state): New variable.
(herc_turn_cursor): Removed.
(hercules_nocursor): Likewise.
(hercules_setcursor): New function.
* stage2/char_io.c (get_cmdline): Turn on the cursor at the
beginning, and restore it before returning.
(nocursor): Removed.
(setcursor): New function.
* stage2/asm.S (console_cursor_state): New variable.
(console_cursor_shape): Likewise.
(console_setcursor): New function.
(console_nocursor): Removed.
* grub/asmstub.c (console_setcursor): New function.
(hercules_setcursor): Likewise.
(console_nocursor): Removed.
(hercules_nocursor): Likewise.
From Alexander Langer <alex@big.endian.de>:
* stage2/freebsd.h (RB_GDB): New macro.
(RB_MUTE): Likewise.
(RB_MULTIPLE): Likewise.
* stage2/boot.c (bsd_boot): Set the bits of RB_MULTIPLE, RB_GDB
and RB_MUTE when "-D", "-g" and "-m" are specified,
respectively.
* stage2/disk_io.c (rawread): Make sure that SECTOR is valid.
If not, set ERRNUM to ERR_GEOM and return zero. This check is
critical when a partition table is corrupted.
* stage2/asm.S (console_cls): Write spaces to the entire screen
instead of getting/setting the video mode, because this flickers
the screen and is quite annoying, if using a LCD.
* grub/asmstub.c (console_translate_key): Deal with KEY_PPAGE
and KEY_NPAGE.
* stage2/serial.c (serial_translate_key_sequence): Added two new
codes for Page Up and Page Down.
* stage2/asm.S (translation_table): Added entries for KEY_PPAGE
and KEY_NPAGE.
* stage2/stage2.c (run_menu): Deal with Page Up and Page Down.
Also recognize the right key for the selection of a boot entry.
Suggested by Adam Lackorzynski <adam@os.inf.tu-dresden.de>.
* stage2/asm.S (gateA20): Output a dummy command (0xff), as a
workaround for USB keyboard hanging problem. Suggested by
Hidetoshi Nishimaki <nishimaki@mxs.nes.nec.co.jp>.
* configure.in (falign_loop_flag): New variable. Set to if GCC
supports `-falign-*'. If true, use `-falign-jumps',
`-falign-loops' and `-falign-functions' instead of
`-malign-jumps', `-malign-loops' and `-malign-functions',
because `-malign-*' are obsolete in GCC 3.x. Reported by Jeremy
Katz.
* stage2/boot.c (load_image): Rewrite the Linux booting support
radically. Now it should work even on a machine having, say,
only 128KB, theoretically. Of course, GRUB itself doesn't work
on such a system, though.
(load_initrd): Initialize LH based on CUR_ADDR, because the
location becomes dynamic.
* stage2/shared.h (LINUX_MAX_SETUP_SECTS): Set to 64.
(LINUX_HEAP_END_OFFSET): Set to (0x9000 - 0x200).
(LINUX_STAGING_AREA): Removed.
(LINUX_SETUP): Likewise.
(LINUX_KERNEL): Likewise.
(LINUX_KERNEL_MAXLEN): Likewise.
(LINUX_SETUP_SEG): Likewise.
(LINUX_INIT_SEG): Likewise.
(LINUX_SETUP_STACK): Set to 0x9000.
(LINUX_BZIMAGE_ADDR): New macro.
(LINUX_ZIMAGE_ADDR): Likewise.
(LINUX_OLD_REAL_MODE_ADDR): Likewise.
(CL_MY_LOCATION): Removed.
(CL_MY_END_ADDR): Likewise.
(CL_BASE_ADDR): Likewise.
(CL_MAGIC): Renamed to ...
(LINUX_CL_MAGIC): ... this.
(LINUX_CL_OFFSET): New macro.
(LINUX_CL_END_OFFSET): Likewise.
(LINUX_SETUP_MOVE_SIZE): Likewise.
(struct linux_kernel_header): Change the type of the member
"cmd_line_ptr" to char *.
(linux_data_tmp_addr): Declared.
(linux_data_real_addr): Likewise.
* stage2/asm.S [!STAGE1_5] (linux_data_tmp_addr): New variable.
[!STAGE1_5] (linux_data_real_addr): Likewise.
[!STAGE1_5] (big_linux_boot): Copy the real mode part from
LINUX_DATA_TMP_ADDR to LINUX_DATA_REAL_ADDR.
* grub/asmstub.c (linux_data_tmp_addr): New variable.
(linux_data_real_addr): Likewise.
From Mark Kettenis <kettenis@chello.nl>:
* stage2/boot.c (load_image): Recognize newer FreeBSD kernels.
* stage2/i386-elf.h (EI_OSABI): New macro.
(EI_ABIVERSION): Likewise.
(ELFOSABI_FREEBSD): Likewise.
(EI_PAD): Set to 9.
* stage2/shared.h (boot_part_offset): Removed.
* stage2/disk_io.c (set_bootdev): Copy the partition information
here. Now this function can call rawread, so it can fail.
(boot_part_offset): Removed.
* stage2/builtins.c (boot_func): Don't copy the partition
information here.
(real_root_func): Check ERRNUM after calling set_bootdev.
* stage2/serial.c [!GRUB_UTIL] (inb): Added a delay into this
function itself.
[!GRUB_UTIL] (outb): Likewise.
[!GRUB_UTIL] (serial_hw_put): Increase the timeout value, and
don't call serial_hw_delay explicitly any longer.
(fill_input_buf): Increase the maximum number of retries, reset
the counter to zero after getting a valid character, and don't
call serial_hw_delay explicitly any longer.
* stage2/builtins.c [SUPPORT_SERIAL || SUPPORT_HERCULES]
(terminal_func): Set CURRENT_TERM to each of selected terminals
before calling grub_printf, and restore CURRENT_TERM after it.
Reported by Ilguiz Latypov.
Prepend a carriage return to the prompting message, because it
is ugly that the same messages fulfill the whole screen.
* stage2/disk_io.c [SUPPORT_NETBOOT] (GRUB): Defined.
[SUPPORT_NETBOOT]: Include etherboot.h.
[!STAGE1_5] (print_completions) [SUPPORT_NETBOOT]: When
completing a disk name, if NETWORK_READY is true, add "nd" as a
completion.
* netboot/main.c (ifconfig): If GW is specified, clear out the
ARP entry for the gateway. If SVR is specified, clear out the
ARP entry for the server. Reported by Uwe Dannowski
<ud3@ira.uka.de>.
* util/grub-md5-crypt.in: Prompt to retype a password, and check
if the passwords matches. Suggested by Matt Perry
<matt@primefactor.com>.
Also, don't use Perl any longer, because *BSD's sh and GNU
support ``read -r'', and GRUB doesn't support any other
operating system anyway.
* stage2/builtins.c (boot_func): Load the boot partition
information, only if the address of the boot partition entry is
set appropriately.
(real_root_func): If ATTEMPT_MOUNT is false, call open_partition
and if successful, call set_bootdev, to set the offset of the
boot partition and the address of the boot paetition entry.
IF ATTEMPT_MOUNT is false, don't set BOOTDEV. The BSD evil hack
is useless with the command "rootnoverify" anyway.
* stage2/disk_io.c (boot_part_addr): Initialized with zero
explicitly, to emphasize that it is invalid.
Define the behavior of the boot loader when the load end address
and the bss end address are zero in the Multiboot Specification,
and add the support into GRUB. I've modified a patch from Yuri
Zaporogets <yuriz@ukr.net>.
* stage2/boot.c (load_image): In the case of Multiboot a.out
kludge, set the load end address to the load address plus the
size of the OS image file, if it is zero. Similarly, set the bss
end address to the load end address, if it is zero.
* util/mbchk.c (check_multiboot): Don't check if the load
address is greater than or equal to the load end address, if the
load end address is zero. Don't check if the load end address is
greater than the bss end address, if the bss end address is
zero. And, don't check if the load end address is less than or
equal to the entry address, if the load end address is zero.
* docs/multiboot.texi (The address fields of Multiboot header):
Added descriptions about the behavior of the boot loader when
LOAD_END_ADDR is zero and BSS_END_ADDR is zero.
* stage2/builtins.c (boot_func): If DEBUG is true, print
BOOT_DRIVE and BOOT_PART_OFFSET.
Don't set ERRNUM after rawread failed, because rawread should
set ERRNUM itself.
* lib/device.c (read_device_map): Show an error message and exit
abnormally, if MAP[DRIVE] has already been filled.
* util/grub-install.in: If there is any dulicated entry, print
an error message and exit abnormally.
* netboot/etherboot.h (ETH_MAX_MTU): Because some DHCP/BOOTP
servers don't treat the maximum length the same as Etherboot,
subtract the size of an IP header and that of an UDP header.
From Jean-Jacques Michel <jjmichel@linbox.com>:
* stage2/boot.c (load_image): For Linux, check if DATA_LEN is
greater than MULTIBOOT_SEARCH. If that's true, read the rest
after copying data already read in BUFFER.
* stage2/boot.c (load_image): For Linux, don't check if the
length of protected mode code is greater than or equal to the
expected length minus 16. Instead, just check if no error
occurred. That was problematic, because memdisk has no protected
mode code. Also, I don't see what the magic number 16 was for.
* stage2/builtins.c [GRUB_UTIL] (dump_func): New function.
[GRUB_UTIL] (builtin_dump): New variable.
(builtin_table) [GRUB_UTIL]: Added a pointer to BUILTIN_DUMP.
* util/grub-install.in: Make sure that GRUB reads the same
images as the host operating system by comparing the result of
running the command "dump" with the contents of the OS file.
* docs/grub.texi (General commands): Added ``pager'' into the
menu.
(pager): New subsection.
(terminal): Added a description about the option
``--lines=LINES''.
* configure.in (AC_INIT_AUTOMAKE): Set the version number to
0.92.