blob: 0f93033ec114769b9dffd25db00b9629a71cceff [file] [log] [blame]
2005-05-08 Yoshinori K. Okuji <>
* (AC_INIT): Upgraded to 0.97.
* compile: Copied from Automake 1.9.4.
* config.guess: Likewise.
* config.sub: Likewise.
* depcomp: Likewise.
* install-sh: Likewise.
* missing: Likewise.
* mkinstalldirs: Likewise.
* mdate-sh: Likewise.
* docs/texinfo.tex: Likewise.
2005-05-08 Yoshinori K. Okuji <>
* stage2/fsys_xfs.c (next_dentry): Use arrays of arrays instead of
arrays of pointers for USUAL, to avoid read-only strings. Reported
by Sven Wegener <>.
2005-03-28 Yoshinori K. Okuji <>
* lib/device.c (get_drive_geometry): Use ST.ST_SIZE instead of
ST.ST_BLOCKS to get the total number of sectors, because st_blocks
is not the same if it is a sparse file.
2005-03-19 Yoshinori K. Okuji <>
* stage2/stage2.c (cmain): Initialize DEFAULT_FILE to an empty
string. Reported by NATORI Shin <>.
2005-03-15 Yoshinori K. Okuji <>
* stage2/fsys_fat.c (fat_mount): Ignore the 3rd bit of a media
descriptor, because some BIOSes overwrite this value, according
to the storage mode (e.g. USB Floppy or USB HDD).
2005-02-16 Yoshinori K. Okuji <>
* grub/asmstub.c (grub_stage2): Remove the attribute `volatile'
from doit. I hope this change is safe for all compilers.
2005-02-15 Yoshinori K. Okuji <>
* stage2/builtins.c (install_func): If DEST_DRIVE is a hard
disk, enable the workaround in Stage 1 by replacing the jmp
with double nop's.
* stage1/stage1.h (STAGE1_BOOT_DRIVE_CHECK): New macro.
* stage1/stage1.S (boot_drive_check): New label. This implements
a different workaround for buggy BIOSes which don't pass boot
drive correctly. This is effective for BIOSes which pass a value
without the seventh bit (0x80).
(boot_drive_mask): Removed.
2005-02-03 Yoshinori K. Okuji <>
* grub/asmstub.c (console_current_color): Make it global as
(grub_stage2): Tweak the declaration and the definition of the
nested function doit.
2005-02-02 Yoshinori K. Okuji <>
* stage2/smp-imps.h (imps_any_new_apics): Removed.
(imps_enabled): Likewise.
(imps_lapic_addr): Likewise.
(imps_num_cpus): Likewise.
(imps_cpu_apic_map): Likewise.
(imps_apic_cpu_map): Likewise.
* stage2/ (libgrub_a_CFLAGS): Remove
-fwritable-strings. Not required for the grub shell actually.
* grub/ (AM_CFLAGS): Likewise.
2005-02-01 Yoshinori K. Okuji <>
* grub/asmstub.c (grub_stage2): Use auto instead of static for
nested functions.
* stage2/char_io.c (memcheck) [GRUB_UTIL]: Likewise.
* stage2/builtins.c (blocklist_func): Likewise.
(color_func): Likewise.
(install_func): Likewise.
(setkey_func): Likewise.
* lib/device.c (read_device_map): Likewise.
2005-01-30 Yoshinori K. Okuji <>
* (AC_INIT): Upgraded to 0.96.
2004-10-11 Jason Thomas <>
Patch from Stefanus Du Toit <>
* docs/kernel.c.texi (cmain): Incremement mod by one, instead of
sizeof(module_t), since it's already a pointer of type module_t.
* docs/kernel.c (cmain): Do the same.
2004-09-20 Yoshinori K. Okuji <>
* docs/internals.texi (Internals): Changed to an appendix.
* docs/grub.texi (@setchapternewpage): Changed to odd from off.
(@contents): Moved to the beginning.
(Future): Changed to an appendix.
2004-08-17 Yoshinori K. Okuji <>
* stage2/cmdline.c (run_script): Fix a reversed conditional.
Reported by Alban Crequy <>.
2004-08-07 Jason Thomas <>
From Michael Hohnbaum <>:
* stage2/fsys_ext2fs.c (ext2fs_read): Handle sparse files.
2004-07-24 Yoshinori K. Okuji <>
* stage2/stage2.c (cmain): Terminate DEFAULT_FILE with NUL
correctly. Reported by Alban Crequy <>.
2004-07-21 Robert Millan <>
Patch from David Weinehall <>
* util/mkbimage: Fix XSI-isms (for supporting POSIX-only shells).
2004-07-20 Robert Millan <>
* util/ Detect GNU/k*BSD systems as well.
2004-07-16 Yoshinori K. Okuji <>
* util/ (convert): Fix the sed statement for
Linux. The expression was ambigious in some cases.
2004-06-29 Robert Millan <>
* util/ Fix minor syntax error (non-escaped
2004-06-24 Robert Millan <>
Fixes for FHS compliance. (/usr/share is for arch-independant data)
* stage1/ Move stage files to pkglibdir.
* stage2/ Likewise.
* docs/grub.texi: s,/usr/share,/usr/lib,g.
* util/ Look for stage files in pkglibdir.
* util/ Likewise.
* util/ Improve usage message.
2004-06-20 Yoshinori K. Okuji <>
This is a big change on saving a default entry. This change
makes it possible to set up a quite robust system using GRUB.
Now we do not use the second sector of Stage 2 to store an
entry number but use the file /boot/grub/default. This file
must be generated by grub-set-default, although this file is
* util/ New file.
* util/ (grub_set_default): New variable.
Use /grub instead of /boot/grub on OpenBSD as well as NetBSD.
Run grub-set-default to make a default file.
* util/ (sbin_SCRIPTS): Added grub-set-default.
* stage2/stage2.c (run_menu): Change the fallback handling to
support multiple fallback entries.
(cmain): Likewise. Also, get a saved entry from a default file
if possible, before reading a config file.
* stage2/shared.h (DEFAULT_FILE_BUF): New macro.
(fallback_entry): Removed.
(fallback_entries): Declared.
(fallback_entryno): Likewise.
* stage2/cmdline.c (run_script): Use FALLBACK_ENTRYNO instead of
* stage2/builtins.c (fallback_entry): Removed.
(fallback_entryno): New variable.
(fallback_entries): Likewise.
(init_config): Initialize FALLBACK_ENTRYNO and FALLBACK_ENTRIES.
(fallback_func): Rewritten completely.
(savedefault_func): Likewise.
* docs/grub.texi (grub-set-default): New direntry.
(Installation): Describe grub-set-default for manual
(Making your system robust): New section.
(Booting once-only): New subsection.
(Booting fallback systems): Likewise.
(fallback): Describe multiple fallback entries.
(savedefault): Describe an optional argument.
(Invoking grub-set-default): New chapter.
(Future): Replaced with a description about GRUB 2.
* (AC_CONFIG_FILES): Added util/grub-set-default.
2004-06-19 Yoshinori K. Okuji <>
* stage2/ufs2.h (int8_t): Renamed to ...
(grub_uint8_t): ... this.
(int16_t): Renamed to ...
(grub_int16_t): ... this.
(int32_t): Renamed to ...
(grub_int32_t): ... this.
(int64_t): Renamed to ...
(grub_int64_t): ... this.
(uint8_t): Renamed to ...
(grub_uint8_t): ... this.
(uint16_t): Renamed to ...
(grub_uint16_t): ... this.
(uint32_t): Renamed to ...
(grub_uint32_t): ... this.
(uint64_t): Renamed to ...
(grub_uint64_t): ... this.
(u_char): Renamed to ...
(grub_u_char): ... this.
(u_int): Renamed to ...
(grub_u_int): ... this.
(u_int8_t): Renamed to ...
(grub_u_int8_t): ... this.
(u_int16_t): Renamed to ...
(grub_u_int16_t): ... this.
(u_int32_t): Renamed to ...
(grub_u_int32_t): ... this.
(u_int64_t): Renamed to ...
(grub_u_int64_t): ... this.
(ino_t): Renamed to ...
(grub_ino_t): ... this.
All callers are changed.
2004-06-14 Jeroen Dekkers <>
* stage2/ufs2.h (__uint8_t): Remove.
(__uint16_t): Likewise.
(__uint32_t): Likewise.
(__uint64_t): Likewise.
(ino_t): Typedef to uint32_t.
2004-06-13 Yoshinori K. Okuji <>
* stage2/ (noinst_HEADERS): Added ufs2.h.
2004-06-13 Yoshinori K. Okuji <>
* (AC_INIT): Upgraded to 0.95.
2004-05-23 Yoshinori K. Okuji <>
* stage2/char_io.c (grub_isspace): Use a switch sentense instead
of an if sentense, because that reduces the size.
* lib/device.c (read_device_map): Change the max number of DRIVE
to 127 from 8. This was too strict.
* stage2/asm.S (stop_floppy): Call pusha and popa outside the
block of real mode code. Reported by Guillem Jover
2004-05-20 Damian Ivereigh <>
* netboot/main.c: Fixed bootp only code so that options
work properly. This fix is obvious when compared with the
DHCP code.
2004-05-17 Pavel Roskin <>
* stage2/char_io.c (safe_parse_maxint): Disable for stage 1.5.
(grub_tolower): Disable for stage 1.5 except fat_stage1_5.
(grub_memcmp): Disable for stage 1.5 except iso9660_stage1_5.
2004-05-14 Yoshinori K. Okuji <>
From Sergey Matveychuk <>:
* stage2/size_test: Added a check for ufs2_stage1_5.
* stage2/shared.h (STAGE2_ID_UFS2_STAGE1_5): New macro.
* stage2/filesys.h (FSYS_UFS2_NUM): New macro.
[FSYS_UFS2] (ufs2_mount): New prototype.
[FSYS_UFS2] (ufs2_read): Likewise.
[FSYS_UFS2] (ufs2_dir): Likewise.
[FSYS_UFS2] (ufs2_embed): Likewise.
* stage2/disk_io.c (fsys_table): Added an ufs2 entry.
* stage2/builtins.c (setup_func): Added ufs2 into the
* stage2/ (libgrub_a_SOURCES): Added fsys_ufs2.c.
(libgrub_a_CFLAGS): Added -DFSYS_UFS2=1.
(pkgdata_DATA): Added ufs2_stage1_5.
(noinst_PROGRAMS): Added ufs2_stage1_5.exec.
(ufs2_stage1_5_exec_SOURCES): New variable.
(ufs2_stage1_5_exec_CFLAGS): Likewise.
(ufs2_stage1_5_exec_CCASFLAGS): Likewise.
(ufs2_stage1_5_exec_LDFLAGS): Likewise.
* grub/ (AM_CPPFLAGS): Added -DFSYS_ISO9660=1,
* (--disable-ufs2): New option.
* stage2/fsys_ufs2.c: New file.
* stage2/ufs2.h: Likewise.
2004-05-10 Robert Millan <>
* lib/device.c: Mangle __FreeBSD_* macro usage to support
kFreeBSD-based non-FreeBSD systems (i.e. GNU/kFreeBSD).
Implement runtime detection of version of kFreeBSD. Now if
we build against kFreeBSD 5.x headers the GRUB shell will work on
both 4.x and 5.x.
Replace `u_int_t' types with portable `unsigned int' and old
reference to `geometry' structure to new `geom' one.
* docs/menu.lst: Split GNU/kFreeBSD and GNU/kNetBSD as separate
options than FreeBSD and NetBSD, respectively. There are minor
differences now (different paths).
2004-05-03 Pavel Roskin <>
* stage2/char_io.c (convert_to_ascii): Remove "%b" support.
It's non-standard and is not used anymore.
(grub_printf): Likewise.
2004-04-29 Robert Millan <>
From Yann Dirson <>:
* util/mkbimage: Misc syntax fixes.
2004-04-29 Jeroen Dekkers <>
* stage2/char_io.c (grub_memcmp): Define for stage1.5 too.
* stage2/fsys_iso9660.c (iso9660_mount): Use memcmp() instead of
(iso9660_dir): Likewise.
2004-04-26 Christian Jones <>
* docs/grub.texi (Making a GRUB bootable CD-ROM): minor edits,
including a few compatibility notes and a change to
-boot-load-size 4 for the mkisofs command.
2004-04-22 Jeroen Dekkers <>
* (AUTOMAKE_OPTIONS): Add "gnu".
* Update to work with automake 1.8, quote all
AC_DEFUN's correctly and provide descriptions for AC_DEFINE's.
* acinclude.m4: Likewise.
* acconfig.h: Removed.
* stage1/ (.exec): Use suffix rules instead of pattern
* stage2/ (.exec): Likewise.
2004-04-18 Yoshinori K. Okuji <>
* docs/grub.texi (Making a GRUB bootable CD-ROM): New section.
* stage2/disk_io.c (set_device): Use CH instead of *DEVICE to
test the first character of DEVICE, because DEVICE is
Reported by Bernhard Treutwein.
2004-04-15 Yoshinori K. Okuji <>
* netboot/fsys_tftp.c (buf_fill): Cast 1 to unsigned short
explicitly so that the constant doesn't extend unsigned short
to int automatically.
Reported by Eduard Guzovsky <>.
* docs/grub.texi (Invoking grub-md5-crypt): Fixed the chapter
Reported by Martin Pool <>.
2004-04-04 Yoshinori K. Okuji <>
* (STAGE2_CFLAGS): Check if -fno-stack-protector is
supported by GCC. If yes, added the option. This is necessary
for OpenBSD, because the stack protector defines additional
symbols. Reported by uc.sheda <>.
2004-03-28 Pavel Roskin <>
* 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 <>
* stage2/char_io.c [!GRUB_UTIL] (memcpy): New function. It is
defined as an alias of grub_memmove. This is copied from GRUB 2.
* stage2/disk_io.c (print_completions): Simplified conditionals
to make it easier to edit the file with Emacs.
Added support for (cd).
(set_device): Likewise.
* stage2/common.c (init_bios_info): Check if BOOT_DRIVE is a
CDROM drive. If it is true, set CDROM_DRIVE to BOOT_DRIVE.
(cdrom_drive): New variable.
From Leonid Lisovskiy <>:
* stage2/start_eltorito.S: New file.
* stage2/stage2.c (run_menu): Use GRUB_INVALID_DRIVE instead of
* stage2/shared.h (STAGE2_ID_ISO9660_STAGE1_5): New macro.
[FSYS_ISO9660] (STAGE2_ID): Set to STAGE2_ID_ISO9660_STAGE1_5.
(struct geometry): Added a new member ``sector_size''.
(cdrom_drive): Declared.
* stage2/fsys_iso9660.c: New file.
* stage2/iso9660.h: Likewise.
* stage2/filesys.h (FSYS_ISO9660_NUM): New macro.
[FSYS_ISO9660] (iso9660_mount): Declared.
[FSYS_ISO9660] (iso9660_read): Likewise.
[FSYS_ISO9660] (iso9660_dir): Likewise.
* stage2/disk_io.c (fsys_table) [FSYS_ISO9660]: Added iso9660.
(current_drive): Use GRUB_INVALID_DRIVE.
(log2): New function.
(rawread): Use BUF_GEOM.SECTOR_SIZE instead of SECTOR_SIZE.
Change the type of BUFADDR from int to char *.
Use a virtual track to make sure that one track fits in the
(sane_partition): Allow CURRENT_DRIVE to be CDROM_DRIVE, because
a bios drive for a CD-ROM is often assigned to greater than
(set_device): Use GRUB_INVALID_DRIVE instead of 0xFF.
(setup_part): Likewise.
* stage2/cmdline.c (init_cmdline): Use GRUB_INVALID_DRIVE.
* stage2/builtins.c (install_func): Use GRUB_INVALID_DRIVE.
(setup_func): Added iso9660_stage1_5.
* stage2/bios.c (biosdisk): Don't fall back to the CHS mode
if the drive is a CDROM.
(get_cdinfo): New function.
(get_diskinfo): Call get_cdinfo if the drive is greater than or
equal to 0x88 or the drive supports LBA.
Set the sector size to SECTOR_SIZE if it is not a CD-ROM.
* stage2/asm.S (biosdisk_int13_extensions): Take a word
argument AX instead of a byte argument AH.
(get_diskinfo_int13_extensions): Removed.
* stage2/ (noinst_HEADERS): Added iso9660.h.
(libgrub_a_SOURCES): Added fsys_iso9660.c.
(libgrub_a_CFLAGS): Added -DFSYS_ISO9660=1.
(pkgdata_DATA): Added iso9660_stage1_5 and stage2_eltorito.
(noinst_PROGRAMS): Added iso9660_stage1_5.exec and
(noinst_DATA): Added start_eltorito.
(pre_stage2_exec_SOURCES): Added fsys_iso9660.c.
(START_ELTORITO_LINK): New variable.
(start_eltorito_exec_SOURCES): Likewise.
(start_eltorito_exec_CCASFLAGS): Likewise.
(start_eltorito_exec_LDFLAGS): Likewise.
(start_eltorito_exec-start.$(OBJEXT)): New dependency.
(stage2_eltorito): New target.
(iso9660_stage1_5_exec_SOURCES): New variable.
(iso9660_stage1_5_exec_CFLAGS): Likewise.
(iso9660_stage1_5_exec_CCASFLAGS): Likewise.
(iso9660_stage1_5_exec_LDFLAGS): Likewise.
* stage1/stage1.h (GRUB_INVALID_DRIVE): New macro.
* stage1/stage1.S (boot_drive): Use the macro GRUB_INVALID_DRIVE.
(real_start): Likewise.
* lib/device.c (get_drive_geometry): Set GEOM->SECTOR_SIZE to
SECTOR_SIZE by default.
* (--disable-iso9660): New option.
2004-03-13 Yoshinori K. Okuji <>
From Daniele Zelante <>:
* stage2/asm.S (stop_floppy): Use INT 13, AH=00h to stop the
floppy controller instead of a direct I/O.
2004-03-12 Yoshinori K. Okuji <>
* stage2/serial.c (serial_putchar): Handle the character code
127 as a backspace. Reported by Florian Engelhardt
2004-03-12 Yoshinori K. Okuji <>
From Boji Tony Kannanthanam <>:
* util/ (convert): Add support for ATARAID
device names.
* lib/device.c (get_ataraid_disk_name) [__linux__]: New
(init_device_map) [__linux__]: Probe ATARAID disks.
* stage2/size_test (check): Don't use the local statement any
longer. It was unneeded actually. Reported by Paul Jarc.
2004-03-12 Yoshinori K. Okuji <>
From Sergey Matveychuk <>:
* lib/device.c (get_drive_geometry): Do not open the same device
more than once unnecessarily.
(get_drive_geometry) [__FreeBSD_version >= 500040]: Use new
ioctl methods.
(get_floppy_disk_name) [__FreeBSD__ >= 4]: Use /dev/fd%d rather
than /dev/rfd%d.
(get_ide_disk_name) [__FreeBSD__ >= 4]: Use /dev/ad%d rather
than /dev/rad%d.
(get_scsi_disk_name) [__FreeBSD__ >= 4]: Use /dev/da%d rather
than /dev/rda%d.
* grub/asmstub.c (get_diskinfo): Check if ERRNO is EPERM as
2004-02-28 Jeroen Dekkers <>
* docs/grub.texi (partnew): Change @var{to} to @var{len}.
2004-02-18 Yoshinori K. Okuji <>
From Yury V. Umanets <>:
* stage2/fsys_reiserfs.c (REISER3FS_SUPER_MAGIC_STRING): New
(reiserfs_mount): Added checks for ReiserFS 3.
(reiserfs_embed): Likewise.
2004-01-25 Yoshinori K. Okuji <>
* 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.
2004-01-18 Yoshinori K. Okuji <>
From Thomas Schwinge <>:
* grub/ (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 <>:
* util/ 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.
2004-01-18 Yoshinori K. Okuji <>
* util/ 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 <>:
* docs/grub.texi: Many bug fixes.
2004-01-17 Yoshinori K. Okuji <>
* lib/device.c [__linux__] (MAJOR): Support 32 bit and 64 bit
dev_t. This code is stolen from glibc.
Suggested by Shen Feng <>.
2004-01-11 Yoshinori K. Okuji <>
* 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''
2003-12-30 Yoshinori K. Okuji <>
* 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 <> and Seemant
Kulleen <>
2003-11-30 Yoshinori K. Okuji <>
* lib/device.c (read_device_map) (sho_warning): New internal
(read_device_map): If DRIVE is greater than 8, emit a warning
and ignore the drive, rather than exiting abnormally.
Reported by Greg Newby <>.
2003-10-19 Yoshinori K. Okuji <>
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/ (EXTRA_DIST): New variable.
(sbin_SCRIPTS): Removed mkbimage.
(noinst_SCRIPTS): Added mkbimage.
* stage1/ (AM_ASFLAGS): Renamed to ...
(AM_CCASFLAGS): ... this.
* stage2/ (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.
* Removed.
* New file. Mostly derived from
2003-10-19 Yoshinori OKUJI <>
From KB Sriram <>:
* stage2/disk_io.c (set_device) [SUPPORT_NETBOOT]: Added support
for a completion of a network device.
(print_completions): Likewise.
2003-10-10 Robert Millan <>
* config.guess: Update from official source (CVS).
* config.sub: Likewise.
2003-09-18 Robert Millan <>
* docs/texinfo.tex: Update from
2003-09-05 KB Sriram <>
* stage2/fsys_fat.c: Fix missdetection of ext2fs as fatfs.
2003-09-05 Robert Millan <>
* docs/menu.lst (GNU/Linux): Add commented initrd command, which
is consistent with documentation.
2003-09-01 Robert Millan <>
* docs/menu.lst: Add NetBSD, OpenBSD, GNU/KFreeBSD and
2003-08-13 Jason Thomas <>
* util/ (resolve_symlink): New function to
resolve symlinks.
(find_device): Moved symlink code to new function.
Before we convert the install_device we attempt to resolve it if
its a symlink using the new function.
* util/mbchk.c (check_multiboot): The sense of an error message
was inverted.
Reported by Timothy Baldwin <>.
2003-08-12 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (read_tree_node): Fixed a typo; only
matters for very large fs when tree doesn't fit in cache.
(IH_KEY_OFFSET): Don't check for INFO->version. There are
actually old version file systems that use new version items.
(IH_KEY_ISTYPE): Likewise.
(reiserfs_dir): Likewise.
2003-08-09 Thierry Laronde <>
* util/mkbimage: New File. `mkbimage' depends on GRUB and
existed elsewhere. It is now part of GRUB so that people can
* util/ (sbin_SCRIPTS): Added script `mkbimage'
2003-08-01 Jason Thomas <>
* util/ support --no-floppy
This allow users to specify the --no-floppy option which
is passed onto the grub shell, so it does not probe the floppy
Patch from
2003-06-17 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (reiserfs_mount): Clear the node cache.
This fixes a problem where files from other partitions appear at
the wrong partition. Problem reported by Johan Regin.
2003-05-04 Yoshinori K. Okuji <>
* 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 <>.
2003-03-19 Yoshinori K. Okuji <>
From Adam Lackorzynski <>:
* stage2/shared.h (KEY_NPAGE): Changed to 0x5100.
(KEY_PPAGE): Changed to 0x4900.
2003-03-19 Yoshinori K. Okuji <>
* 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 <>.
2003-03-10 Yoshinori K. Okuji <>
From Andrew Walrond <>:
* stage2/fsys_reiserfs.c (struct reiserfs_journal_header):
Remove an unnecessary ``long''.
2003-03-10 Yoshinori K. Okuji <>
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.
2003-02-20 Yoshinori K. Okuji <>
* util/ (find_device): Fix the sed script.
2003-02-17 Yoshinori K. Okuji <>
* lib/device.c (check_device): If DEVICE is empty, just return
(get_scsi_disk_name) [__QNXNTO__]: Make NAME empty, because SCSI
disks are detected as IDE disks on QNX RTP.
From Taketo Kabe <>:
* lib/device.c (get_ide_disk_name) [__QNXNTO__]: Set NAME to
(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.
2003-01-29 Yoshinori K. Okuji <>
From Ilguiz Latypov:
* 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.
2003-01-25 Yoshinori K. Okuji <>
From Steven Dick <>:
* stage2/pc_slice.h (PC_SLICE_TYPE_DELL_UTIL): New macro.
2003-01-25 Yoshinori K. Okuji <>
From Karsten Scheibler <>:
* stage2/terminfo.c (term): Don't use a C99-style initializer.
2003-01-16 Yoshinori K. Okuji <>
From H.J. Lu <>:
* 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.
2003-01-05 Yoshinori K. Okuji <>
* (CFLAGS): When the default CFLAGS is used,
eliminate -O2 and -g from CFLAGS, because Autoconf may
automatically set CFLAGS to them.
2003-01-02 Yoshinori K. Okuji <>
From Jeremy Katz:
* Support building on x86_64 with gcc -m32.
2003-01-02 Yoshinori K. Okuji <>
From Jeremy Katz:
* stage2/fsys_ext2fs.c (ext2fs_dir): Initialize STR_CHK to shut
up GCC.
* stage2/fsys_minix.c (minix_dir): Likewise.
2002-12-21 Yoshinori K. Okuji <>
* stage2/asm.S (gateA20): First, try a BIOS call (INT 15H,
AX=2400/2401). Use the keyboard controller, only if that failed.
2002-12-11 Yoshinori K. Okuji <>
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.
2002-12-09 Yoshinori K. Okuji <>
* stage2/char_io.c (init_page): Change the software name from
"GRUB" to "GNU GRUB". This was inaccurate. Reported by Ciaran
O'Riordan <>.
2002-12-04 Yoshinori K. Okuji <>
* stage2/builtins.c (embed_func): When checking if the disk can
store Stage 1.5, check every partition, if it isn't empty.
2002-12-04 Yoshinori K. Okuji <>
* stage2/stage2.c (print_entry): Put a right arrow, if the entry
is longer than 71 characters. Reported by Pavel Roskin.
2002-12-04 Yoshinori K. Okuji <>
* stage2/disk_io.c (set_device): If '(n' is given, add 'd' into
DEVICE. Reported by Pavel Roskin.
2002-12-03 Yoshinori K. Okuji <>
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
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.
2002-12-03 Yoshinori K. Okuji <>
* docs/grub.texi (terminfo): Fix a misleading English sentence.
Reported by Pavel Roskin.
* stage2/builtins.c (builtin_terminfo): Likewise.
2002-12-01 Yoshinori K. Okuji <>
From Alexander Langer <>:
* 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,
2002-12-01 Yoshinori K. Okuji <>
* docs/grub.texi (Reporting bugs): Specify the project page of
the BTS instead of the BTS itself.
2002-11-30 Yoshinori K. Okuji <>
* docs/ (man_MANS): Added grub-terminfo.8.
($(srcdir)/grub_terminfo.8): New target.
* utils/ New file.
* util/ (sbin_SCRIPTS): Added grub-terminfo.
* (AC_OUTPUT): Added util/grub-terminfo.
* docs/grub.texi (terminfo): New subsection.
(Invoking grub-terminfo): New chapter.
From Tilmann Bubeck <>:
* stage2/ (noinst_HEADERS): Added terminfo.h and
(libgrub_a_SOURCES): Added terminfo.c and tparm.c.
(pre_stage2_exe_SOURCES): Likewise.
* stage2/terminfo.c: New file.
* stage2/terminfo.h: Likewise.
* stage2/tparm.c: Likewise.
* stage2/tparm.h: Likewise.
* stage2/stage2.c (get_line_from_config): Fix handling of
* stage2/char_io.c (grub_putstr): New function.
(grub_printf): Use grub_putstr.
(substring): Add const into both arguments.
* stage2/builtins.c [SUPPORT_SERIAL]: Include terminfo.h.
[SUPPORT_SERIAL] (terminfo_func): New function.
[SUPPORT_SERIAL] (builtin_terminfo): New variable.
(builtin_table) [SUPPORT_SERIAL]: Added a pointer to
* stage2/serial.c (serial_gotoxy): Use ti_cursor_address.
(serial_cls): Use ti_clear_screen.
(serial_highlight): use ti_enter_standout_mode and
2002-11-30 Yoshinori K. Okuji <>
* 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.
2002-11-28 Yoshinori K. Okuji <>
* 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.
2002-11-15 Yoshinori K. Okuji <>
* docs/grub.texi (QNX): New subsection. Reported by
Marian-Nicolae V. ION <>.
2002-10-28 Yoshinori K. Okuji <>
* grub/asmstub.c (console_translate_key): Deal with KEY_PPAGE
* 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
* 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 <>.
2002-10-10 Jason Thomas <>
* stage2/builtins.c (setup_func): Added missing space to --force-lba
option. Reported by Kenneth Crudup <>
2002-10-06 Yoshinori K. Okuji <>
* stage2/asm.S (gateA20): Output a dummy command (0xff), as a
workaround for USB keyboard hanging problem. Suggested by
Hidetoshi Nishimaki <>.
2002-10-06 Yoshinori K. Okuji <>
* (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
2002-09-13 Yoshinori K. Okuji <>
* stage2/serial.c (fill_input_buf): Take a new argument NOWAIT.
If NOWAIT is true, don't loop.
All callers are changed.
2002-09-08 Yoshinori K. Okuji <>
* (--disable-serial): Fix a typo in the
2002-08-20 Jason Thomas <>
Changed highlight state code for hercules, console and serial.
The state was 0 - normal or 1 - highlight.
The state is now defined using an enum called color_state.
* stage2/term.h (color_state): New enum.
(COLOR_STATE_STANDARD): Standard color to use when not using
user defined.
(COLOR_STATE_NORMAL): User defined normal color.
(COLOR_STATE_HIGHLIGHT): User defined highlight color.
(console_highlight): Renamed to console_setcolorstate.
(serial_highlight): Renamed to serial_setcolorstate.
(hercules_highlight): Renamed to hercules_setcolorstate.
* stage2/hercules.c (herc_highlight_state): Removed.
(herc_standard_color): New variable.
(herc_color_state): Likewise.
(herc_highlight): Renamed to herc_setcolorstate.
(herc_setcolorstate): Added switch to handle new states.
* stage2/console.c (console_highlight_state): Removed.
(console_standard_color): New variable.
(console_color_state): Likewise.
(console_highlight): Renamed to console_setcolorstate.
(console_setcolorstate): Added switch to handle new states.
* stage2/serial.c (serial_highlight): Renamed to
(serial_setcolorstate): Adjusted 'if' to suit new states.
* grub/asmstub.c (console_highlight): Renamed to
(console_setcolorstate): Adjusted 'if' to suit new states.
* stage2/stage2.c (print_entry): Set color states using new
(print_border): Likewise.
* stage2/stage2.c (run_menu): Reverse if (!) to if () for
2002-07-12 Yoshinori K. Okuji <>
* 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_SETUP): Likewise.
(LINUX_KERNEL): Likewise.
(LINUX_SETUP_SEG): Likewise.
(LINUX_INIT_SEG): Likewise.
(LINUX_SETUP_STACK): Set to 0x9000.
(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.
(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
* grub/asmstub.c (linux_data_tmp_addr): New variable.
(linux_data_real_addr): Likewise.
2002-07-09 Yoshinori K. Okuji <>
From Mark Kettenis <>:
* stage2/boot.c (load_image): Recognize newer FreeBSD kernels.
* stage2/i386-elf.h (EI_OSABI): New macro.
(EI_ABIVERSION): Likewise.
(EI_PAD): Set to 9.
2002-07-06 Yoshinori K. Okuji <>
* 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.
2002-07-04 Yoshinori K. Okuji <>
* docs/grub.texi (Reporting bugs): Use the group name (i.e.
grub) instead of the group id (i.e. 68) for the URL of the BTS.
2002-07-03 Yoshinori K. Okuji <>
* 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.
2002-07-03 Yoshinori K. Okuji <>
* stage2/serial.c [!GRUB_UTIL] (serial_hw_fetch): Fixed a typo.
Reported by Ilguiz Latypov.
2002-07-01 Yoshinori K. Okuji <>
* (AUTOMAKE_OPTIONS): New variable. Specify the
required Automake version explicitly.
2002-06-30 Yoshinori K. Okuji <>
* 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.
2002-06-30 Yoshinori K. Okuji <>
* stage2/serial.c [!GRUB_UTIL] (serial_hw_fetch): Fixed the
conditional statement. Reported by Ilguiz Latypov.
2002-06-24 Yoshinori K. Okuji <>
* MAINTENANCE: New file.
2002-06-15 Yoshinori K. Okuji <>
* 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
2002-06-15 Yoshinori K. Okuji <>
* stage2/fsys_xfs.c (le32): Don't use bswap, but use xchgb and
roll, because 386 doesn't have bswap. Reported by Frode Vatvedt
Fjeld <>.
2002-06-12 Yoshinori K. Okuji <>
* 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
2002-06-12 Yoshinori K. Okuji <>
* util/ Prompt to retype a password, and check
if the passwords matches. Suggested by Matt Perry
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.
2002-06-12 Yoshinori K. Okuji <>
The terminal handling code is rewritten radically.
* stage2/console.c: New file.
* stage2/term.h: Likewise.
* stage2/ (noinst_HEADERS): Added term.h.
(libgrub_a_SOURCES): Added serial.c.
(pre_stage2_exec_SOURCES): Added console.c.
* stage2/asm.S (console_putchar): Rewritten from scratch.
[!STAGE1_5] (translation_table): New variable.
[!STAGE1_5] (translate_keycode): New function.
[!STAGE1_5] (console_getkey): Call translate_keycode.
[!STAGE1_5] (console_checkkey): Likewise.
[!STAGE1_5] (nocursor): Renamed to ...
[!STAGE1_5] (console_nocursor): ... this.
[!STAGE1_5] (console_set_attrib): Removed.
* stage2/builtins.c: Include term.h.
(terminal): Removed.
(normal_color): Likewise.
(highlight_color): Likewise.
(cat_func): Display a question mark when a non-printable
character was read.
(terminal_func): Rewritten almost from scratch.
* stage2/char_io.c: Include term.h.
[!STAGE1_5] (auto_fill): Removed.
[!STAGE1_5] (term_table): New variable.
[!STAGE1_5] (current_term): Likewise.
[!STAGE1_5] (real_get_cmdline): New function. The code was
stolen from the previous version of get_cmdline.
[!STAGE1_5] (get_cmdline): Rewritten from scratch.
[!STAGE1_5] (translate_keycode): Removed.
[!STAGE1_5] (getkey): Rewritten from scratch.
[!STAGE1_5] (checkkey): Likewise.
(grub_putchar): Likewise.
[!STAGE1_5] (gotoxy): Likewise.
[!STAGE1_5] (getxy): Likewise.
[!STAGE1_5] (cls): Likewise.
[!STAGE1_5] (nocursor): New function.
[SUPPORT_SERIAL] (serial_getxy): Removed.
[SUPPORT_SERIAL] (serial_gotoxy): Likewise.
[SUPPORT_SERIAL] (serial_cls): Likewise.
[SUPPORT_SERIAL] (serial_getxy): Likewise.
[!STAGE1_5] (set_attrib): Likewise.
* stage2/cmdline.c (init_cmdline): Set COUNT_LINES to -1.
* stage2/common.c [!STAGE1_5] (err_list): Removed
* stage2/hercules.c: Rewritten almost from scratch.
* stage2/hercules.h (herc_putchar): Removed.
(herc_cls): Likewise.
(herc_getxy): Likewise.
(herc_gotoxy): Likewise.
(herc_set_attrib): Likewise.
* stage2/serial.c: Rewritten almost from scratch.
* stage2/serial.h: Likewise.
* stage2/shared.h [GRUB_UTIL] (DISP_UL): Set to the same value
as VGA's.
[GRUB_UTIL] (DISP_UR): Likewise.
[GRUB_UTIL] (DISP_LL): Likewise.
[GRUB_UTIL] (DISP_LR): Likewise.
[GRUB_UTIL] (DISP_VERT): Likewise.
[GRUB_UTIL] (DISP_LEFT): Likewise.
[GRUB_UTIL] (DISP_UP): Likewise.
[GRUB_UTIL] (DISP_DOWN): Likewise.
(grub_error_t): Removed ERR_NEED_SERIAL.
(normal_color): Removed.
(highlight_color): Likewise.
(console_cls): Removed, because this is declared in term.h.
(console_getxy): Likewise.
(console_gotoxy): Likewise.
(console_putchar): Likewise.
(console_getkey): Likewise.
(console_checkkey): Likewise.
(console_set_attrib): Removed.
(set_attrib): Likewise.
[GRUB_UTIL] (nocursor): Declared.
(auto_fill): Removed.
(terminal): Likewise.
(TERMINAL_DUMB): Likewise.
(translate_keycode): Likewise.
* stage2/stage2.c: Include term.h.
(print_entry): Rewritten from scratch.
(print_entries): Likewise.
(print_border): Likewise.
(set_line): Removed.
(set_line_normal): Likewise.
(set_line_highlight): Likewise.
* grub/asmstub.c: Don't include hercules.h. Include term.h.
(console_current_color): New variable.
(console_translate_key): New function.
(console_checkkey): Rewritten from scratch.
(console_getkey): Likewise.
(console_putchar): Likewise.
(console_set_attrib): Removed.
(console_highlight): New function.
(console_setcolor): Likewise.
(console_nocursor): Likewise.
(serial_getkey): Removed.
(serial_checkkey): Likewise.
(serial_putchar): Likewise.
(serial_exists): Likewise.
(serial_get_port): Likewise.
(serial_init): Likewise.
(serial_hw_fetch): New function.
(serial_hw_put): Likewise.
(serial_hw_delay): Likewise.
(serial_hw_get_port): Likewise.
(serial_hw_init): Likewise.
(set_serial_device): Renamed to ...
(serial_set_device): ... this.
(herc_putchar): Renamed to ...
(hercules_putchar): ... this.
(herc_cls): Renamed to ...
(hercules_cls): ... this.
(herc_getxy): Renamed to ...
(hercules_getxy): ... this.
(herc_gotoxy): Renamed to ...
(hercules_gotoxy): ... this.
(hercules_highlight): New function.
(hercules_setcolor): Likewise.
(hercules_nocursor): Likewise.
(herc_set_attrib): Removed.
* grub/main.c: Include term.h.
(main): If USE_CURSES is false, set CURRENT_TERM->FLAGS to
TERM_NO_EDIT | TERM_DUMB. TERMINAL is not used any longer.
2002-06-01 Yoshinori K. Okuji <>
* docs/grub.texi (FAQ): Removed. See the GNU GRUB FAQ on the web
2002-05-31 Yoshinori K. Okuji <>
* docs/grub.texi (Reporting bugs): Recommend using the BTS on
Savannah rather than the list bug-grub.
2002-05-25 Yoshinori K. Okuji <>
* 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.
2002-05-24 Yoshinori K. Okuji <>
* stage2/builtins.c (real_root_func): New function.
(root_func): Just call real_root_func.
(rootnoverify_func): Likewise.
2002-05-23 Yoshinori K. Okuji <>
* (AM_INIT_AUTOMAKE): Changed the version number to
2002-05-23 Yoshinori K. Okuji <>
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 <>.
* 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.
2002-05-22 Yoshinori K. Okuji <>
* stage2/builtins.c (boot_func): If DEBUG is true, print
Don't set ERRNUM after rawread failed, because rawread should
set ERRNUM itself.
2002-05-20 Yoshinori K. Okuji <>
* lib/device.c (read_device_map): Show an error message and exit
abnormally, if MAP[DRIVE] has already been filled.
* util/ If there is any dulicated entry, print
an error message and exit abnormally.
2002-05-20 Yoshinori K. Okuji <>
* lib/device.c: Don't include linux/hdreg.h, linux/major.h,
or linux/kdev_t.h.
[__linux__] (HDIO_GETGEO): Defined.
[__linux__] (hd_geometry): Likewise.
[__linux__] (FLOPPY_MAJOR): Likewise.
[__linux__] (MINORBITS): Likewise.
[__linux__] (MAJOR): Likewise.
2002-05-08 Yoshinori K. Okuji <>
* netboot/fsys_tftp.c (tftp_read): Don't call buf_fill unless
SIZE is positive.
2002-05-08 Yoshinori K. Okuji <>
* 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.
2002-04-30 Yoshinori K. Okuji <>
From Jean-Jacques Michel <>:
* 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.
2002-04-30 Yoshinori K. Okuji <>
* 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.
2002-04-29 Yoshinori K. Okuji <>
* stage2/builtins.c [SUPPORT_SERIAL] (terminal_func): Added a
new option ``--silent''. This suppresses messages, if specified.
2002-04-29 Yoshinori K. Okuji <>
* config.guess: New upstream version.
* config.sub: Likewise.
2002-04-20 Yoshinori K. Okuji <>
* netboot/config.c (PCI_NIC) [INCLUDE_DAVICOM]: Fix typos.
Reported by Julien Perrot <>.
2002-04-17 Yoshinori K. Okuji <>
* stage2/builtins.c [SUPPORT_SERIAL] (terminal_func): Set
COUNT_LINES to -1, to disable the pager.
2002-04-16 Yoshinori K. Okuji <>
* docs/grub.texi (Obtaining and Building GRUB): Update the link
to the binutils site.
2002-04-06 Pavel Roskin <>
* util/ Fix hardcoded /dev/hda1.
2002-04-06 Yoshinori K. Okuji <>
* 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/ 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.
2002-04-04 Yoshinori K. Okuji <>
* stage2/builtins.c (setup_func): Don't embed a drive number, if
2002-03-29 Yoshinori K. Okuji <>
* docs/grub.texi (General commands): Added ``pager'' into the
(pager): New subsection.
(terminal): Added a description about the option
* (AC_INIT_AUTOMAKE): Set the version number to
2002-03-26 Yoshinori K. Okuji <>
* netboot/eepro100.c (eepro100_probe): Increase the delay at the
2002-03-26 Yoshinori K. Okuji <>
* stage2/boot.c (linux_mem_size): New variable.
(load_image): Check a mem= option and set LINUX_MEM_SIZE to the
specified memory size, if any. Otherwise, to zero. When an
overflow is detected, use LINUX_INITRD_MAX_ADDRESS instead.
(load_initrd): If LINUX_MEM_SIZE is non-zero, use it instead of
the actual memory size.
* stage2/char_io.c (safe_parse_maxint): Use ERR_NUMBER_OVERFLOW
instead of ERR_NUMBER_PARSING, when an overflow occurs.
* stage2/common.c [!STAGE1_5] (err_list): Added
* stage2/shared.h (ERR_NUMBER_OVERFLOW): New constant.
2002-03-24 Yoshinori K. Okuji <>
* stage2/stage2.c (run_menu): Call cls outside the loop to run
* stage2/cmdline.c (run_script): Prompt a user's intervention,
only when FALLBACK_ENTRY is negative.
2002-02-11 Pavel Roskin <>
* util/ (find_device): New function - find block
device for given file or directory. Resolve symlinks to fix
problem on Linux with devfs and old device names in /etc/fstab.
Use find_device() for root_device, bootdir_device and
2002-02-08 Yoshinori K. Okuji <>
* grub/main.c (OPT_NO_PAGER): New macro.
(longopts): Added an entry for "--no-pager".
(usage): Added a description about "--no-pager".
(main): In case of OPT_NO_PAGER, set USE_PAGER to zero. The same
thing is done with OPT_BATCH, because the pager is just harmful
in batch mode.
2002-02-08 Yoshinori K. Okuji <>
* stage2/builtins.c (help_func): Show all the commands runnable
with the command-line interface, if "--all" is specified.
2002-02-08 Yoshinori K. Okuji <>
An internal pager is implemented.
* stage2/builtins.c (pager_func): New function.
(builtin_pager): New variable.
(terminal_func): New option, "--lines=LINES" is added. If this
option is specified, set MAX_LINES to the value. Otherwise, set
MAX_LINES to 24.
(vbeprobe_func): Remove the pager code specific to this
(builtin_table): Added a pointer to BUILTIN_PAGER.
* stage2/char_io.c (max_lines) [!STAGE1_5]: New variable.
(count_lines) [!STAGE1_5]: Likewise.
(use_pager) [!STAGE1_5]: Likewise.
(grub_putchar) [!STAGE1_5]: if C is a newline and COUNT_LINES is
not -1, count up the number of lines. If it exceeds the maximum
number of lines minus 2, show a message and wait for input of
return key. "minus 2" is to reserve space for the message
printed by this internal pager.
* stage2/cmdline.c (enter_cmdline): If USE_PAGER is true, set
COUNT_LINES to zero, before running a command, and reset
COUNT_LINES to -1 after that.
* stage2/shared.h (max_lines) [!STAGE1_5]: Declared.
(count_lines) [!STAGE1_5]: Likewise.
(use_pager) [!STAGE1_5]: Likewise.
2002-02-08 Yoshinori K. Okuji <>
* stage2/fsys_jfs.c (jfs_read) [STAGE1_5]: Set and reset
DISK_READ_FUNC even in Stage 1.5.
* stage2/fsys_xfs.c (xfs_read) [STAGE1_5]: Likewise.
* stage2/stage1_5.c (saved_sector): Initialized with -1.
(cmain): Check if SAVED_SECTOR was set appropriately after
reading the second sector of Stage 2. If SAVED_SECTOR is not
set (i.e. it is equal to -1), print an error and stop.
2002-02-05 Yoshinori K. Okuji <>
* stage2/builtins.c (setup_func): Add a VSTa fs entry into
2002-02-05 Yoshinori K. Okuji <>
* stage2/shared.h (BUILTIN_HELP_LIST): New macro. Used for
commands whose help messages are listed when no argument is
specified to the command "help".
* stage2/builtins.c (builtin_blocklist): Added the attribute
(builtin_boot): Likewise.
(builtin_bootp): Likewise.
(builtin_cat): Likewise.
(builtin_chainloader): Likewise.
(builtin_color): Likewise.
(builtin_configfile): Likewise.
(builtin_device): Likewise.
(builtin_dhcp): Likewise.
(builtin_displayapm): Likewise.
(builtin_displaymem): Likewise.
(builtin_find): Likewise.
(builtin_geometry): Likewise.
(builtin_halt): Likewise.
(builtin_help): Likewise.
(builtin_hide): Likewise.
(builtin_ifconfig): Likewise.
(builtin_initrd): Likewise.
(builtin_kernel): Likewise.
(builtin_makeactive): Likewise.
(builtin_map): Likewise.
(builtin_md5crypt): Likewise.
(builtin_module): Likewise.
(builtin_modulenounzip): Likewise.
(builtin_partnew): Likewise.
(builtin_parttype): Likewise.
(builtin_quit): Likewise.
(builtin_rarp): Likewise.
(builtin_reboot): Likewise.
(builtin_root): Likewise.
(builtin_rootnoverify): Likewise.
(builtin_serial): Likewise.
(builtin_setkey): Likewise.
(builtin_setup): Likewise.
(builtin_terminal): Likewise.
(builtin_testvbe): Likewise.
(builtin_tftpserver): Likewise.
(builtin_unhide): Likewise.
(builtin_uppermem): Likewise.
(builtin_vbeprobe): Likewise.
(help_func): When no argument is specified, if the last entry
was at the left column, print an extra newline.
2002-02-05 Yoshinori K. Okuji <>
* stage2/shared.h (BUILTIN_HIDDEN): Renamed to ...
(BUILTIN_NO_ECHO): ... this. The old name was too difficult to
see _what_ was hidden.
2002-02-05 Yoshinori K. Okuji <>
* netboot/misc.c (twiddle): Go back to the bar progress, copied
from etherboot-5.0.5/src/misc.c. Execute the code only if DEBUG
is true.
2002-02-05 Yoshinori K. Okuji <>
* stage2/builtins.c (displaymem_func): Use hex digits to display
for consistency.
2002-02-04 Jason Thomas <>
From Denis Kitzman <>:
* stage2/ (libgrub_a_CFLAGS): Fixed a typo.
SUPPORT_HERCULES did not get defined.
2002-01-20 Yoshinori K. Okuji <>
* util/ Check stage2 instead of stage2.c to
determine where the script is invoked, because srcdir may not
be used for the compilation.
2002-01-20 Yoshinori K. Okuji <>
* grub/asmstub.c (console_putchar): When not using curses,
ignore a carriage return, because a newline in Unix is only a
line feed.
2002-01-18 Klaus Reichl <>
* stage2/fsys_minix.c (minix_dir): Fixed bug getting filenames
with MAXNAMELEN right.
* stage2/char_io.c (get_cmdline, cl_refresh): If TERMINAL_DUMB
section is always 0.
Line is only cleared if !TERMINAL_DUMB.
* grub/main.c (use_curses): Initialize to 0 if !HAVE_LIBCURSES
(main): Check for curses use and set terminal to dumb if we
don't use it (helps for --batch and variants of non-curses
2002-01-15 Yoshinori K. Okuji <>
* (AM_INIT_AUTOMAKE): The version number is
upgraded to 0.91.
2002-01-15 Yoshinori K. Okuji <>
* docs/grub.texi (Preset Menu): New chapter.
2002-01-15 Yoshinori K. Okuji <>
* docs/grub.texi: Added some text about JFS and XFS.
2002-01-08 Yoshinori K. Okuji <>
* grub/main.c (use_preset_menu): New variable.
(OPT_PRESET_MENU): New macro.
(longopts): Added an entry for "--preset-menu".
(usage): Added a description for "--preset-menu". Also, change
the first character of the description for "--device-map" to
lower case for consistency.
(main): Set USE_PRESET_MENU to 1 in the case of OPT_PRESET_MENU.
* stage2/shared.h (use_preset_menu): Declared.
(open_preset_menu) [GRUB_UTIL]: If USE_PRESET_MENU is false,
return zero immediately.
2002-01-08 Yoshinori K. Okuji <>
* stage2/common.c [SUPPORT_DISKLESS]
(setup_diskless_environment): Removed. The feature is moved to
the preset menu.
* stage2/stage2.c [SUPPORT_DISKLESS] (preset_menu): Set to the
string "bootp\n".
[SUPPORT_DISKLESS] (preset_menu_offset): Defined, as if
[SUPPORT_DISKLESS] (open_preset_menu): Likewise.
[SUPPORT_DISKLESS] (read_from_preset_menu): Likewise.
[SUPPORT_DISKLESS] (close_preset_menu): Likewise.
2002-01-06 Yoshinori K. Okuji <>
The preset menu has a priority over the configuration file.
Suggested by Christoph Plattner.
* stage2/stage2.c [PRESET_MENU_STRING] (open_preset_menu):
Check if PRESET_MENU is not NULL.
[PRESET_MENU_STRING] (close_preset_menu): Set PRESET_MENU to
(cmain): New internal function, reset. This function resets
MENU_ENTRIES and call init_config.
Try to open the preset menu first, and try to open the
configuration file, only if that failed.
Even if the preset menu was read, try to open the configuration
file. This time, opening the preset menu never succeed, because
close_preset_menu ensures that the preset menu is available at
most once.
2002-01-06 Yoshinori K. Okuji <>
* netboot/misc.c (inet_aton): Don't check if *P is an asterisk,
if I is 3. Reported by Rick (his real name and address are
2002-01-03 Yoshinori K. Okuji <>
Update the netboot stuff to Etherboot-5.0.5.
* (--enable-3c590): Removed. This was a mistake.
(--enable-davicom): New option.
(--enable-eepro): Likewise.
(--enable-natsemi): Likewise.
(--enable-ni5010): Likewise.
(--enable-sis900): Likewise.
(--enable-w89c840): Likewise.
(--enable-3c509-hack): Removed.
(--enable-ns8390-force-16bit): Likewise.
* netboot/ (libdrivers_a_SOURCES): Added timer.c and
(EXTRA_libdrivers_a_SOURCES): Added davicom.c, eepro.c, fa311.c,
natsemi.c, ni5010.c, sis900.c, sis900.h, tlan.c and w89c840.c.
(EXTRA_DIST): Added sis900.txt.
(3c595_drivers): Remove 3c590.o from this.
(davicom_drivers): New variable.
(eepro_drivers): Likewise.
(natsemi_drivers): Likewise.
(ni5010_drivers): Likewise.
(sis900_drivers): Likewise.
(w89c840_drivers): Likewise.
(3c590_o_CFLAGS): Removed.
(davicom_o_CFLAGS): New variable.
(eepro_o_CFLAGS): Likewise.
(natsemi_o_CFLAGS): Likewise.
(ni5010_o_CFLAGS): Likewise.
(sis900_o_CFLAGS): Likewise.
(w89c840_o_CFLAGS): Likewise.
* netboot/davicom.c: New file, from Etherboot-5.0.5.
* netboot/eepro.c: Likewise.
* netboot/natsemi.c: Likewise.
* netboot/ni5010.c: Likewise.
* netboot/sis900.c: Likewise.
* netboot/sis900.h: Likewise.
* netboot/sis900.txt: Likewise.
* netboot/timer.c: Likewise.
* netboot/timer.h: Likewise.
* netboot/w89c840.c: Likewise.
* netboot/fa311.c: Likewise.
* netboot/tlan.c: Likewise.
* netboot/3c509.c: Copied from Etherboot-5.0.5.
* netboot/3c509.h: Likewise.
* netboot/3c595.c: Likewise.
* netboot/3c90x.c: Likewise.
* netboot/3c90x.txt: Likewise.
* netboot/cards.h: Likewise.
* netboot/cs89x0.c: Likewise.
* netboot/depca.c: Likewise.
* netboot/eepro100.c: Likewise.
* netboot/epic100.c: Likewise.
* netboot/i82586.c: Likewise.
* netboot/lance.c: Likewise.
* netboot/linux-asm-string.h: Likewise.
* netboot/nic.h: Likewise.
* netboot/ns8390.c: Likewise.
* netboot/ns8390.h: Likewise.
* netboot/otulip.c: Likewise.
* netboot/pci.h: Likewise.
* netboot/rtl8139.c: Likewise.
* netboot/sk_g16.c: Likewise.
* netboot/smc9000.c: Likewise.
* netboot/tiara.c: Likewise.
* netboot/tulip.c: Likewise.
* netboot/via-rhine.c: Likewise.
* netboot/config.c: Applied a diff between Etherboot-4.6.4 and
Etherboot-5.0.5 manually.
* netboot/main.c: Likewise.
* netboot/pci.c: Likewise.
* netboot/etherboot.h: Rewritten mostly from scratch, based on
the same file in Etherboot-5.0.5.
* netboot/misc.c: Likewise.
* netboot/osdep.h: Likewise.
* netboot/fsys_tftp.c (GRUB): Defined.
(buf_fill): Use rfc2131_sleep_interval instead of rfc951_sleep.
* stage2/builtins.c [SUPPORT_NETBOOT] (GRUB): Defined.
(boot_func) [SUPPORT_NETBOOT]: Call cleanup_net.
* stage2/cmdline.c [SUPPORT_DISKLESS] (GRUB): Defined.
* stage2/common.c [SUPPORT_DISKLESS] (GRUB): Likewise.
2002-01-02 Jeremy Katz <>
* util/ Support using mktemp as well as tempfile
for secure temporary file creation.
2002-01-02 Jeremy Katz <>
* stage2/md5.c (md5_password): Ensure the password exists before
trying to check against the md5 crypted version.
2001-12-30 Yoshinori K. Okuji <>
* stage1/stage1.S: Don't call INT 13, AH=48H, because it is
difficult to call this function with the workaround implemented
in the previous change due to the size limit of Stage 1.
(lba_mode) [NO_BUGGY_BIOS_IN_THE_WORLD]: Don't check the
geometry explicitly. This shouldn't be harmful, as INT 13,
AH=42H should take care of it, and if you cannot read Stage 2
even with LBA because of a geometry problem, you can never read
* stage2/start.S (lba_mode) [NO_BUGGY_BIOS_IN_THE_WORLD]:
2001-12-30 Yoshinori K. Okuji <>
* stage2/bios.c (get_diskinfo): Clear out the structure DRP
before calling get_diskinfo_int13_extensions, because the Ralf
Brown's Interrupt List says that Dell machines using PhoenixBIOS
4.0 Release 6.0 fail, if DRP.FLAGS is not zero. Setting the
entire structure to zero may be overkill, but it should be safe.
* stage2/char_io.c [STAGE1_5] (grub_memset): Defined.
2001-12-30 Yoshinori K. Okuji <>
From John Goerzen <>:
* util/ (convert): Added NetBSD support.
2001-12-30 Yoshinori K. Okuji <>
* util/ Set GRUB_PREFIX and BOOTDIR to "/grub"
and "${rootdir}" respectively in NetBSD.
2001-12-30 Yoshinori K. Okuji <>
* stage2/builtins.c (builtin_geometry): Add extra space
characters into the long description.
(builtin_kernel): Likewise.
(builtin_vbeprobe): Likewise.
2001-12-19 Yoshinori K. Okuji <>
From Michael Sullivan <>:
* stage1/stage1.S (real_start): Added a workaround for AST BIOS,
because it clobbers %dl with INT 13, AH=41H.
2001-12-19 Yoshinori K. Okuji <>
* stage2/fsys_fat.c (fat_read): Fix the contradictory comment.
Reported by Filip Van Raemdonck <>.
2001-12-11 Yoshinori K. Okuji <>
* stage2/builtins.c (displayapm_func): Don't use multi-line
string literals but string concatenation instead, to suppress
warnings from gcc-3.0.x.
* stage2/cmdline.c (print_cmdline_message): Likewise.
* util/mbchk.c (usage): Likewise.
* stage2/smp-imps.c (imps_read_config_table): Add a break
statement after the label ``default''.
* util/mbchk.c: Include <stdlib.h> for the prototype of exit.
* stage2/serial.c (serial_port): Initialize with 0 instead of
-1, as an invalid value, because SERIAL_PORT is unsigned. This
change shouldn't affect anything.
(serial_exists): For the above change, check SERIAL_PORT with 0
instead of -1.
2001-12-10 Yoshinori K. Okuji <>
* stage2/shared.h (ERR_NO_DISK_SPACE): New constant.
* stage2/common.c (err_list): Added an entry for
* docs/grub.texi (Stage2 errors): Added the description.
* stage2/builtins.c (embed_func): Use ERR_NO_DISK_SPACE instead
of ERR_DEV_VALUES when the spare space is too small. Suggested
by Eric Mumpower <>.
2001-12-10 Yoshinori K. Okuji <>
* grub/asmstub.c: Include <signal.h>.
(grub_stage2) [HAVE_LIBCURSES]: If USE_CURSES is true, ignore
the signal SIGWINCH. Reported by Christian Hudon
2001-11-29 Yoshinori K. Okuji <>
From Jason Thomas:
* stage2/disk_io.c (set_partition_hidden_flag): Complete rewrite
of this function which now supports logical partitions.
2001-11-12 Yoshinori K. Okuji <>
* docs/grub.texi: The copyright of this file is only held by
Free Software Foundation, Inc., as Erich Boleyn has assigned his
copyright to the FSF.
* stage1/stage1.S: Likewise.
* stage2/asm.S: Likewise.
* stage2/boot.c: Likewise.
* stage2/builtins.c: Likewise.
* stage2/char_io.c: Likewise.
* stage2/cmdline.c: Likewise.
* stage2/common.c: Likewise.
* stage2/disk_io.c: Likewise.
* stage2/fat.h: Likewise.
* stage2/filesys.h: Likewise.
* stage2/freebsd.h: Likewise.
* stage2/fsys_ext2fs.c: Likewise.
* stage2/fsys_fat.c: Likewise.
* stage2/fsys_ffs.c: Likewise.
* stage2/gunzip.c: Likewise.
* stage2/i386-elf.h: Likewise.
* stage2/mb_header.h: Likewise.
* stage2/mb_info.h: Likewise.
* stage2/pc_slice.h: Likewise.
* stage2/shared.h: Likewise.
* stage2/stage1_5.c: Likewise.
* stage2/stage2.c: Likewise.
* stage2/start.S: Likewise.
2001-11-07 Yoshinori K. Okuji <>
* stage2/builtins.c (terminal_func) [!SUPPORT_SERIAL]: Disable
the wait code, as it is usable only when serial support is on.
Reported by Karl Hammar <>.
2001-10-27 Yoshinori K. Okuji <>
JFS and XFS support is added.
From Serguei Tzukanov <>:
* (--disable-jfs): New option.
(--disable-xfs): Likewise.
* stage2/ (noinst_HEADERS): Added jfs.h and xfs.h.
(libgrub_a_SOURCES): Added fsys_jfs.c and fsys_xfs.c.
(libgrub_a_CFLAGS): Added -DFSYS_JFS=1 and -DFSYS_XFS=1.
(pkgdata_DATA): Added jfs_stage1_5 and xfs_stage1_5.
(noinst_PROGRAMS): Added jfs_stage1_5.exec and
(pre_stage2_exec_SOURCES): Added fsys_jfs.c and fsys_xfs.c.
(jfs_stage1_5_exec_SOURCES): New variable.
(jfs_stage1_5_exec_CFLAGS): Likewise.
(jfs_stage1_5_exec_ASFLAGS): Likewise.
(jfs_stage1_5_exec_LDFLAGS): Likewise.
(xfs_stage1_5_exec_SOURCES): Likewise.
(xfs_stage1_5_exec_CFLAGS): Likewise.
(xfs_stage1_5_exec_ASFLAGS): Likewise.
(xfs_stage1_5_exec_LDFLAGS): Likewise.
* stage2/builtins.c (setup_func): Add items for JFS and XFS into
* stage2/disk_io.c (fsys_table): Added entries for JFS and XFS.
* stage2/filesys.h [FSYS_JFS] (FSYS_JFS_NUM): Set to 1.
[FSYS_JFS] (jfs_mount): Declared.
[FSYS_JFS] (jfs_read): Likewise.
[FSYS_JFS] (jfs_dir): Likewise.
[FSYS_JFS] (jfs_embed): Likewise.
[!FSYS_JFS] (FSYS_JFS_NUM): Set to 0.
[FSYS_XFS] (FSYS_XFS_NUM): Set to 1.
[FSYS_XFS] (xfs_mount): Declared.
[FSYS_XFS] (xfs_read): Likewise.
[FSYS_XFS] (xfs_dir): Likewise.
* stage2/shared.h (STAGE2_ID_JFS_STAGE1_5): New macro.
(STAGE2_ID_XFS_STAGE1_5): Likewise.
* stage2/fsys_jfs.c: New file.
* stage2/fsys_xfs.c: Likewise.
* stage2/jfs.h: Likewise.
* stage2/xfs.h: Likewise.
2001-10-27 Yoshinori K. Okuji <>
* stage2/apm.S: Always disconnect from APM. Written by Erich
Stefan Boleyn.
* util/ (noinst_DATA): Removed.
(EXTRA_DIST): Likewise.
2001-10-14 Gordon Matzigkeit <>
* Explicitly call _AM_DEPENDENCIES(CC) for the
benefit of older Autoconfs.
2001-10-13 Yoshinori K. Okuji <>
* netboot/fsys_tftp.c (tftp_read): Move the unused data
forwards, only if AMT is more than zero. If AMT is not positive,
subtract BUF_READ from SAVED_FILEPOS and set BUF_READ to zero,
to skip the whole buffer. Reported by Frank Mehnert.
2001-10-13 Yoshinori K. Okuji <>
Don't use get_diskinfo_floppy. Reported by Ben Liblit
* stage2/asm.S (get_diskinfo_floppy): Removed (by cpp).
* stage2/bios.c (get_diskinfo_floppy): Removed.
(get_diskinfo): Don't call get_diskinfo_floppy any longer.
2001-10-13 Yoshinori K. Okuji <>
Based on a patch from Jeremy Katz <>:
* docs/grub.texi (Stage2 errors): Added documentation on the
error number 33 (Serial device not configured).
* grub/asmstub.c (serial_exists): New function.
* stage2/serial.c (serial_exists): Likewise.
* stage2/serial.h (serial_exists): New prototype.
* stage2/shared.h (grub_error_t): ERR_NEED_SERIAL is added.
* stage2/builtins.c (terminal_func) [SUPPORT_SERIAL]: If a
serial device is not configured yet, restore the terminal and
* stage2/common.c (err_list): Added an item for ERR_NEED_SERIAL.
2001-10-13 Yoshinori K. Okuji <>
From Jason Thomas <>:
* util/ (convert): Add support for DAC960.
From Adrian Phillips <>:
* lib/device.c (get_dac960_disk_name): New function.
(init_device_map) [__linux__]: Add support for DAC960.
2001-10-11 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (reiserfs_super_block): Updated
to better match recent reiserfs versions.
(reiserfs_mount): Handle cases where journal can't be found,
e.g. journal on another disk or unexpected journal parameters.
In that case the journal isn't used.
2001-10-10 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (reiserfs_mount): Don't look at
the superblock field s_journal_block_count anymore. It used
to contain 0, it never contained a valid value, and now I
have a report that it can contain an invalid value.
Bug reported by Jim Caley <>.
2001-09-24 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (reiserfs_dir): Set errnum to
ERR_FSYS_CORRUPT if a symlink can't be read for some reason,
but no error is set by read.
2001-08-08 OKUJI Yoshinori <>
From Derrik Pates <>:
* stage2/asm.S [!STAGE1_5] (grub_halt): Set the level of APM
support to 1.1, before turning off the power state.
2001-08-08 OKUJI Yoshinori <>
* util/ Prefix backquotes with backslashes in
strings. From Fernando Silveira.
2001-08-02 Gordon Matzigkeit <>
* stage2/common.c (init_bios_info): Ignore zero-length memory
ranges. From Derrik Pates <>.
2001-07-26 Jochen Hoenicke <>
* stage2/ (libgrub_a_CFLAGS): Enable USE_MD5_PASSWORDS
for libgrub. Previously that was implicitly done by
until the patch from 2001-07-04, which moved that flag from CFLAGS
to FSYS_CFLAGS. Reported by YAMAGUCHI Shingo
2001-07-13 OKUJI Yoshinori <>
* util/ (convert): Recognize the naming scheme
for Linux devfs floppy devices. Reported by Jason Thomas
2001-07-07 OKUJI Yoshinori <>
* netboot/compile: New file. This was also missing... How many
``compile''s does automake want?
2001-07-07 OKUJI Yoshinori <>
From Jan Zerebecki <>:
* acinclude.m4 (grub_DEFINE_FILE): Escape double-quotations as
2001-07-05 OKUJI Yoshinori <>
* (AM_INIT_AUTOMAKE): Set the version number to
2001-07-05 OKUJI Yoshinori <>
Ughh! I forgot to add this file to the CVS.
* docs/compile: New file.
2001-07-05 OKUJI Yoshinori <>
* docs/grub.texi: Updated.
2001-07-05 OKUJI Yoshinori <>
* stage2/boot.c (load_initrd) [!NO_DECOMPRESSION]: Set
NO_DECOMPRESSION to one before opening INITRD, so that GRUB
doesn't decompress an initrd automatically. Reported by
Thierry Laronde.
2001-07-04 OKUJI Yoshinori <>
* stage2/compile: New file.
* docs/mdate-sh: Likewise.
* docs/texinfo.tex: Likewise.
* compile: Removed.
* mdate-sh: Likewise.
* texinfo.tex: Likewise.
* config.guess: Updated from automake-1.4h.
* config.sub: Likewise.
* depcomp: Likewise.
* install-sh: Likewise.
* missing: Likewise.
* mkinstalldirs: Likewise.
* (AS): New variable.
(ASFLAGS): Likewise.
(--disable-md5-password): Use FSYS_CFLAGS instead of CFLAGS.
* stage1/ (AM_CFLAGS): Renamed to ...
(AM_ASFLAGS): ... this.
* stage2/ (pre_stage2_exec_ASFLAGS): New variable.
(start_exec_CFLAGS): Renamed to ...
(start_exec_ASFLAGS): ... this.
(start_exec-start.o): Renamed to ...
(start_exec-start.$(OBJEXT)): ... this.
(e2fs_stage1_5_exec_ASFLAGS): New variable.
(fat_stage1_5_exec_ASFLAGS): Likewise.
(ffs_stage1_5_exec_ASFLAGS): Likewise.
(minix_stage1_5_exec_ASFLAGS): Likewise.
(reiserfs_stage1_5_exec_ASFLAGS): Likewise.
(vstafs_stage1_5_exec_ASFLAGS): Likewise.
(diskless_exec_ASFLAGS): Likewise.
(nbloader_exec_CFLAGS): Renamed to ...
(nbloader_exec_ASFLAGS): ... this.
(nbloader_exec-nbloader.o): Renamed to ...
(nbloader_exec-nbloader.$(OBJEXT)): ... this.
(pxeloader_exec_CFLAGS): Renamed to ...
(pxeloader_exec_ASFLAGS): ... this.
(pxeloader_exec-pxeloader.$(OBJEXT)): New target.
2001-07-03 OKUJI Yoshinori <>
From Julien Bordet <>:
* stage2/i386-elf.h (Elf32_Shdr): New type.
* stage2/boot.c (load_image): Added ELF symbol loading support.
2001-06-22 OKUJI Yoshinori <>
* stage2/char_io.c [STAGE1_5] (grub_strcmp): Defined, even
for Stage 1.5. See thecomment, for a possible future strategy.
* stage2/fsys_vstafs.c [!FSYS_VSTAFS]: Don't define anything.
[STAGE1_5] (grub_strcmp): Removed.
(get_file_info): Made static.
(vstafs_readdir): Likewise.
(vstafs_nextdir): Likewise.
(curr_ext): Likewise.
(current_direntry): Likewise.
(current_blockpos): Likewise.
(a): Likewise.
2001-06-22 OKUJI Yoshinori <>
VSTa filesystem support is added.
From Kristoffer Brånemyr <>:
* stage2/ (--disable-vstafs): New option.
* stage2/ (noinst_HEADERS): Added vstafs.h.
(libgrub_a_SOURCES): Added fsys_vstafs.c.
(libgrub_a_CFLAGS): Added -DFSYS_VSTAFS=1.
(pkgdata_DATA): Added vstafs_stage1_5.
(noinst_PROGRAMS): Added vstafs_stage1_5.exec.
(pre_stage2_exec_SOURCES): Added fsys_vstafs.c.
(vstafs_stage1_5_exec_SOURCES): New variable.
(vstafs_stage1_5_exec_CFLAGS): Likewise.
(vstafs_stage1_5_exec_LDFLAGS): Likewise.
* stage2/disk_io.c (fsys_table): Added an entry for vstafs.
* stage2/filesys.h [FSYS_VSTAFS] (FSYS_VSTAFS_NUM): Defined as
[FSYS_VSTAFS] (vstafs_mount): New prototype.
[FSYS_VSTAFS] (vstafs_read): Likewise.
[FSYS_VSTAFS] (vstafs_dir): Likewise.
* stage2/pc_slice.h (PC_SLICE_TYPE_VSTAFS): New macro.
* stage2/shared.h (STAGE2_ID_VSTAFS_STAGE1_5): Likewise.
[STAGE1_5 && FSYS_VSTAFS] (STAGE2_ID): Defined as
* stage2/vstafs.h: New file.
* stage2/fsys_vstafs.c: Likewise.
2001-06-22 OKUJI Yoshinori <>
From Thierry Laronde <>:
* stage2/builtins.c (configfile_func): Added a prototype.
(bootp_func): If `--with-configfile' is given, set
WITH_CONFIGFILE to one, and call configfile_func with
2001-06-21 OKUJI Yoshinori <>
* docs/grub.texi: Update the location of the CVS repository
[/home/cvs -> /cvsroot/grub].
* README: Likewise.
2001-06-19 OKUJI Yoshinori <>
* stage2/boot.c (load_image): If the image is a Multiboot ELF OS
image, get the physical entry address, when a loaded memory
segment contains it. And, set ENTRY_ADDR to it, after printing
out the virtual one. Suggested by Rogelio M. Serrano Jr.
2001-05-30 OKUJI Yoshinori <>
* docs/grub.texi: Fix some typos. Reported by Florian Hatat
2001-05-29 Pavel Roskin <>
* (AC_OUTPUT): Remove debian/Makefile.
2001-05-28 Gordon Matzigkeit <>
* (SUBDIRS): Remove reference to debian directory.
Packaging is no longer done by the GRUB team.
2001-05-03 Gordon Matzigkeit <>
* stage1/stage1.S (nt_magic): Explicitly reserve space for the NT
magic number.
2001-05-25 Klaus Reichl <>
* stage2/stage2.c (print_entries_raw): New function.
(run_menu): Use it to implement menu & command-list if on dumb
Changes are:
Adjust FIRST_ENTRY only on non-dumb terminals.
Setting of SHOW_MENU is honoured also on dumb
Likely if SHOW_MENU is false, ESC brings her to the
menu - not to the command-line as before.
PRINT_BORDER, GOTOXY, SET_LINE_xxx are only called if
not on dumb terminals.
Show entry number when timeout is running if terminal is dumb.
Prompt with entry number when waiting for keys.
2001-05-14 Pavel Roskin <>
* stage2/shared.h (ENTRY): Remove unnecessary `##'.
2001-05-03 Jochen Hoenicke <>
* grub/asmstub.c (biosdisk): Work around a bug in linux's ez
remapping. Problem reported by Ben Byer <>.
2001-03-28 Gordon Matzigkeit <>
* stage2/boot.c (load_image): Don't cast entry_addr to an int, or
the top bit will be interpreted as the sign.
2001-03-16 OKUJI Yoshinori <>
From Bodo Rueskamp <>:
* stage2/boot.c (load_initrd): Avoid the last 64kb for
Linux 2.2.x bug.
2001-03-03 OKUJI Yoshinori <>
* docs/multiboot.texi (History): Written.
2001-02-28 OKUJI Yoshinori <>
From HASEGAWA Tomoki <>:
* lib/device.c (get_ide_disk_name) [__FreeBSD__]: Add support
for FreeBSD-4.0 or later. Use "/dev/rad0".
* util/ (convert): Add code for FreeBSD
2001-02-28 OKUJI Yoshinori <>
From Thierry Laronde <>:
* stage2/stage2.c (cmain): If the default entry is wrong, set it
to FALLBACK_ENTRY if FALLBACK_ENTRY is valid, otherwise set it
to zero. Suggested by Nicolas Boos <>.
2001-02-28 OKUJI Yoshinori <>
* acconfig.h (AUTO_LINUX_MEM_OPT): New entry.
* (--disable-auto-linux-mem-opt): New option.
* stage2/builtins.c (kernel_func) [!AUTO_LINUX_MEM_OPT]: Add
specifies --no-mem-option or not.
2001-02-27 OKUJI Yoshinori <>
* stage2/builtins.c (chainloader_func): Don't check if the
current partition is FAT, but check if it has a FAT partition
type and the BPB has a system id starting with "MSWIN".
2001-02-27 OKUJI Yoshinori <>
Added hercules support based on a patch by Frank Mehnert
<>. I translated his assembly code into
C, and separated hercules from the normal console.
* (--disable-hercules): New option.
* grub/asmstub.c: Include <hercules.h>.
(set_attrib): Renamed to ...
(console_set_attrib): ... this.
(herc_cls): New function.
(herc_getxy): Likewise.
(herc_gotoxy): Likewise.
(herc_putchar): Likewise.
(herc_set_attrib): Likewise.
* stage2/ (noinst_HEADERS): Added hercules.h.
(libgrub_a_CFLAGS): Added -DSUPPORT_HERCULES=1.
(HERCULES_FLAGS): New variable.
(pre_stage2_exec_SOURCES): Added hercules.c.
* stage2/asm.S [!STAGE1_5] (set_attrib) Renamed to ...
[!STAGE1_5] (console_set_attrib): ... this.
* stage2/builtins.c [SUPPORT_HERCULES] (terminal_func): Added
hercules support.
(builtin_table) [SUPPORT_HERCULES]: Added a pointer to
* stage2/char_io.c [SUPPORT_HERCULES]: Include <hercules.h>.
[!STAGE1_5] (get_cmdline) [SUPPORT_HERCULES]: Added hercules
[!STAGE1_5] (getkey) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (checkkey) [SUPPORT_HERCULES]: Likewise.
(grub_putchar) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (gotoxy) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (getxy) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (cls) [SUPPORT_HERCULES]: Likewise.
(set_attrib): New function.
* stage2/shared.h (console_set_attrib): Declared.
* stage2/stage2.c (run_menu) [SUPPORT_HERCULES]: Added hercules
* stage2/hercules.h: New file.
* stage2/hercules.c: Likewise.
2001-02-17 OKUJI Yoshinori <>
From "Treutwein; Bernhard"
* docs/grub.texi (DOS/Windows): Improved the readability.
2001-02-11 OKUJI Yoshinori <>
* docs/grub.texi (Command-line and menu commands): Renamed to ...
(General commands): ... this.
2001-02-08 OKUJI Yoshinori <>
* stage2/asm.S [STAGE1_5] (chain_stage2): Save the second sector
of stage2 in %ecx temporarily, and set %ebp to %ecx after
switching to protected mode. I forgot that %ebp is broken by
rot_to_real. Reported by Torvald Riegel
2001-02-08 OKUJI Yoshinori <>
* docs/grub-new.texi: Moved to ...
* docs/grub.texi: ... here. And, include internals.texi.
* docs/internals.texi: New file.
* docs/prog-ref.texi: Removed.
* docs/user-ref.texi: Likewise.
* docs/tutorial.texi: Likewise.
* docs/appendices.texi: Likewise.
* docs/ (grub_TEXINFOS): Removed prog-ref.texi,
user-ref.texi, tutorial.texi, and appendices.texi. Added
2001-02-03 OKUJI Yoshinori <>
From Erik Schoenfelder <>:
* stage2/shared.h (LINUX_INITRD_MAX_ADDRESS): Changed from
0x3C000000 to 0x38000000.
2001-02-03 OKUJI Yoshinori <>
* stage2/builtins.c (savedefault_func)
[!SUPPORT_DISKLESS && !GRUB_UTIL]: Check if the version
contained in the buffer matches to current one as well.
2001-02-02 OKUJI Yoshinori <>
* stage2/builtins.c (savedefault_func)
[!SUPPORT_DISKLESS && !GRUB_UTIL]: Check if the stage2 id is
STAGE2_ID_STAGE2. Suggested by Jochen Hoenicke.
* stage2/stage2.c (cmain): If DEFAULT_ENTRY is out of entries,
reset DEFAULT_ENTRY to zero.
2001-02-02 OKUJI Yoshinori <>
Make savedefault workable even with Stage 1.5. Reported by
Thierry Laronde <>.
* grub/asmstub.c (chain_stage2): Added an additional argument,
* stage2/asm.S [STAGE1_5] (chain_stage2): Set %ebp to
* stage2/disk_io.c [STAGE1_5] (disk_read_hook): Defined.
[STAGE1_5] (disk_read_func): Likewise.
(rawread) [STAGE1_5]: Handle DISK_READ_FUNC.
(grub_read) [STAGE1_5]: Likewise.
* stage2/fsys_ext2fs.c (ext2fs_read) [STAGE1_5]: Likewise.
* stage2/fsys_fat.c (fat_read) [STAGE1_5]: Likewise.
* stage2/fsys_ffs.c (ffs_read) [STAGE1_5]: Likewise.
* stage2/fsys_minix.c (minix_read) [STAGE1_5]: Likewise.
* stage2/fsys_reiserfs.c (reiserfs_read) [STAGE1_5]: Likewise.
2001-02-02 OKUJI Yoshinori <>
* netboot/config.c [GRUB && INCLUDE_PCI] (pci_dispatch_table):
New structure.
[GRUB && INCLUDE_PCI] (PCI_NIC): New variable.
(eth_probe) [GRUB && INCLUDE_PCI]: If a PCI NIC candidate is
present, probe it first.
2001-01-27 OKUJI Yoshinori <>
From Danilo Godec <>:
* stage2/pc_slice.h (PC_SLICE_TYPE_LINUX_RAID): New macro.
* stage2/fsys_ext2fs.c (ext2fs_mount): Add a check for
2001-01-27 OKUJI Yoshinori <>
From Bernhard Treutwein
* docs/grub-new.texi (DOS/Windows): Made more readable.
2001-01-27 OKUJI Yoshinori <>
* docs/multiboot.texi: Start reorganizing Multiboot
2001-01-15 OKUJI Yoshinori <>
From Thierry Laronde <>:
* docs/user-ref.texi (Command-line and menu commands): Update
the description about setkey.
* stage2/builtins.c (setkey_func): When checking if TO_KEY and
FROM_KEY are specified, see *TO_KEY and *FROM_KEY instead of
TO_KEY and FROM_KEY, respectively.
2001-01-13 OKUJI Yoshinori <>
From Thierry Laronde <>:
* util/ (prefix): New variable.
(exec_prefix): Likewise.
(sbindir): Likewise.
2001-01-12 OKUJI Yoshinori <>
* docs/multiboot.h [__ELF__] (MULTIBOOT_HEADER_FLAGS): Defined
as 0x00000003 instead of 0x00010003.
* docs/boot.S (multiboot_header) [__ELF__]: Don't define a.out
kludge information.
* docs/ (EXTRA_PROGRAMS): New variable.
[BUILD_EXAMPLE_KERNEL] (noinst_DATA): Removed.
[BUILD_EXAMPLE_KERNEL] (noinst_PROGRAMS): Changed to kernel.
[BUILD_EXAMPLE_KERNEL] (kernel_exec_SOURCES): Renamed to ...
[BUILD_EXAMPLE_KERNEL] (kernel_SOURCES): ... this.
[BUILD_EXAMPLE_KERNEL] (kernel_exec_CFLAGS): Renamed to ...
[BUILD_EXAMPLE_KERNEL] (kernel_CFLAGS): ... this.
[BUILD_EXAMPLE_KERNEL] (kernel_exec_LDFLAGS): Renamed to ...
[BUILD_EXAMPLE_KERNEL] (kernel_LDFLAGS): ... this.
[BUILD_EXAMPLE_KERNEL] (kernel): Removed.
[BUILD_EXAMPLE_KERNEL] (boot.o): New dependency.
(CLEANFILES): New variable.
2001-01-11 OKUJI Yoshinori <>
* stage2/builtins.c [SUPPORT_NETBOOT] (ifconfig_func): Always
print current network configuration.
[SUPPORT_NETBOOT] (tftpserver_func): Use ifconfig instead of
* netboot/main.c (arp_server_override): Removed.
* netboot/etherboot.h (arp_server_override): Likewise.
2001-01-11 Eugene Doudine <>
* stage2/builtins.c [SUPPORT_NETBOOT] (ifconfig_func): New
function to configure network interface from command line.
[SUPPORT_NETBOOT] (builtin_ifconfig): New variable.
[SUPPORT_NETBOOT] (builtin_table): Added a pointer to
* netboot/main.c (ifconfig): New function.
* netboot/etherboot.h (ifconfig): Added the prototype.
2001-01-11 OKUJI Yoshinori <>
* docs/ [BUILD_EXAMPLE_KERNEL] (noinst_DATA): New
[BUILD_EXAMPLE_KERNEL] (kernel_exec_SOURCES): Likewise.
[BUILD_EXAMPLE_KERNEL] (kernel_exec_CFLAGS): Likewise.
[BUILD_EXAMPLE_KERNEL] (kernel_exec_LDFLAGS): Likewise.
[BUILD_EXAMPLE_KERNEL] (kernel): New target.
* (--enable-example-kernel): New option.
* docs/kernel.c (cmain): Cast unsigned long variables to
unsigned explicitly, to suppress GCC warnings.
2001-01-08 OKUJI Yoshinori <>
* stage2/shared.h (BOOTSEC_BPB_HIDDEN_SECTORS): New macro.
* stage2/builtins.c (chainloader_func): If CURRENT_PARTITION is
FAT, set the hidden sectors field of the BPB to PART_START, to
avoid a Windows bug which affects only when Windows is booted
from a logical partition. And, clear ERRNUM after testing if a
partition is FAT, because open_partition or fat_mount may set
ERRNUM. Reported by Ingo Korb <>.
2001-01-07 OKUJI Yoshinori <>
* stage2/builtins.c (boot_func): In the chain-loading mode,
clear the active flag of each of the loaded partition entries,
and then set the active flag of the booted partition image.
2001-01-04 Jochen Hoenicke <>
* stage2/builtins.c (embed_func): Call open_partition() even for
MBR, so that part_start is correct. This fixes a bug reported by
Matthias Granberry <>.
2000-12-22 OKUJI Yoshinori <>
* stage2/disk_io.c (make_saved_active): Change the variable name
``MBR'' to lower case.
(set_partition_hidden_flag): Likewise.
2000-12-20 Jochen Hoenicke <>
From Cedric Ware <>:
* stage2/fsys_ext2.c (ext2fs_mount): Detect ext2 partitions in
a OpenBSD/NetBSD FS_EXT2FS slice.
* stage2/pc_slice.h (FS_ADOS): New Macro from OpenBSD/NetBSD.
(FS_HFS): Likewise.
(FS_FILECORE): Likewise.
(FS_EXT2FS): Likewise.
2000-12-17 Jochen Hoenicke <>
* stage2/disk_io.c (rawread): Check if there is a EZD partition
and remap sector 0 to sector 1 like EZ-BIOS does.
(rawwrite): New function to write to disk. Also does EZD
(devwrite): New function. Does the special remapping to
partitions needed for linux. This contains the code that was
previously duplicated in embed_func and install_func at several
(make_saved_active): Use rawwrite. Don't use SCRATCHSEG, as it is
needed by devwrite.
(set_partition_hidden_flag): Likewise.
* stage2/disk_io.h (rawwrite): New function.
(devwrite): Likewise.
* stage2/pc_slice.h (PC_SLICE_TYPE_EZD): New macro.
* stage2/builtins.c (embed_info): New variable to store the
position of the embedded stage1_5 for setup_func.
(embed_func): Don't embed after the MBR if an EZ-BIOS is detected
there. Use the new devwrite method. If embedding is successful
store position in embed_info.
(install_func): Use devwrite. Don't use SCRATCHSEG.
(partnew_func): Use rawwrite. Don't use SCRATCHSEG.
(parttype_func): Likewise.
(savedefault_func): Likewise.
(setup_func): New nested function embed_stage1_5. Stage1_5 is now
also be embedded into filesystems which supports that.
2000-12-17 OKUJI Yoshinori <>
* stage2/builtins.c (chainloader_func): Set ERRNUM to
ERR_EXEC_FORMAT, when ERRNUM is ERR_NONE, even if grub_read
fails in reading one sector.
2000-12-14 OKUJI Yoshinori <>
* docs/prog-ref.texi (Partition types): Rewrite the footnotes.
Suggested by (Ralf Medow).
2000-12-14 OKUJI Yoshinori <>
From Erik Schoenfelder <>:
* util/ (convert): Revised the fix for floppy
device handling.
2000-12-14 OKUJI Yoshinori <>
From HORIKAWA Kazunori <>:
* stage2/bios.c (get_diskinfo): Append 16 bytes dummy data to
DRP, because the BIOS of Thinkpad X20 write a garbage beyond the
size of the structure.
2000-12-09 Jochen Hoenicke <>
* stage2/disk_io.c (next_partition): Mask out bsd partition sub
type when checking if last partition was a bsd partition.
Reported by Heikki Vatiainen <>.
2000-12-09 OKUJI Yoshinori <>
From Leendert Meyer <>:
* util/ (convert): If a floppy device is
specified, remove everything from $tmp_part.
2000-12-09 OKUJI Yoshinori <>
* lib/device.c [__linux__] (write_to_partition): Use strcpy
instead of strcat, to overwrite "/disc". Reported by Thiago
Macieira <>.
2000-12-05 Jochen Hoenicke <>
* stage2/fsys_minix.c (minix_mount): Corrected the check for
IS_PC_SLICE_TYPE_MINIX; minix was only working if slice type was
wrong! Reported by Ralf Medow <>.
2000-11-27 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c: Handle items with old version key on
new version reiserfs partition.
(K_OFFSET): Removed.
(IH_KEY_OFFSET): New Macro, which checks item head version.
(IH_KEY_ISOFFSET): Likewise.
(reiserfs_read): Use new macros.
(reiserfs_dir): Fixed version check for >4GB stat entries.
2000-11-27 OKUJI Yoshinori <>
* stage2/common.c (init_bios_info) [!STAGE1_5]: Don't call
track_int13, because the current implementation hangs up in some
2000-11-27 OKUJI Yoshinori <>
* grub/asmstub.c (serial_init) [!O_SYNC]: Don't specify O_SYNC
(serial_init) [O_FSYNC]: Specify O_FSYNC to open SERIAL_DEVICE.
Reported by Farid Hajji <>.
2000-11-22 OKUJI Yoshinori <>
From Vesa Jaaskelainen <>:
* stage2/builtins.c (testvbe_func): Don't set the bit 14 of a
VBE mode number explicitly when calling get_vbe_mode_info.
(vbeprobe_func): Likewise.
2000-11-22 OKUJI Yoshinori <>
The code for the "INT 13H tracking technique" is somewhat
* stage2/asm.S [!STAGE1_5] (track_int13): Don't replace an int13
handler with set_tf_int13_handler. Instead, track_int13 itself
emulates an int13 interrupt.
[!STAGE1_5] (set_tf_int13_handler): Removed.
[!STAGE1_5] (int1_handler): Use movzbw instead of xorb and movb.
2000-11-15 OKUJI Yoshinori <>
* acconfig.h (PRESET_MENU_STRING): New entry.
* acinclude.m4 (grub_DEFINE_FILE): New M4 macro.
* (--enable-preset-menu): New option.
* stage2/stage2.c [PRESET_MENU_STRING] (preset_menu): New
[PRESET_MENU_STRING] (preset_menu_offset): Likewise.
[PRESET_MENU_STRING] (open_preset_menu): New function.
[PRESET_MENU_STRING] (read_from_preset_menu): Likewise.
[PRESET_MENU_STRING] (close_preset_menu): Likewise.
[!PRESET_MENU_STRING] (open_preset_menu): New macro.
[!PRESET_MENU_STRING] (read_from_preset_menu): Likewise.
[!PRESET_MENU_STRING] (close_preset_menu): Likewise.
(get_line_from_config): Accept a new argument READ_FROM_FILE.
If it is false, read data from the preset menu instead.
(cmain): If grub_open fails in opening the configuration file,
then try to open the preset menu.
2000-11-11 OKUJI Yoshinori <>
From Jan Fricke <>:
* stage2/asm.S [!STAGE1_5] (set_vbe_mode): Add a missing `$'
2000-11-11 OKUJI Yoshinori <>
* stage2/bios.c (get_diskinfo): If BIOS supports LBA but doesn't
return the correct total number of sectors, compute this by
C/H/S returned by get_diskinfo_int13_extensions instead of
2000-11-09 OKUJI Yoshinori <>
* stage2/disk_io.c (make_saved_active): Set ERRNUM to
ERR_DEV_VALUES instead of ERR_NO_PART, when the save partition
is not a primary partition.
2000-11-05 OKUJI Yoshinori <>
* docs/user-ref.texi (Features): Update the URL of grub/98.
2000-11-03 OKUJI Yoshinori <>
VBE support is _partially_ implemented.
* stage2/mb_header.h (multiboot_header): Added new fields,
mode_type, width, height, and depth.
check if LEN is greater than or equal to 48, if set.
* stage2/mb_info.h (multiboot_info): Added new fields,
vbe_control_info, vbe_mode_info, vbe_mode, vbe_interface_seg,
vbe_interface_off, and vbe_interface_len.
(MB_INFO_VIDEO_INFO): New macro.
* stage2/shared.h (vbe_controller): New structure.
(vbe_mode): Likewise.
(get_vbe_controller_info): Declared.
(get_vbe_mode_info): Likewise.
(set_vbe_mode): Likewise.
* stage2/asm.S [!STAGE1_5] (get_vbe_controller_info): New
[!STAGE1_5] (get_vbe_mode_info): Likewise.
[!STAGE1_5] (set_vbe_mode): Likewise.
* grub/asmstub.c (get_vbe_controller_info): Likewise.
(get_vbe_mode_info): Likewise.
(set_vbe_mode): Likewise.
* stage2/builtins.c (testvbe_func): New function.
(builtin_testvbe): New variable.
(vbeprobe_func): New function.
(builtin_vbeprobe): New variable.
(builtin_table): Added pointers to BUILTIN_TESTVBE and
2000-11-01 OKUJI Yoshinori <>
* docs/help2man: Copied from help2man-1.23.
2000-10-29 OKUJI Yoshinori <>
* stage2/asm.S [STAGE1_5]: Don't include setjmp.S or apm.S.
2000-10-27 OKUJI Yoshinori <>
* lib/device.c (read_device_map): Don't parse a line, if it is
empty. Reported by Holger Bauer <>.
2000-10-25 Jochen Hoenicke <>
* stage2/builtins.c (md5crypt_func): Use all bits of currticks ()
to generate the salt. The old code would often produce the same
one character salt.
2000-10-25 OKUJI Yoshinori <>
* stage2/apm.S (get_apm_info): Fix a serious typo: prot_to_real
-> real_to_prot. Umm, I can't understand why it worked for me!
2000-10-24 Jochen Hoenicke <>
* stage2/builtins.c (setup_func): When invoking install with an
embedded stage1_5 give the path to menu.lst as real_config_file.
2000-10-23 OKUJI Yoshinori <>
* docs/multiboot.texi: Upgraded to 0.6.92.
(Boot information format): Re-designed the graphics table.
2000-10-22 OKUJI Yoshinori <>
* docs/tutorial.texi: Miscellaneous updates.
* docs/user-ref.texi: Likewise.
* docs/appendices.texi: Likewise.
2000-10-22 OKUJI Yoshinori <>
* util/ (usage): Removed unnecessary commas.
* util/ New file.
* util/ (sbin_SCRIPTS): Added grub-md5-crypt.
* (AC_OUTPUT): Added util/grub-md5-crypt.
* docs/ (man_MANS): Added grub-md5-crypt.8.
[MAINTAINER_MODE] ($(srcdir)/grub-md5-crypt.8): New target.
* docs/grub-md5-crypt.8: New file. Generated by help2man.
* docs/grub.texi (grub-md5-crypt): New direntry.
(Invoking grub-md5-crypt): New entry.
* docs/user-ref.texi (Invoking grub-md5-crypt): New chapter.
2000-10-22 OKUJI Yoshinori <>
From Matthias Granberry <>:
* util/ (convert): Added backslashes into
continuous lines.
2000-10-21 OKUJI Yoshinori <>
* stage2/md5.c (check_md5_password): Removed.
(md5_password): New function. Mostly copied from
(md5_init): Made static.
(md5_update): Likewise.
(md5_final): Likewise.
* stage2/md5.h (check_md5_password): Changed to just a macro.
(md5_password): Declared.
(make_md5_password): New macro.
* stage2/char_io.c [!STAGE1_5] (grub_strstr): Rewriten, because
it was too buggy.
* stage2/builtins.c [USE_MD5_PASSWORDS] (md5crypt_func): New
[USE_MD5_PASSWORDS] (builtin_md5crypt): New variable.
(builtin_table) [USE_MD5_PASSWORDS]: Added a pointer to
* docs/tutorial.texi (Security): Added a paragraph about
2000-10-21 OKUJI Yoshinori <>
* docs/user-ref.texi: Fixed several typos and some inappropriate
texinfo commands, and update the descriptions about some
2000-10-20 OKUJI Yoshinori <>
* stage2/builtins.c (displayapm_func): New function.
(builtin_displayapm): New variable.
(builtin_table): Added a pointer to BUILTIN_DISPLAYAPM.
2000-10-20 OKUJI Yoshinori <>
APM BIOS table support is added, based on a patch by Matt Yourst
* docs/multiboot.texi (Boot information format): Added the
definition of APM table format.
* stage2/mb_info.h (apm_info): New structure.
(multiboot_info): Added a new element, apm_table.
(MB_INFO_APM_TABLE): New macro.
* stage2/asm.S (apm_bios_info): New variable.
Include "apm.S".
* stage2/apm.S: New file.
* stage2/common.c (init_bios_info) [!STAGE1_5]: Added APM BIOS
table support.
* stage2/shared.h (apm_bios_info): Declared.
(get_apm_info): Likewise.
* stage2/ (EXTRA_DIST): Added apm.S.
* grub/asmstub.c (apm_bios_info): New variable.
(get_apm_info): New function.
2000-10-19 OKUJI Yoshinori <>
Segregate functions which are copyrighted differently.
* stage2/setjmp.S: New file.
* stage2/ (EXTRA_DIST): Added setjmp.S.
* stage2/asm.S: Include "setjmp.S".
(grub_setjmp): Moved to ...
* stage2/setjmp.S (grub_setjmp): ... here.
* stage2/asm.S (grub_longjmp): Moved to ...
* stage2/setjmp.S (grub_longjmp): ... here.
2000-10-18 OKUJI Yoshinori <>
* stage2/ (noinst_HEADERS): Added md5.h. Reported by
Volker Augustin <>.
2000-10-17 OKUJI Yoshinori <>
* (--disable-md5password): Renamed to ...
(--disable-md5-password): ... this. Just for my preference.
2000-10-17 Jochen Hoenicke <>
Added MD5 passwords and extended password command:
* (--disable-md5password): New option.
* stage2/ (libgrub_a_SOURCES): Added md5.c.
(pre_stage2_exec_SOURCES): Likewise.
* stage2/md5.c: New file.
* stage2/shared.h (password_t): New type.
(password_type): New variable.
(BUILTIN_HIDDEN): New flag, describing that a command should not
be printed when booting the entry.
(check_password): New function.
* stage2/cmdline.c (run_script): Don't show commands that have
the hidden attribute.
* stage2/builtins.c (password_type): New variable.
(check_password): New function.
(password_func): Handle the --md5 option and set password_type.
Check if in CMDLINE or SCRIPT mode and ask password immediately.
(builtin_password): Also allow passwords in CMDLINE mode, make
it hidden, so the user wont see the password he should enter.
Changed command description.
(builtin_pause): Make the command hidden.
(pause_func): Print argument, since the command is now hidden.
* stage2/stage2.c (run_menu): Call check_password to check password.
* docs/tutorial.texi (Security): Describe the new features of the
password commands.
* docs/user-ref.texi (Menu-specific commands): password command
moved ...
(Command-line and menu commands): ... to here. New features
2000-10-17 OKUJI Yoshinori <>
* stage2/builtins.c (setkey_func): Clear the all elements of
BIOS_KEY_MAP and ASCII_KEY_MAP instead of only the first
elements, when TO_KEY is NULL.
2000-10-16 OKUJI Yoshinori <>
* stage2/boot.c (load_image): When handling Linux cmdline, don't
copy a null character from SRC to DEST, because this inserted an
extra null character into the cmdline. Reported by Robert
Bihlmeyer <>.
2000-10-16 OKUJI Yoshinori <>
Some of the new Multiboot features are supported. APM support
and VESA support are not strictly defined or implemented yet.
* docs/multiboot.texi (Top): Increase the version number.
(Boot information format): Changed the drive information format,
because it was not straightforward.
* grub/asmstub.c (io_map): New variable.
(track_int13): New function.
(get_rom_config_table): Likewise.
* stage2/stage2.c (cmain): Set CONFIG_ENTRIES to MBI.DRIVES_ADDR
* stage2/common.c (init_bios_info) [!STAGE1_5]: Added support
for drive info, ROM config table, and boot loader name features
of the Multiboot Specification.
* stage2/mb_info.h (drive_info): New structure.
(MB_DI_CHS_MODE): New macro.
(MB_DI_LBA_MODE): Likewise.
(multiboot_info): Added drives_length, drives_addr,
config_table, and boot_loader_name.
(MB_INFO_DRIVE_INFO): New macro.
* stage2/asm.S (get_rom_config_table): New function.
* stage2/shared.h (get_rom_config_table): Declared.
2000-10-16 OKUJI Yoshinori <>
* util/ (convert): Check only if the file exists,
instead of checking if the file is a block device as well.
Because, in a sane operating system, it should be a char device
but not a block device (unlike Linux), and it may be a symbolic
link (this can happen if you use Linux's devfs without devfsd).
(recheck): New variable. Set to "no" by default, and set to
"yes", if you specify the new option ``--recheck''. If $recheck
is "yes", remove the device map file, if present.
2000-10-16 OKUJI Yoshinori <>
From Roderich Schupp:
* lib/device.c: Include <limits.h>.
[__linux__] (have_devfs): New function.
(get_floppy_disk_name) [__linux__]: If devfs is supported, use
the name "/dev/floppy/N" instead.
(init_device_map) [__linux__]: If devfs is supported, use
"/dev/discs/discN" instead.
[__linux__] (write_to_partition): Change the size of DEV to
PATH_MAX instead of 64.
If devfs is supported, replace "/disc" in the device name with
2000-10-15 OKUJI Yoshinori <>
From Roderich Schupp <>:
* util/ (convert): Added support for "native"
devfs device names.
2000-10-14 OKUJI Yoshinori <>
* docs/tutorial.texi (Serial terminal): Fixed a typo.
* docs/user-ref.texi (GRUB images): New chapter.
* docs/grub.texi: Added an entry for the chapter "GRUB images".
2000-10-14 OKUJI Yoshinori <>
* stage2/builtins.c (setkey_func): If TO_KEY is NULL (i.e. the
user specifies no argument), clear BIOS_KEY_MAP and
If TO_KEY is non-NULL but FROM_KEY is NULL, set ERRNUM to
ERR_BAD_ARGUMENT and return one.
2000-10-13 OKUJI Yoshinori <>
* docs/grub.texi: Added an entry for the new chapter "Security",
and the order of the chapters in the Tutorial Manual was
* docs/tutorial.texi (Configuration): Moved to right after the
chapter "Booting".
(Security): New chapter.
2000-10-10 OKUJI Yoshinori <>
From Alessandro Rubini:
* util/ (root_device): Use the regular expression
's%.*\(/dev/[^ ]*\).*%\1%' instead of
(bootdir_device): Likewise.
(grubdir_device): Likewise.
2000-10-10 OKUJI Yoshinori <>
* stage2/start.S (copy_buffer): Use pusha and popa instead of
pushing and poping %di and %si individually, to reduce the code
size and save %cx as well. Reported by Herbert Nachtnebel
2000-10-10 OKUJI Yoshinori <>
From Daniel Pittman <>:
* stage2/builtins.c (setkey_func): Check if
are not NULLs, before calling grub_strcmp.
2000-10-08 OKUJI Yoshinori <>
* util/ (grub_prefix): New variable. The default
is "/boot/grub".
If the user has a separate boot partition, set grub_prefix
instead of grubdir to "/grub".
When running the command "setup", specify $grub_prefix instead
of $grubdir to the option "--prefix".
Report by Thierry Laronde.
2000-10-08 OKUJI Yoshinori <>
* stage2/builtins.c (find_func): Clear ERRNUM after the last
call of next_partition, because it always sets ERRNUM. Reported
by Thierry Laronde <>.
2000-10-07 OKUJI Yoshinori <>
* lib/device.c [__linux__] (write_to_partition): Open DEV with
O_RDWR instead of O_ORONLY.
2000-10-06 Alessandro Rubini <>
* docs/user-ref.texi (Commands): Added missing commands and
reworded part of the text.
* stage2/builtins.c (serial_func): Unswap the setting of "speed"
and "port".
2000-10-06 OKUJI Yoshinori <>
* stage2/builtins.c (setup_func): Append "... " to the
messages when calling embed_func and install_func, and print
the result.
Don't jump to the label "fail", even when embed_func failed.
2000-10-05 Gordon Matzigkeit <>
* stage2/disk_io.c (real_open_partition): Make sure that buf_geom
corresponds to the current drive before using it.
* lib/device.c (get_drive_geometry): Use fstat if the native
geometry methods fail, such as when the drive is mapped to a
regular file.
* docs/tutorial.texi: Add `@kbd{...}' to examples in order to
differentiate between command output and characters the user
should type.
* docs/user-ref.texi: Likewise.
2000-10-05 OKUJI Yoshinori <>
* docs/grub.texi: Added an entry for the chapter "Serial
* docs/tutorial.texi (Serial terminal): New chapter.
2000-10-04 Gordon Matzigkeit <>
* util/grub-image (VERSION): Fix version calculation to tolerate
`(GNU GRUB 0.5.96)'-style versions.
* docs/grub.texi: Remove braces from `@unnumbered' sections so
that texi2html doesn't complain.
* debian/rules: Build HTML documentation to appease the Debian
2000-10-04 OKUJI Yoshinori <>
* stage2/fsys_reiserfs.c (reiserfs_mount): Compare PART_LENGTH
with SUPERBLOCK + (sizeof(super) >> SECTOR_BITS) instead of
sizeof(struct reiserfs_super_block). Reported by Jochen
2000-10-05 OKUJI Yoshinori <>
* (AM_INIT_AUTOMAKE): The version number is set to
0.5.97. This version number is a dummy, as we will never release
0.5.97 actually.
2000-10-01 OKUJI Yoshinori <>
* lib/device.c [__linux__]: Don't include <linux/cdrom.h>.
Defined as 0x5331.
2000-10-01 OKUJI Yoshinori <>
* lib/device.c (get_drive_geometry) [__GNU__]: Get the number of
total sectors by fstat. The rest are filled with arbitrary
2000-09-30 OKUJI Yoshinori <>
* util/ (convert): The code for gnu* (i.e.
GNU/Hurd) was rewritten, since it didn't work for BSD
Use "$tmp_disk *$" instead of "$tmp_disk" to get the drive name.
2000-09-30 OKUJI Yoshinori <>
* stage2/fsys_reiserfs.c (reiserfs_mount): Check if the length
of the partition is less than the size of a super block, before
attempting to read the super block.
* grub/asmstub.c (console_putchar)
2000-09-30 OKUJI Yoshinori <>
Added two new commands, "partnew" and "parttype", based on the
patch by Stefan Ondrejicka <>:
* stage2/builtins.c (partnew_func): New function.
(builtin_partnew): New variable.
(parttype_func): New function.
(builtin_parttype): New variable.
(builtin_table): Added pointers to BUILTIN_PARTNEW and to
2000-09-29 OKUJI Yoshinori <>
* stage2/builtins.c (find_func): New variable GOT_FILE is set to
one if FILENAME is found. Otherwise, it is set to zero.
Clear ERRNUM at the end in the loop for floppies, to ensure that
ERRNUM is cleared before examining hard disks.
Rewrite the loop for hard disks using next_partitions, so this
function now checks all partitions you have certainly.
If GOT_FILE is non-zero, set ERRNUM to ERR_FILE_NOT_FOUND and
return one.
2000-09-29 OKUJI Yoshinori <>
* stage2/disk_io.c (check_BSD_parts): Removed.
(next_partition): New function.
(real_open_partition): Rewritten using next_partition.
(set_device) [!STAGE1_5]: Skip a comma in DEVICE, even when the
BSD partition is not specified.
[!STAGE1_5] (print_completions): Don't append ')' if the
partition is a PC slice which may have BSD partitions. Instead,
try to complete the command-line with possible partitions.
* stage2/shared.h (next_partition): Declared.
2000-09-27 OKUJI Yoshinori <>
* (--enable-serial): Changed to ...
(--disable-serial): ... this. Now the serial support is enabled
by default.
2000-09-27 OKUJI Yoshinori <>
* stage2/char_io.c [!STAGE1_5] (get_cmdline) [!SUPPORT_SERIAL]:
Don't check if the terminal is dumb. If the terminal is console,
always use console functions.
* stage2/builtins.c [!SUPPORT_NETBOOT] (bootp_func): Undefined.
[!SUPPORT_NETBOOT] (builtin_bootp): Likewise.
[!GRUB_UTIL] (device_func): Likewise.
[!GRUB_UTIL] (builtin_device): Likewise.
[!SUPPORT_NETBOOT] (dhcp_func): Likewise.
[!SUPPORT_NETBOOT] (builtin_dhcp): Likewise.
[!GRUB_UTIL] (quit_func): Likewise.
[!GRUB_UTIL] (builtin_quit): Likewise.
[!SUPPORT_NETBOOT] (rarp_func): Likewise.
[!SUPPORT_NETBOOT] (builtin_rarp): Likewise.
[!SUPPORT_SERIAL] (serial_func): Likewise.
[!SUPPORT_SERIAL] (builtin_serial): Likewise.
[!SUPPORT_SERIAL] (terminal_func): Likewise.
[!SUPPORT_SERIAL] (builtin_terminal): Likewise.
[!SUPPORT_NETBOOT] (tftpserver_func): Likewise.
[!SUPPORT_NETBOOT] (builtin_tftpserver): Likewise.
(builtin_table) [!SUPPORT_NETBOOT]: Removed the pointers to
(builtin_table) [!SUPPORT_SERIAL]: Removed the pointers to
(builtin_table) [!GRUB_UTIL]: Removed the pointers to
2000-09-26 OKUJI Yoshinori <>
* util/ (bootdir_device): New variable. If
$bootdir_device is not the same as $root_device, set root_device
and grubdir to $bootdir_device and "/grub", respectively.
Add --prefix=$grubdir into the command "setup".
2000-09-26 OKUJI Yoshinori <>
Add --prefix=DIR to the command "setup".
* stage2/builtins.c (setup_func): New nested function,
check_file checks if the file FILE exists.
Remove the prefix "/boot/grub" in STAGE1_5_MAP.
Don't hardcode "/boot/grub/stage1", "/boot/grub/stage2", or
"/boot/grub/menu.lst". Instead, check if ARG contains
"--prefix=", and if specified, set PREFIX to the value.
If not specified, check "/boot/grub/stage1" and, if not found,
check "/grub/stage1". If a stage1 was found, set PREFIX to the
directory which contains the stage1.
2000-09-12 OKUJI Yoshinori <>
Add additional magic to avoid a bug in Linux. *sigh*
* stage2/boot.c (load_image): Copy SRC to DEST first, and append
a "mem=" option to DEST instead of prepending.
2000-09-11 OKUJI Yoshinori <>
Reported by Alessandro Rubini:
* stage2/fsys_minix.c (minix_mount): Check if CURRENT_SLICE is a
partition type for minix fs, using the macro
* stage2/pc_slice.h (PC_SLICE_TYPE_LINUX_MINIX): New macro.
2000-09-09 Alessandro Rubini <>
* stage1/stage1.S (notification_string): Print "GRUB " instead
of "stage1 ".
* stage2/start.S [STAGE1_5] (notification_string): Print
"Loading stage1.5" instead of "stage1.5 ".
[!STAGE1_5] (notification_string): Print "Loading stage2"
instead of "stage2 ".
(notification_step): New label, followed by a string ".".
(notification_done): New label, followed by a string "\r\n".
(copy_buffer): Print NOTIFICATION_STEP after copying the buffer.
(bootit): Print NOTIFICATION_DONE before restoring %dx.
2000-09-09 OKUJI Yoshinori <>
From Alessandro Rubini:
* (CPPFLAGS): Added -malign-jumps=1,
-malign-loops=1 and -malign-functions=1.
2000-09-07 OKUJI Yoshinori <>
From Hal Snyder <>:
* lib/device.c (get_drive_geometry) [__FreeBSD__ || __NetBSD__
|| __OpenBSD__]: Call ioctl for FD instead of
DISKS[DRIVE].FLAGS. This was a mistake when I segregated this
function from asmstub.c.
2000-09-07 Alessandro Rubini <>
* docs/tutorial.texi: Fixed a few typos and minor imprecisions.
* docs/prog-ref.texi: Likewise.
* docs/user-ref.texi: Likewise.
2000-09-07 OKUJI Yoshinori <>
From Alessandro Rubini:
* stage2/builtins.c (terminal_func): Rename TIMEOUT to TO, to
suppress GCC warnings.
* grub/asmstub.c (serial_checkkey): Likewise.
2000-09-06 OKUJI Yoshinori <>
* stage2/char_io.c [!STAGE1_5] (auto_fill): New variable.
[!STAGE1_5] (get_cmdline): Save AUTO_FILL in SAVED_AUTO_FILL in
the beginning and restore AUTO_FILL before return.
Set AUTO_FILL to one and zero before and after calling
print_completions, respectively.
(grub_putchar) [!STAGE1_5]: Use a static variable COL to track
the position of the cursor. If C is a carriage return, clear
COL. If C is a backspace and COL is positive, decrease COL. If C
is a printable character, increase COL. In this case, if
AUTO_FILL is non-zero and COL is greater than or equal to 79,
put a newline automatically.
* stage2/shared.h (auto_fill): Declared.
* stage2/stage2.c (run_menu): In the menu interface, disable the
auto fill mode (i.e. set AUTO_FILL to zero), and enable it again
when booting an entry.
(cmain): Initialize AUTO_FILL (i.e. set it to one) in the
beginning of the loop.
2000-09-06 OKUJI Yoshinori <>
Add support for "boot previously booted entry by default", based
on the patch by Mike Meyer <>, but I've modified
his patch thoroughly.
* grub/asmstub.c (saved_entryno): New variable. This is a dummy.
* stage1/stage1.h (COMPAT_VERSION_MINOR): Incremented.
* stage2/asm.S (saved_entryno): New variable.
%ebp. %ebp is set in start.S.
(install_second_sector): New variable.
* stage2/builtins.c (current_entryno): New variable.
(default_func) [!SUPPORT_DISKLESS]: If ARG is "saved", set
(savedefault_func): New function.
(builtin_savedefault): New variable.
(builtin_table): Added a pointer to BUILTIN_SAVEDEFAULT.
* stage2/shared.h (STAGE2_SAVED_ENTRYNO): New macro.
(STAGE2_STAGE2_ID): Changed to 0x10.
(STAGE2_FORCE_LBA): Chaged to 0x11.
(STAGE2_VER_STR_OFFS): Changed to 0x12.
(install_second_sector): Declared.
(saved_entryno): Likewise.
(current_entryno): Likewise.
* stage2/stage2.c (run_menu): Set CURRENT_ENTRYNO to FIRST_ENTRY
+ ENTRYNO, right before calling run_script.
* stage2/start.S (start): Save the sector number of the second
sector in %ebp.
2000-09-05 OKUJI Yoshinori <>
* stage1/stage1.S (lba_mode) [!NO_BUGGY_BIOS_IN_THE_WORLD]:
Don't check for the geometry, since some BIOSes don't return the
number of total sectors correctly, even if they have working LBA
* stage2/start.S (lba_mode) [!NO_BUGGY_BIOS_IN_THE_WORLD]:
* stage2/bios.c (biosdisk) [!NO_BUGGY_BIOS_IN_THE_WORLD]:
Reported by Jan Fricke <> and Pixel
2000-09-05 OKUJI Yoshinori <>
From Alessandro Rubini <>:
* stage2/char_io.c (print_error) [!STAGE1_5]: Print ERRNUM like
"Error 9: Unknown boot failure".
(print_error) [STAGE1_5]: Don't print a colon.
* util/ When checking if an error occurred, use
the expression "Error [0-9]*: " instead of "Error: ".
* docs/user-ref.texi (Stage1.5 errors): Updated, since the error
form changed.
2000-09-04 OKUJI Yoshinori <>
* stage2/stage2.c (run_menu) [GRUB_UTIL]: Set DISP_UP and
DISP_DOWN to ACS_UARROW and ACS_DARROW, respectively. Don't call
grub_printf here.
(run_menu) [!GRUB_UTIL]: Don't call grub_printf here. Instead,
call it...
(run_menu): ... here.
* stage2/shared.h (ACS_ULCORNER): Always define this ourselves,
whether your curses library has the definition.
(ACS_URCORNER): Likewise.
(ACS_LLCORNER): Likewise.
(ACS_LRCORNER): Likewise.
(ACS_HLINE): Likewise.
(ACS_VLINE): Likewise.
(ACS_LARROW): Likewise.
(ACS_RARROW): Likewise.
(ACS_UARROW): Likewise.
(ACS_DARROW): Likewise.
* stage2/char_io.c [SUPPORT_SERIAL] (serial_cls): If the
terminal is dumb, just put a newline.
* stage2/builtins.c (terminal_func) [SUPPORT_SERIAL]: When
choosing a terminal, don't set TERMINAL to the type of the
terminal. Instead, apply a logical AND operation with
TERMINAL_DUMB, since previous code brushed off the dumb
2000-09-04 OKUJI Yoshinori <>
* stage2/stage2.c (run_menu): If SHOW_MENU is zero, print a
message with the timeout per second.
If GRUB_TIMEOUT is negative, set SHOW_MENU to one, since the
condition "no timeout and no interface" is nonsense.
If GRUB_TIMEOUT is equal to or greater than zero and the
terminal is dumb, set SHOW_MENU to zero.
If SHOW_MENU is non-zero and the terminal is dumb, enter the
command-line interface instead. If AUTH is false and PASSWORD is
non-NULL, prompt the user to enter a password until the entered
password is identical to PASSWORD.
2000-09-03 OKUJI Yoshinori <>
* util/ Fix a typo: grub_dir -> grubdir.
* stage2/builtins.c (install_func) [GRUB_UTIL]: Open a Stage 2
with "r+" instead of "r", as GRUB needs to overwrite it.
2000-09-02 OKUJI Yoshinori <>
* stage2/stage2.c (run_menu): Don't use either `p' or `n' to
move the cursor, because `p' is already used for another
purpose (password).
(run_menu) [SUPPORT_SERIAL]: Don't set the variables DISP_UP and
DISP_DOWN at the start time. Instead, set them just before using
them actually, because TERMINAL may change when running a menu.
2000-09-01 Klaus Reichl <>
* stage2/stage2.c (run_menu): Setup and use disp_up, disp_down
depending on the terminal mode.
(run_menu): Allow '^' (resp. 'p') and 'v' (resp 'n') keys we
described in our help above (resp. authors preferences).
2000-08-31 Klaus Reichl <>
* stage2/stage2.c (set_line): Go back one char, which is
consistent with the original situation, when a timeout was
(run_menu): If GRUB_TIMEOUT is stopped don't loop busy over
CHECKKEY, just relax in GETKEY.
* stage2/builtins.c (serial_func): --speed handling: corrected
typo: set SPEED instead of PORT.
2000-08-31 OKUJI Yoshinori <>
* stage2/builtins.c (terminal_func): Added two new options,
--dumb and --timeout=SECS.
* stage2/char_io.c [!STAGE1_5] (getkey): Use logical AND
operations, when checking if the terminal is a console or a
serial terminal.
[!STAGE1_5] (getkey) [SUPPORT_SERIAL]: Don't check if both
2000-08-31 OKUJI Yoshinori <>
* stage1/stage1.S (MOV_MEM_TO_AL): New macro.
(real_start): Use the macro MOV_MEM_TO_AL instead of using movb
directly, because binutils- doesn't produce a short
opcode for it automatically. Reported by Alessandro Rubini
2000-08-30 OKUJI Yoshinori <>
* (CPPFLAGS): Remove -Wundef by default. Add the
option only if the C compiler supports it, because GCC 2.7.x
doesn't support it.
* grub/main.c (longopts): The type of the argument for "hold" is
(main): If --hold is specified, check if OPTARG is zero. If so,
set HOLD to -1, otherwise, set it to the digit OPTARG.
If HOLD is greater than zero, decrease it once per loop.
2000-08-30 OKUJI Yoshinori <>
The command-line interface is switched to single-line editing
* stage2/char_io.c [!STAGE1_5] (get_cmdline): Extensively
rewritten. The nested functions cl_print and cl_kill_to_end are
removed, cl_refresh, cl_backward, cl_forward and cl_delete are
added, and, cl_init and cl_insert are rewritten from scratch.
See the source code, for more information. I don't think this
kind of changes can be represented in ChangeLog.
[!STAGE1_5] (CMDLINE_WIDTH): New macro.
[!STAGE1_5] (CMDLINE_MARGIN): Likewise.
* stage2/shared.h (TERMINAL_DUMB): Likewise.
2000-08-28 OKUJI Yoshinori <>
* grub/asmstub.c (console_putchar) [HAVE_LIBCURSES]: If
USE_CURSES is true, emulate a new line like a ordinary terminal,
because ncurses treats it badly. If current position on y-axis
is the bottom of the screen, call scroll. Otherwise, call move
with the arguments, Y + 1 and X, where X and Y are current
position of the cursor.
2000-08-28 OKUJI Yoshinori <>
* stage2/asm.S (console_putchar): Don't print a carriage return
when C is a newline.
* stage2/char_io.c (grub_putchar): Call grub_putchar with the
arugment set to a carriage return, if C is a newline.
[!STAGE1_5 && SUPPORT_SERIAL]: Don't print a carriage return
when C is a newline.
2000-08-27 OKUJI Yoshinori <>
* lib/device.c [__linux__]: Don't include linux/fs.h.
[!BLKGETSIZE] (BLKGETSIZE): Defined as _IO(0x12,96).
* grub/asmstub.c [__linux__]: Don't include linux/fs.h.
2000-08-27 OKUJI Yoshinori <>
Preserve a magic number used by Windows NT in a MBR. Shit!
Reported by Khimenko Victor.
* stage1/stage1.h (STAGE1_WINDOWS_NT_MAGIC): New macro.
* stage1/stage1.S (copy_buffer): Use pusha and popa, instead of
pushing/poping %cx and %si separately, to reduce the code size.
(nt_magic): New label. Set the offset to _start plus
(part_start): New label.
* stage2/builtins.c (install_func): If DEST_DRIVE is a hard
disk, copy the possible partition table and Windows NT magic to
2000-08-26 OKUJI Yoshinori <>
* stage2/char_io.c (translate_keycode) [SUPPORT_SERIAL]: Don't
drain the input buffer, since that was irritating.
2000-08-26 OKUJI Yoshinori <>
Don't save/restore fragile registers unnecessarily.
* stage2/asm.S [!STAGE1_5] (track_int13): Don't save/restore
%ecx, %edx, or %eax.
[!STAGE1_5] (set_int13_handler): Likewise.
(biosdisk_int13_extensions): Likewise.
(biosdisk_standard): Likewise.
(check_int13_extensions): Likewise.
(get_diskinfo_int13_extensions): Likewise.
(get_diskinfo_standard): Likewise.
(get_diskinfo_floppy): Likewise.
[!STAGE1_5] (get_eisamemsize): Likewise.
[!STAGE1_5] (get_mmap_entry): Likewise.
[!STAGE1_5] (console_cls): Likewise.
[!STAGE1_5] (nocursor): Likewise.
[!STAGE1_5] (console_getxy): Likewise.
[!STAGE1_5] (console_gotoxy): Likewise.
[!STAGE1_5] (set_attrib): Likewise.
[!STAGE1_5] (getrtsecs): Likewise.
[!STAGE1_5] (currticks): Likewise, and don't zero %eax
explicitly, since prot_to_real does that.
2000-08-25 OKUJI Yoshinori <>
* stage2/char_io.c [!STAGE1_5] (translate_keycode): New
function. The serial part is stolen from the patch by Christoph
[!STAGE1_5] (get_cmdline): Call translate_keycode instead of
translating special key codes into ASCII characters by itself.
* stage2/stage2.c (run_menu): Wrap getkey with the macro
ASCII_CHAR, when checking if ESC is pressed.
Call translate_keycode as well as getkey, unless checkkey
returns -1. So don't check if C is KEY_DOWN or KEY_UP. And don't
use the macro ASCII_CHAR for C explicitly.
* stage2/shared.h (translate_keycode): Declared.
2000-08-24 OKUJI Yoshinori <>
* stage2/builtins.c [GRUB_UTIL]: Include stdio.h before
shared.h. Reported by Mathieu Chouquet-Stringer
2000-08-21 OKUJI Yoshinori <>
* (--enable-serial-speed-emulation): New option.
* grub/ (SERIAL_FLAGS): New variable. Set
SERIAL_SPEED_SIMULATION is defined, otherwise, set it to
(AM_CFLAGS): Removed -DSUPPORT_SERIAL=1 and added
* grub/asmstub.c [SIMULATE_SLOWNESS_OF_SERIAL] (serial_speed):
New variable.
(grub_setjmp): Removed.
(grub_longjmp): Likewise.
(serial_getkey) [SIMULATE_SLOWNESS_OF_SERIAL]: Wait for
1000000 / (SERIAL_SPEED >> 3) microseconds using gettimeofday.
(serial_putchar) [SIMULATE_SLOWNESS_OF_SERIAL]: Likewise.
* stage2/builtins.c (serial_func) [SUPPORT_SERIAL]: Added
a new option, `--speed'.
(builtin_serial): Added a description about --speed.
(terminal_func): When get a key from a serial device, if GRUB is
in the command-line interface, call grub_longjmp with
RESTART_CMDLINE_ENV, instead of init_page.
* stage2/cmdline.c (restart_cmdline_env): New variable.
(enter_cmdline): Call grub_setjmp with RESTART_CMDLINE_ENV after
calling init_cmdline.
(run_script): Run BUILTIN->FUNC with BUILTIN_SCRIPT instead of
* stage2/shared.h (BUILTIN_SCRIPT): New macro.
[GRUB_UTIL] (grub_setjmp): Defined as setjmp.
[GRUB_UTIL] (grub_longjmp): Defined as longjmp.
(restart_cmdline_env): Declared.
2000-08-20 OKUJI Yoshinori <>
* (--enable-serial): New option. Serial terminal
support will be enabled by default, once it is stabilized.
(SERIAL_SUPPORT): New conditional.
* grub/ (AM_CFLAGS): Added -DSUPPORT_SERIAL=1.
* grub/asmstub.c (cls): Renamed to ...
(console_cls): ... this.
(getxy): Renamed to ...
(console_getxy): ... this.
(gotoxy): Renamed to ...
(console_gotoxy): ... this.
* stage2/ (libgrub_a_CFLAGS): Added
(NETBOOT_FLAGS): New variable.
(SERIAL_FLAGS): Likewise.
* stage2/asm.S [!STAGE1_5] (cls): Renamed to ...
[!STAGE1_5] (console_cls): ... this.
[!STAGE1_5] (getxy): Renamed to ...
[!STAGE1_5] (console_getxy): ... this.
[!STAGE1_5] (gotoxy): Renamed to ...
[!STAGE1_5] (console_gotoxy): ... this.
* stage2/builtins.c (terminal_func): If the bit flag
BUILTIN_CMDLINE in FLAGS is set, call init_page. But this should
be fixed so that it restarts enter_cmdline instead.
* stage2/char_io.c [!STAGE1_5] (gotoxy): New function.
[!STAGE1_5] (serial_gotoxy): Likewise.
[!STAGE1_5] (getxy): Likewise.
[!STAGE1_5] (serial_getxy): Likewise.
[!STAGE1_5] (cls): Likewise.
[!STAGE1_5] (serial_cls): Likewise.
* stage2/serial.h (serial_cls): Declared.
(serial_getxy): Likewise.
(serial_gotoxy): Likewise.
* stage2/shared.h (console_cls): Likewise.
(console_getxy): Likewise.
(console_gotoxy): Likewise.
* stage2/stage2.c (print_entries): If serial terminal is
enabled, print ACS_UARROW and ACS_DARROW instead of DISP_UP and
DISP_DOWN, respectively.
(print_border): If serial terminal is enabled, print
DISP_LR, DISP_HORIZ and DISP_VERT, respectively.
(print_border) [SUPPORT_SERIAL]: Color the menu only if console
is used.
(set_line): Take two more arguments, ENTRYNO and MENU_ENTRIES.
(set_line_normal): Likewise.
(set_line_highlight): Likewise.
(set_line) [SUPPORT_SERIAL]: If serial terminal is enabled, get
the menu entry whose attributes are being changed and redraw the
(set_line_highlight) [SUPPORT_SERIAL]: If serial terminal is
enabled, print `ESC [ 7 m' and `ESC [ 0 m' before and after
calling set_line, respectively.
(run_menu) [SUPPORT_SERIAL]: Call nocursor only if console is
2000-08-20 OKUJI Yoshinori <>
Now the serial console support is partially working.
* grub/asmstub.c (serial_checkkey): Specify a pointer to TIMEOUT
as the fifth argument to select.
(serial_get_port): New function. Just a dummy.
(serial_init): If a serial device is opened, close SERIAL_FD
before opeing a new serial device.
Don't specify O_NDELAY to open.
* stage2/builtins.c [SUPPORT_SERIAL]: Include serial.h.
(serial_func): New function.
(builtin_serial): New variable.
(terminal_func): New function.
(builtin_terminal): New variable.
(builtin_table): Add pointers to BUILTIN_SERIAL and
* stage2/char_io.c [SUPPORT_SERIAL]: Include serial.h.
TERMINAL_SERIAL are set in TERMINAL simultaneously, print a
warning and force the console terminal.
(checkkey) [SUPPORT_SERIAL]: If TERMINAL_SERIAL is set in
TERMINAL, call serial_checkkey.
(grub_putchar) [SUPPORT_SERIAL]: If TERMINAL_SERIAL is set in
TERMINAL, call serial_putchar. If C is a newline, print a
carriage return, before printing a newline.
2000-08-15 OKUJI Yoshinori <>
The image `nbgrub' now relocates itself from 0x10000 to 0x8000,
since the Network Boot Image Proposal doesn't permit a second
loader to be loaded below 0x10000. Reported by Matthias
Kretschmer <>.
* (NBLOADER_LINK): New variable.
(nbloader_exec_LDFLAGS): Set to $(NBLOADER_LINK) instead of
* stage2/nbi.h (NBI_DEST_ADDR): Changed to 0x10000.
(NBI_DEST_SEG): New macro.
(NBI_DEST_OFF): Likewise.
(RELOCATED_SEG): Likewise.
(RELOCATED_OFF): Likewise.
(STAGE2_START_ADDR): Likewise.
* stage2/nbloader.S: Added .code16 directive at the start of the
Set the segment and the offset of the load address to
NBI_DEST_SEG and NBI_DEST_OFF, respectively.
Set the segment and the offset of the start address to
NBI_DEST_SEG and NBI_DEST_OFF + relocate - _start, respectively.
Added a routine for relocating itself.
(relocate): New label.
(copy_rest): Likewise.
(copy_loop): Likewise.
(copy): Likewise.
(boot_stage2): Likewise.
2000-08-13 OKUJI Yoshinori <>
* grub/main.c (main): Move the version number inside the
parentheses, since the grub shell is merely one of the programs
included in GNU GRUB.
2000-08-13 OKUJI Yoshinori <>
Add a serial device emulation into the grub shell.
* grub/asmstub.c: Include sys/time.h and termios.h.
(serial_fd): New variable.
(serial_device): Likewise.
(serial_getkey): New function.
(serial_checkkey): Likewise.
(serial_putchar): Likewise.
(get_termios_speed): Likewise.
(serial_init): Likewise.
(set_serial_device): Likewise.
(grub_stage2): Restore SERIAL_DEVICE and SERIAL_FD, if they were
* stage2/serial.h [GRUB_UTIL] (set_serial_device): Declared.
2000-08-13 OKUJI Yoshinori <>
* stage2/asm.S (codestart) [SUPPORT_DISKLESS]: Don't reset a
disk system. That is not only uncessary but also harmful.
2000-08-12 OKUJI Yoshinori <>
Add a serial device driver (but only the driver).
* stage2/serial.c: New file.
* stage2/serial.h: Likewise.
* stage2/shared.h (serial_getkey): Moved to stage2/serial.h.
(serial_checkkey): Likewise.
(serial_putchar): Likewise.
* stage2/ (noinst_HEADERS): Added serial.h.
(pre_stage2_exec_SOURCES): Added serial.c.
2000-08-10 Pavel Roskin <>
* docs/tutorial.texi: Minor fixes.
2000-08-10 OKUJI Yoshinori <>
* docs/tutorial.texi (Installation): Divided into three sections
instead of two sections. Don't describe the usage of the the
grub shell any longer. Instead, how to use grub-install is
2000-08-09 OKUJI Yoshinori <>
* stage2/builtins.c [GRUB_UTIL]: Include stdio.h.
(embed_func) [GRUB_UTIL && __linux__]: When embedding a Stage
1.5 into a partition, call write_to_partition instead of
(install_func): Set DEST_PARTITION to the partition where Stage
1 resides.
Set SRC_PART_START to the starting address of the partition
where Stage 2 resides.
(install_func) [GRUB_UTIL]: Set STAGE2_OS_FILE to the file name
of Stage 2 under an OS, if the new option "--stage2" is
specified. Otherwise, set it to null.
If STAGE2_OS_FILE is not null, modify the Stage 2 via the
filesystem serviced by the OS.
(install_func) [GRUB_UTIL && __linux__]: If STAGE2_OS_FILE is
null but the Stage2 resides in a partition, use
If DEST_PARTITION is not 0xFFFFFF, use write_to_partition, to
embed Stage 1.
(setup_func) [GRUB_UTIL]: If --stage2 is specified, set
STAGE2_ARG to the string pointing to the option. Otherwise, set
it to null.
(setup_func) [!GRUB_UTIL]: Set STAGE2_ARG to null.
(setup_func): If STAGE2_ARG is not null, add STAGE2_ARG and a
space character into CMD_ARG.
* lib/device.c (_LARGEFILE_SOURCE): Defined.
(_FILE_OFFSET_BITS): Likewise.
[__linux__] (write_to_partition): New function.
* lib/device.h [__linux__] (write_to_partition): Declared.
* util/ Specify the option "--stage2" for the
command "setup".
2000-08-04 Jochen Hoenicke <>
* stage2/fsys_fat.c (fat_superblock): clust_eof_marker added.
(fat_mount): Initialize clust_eof_marker to 0xff8, 0xfff8, or
0xffffff8, depending on fat size. Support for single active FAT
added (FAT32 extension). Changed the boundary between FAT12 and
FAT16, again. The Microsoft KB article Q65541 seems to be wrong
here, I go with mtools and the previous behaviour of grub: FAT12
iff number of clusters (without counting the two nonexisting
clusters) is less or equal 4095.
(fat_read): Report error if cluster number is too big, but not
greater or equal clust_eof_marker.
* stage2/fsys_reiserfs.c (journal_init): Fixed calculation of
2000-08-01 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c: Symlink support added.
(S_ISLNK): New macro.
(PATH_MAX): Likewise.
(MAX_LINK_COUNT): Likewise.
(reiserfs_dir): Check for symlink and handle them.
(read_tree_node): Take a block number and check if tree node was
already read in. If not update the INFO->blocks field.
(next_key): Changed call of read_tree_node.
(search_stat): Likewise.
(journal_init): Fixed a small bug. Some debugging messages added.
2000-07-31 Pavel Roskin <>
* grub/asmstub.c (biosdisk) [__linux__]: The first argument for
_llseek renamed from "seeked_fd" to "filedes".
2000-07-30 OKUJI Yoshinori <>
* docs/appendices.texi (FAQ): Added the answer for the separate
boot partition problem.
2000-07-30 OKUJI Yoshinori <>
Update the network support to Etherboot-4.6.4.
From Daniel Wagner <>:
* netboot/3c509.c: Copied from Etherboot-4.6.4.
* netboot/3c509.h: Likewise.
* netboot/cards.h: Likewise.
* netboot/ns8390.c: Likewise.
* netboot/sk_g16.c: Likewise.
* netboot/sk_g16.h: Likewise.
* netboot/tulip.c: Likewise.
* netboot/pci.h: Likewise.
* netboot/main.c (dhcpdiscover): Updated.
(dhcprequest): Likewise.
(bootp): Likewise.
* netboot/README.netboot: Added the information about the new
option --enable-ns8390-force-16bit.
* (--enable-ns8390-force-16bit): New option.
* netboot/config.c: Updated.
2000-07-29 OKUJI Yoshinori <>
The Linux zImage support is working now.
* stage2/asm.S (linux_boot): Add 3 into %ecx and shift %ecx to
the right by 2 bits, instead of shift %ecx to the left by 2
2000-07-29 Jochen Hoenicke <>
* stage2/fsys_reiserfs.c (block_read): Changed the variable "len"
to "j_len" (it shadowed a parameter).
2000-07-29 OKUJI Yoshinori <>
* (CPPFLAGS): Added -Wshadow, -Wpointer-arith and
-Wundef, as GCC sometimes more clever than me. :)
* stage2/shared.h [!ASM_FILE] (multi_boot): Change the name of
the second argument from "mbi" to "mb_info".
[!ASM_FILE] (biosdisk): Rename the first argument "read" to
* lib/device.h (init_device_map): Change the name of the third
argument from "floppy_disks" to "no_floppies".
* lib/device.c (read_device_map): Rename the internal function
"print_error" to "show_error".
* stage2/builtins.c (install_func): Rename CONFIG_FILE to
CONFIG_FILENAME, respectively.
* stage2/char_io.c (convert_to_ascii): Rename the internal
variable C to TMP.
(get_cmdline): Rename KILL to KILL_BUF.
Rename the second argument for cl_print to REAL_ECHO_CHAR from
* stage2/stage2.c (run_menu): Rename the internal variable
(cmain): Rename KILL to KILL_BUF.
* stage2/disk_inode_ffs.h: Check if BYTE_MSF is defined before
checking the value.
* stage2/fsys_ext2fs.c (ext2fs_dir): Check if E2DEBUG is
defined, instead of if the value is non-zero.
* grub/asmstub.c: Check if __GLIBC__ is defined before checking
the value.
(biosdisk) [__linux__]: Likewise.
Rename the first argument for _llseek to "seeked_fd" from "fd".
(multi_boot): Rename the second argument to "mb_info" from
2000-07-27 Gordon Matzigkeit <>
* util/ Initial cut at a script for creating GRUB
boot images.
* util/ (noinst_SCRIPTS): Added grub-image.
* (AC_OUTPUT): Added util/grub-image.
2000-07-27 Jochen Hoenicke <>
* stage2/asm.S (check_int13_extensions): Fixed the effect of
the --force-lba switch in stage2/stage1_5.
2000-07-25 Jochen Hoenicke <>
* stage2/fsys_fat.c (fat_mount): Fixed calculation of num_clust.
It was off by two, since the two non existing clusters 0 and 1
were not taken into account. Also fixed the boundary between
FAT12 and FAT16.
2000-07-25 OKUJI Yoshinori <>
* stage2/asm.S [!STAGE1_5] (linux_text_len): New variable.
[!STAGE1_5] (linux_boot): Don't set %eax to LINUX_SETUP
[!STAGE1_5] (big_linux_boot): Disable interrupts before changing
the stack pointer.
Change %ss right before %sp.
Reverse the arguments for ljmp. A segment must be after an
offset. *sigh*
* stage2/boot.c (load_image): Set LINUX_TEXT_LEN to TEXT_LEN,
if a Linux kernel is loaded successfully.
* stage2/shared.h (LINUX_VID_MODE_OFFSET): Removed.
[!ASM_FILE] (linux_kernel_header): Change the type of the member
`heap_end_ptr' to unsigned short.
[!ASM_FILE] (linux_text_len): Declared.
2000-07-24 OKUJI Yoshinori <>
Comply with the Linux/i386 boot protocol version 2.02.
* stage2/asm.S [!STAGE1_5] (linux_boot): Set the length of moved
bytes to LINUX_KERNEL_MAXLEN instead of
LINUX_KERNEL_LEN_OFFSET(%eax), since the field is obsolete.
[!STAGE1_5] (big_linux_boot): Don't use SEGMENT or OFFSET.
Instead, embed the segment and the offset in the code itself.
Set %ds, %es, %fs and %gs to %ax (LINUX_INIT_SEG).
* stage2/boot.c (load_image): Rewrite the Linux support code
heavily. Use a structure instead of a batch of macros, to access
a Linux kernel header.
(load_initrd): If MOVETO plus LEN is greater than or equal to
minus LEN with page aligned.
* stage2/shared.h (LINUX_MAGIC_SIGNATURE): New macro.
(LINUX_SETUP_STACK): Set to 0x7F00 instead of 0x3FF4 (why was it
this value?).
(CL_MY_LOCATION): Set to RAW_ADDR(0x97F00) instead of
(CL_MY_END_ADDR): Set to RAW_addr(0x97FFF) instead of
(CL_MAGIC_ADDR): Removed.
(CL_OFFSET): Likewise.
[!ASM_FILE] (struct linux_kernel_header): New structure tag.
2000-07-23 OKUJI Yoshinori <>
* docs/tutorial.texi: Fix some syntax errors and ambiguous
sentences. Suggested by M. Meiarashi <>.
2000-07-14 Khimenko Victor <>
* stage2/boot.c (load_image): When getting the text length of a
Linux kernel, use unsigned long instead of unsigned short.
2000-07-13 OKUJI Yoshinori <>
* lib/device.c: Include errno.h. Reported by Thierry DELHAISE
2000-07-12 OKUJI Yoshinori <>
Just to start implementing serial console support...
* stage2/asm.S (grub_putchar): Renamed to ...
(console_putchar): ... this.
[!STAGE1_5] (getkey): Renamed to ...
[!STAGE1_5] (console_getkey): ... this.
[!STAGE1_5] (checkkey): Renamed to ...
[!STAGE1_5] (console_checkkey): ... this.
* stage2/char_io.c [!STAGE1_5] (getkey): New function.
[!STAGE1_5] (checkkey): Likewise.
(grub_putchar): Likewise.
* stage2/shared.h [!STAGE1_5] (terminal): Declared.
[!STAGE1_5] (TERMINAL_CONSOLE): New macro.
[!STAGE1_5] (TERMINAL_SERIAL): Likewise.
(console_putchar): Declared.
(serial_putchar): Likewise.
(console_getkey): Likewise.
(serial_getkey): Likewise.
(console_checkkey): Likewise.
(serial_checkkey): Likewise.
* stage2/builtins.c (terminal): New global variable. The default
* grub/asmstub.c (grub_putchar): Renamed to ...
(console_putchar): ... this.
(getkey): Renamed to ...
(console_getkey): ... this.
(checkkey): Renamed to ...
(console_checkkey): ... this.
2000-07-12 OKUJI Yoshinori <>
* stage2/ (libgrub_a_CFLAGS): Added
* stage2/builtins.c [GRUB_UTIL]: Include device.h.
2000-07-12 OKUJI Yoshinori <>
Segreate OS-specific helper functions from asmstub.c.
* grub/asmstub.c [__linux__]: Don't include linux/hdreg.h,
linux/major.h, linux/kdev_t.h, or linux/cdrom.h.
[__FreeBSD__ || __NetBSD__ || __OpenBSD__]: Don't include
sys/ioctl.h, sys/disklabel.h, or sys/ioctl.h.
[HAVE_OPENDISK]: Don't include util.h.
Include device.h.
(NUM_DISKS): Likewise.
(init_device_map): Likewise.
(get_floppy_disk_name): Likewise.
(get_ide_disk_name): Likewise.
(get_scsi_disk_name): Likewise.
(check_device): Likewise.
(get_drive_geometry): Likewise.
* grub/main.c (no_floppy): Removed.
(probe_second_floppy): Likewise.
(floppy_disks): New global variable.
(main): Set FLOPPY_DISKS to zero, if OPT_NO_FLOPPY. Set
* lib/ (AM_CFLAGS): New variable.
* lib/device.h: New file.
* lib/device.c: Likewise.
* stage2/shared.h (no_floppy): Removed.
(probe_second_floppy): Likewise.
(check_device): Likewise.
(floppy_disks): Declared.
2000-07-02 OKUJI Yoshinori <>
* grub/main.c (usage): Enclose the mail address with parentheses
and add a period into the end of the line. That's just a
cosmetic change.
2000-07-02 OKUJI Yoshinori <>
* docs/appendices.texi (Obtaining and Building GRUB): Indicate
the Cygnus's binutils webpage instead of the hjl's site, since
you can now use a public release (i.e. 2.10).
2000-06-23 OKUJI Yoshinori <>
* stage2/boot.c (load_image): Take an additional argument
If the kernel type is Linux and the bit
KERNEL_LOAD_NO_MEM_OPTION in LOAD_FLAGS is set, don't pass a
Linux's mem option automatically.
* stage2/shared.h (load_image): Added the new argument.
* stage2/builtins.c (kernel_func): If `--no-mem-option' is
specified, set the bit KERNEL_LOAD_NO_MEM_OPTION in LOAD_FLAGS,
otherwise, LOAD_FLAGS is zero.
2000-06-22 OKUJI Yoshinori <>
* docs/tutorial.texi: Fixed some typos and syntax errors.
* docs/user-ref.texi: Likewise.
2000-06-21 OKUJI Yoshinori <>
* stage2/stage2.c (run_menu): Initialize CUR_ENTRY at the
If SHOW_MENU is zero, don't display the menu interface. Instead,
wait until the timeout is expired and then boot the default
entry. If the user presses `ESC' during the timeout, set
SHOW_MENU to one and break the loop.
Display the menu if SHOW_MENU is true, instead of if
GRUB_TIMEOUT is non-zero.
Set SHOW_MENU to one before go to the label `restart'.
* stage2/builtins.c (show_menu): New global variable.
(hiddenmenu_func): New function.
(builtin_hiddenmenu): New variable.
(builtin_table): Added a pointer to BUILTIN_HIDDENMENU.
* stage2/shared.h (show_menu): Declared.
2000-06-19 OKUJI Yoshinori <>
* docs/mdate-sh: Moved to ...
* mdate-sh: ... here.
* docs/texinfo.tex: Moved to ...
* texinfo.tex: ... here.
2000-06-09 OKUJI Yoshinori <>
* stage2/mb_info.h (AddrRangeDesc): Use one 64bits field instead
of two 32bits fields for BaseAddr and Length, respectively.
BaseAddrLow + BaseAddrHigh -> BaseAddr, LengthLow + LengthHigh
-> Length.
* stage2/builtins.c (displaymem_func): Print BaseAddr >> 32,
BaseAddr & 0xFFFFFFFF, Length >> 32 and Length & 0xFFFFFFFF,
instead of BaseAddrLow, BaseAddrHigh, LengthLow and LengthHigh,
for MAP.
* stage2/common.c (fakemap): Adjusted to the new definition of
(mmap_avail_at): Change the type of TOP to unsigned long long.
If TOP is greater than 0xFFFFFFFF, set it to 0xFFFFFFFF, since
GRUB itself cannot deal with 64bits addresses at the moment.
(init_bios_info): When getting a maximum available address from
the memory map, use a new unsigned long long variable MAX_ADDR
as the temporary variable instead of MEMTMP. This should allow
GRUB to detect at most 4TB.
2000-06-18 OKUJI Yoshinori <>
* docs/appendices.texi (FAQ): Added an question about Linux's
`mem=' option and the answer.
2000-06-17 OKUJI Yoshinori <>
* stage2/boot.c (load_image): Pass a mem option to Linux, only
if SRC has no substring "mem=".
2000-06-17 OKUJI Yoshinori <>