Colin Watson [Mon, 26 Sep 2011 09:15:32 +0000 (10:15 +0100)]
* configure.ac: Build stage2 with -fno-reorder-functions to prevent
unlikely-to-be-executed functions being reordered before _start with
GCC 4.6.
Fixes Ubuntu bug #837815.
Based on patch from Ville Skyttä <ville.skytta@iki.fi>
* docs/multiboot.texi: Fix some spelling.
* docs/internals.texi: Likewise.
* docs/grub.texi: Likewise.
robertmh [Fri, 28 Mar 2008 13:22:28 +0000 (13:22 +0000)]
2008-03-28 Robert Millan <rmh@aybabtu.com>
Surpass 1 TiB disk addressing limit. Note: there are no plans to handle
the 2 TiB disk limit in GRUB Legacy, since that would need considerable
rework. If you have >2TiB disks, use GRUB 2 instead.
proski [Mon, 5 Nov 2007 01:29:46 +0000 (01:29 +0000)]
* configure.ac: Test if '--build-id=none' is supported by the
linker and add it to LDFLAGS if possible. Build ID causes
objcopy to generate huge binary files.
* aclocal.m4 (grub_PROG_OBJCOPY_ABSOLUTE): Use LDFLAGS when
linking, so that build ID doesn't break the test.
* stage1/Makefile.am: Preserve LDFLAGS, use stage1_exec_LDFLAGS.
* netboot/natsemi.c: Fix compile error with gcc 4.1.1. Cast
cannot make a variable volatile - it should be declared as such.
* netboot/sis900.c: Likewise.
proski [Fri, 5 May 2006 22:06:31 +0000 (22:06 +0000)]
* stage2/stage2.c (run_menu): Fix "savedefault" to save only top
level menu positions. Remember current position when calling a
submenu. Don't recalculate it when booting from a submenu.
Fixes for kernel of FreeBSD:
* grub/asmstub.c (get_diskinfo): Toggle "kern.geom.debugflags" sysctl
before opening a device for writing.
* util/grub-install.in: Devices don't have this "r" prefix anymore.
okuji [Tue, 21 Mar 2006 20:51:58 +0000 (20:51 +0000)]
2006-03-21 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/builtins.c (setup_func): Specify the size of DEVICE to
grub_strncat instead of a strange number 256. Reported by Vitaly
Fertman <vitaly@namesys.com>.
okuji [Sun, 8 May 2005 02:18:14 +0000 (02:18 +0000)]
2005-05-08 Yoshinori K. Okuji <okuji@enbug.org>
* 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 <swegener@gentoo.org>.
okuji [Sun, 27 Mar 2005 23:20:09 +0000 (23:20 +0000)]
2005-03-28 Yoshinori K. Okuji <okuji@enbug.org>
* 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.
okuji [Tue, 15 Mar 2005 16:54:24 +0000 (16:54 +0000)]
2005-03-15 Yoshinori K. Okuji <okuji@enbug.org>
* 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).
okuji [Tue, 15 Feb 2005 22:05:07 +0000 (22:05 +0000)]
2005-02-15 Yoshinori K. Okuji <okuji@enbug.org>
* 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_BOOT_DRIVE_MASK): Removed.
* 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.
okuji [Thu, 3 Feb 2005 10:01:14 +0000 (10:01 +0000)]
2005-02-03 Yoshinori K. Okuji <okuji@enbug.org>
* grub/asmstub.c (console_current_color): Make it global as
declared.
(grub_stage2): Tweak the declaration and the definition of the
nested function doit.
jthomas [Sun, 10 Oct 2004 22:47:23 +0000 (22:47 +0000)]
* 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.
okuji [Sun, 20 Jun 2004 13:48:47 +0000 (13:48 +0000)]
2004-06-20 Yoshinori K. Okuji <okuji@enbug.org>
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
plain-text.
* util/grub-set-default.in: New file.
* util/grub-install.in (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.
* 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.
(DEFAULT_FILE_BUFLEN): Likewise.
(CMDLINE_BUF): Set to DEFAULT_FILE_BUF + DEFAULT_FILE_BUFLEN.
(MENU_BUFLEN): Set to 0x8000 + PASSWORD_BUF - MENU_BUF.
(fallback_entry): Removed.
(fallback_entries): Declared.
(fallback_entryno): Likewise.
(MAX_FALLBACK_ENTRIES): New macro.
* stage2/cmdline.c (run_script): Use FALLBACK_ENTRYNO instead of
FALLBACK_ENTRY.
* 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
installations.
(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.
robertmh [Mon, 10 May 2004 21:46:49 +0000 (21:46 +0000)]
2004-05-10 Robert Millan <robertmh@gnu.org>
* 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).
* 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.
* Makefile.am (AUTOMAKE_OPTIONS): Add "gnu".
* configure.ac: 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/Makefile.am (.exec): Use suffix rules instead of pattern
rules.
* stage2/Makefile.am (.exec): Likewise.
* 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
incremented.
Reported by Bernhard Treutwein.
* 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 <eguzovsk@enterasys.com>.
* docs/grub.texi (Invoking grub-md5-crypt): Fixed the chapter
name.
Reported by Martin Pool <mbp@sourcefrog.net>.
* configure.ac (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 <uc.sheda@laposte.net>.
okuji [Sat, 27 Mar 2004 17:02:54 +0000 (17:02 +0000)]
2004-03-27 Yoshinori K. Okuji <okuji@enbug.org>
* 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 <lly@pisem.net>:
* stage2/start_eltorito.S: New file.
* stage2/stage2.c (run_menu): Use GRUB_INVALID_DRIVE instead of
0xFF.
* 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''.
(BIOSDISK_FLAG_CDROM): New macro.
(cdrom_drive): Declared.
* stage2/fsys_iso9660.c: New file.
* stage2/iso9660.h: 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
buffer.
(sane_partition): Allow CURRENT_DRIVE to be CDROM_DRIVE, because
a bios drive for a CD-ROM is often assigned to greater than
0x88.
(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/Makefile.am (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
start_eltorito.exec.
(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.
okuji [Fri, 12 Mar 2004 18:16:40 +0000 (18:16 +0000)]
2004-03-12 Yoshinori K. Okuji <okuji@enbug.org>
From Boji Tony Kannanthanam <boji.t.kannanthanam@intel.com>:
* util/grub-install.in (convert): Add support for ATARAID
device names.
* lib/device.c (get_ataraid_disk_name) [__linux__]: New
function.
(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.
okuji [Fri, 12 Mar 2004 17:31:51 +0000 (17:31 +0000)]
2004-03-12 Yoshinori K. Okuji <okuji@enbug.org>
From Sergey Matveychuk <sem@ciam.ru>:
* 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
well.
okuji [Wed, 18 Feb 2004 22:10:00 +0000 (22:10 +0000)]
2004-02-18 Yoshinori K. Okuji <okuji@enbug.org>
From Yury V. Umanets <umka@namesys.com>:
* stage2/fsys_reiserfs.c (REISER3FS_SUPER_MAGIC_STRING): New
macro.
(reiserfs_mount): Added checks for ReiserFS 3.
(reiserfs_embed): Likewise.
2004-01-25 Yoshinori K. Okuji <okuji@enbug.org>
* docs/grub.texi (Obtaining and Building GRUB): Instead of
describing how to use the anoncvs method, specify the URL of
the description page on Savannah.
Reported by Bernhard Treutwein.
okuji [Sun, 18 Jan 2004 18:33:30 +0000 (18:33 +0000)]
2004-01-18 Yoshinori K. Okuji <okuji@enbug.org>
* util/grub-install.in: Use the first word of GRUB_SHELL when
checking if the grub shell is present. This is necessary to
support options to the grub shell (e.g. grub --read-only).
From Eric Kvaalen <E_Kvaalen.Arnesen@noos.fr>:
* docs/grub.texi: Many bug fixes.
okuji [Sun, 11 Jan 2004 09:38:04 +0000 (09:38 +0000)]
2004-01-11 Yoshinori K. Okuji <okuji@enbug.org>
* 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/shared.h (struct linux_kernel_header): New member,
initrd_max_address. Defined in the boot protocol 2.03 or higher.
* stage2/boot.c (load_initrd): If the boot protocol is greater
than or equal to 2.03, use the field ``initrd_max_address''
instead of LINUX_INITRD_MAX_ADDRESS.
okuji [Tue, 30 Dec 2003 12:36:13 +0000 (12:36 +0000)]
2003-12-30 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/fsys_ext2fs.c (ext2_is_fast_symlink): New function.
(ext2fs_dir): Use ext2_is_fast_symlink to check if the current
inode is a fast or slow symlink. This change was required
because Linux now uses acl seriously (i.e. incompatibility).
Reported by Chris PeBenito <pebenito@gentoo.org> and Seemant
Kulleen <seemant@gentoo.org>