* util/mkisofs/eltorito.c (init_boot_catalog): Handle return code
of write calls (converting them to fwrite() if they aren't already).
(get_torito_desc): Likewise.
* util/mkisofs/rock.c (generate_rock_ridge_attributes): Likewise.
Support for El Torito without floppy emulation.
* util/mkisofs/eltorito.c: Include `<errno.h>'.
(init_boot_catalog): Improve error handling.
(get_torito_desc): Don't use floppy emulation unless requested by
user. Patch boot information table when requested via
`-boot-info-table'.
* util/mkisofs/iso9660.h (struct eltorito_boot_info): New struct.
* util/mkisofs/mkisofs.c (use_eltorito_emul_floppy)
(use_boot_info_table): New variables.
(OPTION_BOOT_INFO_TABLE, OPTION_NO_EMUL_BOOT)
(OPTION_ELTORITO_EMUL_FLOPPY): New macros.
(ld_options): Handle `-boot-info-table', `-no-emul-boot' and
`--eltorito-emul-floppy'.
(main): Handle `OPTION_BOOT_INFO_TABLE', `OPTION_NO_EMUL_BOOT'
and `OPTION_ELTORITO_EMUL_FLOPPY'.
* util/mkisofs/mkisofs.h (use_eltorito_emul_floppy)
(use_boot_info_table, get_731): New prototypes.
* util/mkisofs/write.c (get_731): New function.
Large file support for grub-mkisofs.
* conf/common.rmk (grub_mkisofs_CFLAGS): Add `-D_FILE_OFFSET_BITS=64'.
* util/mkisofs/mkisofs.c (next_extent, last_extent)
(session_start): Upgrade type to `uint64_t'. Update all users.
* util/mkisofs/mkisofs.h: Include `<stdint.h>'.
(struct directory_entry): Upgrade type of `starting_block' and
`size' to `uint64_t'. Update all users.
(struct deferred): Remove unused structure.
(xfwrite): Upgrade type of `count' and `size' to `uint64_t'.
Update all users.
* util/mkisofs/tree.c (stat_filter, lstat_filter): Return -1 when
file is larger than `UINT32_MAX'.
* util/mkisofs/write.c (xfwrite): Upgrade type of `count' and
`size' to `uint64_t'. Update all users. Fix handling of fwrite()
return value.
(struct deferred_write): Upgrade type of `extent' and `size' to
`uint64_t'. Update all users.
(last_extent_written): Upgrade type to `uint64_t'. Update all
users.
(write_one_file): Upgrade type of `count' and `size' to `uint64_t'.
Update all users. Upgrade type of `remain' to `int64_t' and
`use' to `size_t'. Use error() to handle fread() errors.
(write_files): Rely on write_one_file() rather than calling
xfwrite() directly.
* util//grub-mkconfig_lib.in (bindir): New variable.
(grub_mkrelpath): Likewise.
Properly set path variable. Use ${grub_mkrelpath} instead of
calling it directly.
2009-11-02 Felix Zielcke <fzielcke@z-51.de>
* util/probe.c (probe): Make the file path relative to its root.
Change a info message to use the GRUB path. Enable again the
check if we can read the file with GRUB facilities.
2009-11-01 Felix Zielcke <fzielcke@z-51.de>
* util/grub-mkrelpath.c: New file.
* conf/common.rmk (bin_UTILITIES): Add grub-mkrelpath.
(grub_mkrelpath_SOURCES): New variable.
* include/grub/util/misc.h: New function prototype.
* util/misc.c (make_system_path_relative_to_its_root): New function.
* util/grub-mkconfig_lib.in (make_system_path_relative_to_its_root):
Use grub-mkrelpath.
* util/grub-editenv.c (main): If only a command is given, use
DEFAULT_DIRECTORY "/" GRUB_ENVBLK_DEFCFG as a default file name.
(usage): FILENAME is now optional and has a default.
Improve grub-mkconfig performance when there are several menu
entries on a single filesystem.
* util/grub.d/10_linux.in (linux_entry): Cache the output of
prepare_grub_to_access_device.
* util/grub.d/10_kfreebsd.in (kfreebsd_entry): Likewise.
* util/grub.d/30_os-prober.in: Likewise.
* util/grub.d/10_freebsd.in: Remove.
* util/grub.d/10_kfreebsd.in: New file (based on 10_linux.in).
* configure.ac: Set host_kernel=kfreebsd for FreeBSD and GNU/kFreeBSD.
* util/grub.d/10_freebsd.in: Remove.
* util/grub.d/10_kfreebsd.in: New file (based on 10_linux.in).
* configure.ac: Set host_kernel=kfreebsd for FreeBSD and GNU/kFreeBSD.
Patch from Samuel Thibault <samuel.thibault@ens-lyon.org>
* docs/grub.cfg: Compensate for recent change in multiboot
loader (since 2009-08-14 it won't pass filename to payload).
* util/grub.d/10_hurd.in: Likewise.
Refer to kernel of FreeBSD "kFreeBSD" to avoid confusion between
the Operating System (FreeBSD) and its kernel (kernel of FreeBSD).
* loader/i386/bsd.c (grub_freebsd_boot): Read kernel environment
from "kFreeBSD" namespace (rather than "FreeBSD"). Update all
users.
(GRUB_MOD_INIT (bsd)): Rename "freebsd" command to "kfreebsd",
"openbsd" to "kopenbsd", "netbsd" to "knetbsd", "freebsd_loadenv"
to "kfreebsd_loadenv", "freebsd_module" to "kfreebsd_module",
and "freebsd_module_elf" to "kfreebsd_module_elf". Update all
users.
* util/i386/pc/grub-install.in: Source
${libdir}/grub/grub-mkconfig_lib before option processing, in order
that the --grub-probe option will work.
* util/sparc64/ieee1275/grub-install.in: Likewise.
* include/grub/kernel.h (struct grub_module_header): Remove
`grub_module_header_types'. Make `type' unsigned. Make `size'
32-bit on all platforms.
* util/elf/grub-mkimage.c (load_modules): Treat `type' as an
8-bit field. Use grub_host_to_target32() for `size'.
* util/i386/efi/grub-mkimage.c (make_mods_section): Likewise.
* util/i386/pc/grub-mkimage.c (generate_image): Likewise.
* util/sparc64/ieee1275/grub-mkimage.c (generate_image): Likewise.
* util/grub.d/30_os-prober.in: Don't throw away stderr from
os-prober. Under normal operation, it does not print anything to
stderr; if it does, we need to debug it, and throwing away stderr
makes that excessively difficult.
* util/grub-probe.c (probe): Comment out buggy codepath, which
was unexpectedly enabled by Colin Watson's 2009-09-02 fix. This
should be re-enabled after 1.97.
* util/grub.d/00_header.in: Move check for the video backend of
gfxterm from here ...
* util/grub-mkconfig.in: ... to here. Enable gfxterm if there's
a suitable video backend.
Rename *_partition_map to part_*
* partmap/acorn.c (grub_acorn_partition_map): Set name to 'part_acorn'.
* partmap/amiga.c (grub_amiga_partition_map): Set name to 'part_amiga'.
* partmap/apple.c (grub_apple_partition_map): Set name to 'part_apple'.
* partmap/gpt.c (grub_gpt_partition_map): Set name to 'part_gpt'.
All users updated.
* partmap/msdos.c (grub_msdos_partition_map): Set name to 'part_msdos'.
All users updated.
* partmap/sun.c (grub_sun_partition_map): Set name to 'part_sun'.
* util/grub-probe.c (probe_partmap): Don't transform partition name
to get module name.
* util/grub-dumpdevtree: Moved from here ...
* util/i386/efi/grub-dumpdevtree: ... to here.
(hexify): New function. Converts a string to its hex version.
Generate hex versions of "efi" and "device-properties" by calling
hexify() on the ASCII strings rather than by hardcoding numbers.
* util/grub-mkconfig_lib.in (version_test_numeric): Don't use
the "g" modifier in sed when the intention is to strip something
once. This fixes comparison of kernels with multiple dashes.
* util/grub-mkconfig_lib.in (font_path): Move the functionality
of it to ...
* util/grub-mkconfig.in: ... here. Prefer unicode.pf2 and
unifont.pf2 over ascii.pf2. Export LANG=C in case ascii.pf2 gets used.
2009-08-07 Robert Millan <rmh.grub@aybabtu.com>
* util/grub.d/10_linux.in (test_numeric): Moved from here ...
* util/grub-mkconfig_lib.in (version_test_numeric): ... to here.
Update all users.
* util/grub.d/10_linux.in (test_gt): Strip any basename prefix,
not just "vmlinu[zx]".
Moved from here ...
* util/grub-mkconfig_lib.in (version_test_gt): ... to here. Update
all users.
* util/grub.d/10_linux.in (find_latest): Moved from here ...
* util/grub-mkconfig_lib.in (version_find_latest): ... to here. Update
all users.
2009-08-07 Robert Millan <rmh.grub@aybabtu.com>
* util/grub.d/10_linux.in (test_numeric): Moved from here ...
* util/grub-mkconfig_lib.in (version_test_numeric): ... to here.
Update all users.
* util/grub.d/10_linux.in (test_gt): Strip any basename prefix,
not just "vmlinu[zx]".
Moved from here ...
* util/grub-mkconfig_lib.in (version_test_gt): ... to here. Update
all users.
* util/grub.d/10_linux.in (find_latest): Moved from here ...
* util/grub-mkconfig_lib.in (version_find_latest): ... to here. Update
all users.
* disk/lvm.c (grub_lvm_scan_device): Ignore extra copy of metadata.
Don't change pv->disk if it's already set.
* disk/raid.c (grub_raid_scan_device): Merge this function into ...
(grub_raid_register): ... here.
(grub_raid_rescan): Removed.
* include/grub/raid.h (grub_raid_rescan): Removed.
* util/grub-fstest.c: Remove include file <grub/raid.h>.
(fstest): Replace grub_raid_rescan with module fini function followed
by init function.
* util/grub-probe.c: Add include file <grub/raid.h>.
(probe_raid_level): New function.
(probe): Detect abstraction by walking the disk device, support two
level of abstraction (LVM on RAID) when detecting partition map.
* util/grub-mkconfig.in (GRUB_DISABLE_LINUX_RECOVERY): Export
variable.
* util/grub.d/10_linux.in: If GRUB_DISABLE_LINUX_RECOVERY is true,
don't write a menu entry for recovery mode.
* include/grub/i386/loader.h (grub_linux_prot_size)
(grub_linux_tmp_addr, grub_linux_real_addr)
(grub_linux_is_bzimage, grub_linux16_boot): Declare only on
GRUB_MACHINE_PCBIOS.
* util/i386/pc/grub-mkimage.c (compress_kernel): Move
common grub_util_info() call to ...
(generate_image): ... here.
Fix use of uninitialized memory, comparison of signed with
unsigned integers and memory leak.
Remove bogus module address message.
* util/elf/grub-mkimage.c (usage): Prefix each option line with two
spaces, for the benefit of help2man.
* util/i386/efi/grub-mkimage.c (usage): Likewise.
* boot/i386/pc/boot.S: Remove root_drive. Assert offset of
boot_drive_check by using GRUB_BOOT_MACHINE_DRIVE_CHECK. Don't
save %dx, we only need %dl and we never change it.
* boot/i386/pc/cdboot.S: Don't set the root drive.
* boot/i386/pc/pxeboot.S: Likewise.
* include/grub/i386/pc/boot.h: Remove
GRUB_BOOT_MACHINE_ROOT_DRIVE, adjust
GRUB_BOOT_MACHINE_DRIVE_CHECK.
* include/grub/i386/pc/kernel.h: Remove grub_root_drive.
* kern/i386/pc/init.c (make_install_device): Remove references
to grub_root_drive.
* kern/i386/pc/startup.S: Likewise.
* util/i386/pc/grub-setup.c (setup): Don't set root_drive.
* util/grub.d/30_os-prober.in: Fix a comment. Source
${libdir}/grub/grub-mkconfig_lib. Use prepare_grub_to_access_device
to set the root device. Place drivemap command in the generated
chain entry.
Use grub-macho2img when compiling with Apple's CC for PCBIOS machine
* conf/common.rmk (bin_UTILITIES): add (on false on condition)
grub-macho2img
(CLEANFILES): add grub-macho2img
(grub_macho2img_SOURCES): new variable
* kern/i386/pc/startup.S (bss_start): new variable
(bss_end): likewise
* genmk.rb: use grub-macho2img for *.img when compiled with Apple's CC
* util/grub-macho2img.c: new file
Fix wrong assumptions with grub-mkimage on EFI
* i386/efi/grub-mkimage.c (read_kernel_module): don't write prefox here
(relocate_addresses): consider both r_addend and value at offset
(make_mods_section): zerofill modinfo and header
(convert_elf): write prefix here
gfxpayload support
* commands/videotest.c (grub_cmd_videotest): use grub_video_set_mode
* include/grub/video.h (GRUB_VIDEO_MODE_TYPE_PURE_TEXT): new definition
(grub_video_setup): remove
(grub_video_set_mode): new prototype
* loader/i386/linux.c (DEFAULT_VIDEO_MODE): new definition
(vid_mode): remove
(linux_vesafb_res): compile only on PCBIOS
(grub_linux_boot): support gfxpayload
* loader/i386/pc/xnu.c (video_hook): new function
(grub_xnu_set_video): support gfxpayload
* term/gfxterm.c (DEFAULT_VIDEO_WIDTH): removed
(DEFAULT_VIDEO_HEIGHT): likewise
(DEFAULT_VIDEO_FLAGS): likewise
(DEFAULT_VIDEO_MODE): new definition
(video_hook): new function
(grub_gfxterm_init): use grub_video_set_mode
* util/grub.d/30_os-prober.in: remove explicit modesetting before
loading xnu
* video/video.c (grub_video_setup): removed
(grub_video_set_mode): new function based on grub_gfxterm_init and
grub_video_setup
Prevent GRUB from probing floppies during boot.
* conf/common.rmk (search_mod_CFLAGS): Use `-Werror -Wall'.
* commands/search.c (options): Add --no-floppy.
(search_fs, search_file, grub_cmd_search): Support --no-floppy.
* util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Use
--no-floppy when searching for UUIDs.
* include/grub/kernel.h (grub_module_header_types): Add type
OBJ_TYPE_CONFIG.
* kern/main.c (grub_load_config): New function.
(grub_main): Call grub_load_config to read boot config.
* grub-mkimage (generate_image): New parameter config_path.
(options): New option --config.
(main): Parse --config option, and pass it to generate_image.